summaryrefslogtreecommitdiffstats
path: root/Src
diff options
context:
space:
mode:
authorTom2012-01-11 13:56:26 +0100
committerTom2012-01-11 13:56:26 +0100
commit959e9f97cdaac774b530a375a1fe8bcfe7ac1f5b (patch)
tree4b825dc642cb6eb9a060e54bf8d69288fbee4904 /Src
parentFirmware can now be loaded from GUI, threading problem fixed (diff)
downloadimsi-catcher-detection-959e9f97cdaac774b530a375a1fe8bcfe7ac1f5b.tar.gz
imsi-catcher-detection-959e9f97cdaac774b530a375a1fe8bcfe7ac1f5b.tar.xz
imsi-catcher-detection-959e9f97cdaac774b530a375a1fe8bcfe7ac1f5b.zip
cleanup
Diffstat (limited to 'Src')
-rw-r--r--Src/.metadata/.lock0
-rw-r--r--Src/.metadata/.log82
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/python.pydevsysteminfobin3610307 -> 0 bytes
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ANSI_cjux.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/AptUrl.AptUrl_db1m.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/AptUrl.Helpers_8t9v.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/AptUrl.Parser_b3mb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/AptUrl.UI_bodj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/AptUrl.Version_6s1m.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/AptUrl.__init___3c5k.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/AptUrl.gtk.GtkUI_ao52.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/AptUrl.gtk.__init___emwd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ArgImagePlugin_crhf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/BaseHTTPServer_inj3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Bastion_8204.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/BdfFontFile_2aji.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/BmpImagePlugin_8k86.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/BufrStubImagePlugin_aa87.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/CDDB_7kj4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/CDROM_9r0q.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/CGIHTTPServer_chwl.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Canvas_6jte.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/CommandNotFound.CommandNotFound_esff.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/CommandNotFound.__init___5kps.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/CommandNotFound.util_a41p.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ConfigParser_8csi.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ContainerIO_b82o.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Cookie_6nmm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Cipher.__init___6gkz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Hash.HMAC_a93w.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Hash.MD5_4rb0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Hash.SHA_ec7d.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Hash.__init___d3ve.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Protocol.AllOrNothing_5rt8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Protocol.Chaffing_21ks.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Protocol.__init___bdzy.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.PublicKey.DSA_1q09.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.PublicKey.ElGamal_cfct.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.PublicKey.RSA_2yu6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.PublicKey.__init___bmkn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.PublicKey.pubkey_82hc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.PublicKey.qNEW_4qtx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Util.RFC1751_8z7p.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Util.__init___998h.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Util.number_12g0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Util.randpool_59gf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Util.test_2pki.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.__init___3ey2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.test_5m0n.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/CurImagePlugin_tdb1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DLFCN_ap9p.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DcxImagePlugin_bq6j.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Dialog_cgzu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DiscID_2j6f.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeApport_am3j.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeAptCdrom_36b9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeAufs_3fs2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeCache_awbq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeConfigParser_3xse.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeController_4m1n.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeFetcherCore_3yc7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeFetcherSelf_5j0c.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeGettext_3kyr.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeMain_aohk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeQuirks_82ka.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeVersion_7a50.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeViewGtk_bkg9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeViewKDE_41lg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeViewNonInteractive_8tcv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeViewText_4w6s.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeView_exzt.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.MetaRelease_65pv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.SimpleGtkbuilderApp_cuwt.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.__init___7m9y.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.distinfo_bgwl.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.distro_7fac.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.sourceslist_anrp.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.utils_418v.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.xorg_fix_proprietary_b3i0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DocXMLRPCServer_533a.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/EpsImagePlugin_dovi.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ExifTags_d84j.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/FSM_78rb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/FileDialog_2132.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/FitsStubImagePlugin_46tw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/FixTk_7gag.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/FliImagePlugin_80xg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/FontFile_el2r.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/FpxImagePlugin_71cw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GDebi.DebPackage_72dt.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GDebi.GDebiCli_20wy.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GDebi.GDebiCommon_de8a.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GDebi.GDebi_cdvu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GDebi.SimpleGtkbuilderApp_d9zc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GDebi.Version_7zsj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GDebi.__init___x7oy.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GMenuSimpleEditor.__init___71ye.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GMenuSimpleEditor.config_7vbr.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GMenuSimpleEditor.main_7p1d.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GMenuSimpleEditor.maindialog_6brk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GMenuSimpleEditor.menufilewriter_ahhd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GMenuSimpleEditor.menutreemodel_cy7x.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GbrImagePlugin_7y1p.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GdImageFile_62q9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GifImagePlugin_8i54.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GimpGradientFile_1yrz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GimpPaletteFile_69q2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GnomeCodecInstall.MainWindow_b9na.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GnomeCodecInstall.Main_aonp.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GnomeCodecInstall.PackageWorker_aofu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GnomeCodecInstall.__init___2fcn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GnuPGInterface_1458.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GribStubImagePlugin_a4ko.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/HTMLParser_c838.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Hdf5StubImagePlugin_8due.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/IN_bv6h.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/IcnsImagePlugin_6r31.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/IcoImagePlugin_46mh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImImagePlugin_7y91.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageChops_5gld.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageCms_dk2n.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageColor_5ttj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageDraw2_5iw2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageDraw_ay59.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageEnhance_62g1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageFileIO_adab.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageFile_5vog.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageFilter_enhc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageFont_e98q.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageGL_e88g.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageGrab_8bbc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageMath_ackk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageMode_1rkp.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageOps_2cej.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImagePalette_6mio.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImagePath_bts1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageQt_83yx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageSequence_iaa5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageShow_5xvc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageStat_8oh7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageTransform_bxwo.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageWin_8iq8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Image_b9n2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImtImagePlugin_dhbc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/IptcImagePlugin_cwzi.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/JpegImagePlugin_33c6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.CheckLanguageSupport_e9za.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.FontConfig_6ke4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.ImSwitch_9fzu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.LangCache_1suo.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.LanguageSelector_a7ej.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.LocaleInfo_aa1r.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.__init___4yjw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.gtk.GtkLanguageSelector_2mrb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.gtk.SimpleGtkbuilderApp_1a1x.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.gtk.__init___6uik.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.macros_9cd1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.utils_2ell.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.xkb_5qz4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LaunchpadIntegration.__init___c8c6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/McIdasImagePlugin_5w3o.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/MicImagePlugin_59r2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/MimeWriter_38id.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/MpegImagePlugin_fkor.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/MspImagePlugin_ahmi.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/NvidiaDetector.__init___94cs.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/NvidiaDetector.alternatives_5ugu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/NvidiaDetector.nvidiadetector_1jvi.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/OleFileIO_4mtf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.Config_23p7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.Exceptions_567e.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.IconPalette_a7cj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.Indicator_diek.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.KbdWindow_753a.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.KeyCommon_9tw2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.KeyGtk_3wow.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.KeyboardGTK_6f7l.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.KeyboardSVG_8zgi.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.Keyboard_dfda.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.OnboardGtk_er49.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.Pane_a09x.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.SnippetList_a3p8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.X11_1qo7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.__init___94b7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.settings_1psh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.utils_6ug2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/OpenSSL.__init___6tb6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/OpenSSL.test.__init___aa80.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/OpenSSL.test.test_crypto_1w16.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/OpenSSL.test.test_rand_d4i9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/OpenSSL.test.test_ssl_6cdd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/OpenSSL.test.util_blmg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/OpenSSL.tsafe_dm42.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/OpenSSL.version_6wwq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PSDraw_4wgh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PaletteFile_eda8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PalmImagePlugin_5ya5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PcdImagePlugin_5mop.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PcfFontFile_dits.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PcxImagePlugin_9eb4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PdfImagePlugin_7yyx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PixarImagePlugin_6g3o.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PngImagePlugin_2bvz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PpmImagePlugin_15yp.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PsdImagePlugin_ezsg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyKDE4.__init___7v9e.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyKDE4.pykdeconfig_c063.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.__init___2kls.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.pyqtconfig_dfqu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Compiler.__init___3fx9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Compiler.compiler_34gw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Compiler.indenter_b3p8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Compiler.misc_18tv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Compiler.proxy_type_7zca.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Compiler.qobjectcreator_7dqt.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Compiler.qtproxies_7xbd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Loader.__init___ets9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Loader.loader_ef4p.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Loader.qobjectcreator_322f.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.__init___3cpa.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.driver_59b1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.exceptions_cby4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.icon_cache_1e13.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.objcreator_2j7f.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.port_v2.__init___7bv2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.port_v2.ascii_upper_1dpl.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.port_v2.encode_utf8_1zee.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.port_v2.invoke_782z.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.port_v2.load_plugin_31g3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.port_v2.proxy_base_ekkg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.port_v2.string_io_emht.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.properties_cquo.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.pykdeuic4_4bma.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.pyuic_3l9v.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.uiparser_2kzm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Queue_6rbm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ScreenResolution.__init___4ust.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ScreenResolution.ui_eiii.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ScrolledText_obzp.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/SgiImagePlugin_e5ph.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/SimpleDialog_8ekv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/SimpleHTTPServer_dl0r.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/SimpleXMLRPCServer_23br.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/SocketServer_wa2l.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/SpiderImagePlugin_9n1s.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/StringIO_a06u.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/SunImagePlugin_84xy.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/TYPES_6cbc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/TarIO_1i8g.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/TgaImagePlugin_3chn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/TiffImagePlugin_3le1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/TiffTags_e7dm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Tix_b364.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Tkconstants_nqh4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Tkdnd_bgrj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Tkinter_6lqi.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UbuntuSystemService.__init___5z7k.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UbuntuSystemService.utils_1jfz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.ChangelogViewer_5ia3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.Core.AlertWatcher_9olu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.Core.DistUpgradeFetcherCore_cau1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.Core.MetaRelease_ci7q.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.Core.MyCache_cthf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.Core.UpdateList_53q0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.Core.__init___7cm0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.Core.utils_733i.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.DistUpgradeFetcher_5gtn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.GtkProgress_3u3c.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.HelpViewer_2guv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.MetaReleaseGObject_5c6u.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.ReleaseNotesViewer_dgfb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.SafeGConfClient_b32s.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.SimpleGtkbuilderApp_c0l8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.UpdateManager_5vvm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.__init___cqpo.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.backend.InstallBackendAptdaemon_94w0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.backend.InstallBackendSynaptic_avse.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.backend.__init___774p.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UserDict_ap0o.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UserList_5q9g.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UserString_c41h.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/WalImageFile_184s.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/WmfImagePlugin_82fr.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/XKit.__init___8nkx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/XKit.xorgparser_atcl.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/XKit.xutils_52ul.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/XVThumbImagePlugin_5ivn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/XbmImagePlugin_b3lm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/XpmImagePlugin_5k8n.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/_LWPCookieJar_5lkz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/_MozillaCookieJar_2z0e.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/__future___dmnv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/__init___2rh8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/__phello__.foo_8d9e.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/_abcoll_616o.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/_strptime_9t0z.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/_threading_local_81zi.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/abc_8iwz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aifc_c9py.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/anydbm_ee8j.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/appindicator.__init___9sc2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.REThread_acqj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.__init___4sl4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.chroot_dii5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.crashdb_982z.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.crashdb_impl.__init___d3wk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.crashdb_impl.launchpad_97ew.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.crashdb_impl.memory_1u10.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.crashdb_impl.multipartpost_handler_eok4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.fileutils_3lio.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.hookutils_4ewi.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.packaging_bszq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.packaging_impl_2pax.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.report_6rhf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.ui_8mlc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport_python_hook_1tfe.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.__init___6rlq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.cache_cc34.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.cdrom_25l3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.debfile_6irj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.deprecation_d1d3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.package_7toh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.progress.__init___6f3u.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.progress.base_5841.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.progress.gtk2_d8p2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.progress.old_e04j.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.progress.text_dzfr.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.utils_8ou1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.__init___4hdi.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.client_1xb6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.console_9ufw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.core_26eh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.debconf_3r36.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.defer_49sc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.enums_g4e5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.errors_3wgj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.gtkwidgets_bblt.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.lock_2bia.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.loop_dbk6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.policykit1_3ach.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.progress_4gs2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.worker_7d22.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptsources.__init___4sfi.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptsources.distinfo_7lzd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptsources.distro_5tjp.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptsources.sourceslist_13b5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ast_7crk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/asynchat_56nd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/asyncore_2mps.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/atexit_6mad.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/audiodev_77xy.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/avahi.ServiceTypeDatabase_blwp.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/avahi.__init___dsol.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/axi.__init___98zr.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/axi.indexer_7cbt.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/base64_8uwk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bdb_e07k.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/binhex_468c.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bisect_7935.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bonobo.__init___8uru.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bsddb.__init___5not.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bsddb.db_bxs9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bsddb.dbobj_8x0m.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bsddb.dbrecio_5spz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bsddb.dbshelve_ct1v.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bsddb.dbtables_cupi.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bsddb.dbutils_aaw5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cProfile_dlzk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cairo.__init___8t2z.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/calendar_9ixn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cgi_8ed5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cgitb_131a.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.__init___6kw7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.big5freq_ew8d.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.big5prober_cdp2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.chardistribution_bqo4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.charsetgroupprober_anme.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.charsetprober_80qc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.codingstatemachine_1o0k.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.constants_2of8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.escprober_9u0c.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.escsm_aqs0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.eucjpprober_d1bu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.euckrfreq_dkqn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.euckrprober_861l.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.euctwfreq_5fta.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.euctwprober_egst.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.gb2312freq_615o.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.gb2312prober_dgdu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.hebrewprober_c769.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.jisfreq_3y92.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.jpcntx_1pfu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.langbulgarianmodel_7c2n.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.langcyrillicmodel_2qe2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.langgreekmodel_9veg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.langhebrewmodel_k8nn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.langhungarianmodel_7h5a.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.langthaimodel_cxb9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.latin1prober_47za.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.mbcharsetprober_buwi.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.mbcsgroupprober_7hq0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.mbcssm_528v.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.sbcharsetprober_612b.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.sbcsgroupprober_3ezh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.sjisprober_e74m.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.test_1h06.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.universaldetector_4l0w.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.utf8prober_8diw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chunk_5d0b.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cmd_d9ee.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/code_bfrl.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/codecs_q2ax.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/codeop_892b.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/collections_oqdb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/colorsys_dxro.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/commands_5nda.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compileall_73ff.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.__init___dux9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.ast_13b8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.consts_bfe5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.future_93d3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.misc_drk2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.pyassem_990c.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.pycodegen_e8h4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.symbols_bus8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.syntax_27fg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.transformer_ci7a.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.visitor_38vd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.__init___33s3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.cruft_dw80.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.cruft_tests_199r.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.exc_4uiu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.exc_tests_5rgh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.file_cruft_6z7l.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.file_cruft_tests_4ttx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.missing_package_cruft_nii2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.missing_package_cruft_tests_6uu4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.package_cruft_brkx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.package_cruft_tests_8nu1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.plugin_f56e.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.plugin_tests_4bdg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.__init___5wwt.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.inischema.__init___43st.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.inischema.attributed_f0rx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.inischema.glue_4ml6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.inischema.parsers_e6rb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.inischema.typed_95wj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.pyschema.__init___8um3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.pyschema.options_242z.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.pyschema.parser_9wfs.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.pyschema.schema_dj7d.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/contextlib_dm6x.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cookielib_5jaw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/copy_1423.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/copy_reg_a6m1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.__init___5ugg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.client_4udl.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.design_4tbd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.json_9ohm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.multipart_1hvu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.schema_4x36.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.tools.__init___cyfb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.tools.dump_6uf6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.tools.load_cmll.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.tools.replication_helper_duor.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.tools.replication_helper_test_bqv8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.view_5sat.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/csv_5u1c.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ctypes.__init___3i7o.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ctypes._endian_bxu2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ctypes.util_9wqy.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ctypes.wintypes_1kgg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cupshelpers.__init___chik.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cupshelpers.cupshelpers_6zen.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cupshelpers.openprinting_92tj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cupshelpers.ppds_62sw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/curl.__init___2eis.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/curses.__init___a0kh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/curses.ascii_ecja.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/curses.has_key_31xi.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/curses.panel_6kie.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/curses.textpad_3b9b.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/curses.wrapper_2x7e.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dateutil.__init___6fub.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dateutil.easter_1mq9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dateutil.parser_dzef.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dateutil.relativedelta_9sqx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dateutil.rrule_81b2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dateutil.tz_9b6w.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dateutil.tzwin_buti.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dateutil.zoneinfo.__init___161x.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbhash_2859.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.__init___cdb0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus._dbus_2r97.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus._expat_introspect_parser_9scl.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus._version_6exf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.bus_3isd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.connection_b3w3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.dbus_bindings_3nmj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.decorators_w84t.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.exceptions_2rei.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.glib_77rd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.gobject_service_904n.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.lowlevel_6tvt.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.mainloop.__init___cel8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.mainloop.glib_bwqt.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.proxies_6x62.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.server_77r6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.service_4w91.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.types_4y18.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus_bindings_3f2h.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/deb822_8amd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debconf_5ah5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debian.__init___85gt.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debian.arfile_6lds.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debian.changelog_8984.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debian.deb822_5alk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debian.debfile_1e9b.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debian.debian_support_8ele.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debian.debtags_38sx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debian.deprecation_17dp.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debian_bundle.__init___5gfv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/decimal_b88a.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.__init___68k2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.bookmarks.__init___8pa8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.bookmarks.record_dic0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.contacts.__init___wsgz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.contacts.contactspicker_cn18.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.contacts.record_4oou.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.contacts.testing.__init___8kul.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.contacts.testing.create_319y.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.contacts.view_6miy.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.local_files_7u62.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.notes.__init___9z0i.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.notes.record_cxyd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.pair.__init___7rv8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.pair.couchdb_pairing.__init___3osa.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.pair.couchdb_pairing.couchdb_io_42a1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.pair.couchdb_pairing.dbus_io_e9fo.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.pair.couchdb_pairing.network_io_3w0o.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.pair.couchdb_pairing.ubuntuone_pairing_h85l.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.records.__init___ewr0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.records.couchgrid_u3sj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.records.field_registry_6lnd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.records.record_8w1x.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.records.server_base_cpif.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.records.server_drhf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.replication_14km.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.replication_services.__init___3bzw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.replication_services.example_a771.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.replication_services.ubuntuone_14ru.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.start_local_couchdb_42q2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.stop_local_couchdb_4dym.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.tasks.__init___8quo.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.tasks.record_3rwk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/difflib_482j.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dircache_5jzj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dis_4ju5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.__init___67sn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.archive_util_6smp.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.bcppcompiler_1snh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.ccompiler_87u7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.cmd_dfyt.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.__init___jhp6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.bdist_8zjq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.bdist_dumb_c7gj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.bdist_msi_60s3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.bdist_rpm_7vm0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.bdist_wininst_6d15.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.build_55gu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.build_clib_ba5b.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.build_ext_a7iz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.build_py_8jx1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.build_scripts_o0d1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.clean_2idi.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.config_24ve.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.install_czin.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.install_data_9dts.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.install_egg_info_8tkq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.install_headers_o8c6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.install_lib_2b2t.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.install_scripts_ctby.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.register_1wrk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.sdist_ckvt.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.upload_1qan.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.config_aibs.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.core_be79.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.cygwinccompiler_56f2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.debug_c08j.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.dep_util_cghi.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.dir_util_8v6a.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.dist_1grl.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.emxccompiler_6j3l.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.errors_dslv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.extension_6e7s.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.fancy_getopt_6h8z.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.file_util_8dyu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.filelist_bjr6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.log_4jau.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.msvc9compiler_5gfa.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.msvccompiler_cqjf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.mwerkscompiler_c837.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.spawn_1nxz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.sysconfig_1vve.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.text_file_3qws.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.unixccompiler_7uqh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.util_3zep.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.version_beft.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.versionpredicate_bg7z.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/docky.__init___32s2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/docky.docky_cegr.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/doctest_2mrl.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/drv_libxml2_5vmg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dsextras_2wgo.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dumbdbm_6nf7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dummy_thread_a4k5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dummy_threading_4jab.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.__init___83w5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email._parseaddr_5fgr.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.base64mime_ags6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.charset_2xg7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.encoders_4uyr.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.errors_39fc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.feedparser_7hck.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.generator_aml0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.header_d5s9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.iterators_8zuu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.message_dtwx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.mime.__init___2hz2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.mime.application_bj2k.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.mime.audio_cgaf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.mime.base_d1kz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.mime.image_2bit.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.mime.message_ciz2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.mime.multipart_9qdu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.mime.nonmultipart_6cos.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.mime.text_6pz0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.parser_8dct.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.quoprimime_8a7l.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.utils_1knp.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant.__init___8tei.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant._enchant_9v4l.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant.checker.CmdLineChecker_bfly.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant.checker.GtkSpellCheckerDialog_d06i.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant.checker.__init___5v66.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant.checker.wxSpellCheckerDialog_2206.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant.pypwl_boxu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant.tokenize.__init___b9a4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant.tokenize.en_d1l2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant.utils_3kdl.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.__init___cmxb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.aliases_bhze.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.ascii_3bdx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.base64_codec_5fxj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.big5_cdb3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.big5hkscs_e5k7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.bz2_codec_7idj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.charmap_2g7u.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp037_b0q9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1006_dsi9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1026_cdcu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1140_a6ei.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1250_bwte.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1251_d3yv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1252_28dr.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1253_3oh6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1254_8ngj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1255_5cy0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1256_aizs.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1257_el41.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1258_es5z.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp424_bxmh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp437_78mz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp500_4jac.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp737_62u6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp775_rntx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp850_hghh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp852_9hb8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp855_abfu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp856_5e2n.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp857_8ai6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp860_2qzd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp861_86hy.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp862_3e3w.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp863_751m.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp864_4s5u.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp865_cunc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp866_1vpo.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp869_3phc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp874_4ft9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp875_8v07.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp932_3mrt.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp949_461t.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp950_7w2i.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.euc_jis_2004_efxm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.euc_jisx0213_596e.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.euc_jp_9dkt.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.euc_kr_3gw2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.gb18030_6d2l.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.gb2312_c9qb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.gbk_86rz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.hex_codec_4c2i.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.hp_roman8_28xu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.hz_996o.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.idna_d8ez.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso2022_jp_1_4jyc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso2022_jp_2004_ojiz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso2022_jp_2_1vuf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso2022_jp_3_4flg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso2022_jp_e4i6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso2022_jp_ext_14lj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso2022_kr_e0b3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_10_7yv4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_11_ezvh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_13_cyfo.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_14_3n4y.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_15_5byn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_16_7wfa.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_1_3ovs.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_2_f350.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_3_7ic9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_4_ctlu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_5_987q.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_6_cd91.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_7_12t4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_8_1w0r.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_9_63bv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.johab_f1xw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.koi8_r_dun0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.koi8_u_33ff.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.latin_1_exq7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_arabic_7y22.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_centeuro_b1c4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_croatian_cus7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_cyrillic_6uaa.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_farsi_9mmz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_greek_8cyu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_iceland_4q9z.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_latin2_dvk5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_roman_ekmx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_romanian_7le2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_turkish_27tx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mbcs_9dsw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.palmos_axg0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.ptcp154_82cf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.punycode_5akd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.quopri_codec_hkyj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.raw_unicode_escape_atas.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.rot_13_7vx5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.shift_jis_2004_afcu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.shift_jis_70ag.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.shift_jisx0213_hm77.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.string_escape_7swy.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.tis_620_18sa.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.undefined_5wmc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.unicode_escape_3jub.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.unicode_internal_4bxe.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.utf_16_be_5krl.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.utf_16_bp4u.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.utf_16_le_f2z8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.utf_32_3b0i.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.utf_32_be_dlqw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.utf_32_le_76s9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.utf_7_36so.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.utf_8_f4io.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.utf_8_sig_7d83.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.uu_codec_5tfl.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.zlib_codec_crvq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/evolution.__init___cm4p.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/fdpexpect_4ucm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/feedparser_e4l7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/filecmp_5s3r.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/fileinput_cg13.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/fnmatch_3az6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/formatter_edwf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/fpformat_8dpn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/fractions_7m2u.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ftplib_ezud.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/functools_ew8b.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/genericpath_btcw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/getopt_55tg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/getpass_80e3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gettext_6g1s.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.__init___6ii1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.importer_derj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.module_4dbw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.overrides.GIMarshallingTests_2vxf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.overrides.Gdk_95rb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.overrides.Gtk_6z7f.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.overrides.__init___771i.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.overrides.keysyms_5zja.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.repository.__init___akgz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.types_8b02.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gio.__init___363h.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/glib.__init___40kt.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/glib.option_9qj2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/glob_7yow.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome.__init___8a7b.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome.applet_bzyy.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome.canvas_1ier.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome.vfs_ajpb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.__init___55mf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.colors_2cqj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.dancer_cqrb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.defaults_556k.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.dialog_swallower_eivg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.game_selector_32le.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.gnome_sudoku_7en8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.gsudoku_a4q4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.gtk_goodies.Undo_3uel.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.gtk_goodies.__init___21co.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.gtk_goodies.dialog_extras_bayd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.gtk_goodies.gconf_wrapper_e4ru.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.main_2psl.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.number_box_8bk9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.pausable_bn2e.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.printing_1x6z.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.saver_arlf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.simple_debug_ehuy.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.sudoku_2hu3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.sudoku_maker_dgrf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.sudoku_thumber_2uum.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.timer_7tkn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.tracker_info_2cbs.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnomevfs.__init___ai3h.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gobject.__init___3utm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gobject.constants_6rum.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gobject.propertyhelper_91xo.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.__init___abw5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.__init___2d6c.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.descriptor_50sh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.descriptor_pb2_54ha.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.internal.__init___b8cq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.internal.containers_c7sh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.internal.decoder_77u5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.internal.encoder_3wgj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.internal.message_listener_90kb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.internal.type_checkers_9qo9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.internal.wire_format_6egn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.message_2sb7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.reflection_cs5p.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.service_d20d.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.service_reflection_17sm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.text_format_79t6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gst.__init___5jv9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gst.extend.__init___yfwh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gst.extend.discoverer_ep70.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gst.extend.jukebox_abew.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gst.extend.leveller_c5lh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gst.extend.pygobject_1zpj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gst.extend.sources_6zn5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gst.extend.utils_17wc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gtk.__init___4ytx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gtk._lazyutils_c422.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gtk.compat_75c0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gtk.deprecation_9lll.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gtk.keysyms_87fx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.__init___6ajy.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.accounts_d9lj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.actions_5e54.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.client_3gpu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.error_4iiu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.gwui_3g2l.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.__init___3ivj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.__init___27sn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.buzz_a7mo.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.digg_ay6f.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.facebook_4ctr.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.flickr_qef5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.friendfeed_vx39.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.identica_60sp.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.pingfm_78kn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.qaiku_1lj2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.statusnet_4nfe.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.twitter_4qf6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.widgets_d0q5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.__init___72rh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.brightkite_bm4m.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.buzz_7r54.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.can_4owx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.config_eeos.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.digg_ef7p.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.dispatcher_1b7q.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.facebook_beiq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.flickr_cq6k.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.friendfeed_dj6e.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.greader_cjom.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.gwp_1mpg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.identica_e6xe.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.jaiku_9rct.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.network_afzm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.opencollaboration_9pb3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.pingfm_9u4t.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.qaiku_3rzr.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.rss_cbqx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.statusnet_6wlt.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.storage_ejv2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.swp_5wnv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.twitter_akph.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.urlshorter.__init___awar.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.urlshorter.cligs_2kh1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.urlshorter.isgd_3rr2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.urlshorter.snipurlcom_dpaq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.urlshorter.tinyurlcom_7m5z.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.urlshorter.ur1ca_7mhb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.urlshorter.zima_b4qt.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.__init___elyq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.const_cbl3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.couchmigrate_6s25.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.custom_8w67.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.exceptions_as94.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.facelib_5u48.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.imagehandler_afx9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.keyring_2209.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.log_8omf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.resources_psx5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.pidgin_2oom.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.preferences_572j.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.resources_58p0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.util_72xt.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gzip_6wj7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/hashlib_2cug.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/heapq_91ml.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/hmac_5exf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/hotshot.__init___9m6m.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/hotshot.log_eg46.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/hotshot.stats_3p3t.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/hotshot.stones_2kw4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/htmlentitydefs_15mg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/htmllib_7hto.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/httplib2.__init___qfbz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/httplib2.iri2uri_d13r.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/httplib_37kf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.__init___1i47.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus._config_9hz1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus._gtk_cjv1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.application_coo8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.ascii_243j.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.attribute_aacw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.bus_3ing.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.common_dnnj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.component_dgg3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.config_6dfm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.engine_1hds.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.enginedesc_e4oi.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.exception_9pkq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.factory_aprr.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.inputcontext_9apj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.interface.__init___9xwg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.interface.iconfig_72yz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.interface.iengine_4nbt.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.interface.ienginefactory_93qt.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.interface.iibus_9x2a.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.interface.iinputcontext_8wa1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.interface.inotifications_7keq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.interface.ipanel_f4sd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.keysyms_bj4j.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.lang_20cm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.lookuptable_dp6j.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.modifier_5gd7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.notifications_483c.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.object_al8s.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.observedpath_9c0k.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.panel_17iy.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.property_7cly.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.serializable_ap0n.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.text_f0j2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.utility_8jo0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ihooks_aw7m.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/imaplib_4p33.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/imghdr_bs6g.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/imputil_2abe.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/indicate.__init___ptyx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/iniparse.__init___7rc9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/iniparse.compat_37le.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/iniparse.config_bcii.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/iniparse.ini_9xqu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/inspect_8pyz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/invest.__init___5112.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/invest.about_7w5d.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/invest.applet_9jf0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/invest.chart_ajnz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/invest.defs_9wq5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/invest.networkmanager_57sq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/invest.preferences_c0kw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/invest.quotes_5ekv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/invest.widgets_c96g.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/io_ervn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/jockey.__init___1j9b.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/jockey.backend_1iy5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/jockey.detection_a43c.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/jockey.handlers_4zaa.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/jockey.oslib_58st.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/jockey.ui_1j8u.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/jockey.xorg_driver_dxkd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/json.__init___3eg6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/json.decoder_881a.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/json.encoder_5833.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/json.scanner_4qfx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/json.tool_cz51.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/keyword_cs33.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.__init___8nc6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.apps_4gjm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.credentials_e805.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.errors_b89s.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.launchpad_b9xa.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.testing.__init___ctng.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.testing.helpers_7g1b.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.tests.__init___15ne.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.tests.test_launchpad_6nul.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.uris_i1wv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.__init___5bs8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixer_base_1kvs.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixer_util_6o8v.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.__init___6mem.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_apply_2oux.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_basestring_d6lj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_buffer_4qj2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_callable_cmmm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_dict_crgu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_except_ewa0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_exec_c8g1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_execfile_b1ey.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_exitfunc_93cf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_filter_bqww.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_funcattrs_f0xj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_future_16gv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_getcwdu_3djg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_has_key_3gae.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_idioms_6udi.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_import_50lb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_imports2_bcko.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_imports_akf8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_input_9bxc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_intern_d78u.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_isinstance_5j97.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_itertools_6xgu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_itertools_imports_d53v.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_long_eovd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_map_bdl8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_metaclass_ccgn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_methodattrs_8anv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_ne_6ixc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_next_3jy4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_nonzero_53s4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_numliterals_7v4j.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_operator_7ekk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_paren_933b.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_print_3zd1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_raise_bfj8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_raw_input_ayyc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_reduce_5r5d.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_renames_9jjg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_repr_6pxo.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_set_literal_arnx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_standarderror_d8tu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_sys_exc_2lru.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_throw_1u3g.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_tuple_params_bxlj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_types_4l5o.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_unicode_4z0p.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_urllib_ddjg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_ws_comma_ecda.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_xrange_1gp0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_xreadlines_4qjj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_zip_bsux.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.main_91kd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.patcomp_43lz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pgen2.__init___2lwy.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pgen2.conv_1hul.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pgen2.driver_asug.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pgen2.grammar_c2on.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pgen2.literals_4w1g.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pgen2.parse_ditn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pgen2.pgen_azhn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pgen2.token_5j3o.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pgen2.tokenize_cfg1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pygram_7cqq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pytree_5om7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.refactor_emg4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/libproxy_ts9q.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/libxml2_6wao.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/linecache_2zqq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/locale_ev8b.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/logging.__init___dkgm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/logging.config_v3s6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/logging.handlers_7k50.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lsb_release_j9kk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.ElementInclude_d59g.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.__init___5rn5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml._elementpath_ddyn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.builder_cawl.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.cssselect_27is.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.doctestcompare_3smg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.ElementSoup_3chq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.__init___7ry7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html._dictmixin_5ys9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html._diffcommand_7a0p.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html._html5builder_5876.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html._setmixin_3w3f.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.builder_wwit.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.clean_e6k7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.defs_cwu4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.diff_3x21.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.formfill_4yon.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.html5parser_4np1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.soupparser_2rlw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.usedoctest_a152.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.pyclasslookup_834u.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.sax_cud6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.usedoctest_2tlx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/macpath_eelq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/macurl2path_3rjs.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mailbox_6saa.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mailcap_3tr6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.__init___4b4t.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako._ast_util_1f6g.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.ast_4hw7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.cache_pqbp.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.codegen_5utr.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.exceptions_eoqv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.ext.__init___8fsd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.ext.autohandler_aydb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.ext.babelplugin_2l8x.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.ext.preprocessors_e7pu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.ext.pygmentplugin_3avf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.ext.turbogears_10l8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.filters_7x8y.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.lexer_1d4b.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.lookup_85ky.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.parsetree_127t.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.pygen_1du5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.pyparser_1rot.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.runtime_9fl7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.template_bd0h.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.util_6sx8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/markupbase_f3ab.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/markupsafe.__init___7sd1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/markupsafe._constants_egzw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/markupsafe._native_2gyp.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/markupsafe.tests_7kq7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/md5_1n5x.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mhlib_aspo.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mimetools_9qph.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mimetypes_2o04.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mimify_3ei5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/modulefinder_7hsx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multifile_f2km.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.__init___82k3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.connection_w2w9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.dummy.__init___5g2d.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.dummy.connection_7jqx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.forking_3cim.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.heap_5h1k.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.managers_28jy.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.pool_ddmu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.process_1prf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.queues_9y5w.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.reduction_2d6b.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.sharedctypes_b7jv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.synchronize_48vd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.util_8z6f.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.__init___5a0o.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen._constants_7n61.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen._util_768r.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen._vorbis_53e0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.apev2_5mzr.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.asf_as5h.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.easyid3_41os.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.easymp4_2llf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.flac_6wy6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.id3_d4j3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.m4a_45o2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.monkeysaudio_2klv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.mp3_cro0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.mp4_cvnk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.musepack_9144.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.ogg_8tc3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.oggflac_9k7o.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.oggspeex_9ve8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.oggtheora_6m0b.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.oggvorbis_alxn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.optimfrog_7um2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.trueaudio_eoy9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.wavpack_7g0m.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutex_286u.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.ARPA_34j6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.DateTime_3bxj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.Feasts_b83a.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.ISO_a5wd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.LazyModule_bvuu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.Locale_1wzu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.NIST_bgaz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.ODMG_bnry.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.Parser_mna5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.Timezone_95wn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.__init___77ko.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.__init___427a.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.mxDateTime_Python_8lav.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.test_c7lb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.testcmp_7wii.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.testcoerce_7xpq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.testcomdates_53yt.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.testnow_5ary.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.testpydatetime_4qkg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.testrichard_4nt1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.testroundoff_kpcx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.teststrftime_ccpy.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.testsubclassing_au2d.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.testticks_d79v.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.timegm_7cri.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Log_33bh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.CSV_f2rm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.Cache_7dvp.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.CommandLine_5a4g.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.ConfigFile_4gr8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.Cookie_d05w.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.ExitFunctions_2yio.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.FileLock_3unw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.LazyModule_63uw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.Namespace_gqma.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.OrderedMapping_cls1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.PackageTools_26d7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.__init___b29v.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.NewBuiltins_28b3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Tools.NewBuiltins_9dxw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Tools.Tools_8tqu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Tools.__init___9w62.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Tools.mxTools.__init___auyi.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Tools.mxTools.bench1_5izz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Tools.mxTools.bench2_6bju.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Tools.mxTools.hack_eyof.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Tools.mxTools.test_9s21.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Tools.mxTools.test_safecall_43p1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.__init___423z.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/netrc_b839.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/new_21x9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/nntplib_9cad.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ntpath_c6q2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/nturl2path_dzg8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numbers_e40i.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.__config___2d6b.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.__init___bcgp.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy._import_tools_58ib.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.add_newdocs_a6e7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.__init___18lh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core._internal_c28m.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.arrayprint_f0c6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.defchararray_9nhh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.defmatrix_dxn7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.fromnumeric_86ps.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.generate_numpy_api_2mp2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.info_3n1a.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.memmap_efyv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.numeric_6y6l.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.numerictypes_86k7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.records_cybn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.scons_support_l6ix.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.setup_common_ck40.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.setup_djw7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.setupscons_eoxb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ctypeslib_c4p3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.__config___9yts.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.__init___84fd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.__version___8dbb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.ccompiler_1ult.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.__init___554d.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.autodist_4ynb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.bdist_rpm_4ib1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.build_cga4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.build_clib_1g9v.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.build_ext_3y0t.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.build_py_az7x.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.build_scripts_8x2k.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.build_src_bqh3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.config_compiler_2k9j.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.config_du4f.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.develop_adyn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.egg_info_8qwk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.install_1o9m.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.install_data_dn01.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.install_headers_701o.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.scons_946w.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.sdist_bk0l.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.conv_template_181u.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.core_e745.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.cpuinfo_bi9f.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.environment_ir0h.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.exec_command_9elw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.extension_9w97.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.__init___63cu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.absoft_485s.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.compaq_ev2b.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.g95_efli.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.gnu_9qyw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.hpux_57fc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.ibm_evuu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.intel_d9yx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.lahey_5s5m.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.mips_5ojo.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.nag_4n7s.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.none_47is.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.pg_2823.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.sun_fohu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.vast_ata7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.from_template_6bi1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.info_d9qn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.intelccompiler_1qdf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.interactive_5ynh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.lib2def_ef19.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.line_endings_8gpl.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.log_2wsa.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.mingw32ccompiler_3lvu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.misc_util_dqoo.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.numpy_distribution_8bcf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.setup_5qgp.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.setupscons_6ith.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.system_info_alt8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.unixccompiler_9ufg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.dual_29cf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.__init___52ue.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.__version___1h7v.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.auxfuncs_8ty8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.capi_maps_3gzd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.cb_rules_aq8p.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.cfuncs_ctbg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.common_rules_6xiv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.crackfortran_14tv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.diagnose_2772.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.f2py2e_2ojh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.f2py_testing_2o0h.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.f90mod_rules_32rn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.func2subr_8e3x.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.info_a3qa.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.rules_7mrk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.setup_2d9l.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.setupscons_ddt1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.use_rules_8ss0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.fft.__init___blih.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.fft.fftpack_1ev3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.fft.helper_596k.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.fft.info_4hyi.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.fft.setup_96uo.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.fft.setupscons_6cty.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.__init___749w.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib._datasource_czuh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib._iotools_cxey.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.arraysetops_efy2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.arrayterator_45x5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.financial_5416.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.format_1vf5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.function_base_2f2n.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.getlimits_2m27.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.index_tricks_1wjr.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.info_28bq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.io_1ysn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.machar_2xk3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.polynomial_70m3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.recfunctions_cuih.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.scimath_1kje.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.setup_dpqm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.setupscons_d9r8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.shape_base_4bjm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.stride_tricks_3vz4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.twodim_base_bz0i.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.type_check_axlv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.ufunclike_by6t.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.user_array_6nvv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.utils_6lps.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.linalg.__init___d44w.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.linalg.info_7zhv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.linalg.linalg_3z0v.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.linalg.setup_cljo.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.linalg.setupscons_csem.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.__init___ed6m.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.bench_8qj3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.core_x5vl.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.extras_piqg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.mrecords_9evl.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.setup_9tdm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.setupscons_6sfd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.testutils_ddo9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.timer_comparison_cyjh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.version_7afq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.matlib_eh6j.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.__init___3p5f.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.alter_code1_5m55.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.alter_code2_2pal.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.compat_78z2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.convolve_ns70.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.fft_5kph.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.functions_9smv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.image_22k9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.linear_algebra_fccq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.ma_hfv6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.matrix_eg4z.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.mlab_73y2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.nd_image_29o1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.numerictypes_7dw7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.random_array_8170.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.session_8eqz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.setup_1oce.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.setupscons_7fac.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.ufuncs_efx6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.util_82fr.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.__init___df92.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.alter_code1_25nx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.alter_code2_bwwg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.array_printer_7maa.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.arrayfns_1jnp.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.compat_ttc8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.fft_6bkk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.fix_default_axis_czyu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.functions_7o5m.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.linear_algebra_apu2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.ma_9s9s.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.matrix_2gjt.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.misc_9af0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.mlab_78wl.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.precision_271m.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.random_array_z75q.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.rng_5o1q.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.rng_stats_413b.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.setup_1ad9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.setupscons_c5bs.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.typeconv_1915.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.ufuncs_dmcy.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.user_array_94gk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.random.__init___6l5b.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.random.info_ezih.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.random.setup_7i8p.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.random.setupscons_bbta.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.setup_9uyp.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.setupscons_3x4t.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.testing.__init___elrn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.testing.decorators_1mb7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.testing.noseclasses_bc7p.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.testing.nosetester_acyv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.testing.nulltester_6gej.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.testing.numpytest_enw1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.testing.setup_5vdy.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.testing.setupscons_f4z5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.testing.utils_9mke.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.version_2r8p.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/oauth.__init___cqz3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/oauth.oauth_d16j.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/opcode_8281.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/optparse_cbds.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/os2emxpath_e3es.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/os_d3ey.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pdb_305r.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pexpect_eqtm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pickle_d0eg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pickletools_27jz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pipes_264v.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pkg_resources_16n7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pkgutil_1cys.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/platform_347s.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/plistlib_6pdg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/popen2_eb10.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/poplib_e737.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/posixfile_al4f.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/posixpath_9ize.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pprint_97ru.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/problem_report_17hz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pty_dpdh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pxssh_4eb8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/py_compile_4jsx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.__init___c47e.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.__init___a84e.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.ber.__init___36xo.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.ber.decoder_es7j.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.ber.encoder_e0sr.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.ber.eoo_1iuf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.cer.__init___1xlb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.cer.decoder_50b1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.cer.encoder_9p4c.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.der.__init___8m3j.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.der.decoder_42na.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.der.encoder_8o23.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.error_euvd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.__init___amo3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.base_bdt3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.char_1ns4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.constraint_elce.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.error_c99d.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.namedtype_efqi.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.namedval_63jc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.tag_c21g.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.univ_ew35.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.useful_7skm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyclbr_34md.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pydoc_18n1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pydoc_topics_69x6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pygst_767j.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pygtk_94l6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyinotify_3prl.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pynotify.__init___e3nq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/quopri_53fi.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/random_7g9o.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/re_14c1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/repr_60py.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/rexec_af00.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/rfc822_83gb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/rlcompleter_9i9j.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/robotparser_b0nj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/runpy_f1vb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sched_489r.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screen_5b07.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.Plugins_1ho6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.__init___4kju.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.backend_3np7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.drawing_5hw7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.install_ch0z.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.menu_84iw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.options_enn4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Amarok_bjdi.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.AmazonCoverArtSearch_201q.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Audacious_adnb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Banshee_7xje.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.BaseConverter_aja4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Convert_22g7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.CoverSearch_dmnv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Evolution_4b99.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Exaile_djsi.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Flickr_4n4y.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.GenericPlayer_95w0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Gstreamer_6j1x.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Juk_65xk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Kaffeine_5x3c.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.LastFMProxy_cv0w.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.LengthConverter_3l0e.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Listen_dp4z.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Loader_8an0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Mail_e2z4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Mplayer_683w.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Proxy_ddw0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Quodlibet_85il.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Rhythmbox_39fk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.SizeConverter_1ccf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Sonata_4zuv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Songbird_f32r.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.TemperatureConverter_ac8l.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.__init___2ebr.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.iCal_e5xn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.keyring_azd8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.mpdclient2_bp2b.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.sensors_bmzp.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.services_bcil.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.session_e824.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.utils_9dia.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/serial.__init___bkw8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/serial.serialjava_2zae.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/serial.serialposix_8d32.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/serial.serialutil_67vl.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/serial.serialwin32_8r0n.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/serial.sermsdos_agqi.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sessioninstaller.__init___d5pv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sessioninstaller.backends.__init___avmx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sessioninstaller.backends.aptd_ct33.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sessioninstaller.backends.dummy_1b1p.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sessioninstaller.backends.synaptic_74ym.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sessioninstaller.core_ebex.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sessioninstaller.errors_18f2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sessioninstaller.gstinstaller_56x9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sessioninstaller.utils_cz1w.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sets_1e72.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sgmllib_ce0k.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sha_bzj2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/shelve_2lny.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/shlex_a9ym.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/shutil_3ekl.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.__init___bjh5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.decoder_bn5j.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.encoder_9jvf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.ordered_dict_2ui0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.scanner_dhbm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.__init___b1b7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_check_circular_d4as.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_decimal_4dxt.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_decode_3zs2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_default_7ce0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_dump_aqu9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_encode_basestring_ascii_8nng.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_encode_for_html_82b2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_fail_51wp.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_float_bckd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_indent_3fub.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_pass1_o2k8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_pass2_bdb7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_pass3_6p31.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_recursion_2s44.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_scanstring_eix6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_separators_3oww.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_speedups_cdj9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_unicode_16cx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tool_aorj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sipconfig_nd_en7i.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sipconfig_ztta.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/site_91t8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sitecustomize_1abk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/smtpd_78jg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/smtplib_50f1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/snack_2eac.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sndhdr_5qcf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/socket_5sr2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.AptAuth_5mne.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.CountryInformation_7e4x.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.MirrorTest_5llz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.SoftwareProperties_41nm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.__init___8pz5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.distro_cpc7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.CdromProgress_a4jd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.DialogAddSourcesList_aor8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.DialogAdd_cyb5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.DialogCacheOutdated_9uvn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.DialogEdit_39dn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.DialogMirror_ezab.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.SimpleGtkbuilderApp_2ker.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.SoftwarePropertiesGtk_exfd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.__init___cu9g.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.dialogs_dnor.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.utils_9ry2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.ppa_czeq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sqlite3.__init___217z.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sqlite3.dbapi2_bjdj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sqlite3.dump_52u2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sre_asqq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sre_compile_8jnl.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sre_constants_6s0s.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sre_parse_8xss.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ssl_esgx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/stat_73gw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/statvfs_e35s.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/string_aoem.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/stringold_3z31.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/stringprep_e2vw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/struct_x5a9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/subprocess_bi26.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sunau_8wcj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sunaudio_e81n.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/symbol_8zf7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/symtable_dwhi.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tabnanny_19e2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tarfile_44xw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/telnetlib_a7ri.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tempfile_w0p8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/test.__init___7dj3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/test.pystone_984o.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/test.regrtest_dw29.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/test.test_support_48no.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/textwrap_a02q.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/this_9dym.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/threading_aib7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tidy.__init___a869.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tidy.error_62y2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tidy.lib_a7m8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tidy.test_tidy_bvtn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/timeit_bjk5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tkColorChooser_aath.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tkCommonDialog_dz7x.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tkFileDialog_8ncg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tkFont_bfb2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tkMessageBox_106i.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tkSimpleDialog_aki1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/toaiff_9a8l.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/token_8srm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tokenize_73kj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/trace_9x1u.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/traceback_6y7d.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.__init___a9bp.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.__version___a4ey.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.__init___ccoe.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.accesskey_btiq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.convert_5tnc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.csv2po_dojk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.csv2tbx_450a.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.dtd2po_4qz9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.html2po_4729.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.ical2po_ezx3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.ini2po_6tyi.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.moz2po_6jse.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.mozfunny2prop_atne.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.odf2xliff_4qhc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.oo2po_42fv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.oo2xliff_um1c.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.php2po_voz8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2csv_b66v.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2dtd_3jh1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2html_b69y.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2ical_bxx8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2ini_5qbi.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2moz_e4ih.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2oo_7ey8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2php_5j67.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2prop_3i0p.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2rc_3s51.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2sub_bpz5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2symb_dztf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2tiki_68lq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2tmx_cbpq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2ts_7k4u.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2txt_7uet.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2web2py_6ndw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2wordfast_ds96.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2xliff_a0k7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.poreplace_9ngy.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.pot2po_ee2w.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.prop2mozfunny_181f.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.prop2po_b99e.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.rc2po_2gyf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.sub2po_6gho.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.symb2po_e628.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_accesskey_2klm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_convert_eeji.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_csv2po_e79l.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_dtd2po_5qxq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_html2po_buhm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_moz2po_2c3o.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_mozfunny2prop_5s6o.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_oo2po_a0iv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_oo2xliff_5q3m.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_php2po_angx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2csv_64ra.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2dtd_cqi0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2html_5dp0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2moz_4zsx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2oo_eg3j.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2php_dkkr.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2prop_egzc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2tiki_8vss.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2tmx_6m80.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2ts_2bvp.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2txt_k0lb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2xliff_dc9a.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_pot2po_47zl.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_prop2mozfunny_7ld8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_prop2po_8pw8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_tiki2po_8ew5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_ts2po_5zwl.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_txt2po_qqrx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_xliff2po_69jq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.tiki2po_9lmb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.ts2po_1l2t.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.txt2po_65yb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.web2py2po_6gbv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.xliff2odf_e6an.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.xliff2oo_a8r0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.xliff2po_9fxp.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.__init___4juk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.autocorrect_ero3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.checks_3r8j.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.decoration_4z4y.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.helpers_afo9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.pofilter_1whw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.prefilters_8h3f.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.spelling_f2mj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.test_autocorrect_2eft.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.test_checks_58ho.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.test_decoration_9lj9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.test_pofilter_8np5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.test_prefilters_ase8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.i18n_5gvd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.__init___9piw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.af_el6h.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.am_6ov4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.ar_blbn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.bn_ey9b.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.code_or_30z4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.common_5u1h.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.data_bpnf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.de_ap4t.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.el_c3l7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.es_33uo.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.fa_fth2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.factory_5gbm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.fi_dmja.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.fr_8zv2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.he_4nrc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.hy_8c54.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.identify_5c9r.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.ja_1nv6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.km_8iet.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.kn_ei0e.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.ko_beas.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.ml_8eh1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.ne_b442.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.ngram_90ug.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.pa_9lrc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.poedit_abuf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.si_31v5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.st_bdr0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.sv_4vko.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.te_1jlp.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.team_c0gz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_af_blnl.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_am_ab2c.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_ar_2nge.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_common_50oa.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_data_c58o.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_el_17tt.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_es_6ika.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_factory_7lvr.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_fr_amvf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_hy_exkx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_identify_b7cb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_km_vlj4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_ko_8jj7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_ne_2hjr.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_or_butf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_poedit_8yvq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_team_avou.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_th_2ngq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_vi_eqho.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_zh_5v8c.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.th_bb8b.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.ur_4ugi.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.vi_bfj9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.zh_5tj6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.__init___5pbl.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.autoencode_784m.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.context_dbi5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.contextlib_3g15.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.dictutils_cb3b.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.file_discovery_6vz1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.hash_24l3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.ini_8cyh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.lru_yuwm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.multistring_eiuu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.optrecurse_4g57.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.ourdom_e3yp.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.progressbar_6z4y.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.quote_920f.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.selector_6q0d.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.sparse_1j6e.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.stdiotell_1l80.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.test_autoencode_97a1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.test_dictutils_7d0u.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.test_multistring_s64l.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.test_optrecurse_2bct.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.test_quote_61ha.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.test_zipfileext_8iqb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.textwrap_902o.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.typecheck.__init___epq7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.typecheck.doctest_support_2fos.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.typecheck.mixins_b1vu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.typecheck.sets_dg0r.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.typecheck.typeclasses_drr5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.wStringIO_a2da.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.wsgi_4tvg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.xml_helpers_a4q8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.xmlwrapper_334q.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.zipfileext_du2c.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.__init___791n.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.indexing.CommonIndexer_a75z.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.indexing.PyLuceneIndexer1_5q91.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.indexing.PyLuceneIndexer_axz8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.indexing.XapianIndexer_4y72.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.indexing.__init___a9ig.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.indexing.test_indexers_ya18.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.lshtein_6erc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.match_3hpw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.segment_2m06.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.terminology_4qq7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.test_lshtein_7shj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.test_match_7yjd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.test_terminology_8ax5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.services.__init___2mh5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.services.lookupclient_uav0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.services.lookupservice_eer2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.services.tmserver_1krk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.__init___7orx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.base_bdvi.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.benchmark_c7x3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.cpo_4x91.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.csvl10n_bagq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.directory_dymy.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.dtd_e0l9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.factory_97za.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.fpo_tuyg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.html_eipt.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.ical_3tlf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.ini_2t6w.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.lisa_dpv7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.mo_1acv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.odf_io_czlc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.odf_shared_bla6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.omegat_1y1r.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.oo_arry.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.php_188p.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.__init___5l85.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.base_ek4b.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.general_4s6g.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.interfaces_9xcc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.lisa_2700.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.parse_59fd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.strelem_au37.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.terminology_cfwc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.test_base_i2vy.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.test_general_8ff8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.test_lisa_4e9g.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.test_terminology_8dft.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.xliff_dlgz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.po_rfcp.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.pocommon_b18m.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.poheader_d26o.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.poparser_78x0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.poxliff_ee8p.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.properties_e9l6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.pypo_4oyv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.qm_cs7j.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.qph_8mky.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.rc_bk2z.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.statistics_dzpg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.statsdb_dv8i.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.subtitles_6qqc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.symbian_d0pi.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.tbx_9xrv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_base_a73c.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_cpo_6nmp.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_csvl10n_dr27.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_directory_6x1x.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_dtd_f064.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_factory_wwb2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_mo_y4h5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_monolingual_1uw8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_omegat_5ak7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_oo_7msw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_php_8yrn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_po_19py.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_poheader_cm3f.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_poxliff_1zkr.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_properties_675n.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_pypo_dmpc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_qm_2al6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_qph_69ca.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_rc_31y1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_statsdb_7r9i.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_tbx_dwkw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_tiki_1j7m.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_tmx_9wnc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_ts2_4qxu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_ts_x8b8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_txt_cmg9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_wordfast_jf6g.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_xliff_bv7z.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_zip_b15v.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_zipfile_f3vm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.tiki_6x1q.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.tmdb_9n5b.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.tmx_9if9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.ts2_17a7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.ts_e31d.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.txt_6h0l.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.versioncontrol.__init___2854.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.versioncontrol.bzr_5brp.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.versioncontrol.cvs_dnj1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.versioncontrol.darcs_8m7v.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.versioncontrol.git_4sif.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.versioncontrol.hg_17qn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.versioncontrol.svn_26w1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.wordfast_afqe.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xliff_9rbm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_extract.__init___3swh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_extract.extract_7ikj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_extract.generate_dvlg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_extract.misc_3hi1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_extract.test_misc_eql6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_extract.test_unit_tree_6utl.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_extract.test_xpath_breadcrumb_bz1t.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_extract.unit_tree_luo2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_extract.xpath_breadcrumb_f3ix.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_name_9sak.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xpi_9d3z.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.zip_6734.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.__init___1316.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.build_tmdb_8qh2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.phppo2pypo_bwlc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.poclean_2hmb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.pocompile_baos.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.poconflicts_abvi.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.pocount_agwq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.podebug_2jjm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.pogrep_8vjb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.pomerge_ai87.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.porestructure_ehpk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.posegment_8854.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.poswap_e8f2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.poterminology_bb8r.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.pretranslate_1k6b.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.pydiff_6e5h.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.pypo2phppo_6h0i.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.test_phppo2pypo_b188.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.test_pocount_dty4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.test_podebug_84st.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.test_pogrep_7fph.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.test_pomerge_5art.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.test_pretranslate_9r0u.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.test_pypo2phppo_4kgo.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tty_6lpw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/turtle_ckrn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.__init___bwr0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted._version_52gl.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.application.__init___gql2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.application.app_9k02.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.application.internet_397f.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.application.reactors_9d4w.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.application.service_7skq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.application.strports_6h76.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.__init___8g4w.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch._version_egiw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.avatar_3eqs.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.checkers_9dgr.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.client.__init___6ubr.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.client.agent_cvyp.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.client.connect_1l50.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.client.default_asvo.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.client.direct_dplj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.client.knownhosts_8zj9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.client.options_com4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.error_cd20.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.insults.__init___48js.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.insults.client_2k8i.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.insults.colors_7xfx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.insults.helper_3j9h.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.insults.insults_9rh4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.insults.text_e1oe.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.insults.window_ec0k.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.interfaces_ddsz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ls_9mq0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.manhole_7wft.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.manhole_ssh_1d1z.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.manhole_tap_5q56.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.mixin_9p8k.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.openssh_compat.__init___co5u.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.openssh_compat.factory_3ytz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.openssh_compat.primes_418z.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.recvline_cdty.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.scripts.__init___4l04.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.scripts.cftp_401u.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.scripts.ckeygen_clam.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.scripts.conch_6b6j.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.scripts.tkconch_4aw2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.__init___6uac.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.agent_cnkn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.channel_866m.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.common_81si.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.connection_e3pf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.factory_f438.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.filetransfer_dw5w.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.forwarding_7q8z.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.keys_8kih.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.service_87c9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.session_76ot.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.sexpy_3jrn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.transport_8g6t.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.userauth_6eq2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.stdio_4hnx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.tap_6q9f.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.telnet_3y5o.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.__init___5nkv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.keydata_50q4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_agent_4th0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_cftp_3v9f.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_channel_5edq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_checkers_e4bl.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_ckeygen_cvsb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_conch_8mwc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_connection_ae9i.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_default_arpn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_filetransfer_ahke.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_helper_dkcf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_insults_7sjf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_keys_2oed.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_knownhosts_5t49.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_manhole_5g0u.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_mixin_cg30.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_openssh_compat_6xbo.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_recvline_b5lu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_session_5a71.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_ssh_9tru.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_tap_6dg2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_telnet_6cpy.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_text_6e94.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_transport_ecgz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_userauth_314y.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_window_5fad.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ttymodes_2v18.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ui.__init___1oh0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ui.ansi_cwg1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ui.tkvt100_ey3a.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.unix_5bod.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.copyright_b4kg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.cred.__init___9sba.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.cred._digest_7sen.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.cred.checkers_ecr8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.cred.credentials_ubnm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.cred.error_9ww2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.cred.pamauth_74op.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.cred.portal_dyur.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.cred.strcred_b4qx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.cred.util_bavl.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.enterprise.__init___aa18.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.enterprise.adbapi_mzh9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.enterprise.reflector_by7g.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.enterprise.row_drt9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.enterprise.sqlreflector_2iiv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.enterprise.util_c9dg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.__init___5lla.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._baseprocess_9021.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._dumbwin32proc_36ie.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._pollingfile_64vu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._posixserialport_5hwa.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._posixstdio_7yxa.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._signals_27um.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._sslverify_96q7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._threadedselect_11fe.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._win32serialport_7ipn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._win32stdio_a2xs.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.abstract_bxjc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.address_7zvg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.base_6vh7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.cfreactor_dz3g.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.default_e6jk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.defer_d4py.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.endpoints_8ofn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.epollreactor_b70m.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.error_d97f.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.fdesc_2h03.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.glib2reactor_ewzk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.gtk2reactor_2zju.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.gtkreactor_c1nz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.inotify_405t.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.interfaces_drbb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.iocpreactor.__init___8ixu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.iocpreactor.abstract_4zuu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.iocpreactor.const_8ze5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.iocpreactor.interfaces_i0nd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.iocpreactor.reactor_bx7d.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.iocpreactor.setup_1dhz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.iocpreactor.tcp_bpmf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.iocpreactor.udp_60j6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.kqreactor_2x41.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.main_4s7p.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.pollreactor_17xt.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.posixbase_8ubf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.process_bxmr.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.protocol_bzpw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.pyuisupport_1426.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.qtreactor_7xnc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.reactor_8q7v.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.selectreactor_56es.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.serialport_c602.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.ssl_bn8h.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.stdio_9khe.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.task_d1xp.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.tcp_4u50.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.__init___epcj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.inlinecb_tests_8s3g.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.process_helper_35q6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.reactormixins_2v97.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_address_caq0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_base_34m3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_baseprocess_7sbw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_core_959c.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_endpoints_dctj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_fdset_5fu7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_gtkreactor_bgo4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_inlinecb_4tj9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_inotify_aqyg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_iocp_cmpc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_pollingfile_7bg2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_posixbase_e7b2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_process_2ukp.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_protocol_awz4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_qtreactor_9qmn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_sigchld_1fku.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_tcp_cqao.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_threads_1ajo.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_time_6r7y.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_tls_4r5r.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_unix_2e65.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.threads_cujt.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.tksupport_3yx9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.udp_7gy6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.unix_3jnm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.utils_6raq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.win32eventreactor_115o.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.wxreactor_1rt0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.wxsupport_bnkt.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.__init___eycu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore._version_d7fr.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.default_ejkq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.docbook_1wgt.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.htmlbook_2xvp.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.indexer_5iek.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.latex_5bnw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.lint_b1nk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.lmath_f4bf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.man2lore_3l1k.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.numberer_ea4t.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.process_epqp.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.scripts.__init___4zc4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.scripts.lore_dkr2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.slides_4m5k.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.test.__init___e43d.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.test.test_docbook_dksk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.test.test_latex_c0us.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.test.test_lint_4q5f.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.test.test_lmath_e1x5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.test.test_lore_34j7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.test.test_man2lore_1jqr.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.test.test_slides_b837.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.texi_46mf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.tree_adlh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.__init___dydj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail._version_7j51.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.alias_4hfu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.bounce_5kk9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.imap4_br7j.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.mail_eoev.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.maildir_enyl.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.pb_f5g5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.pop3_ie0n.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.pop3client_8zba.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.protocols_9oqa.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.relay_5x22.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.relaymanager_1gw3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.scripts.__init___fh04.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.scripts.mailmail_5wyg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.smtp_43ph.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.tap_3nte.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.__init___8m0j.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.pop3testserver_ejfm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.test_bounce_cbsk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.test_imap_e0qk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.test_mail_9nu6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.test_mailmail_2qj3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.test_options_8u86.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.test_pop3_8cug.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.test_pop3client_30af.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.test_smtp_74u1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole.__init___3tki.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole._inspectro_ew21.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole.explorer_6du4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole.gladereactor_6vsw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole.service_7wvq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole.telnet_easg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole.ui.__init___70th.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole.ui.gtk2manhole_e7yh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole.ui.test.__init___2byk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole.ui.test.test_gtk2manhole_yjdz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.__init___cyaz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names._version_6djn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.authority_b3ip.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.cache_bahh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.client_7kz3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.common_bd7h.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.dns_74o3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.error_2dx7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.hosts_yi7n.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.resolve_3akw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.root_1vpf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.secondary_525q.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.server_87zh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.srvconnect_c5uu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.tap_d8kw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.test.__init___82mb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.test.test_cache_3a3y.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.test.test_client_5439.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.test.test_common_bou9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.test.test_dns_34q8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.test.test_names_5zvr.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.test.test_rootresolve_eh40.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.test.test_srvconnect_5gwf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.news.__init___8wlj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.news._version_89nc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.news.database_5sja.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.news.news_1mwn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.news.nntp_crs8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.news.tap_abh5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.news.test.__init___24kj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.news.test.test_news_cf0b.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.news.test.test_nntp_7a0r.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.__init___6d8g.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.aot_7mv8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.crefutil_dgt3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.dirdbm_4r7r.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.journal.__init___csw3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.journal.base_6e3d.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.journal.picklelog_47y1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.journal.rowjournal_e8y9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.sob_auc1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.styles_c9sw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugin_6hjk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.__init___5qc4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.cred_anonymous_16xq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.cred_file_ec2r.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.cred_memory_8pnw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.cred_unix_9c36.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_conch_2o67.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_ftp_1kl8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_inet_alt4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_lore_28n5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_mail_1vay.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_manhole_21w3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_names_8ljb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_news_6xmi.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_portforward_6s6l.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_qtstub_4vk5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_reactors_5v7c.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_runner_bi2g.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_socks_96gf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_telnet_6ctv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_trial_8ww4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_web_bwpr.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_words_ct02.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.__init___3cye.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.amp_ez74.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.basic_2phe.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.dict_bit7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.finger_3d20.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.ftp_e1zz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.gps.__init___6ncd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.gps.nmea_dbpj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.gps.rockwell_ar10.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.htb_74bw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.ident_5cdb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.loopback_3z91.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.memcache_49sg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.mice.__init___egfr.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.mice.mouseman_2hct.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.pcp_3o4k.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.policies_dd05.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.portforward_85oh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.postfix_drm0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.shoutcast_1ie2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.sip_c23c.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.socks_a7x1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.stateful_37g5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.telnet_8uz8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.test.__init___n0zz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.test.test_tls_8yqt.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.tls_9s4c.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.wire_ex6y.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.__init___c97r.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python._inotify_er2e.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python._release_4zgn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.compat_adrx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.components_59y5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.context_8ut2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.deprecate_87d9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.dispatch_f4rl.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.dist_9sp4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.dxprofile_3c3t.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.failure_4wyg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.fakepwd_cc1j.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.filepath_9sxl.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.finalize_w8jh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.formmethod_3vk0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.hashlib_6w5m.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.hook_5vbg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.htmlizer_4dd6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.lockfile_595k.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.log_34p3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.logfile_857l.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.modules_d8sh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.monkey_edsb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.otp_3617.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.procutils_f8wx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.randbytes_dmrw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.rebuild_b7jf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.reflect_d2f9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.release_2pv1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.roots_9ohn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.runtime_e1qz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.shortcut_18p4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.syslog_2dey.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.__init___d82f.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.deprecatedattributes_f590.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_components_b2mg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_deprecate_35b9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_dist_9muq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_fakepwd_e5dv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_hashlib_1ws5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_htmlizer_49vf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_inotify_8thq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_release_30p5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_runtime_5xdv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_syslog_blwa.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_util_5d9a.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_versions_1107.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_win32_1bln.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_zipstream_4cy5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.text_9ynz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.threadable_6kjb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.threadpool_auer.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.timeoutqueue_1i78.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.urlpath_aiq7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.usage_ekcs.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.util_3n4h.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.versions_255j.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.win32_20wp.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.zippath_b9lv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.zipstream_2qn6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.zshcomp_81ee.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.__init___bdal.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner._version_cl7l.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.inetd_59ql.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.inetdconf_3rpv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.inetdtap_63o6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.procmon_ayg0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.procmontap_emum.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.procutils_4kav.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.test.__init___1jl9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.test.test_procmon_4jvp.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.test.test_procmontap_262p.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.__init___1i0y.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts._twistd_unix_7d57.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts._twistw_anu0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.htmlizer_ab7r.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.manhole_2aa3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.mktap_f493.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.tap2deb_wu3w.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.tap2rpm_a77m.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.tapconvert_bot0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.test.__init___8vn7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.test.test_mktap_cwys.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.test.test_tap2rpm_7xh6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.tkunzip_5gij.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.trial_5wfr.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.twistd_yt27.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.__init___az22.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.banana_2wot.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.flavors_4dap.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.interfaces_b3vu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.jelly_e81i.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.pb_12qj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.publish_3srz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.refpath_6wue.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.ui.__init___95pu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.ui.gtk2util_2obp.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.ui.tktree_7g7u.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.ui.tkutil_b3ne.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.util_c98e.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.tap.__init___6rer.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.tap.ftp_45i5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.tap.manhole_7v7t.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.tap.portforward_e07k.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.tap.socks_62gd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.tap.telnet_4777.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.__init___1z62.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.crash_test_dummy_eln7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.generator_failure_tests_29yk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.iosim_c96l.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.mock_win32process_8vfi.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.myrebuilder1_2ss2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.myrebuilder2_5vsb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.plugin_basic_ehfo.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.plugin_extra1_3mug.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.plugin_extra2_3vtz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_cmdline_2yzw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_echoer_t0ar.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_fds_cnje.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_linger_3ym3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_reader_17yn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_signal_8x8o.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_stdinreader_17sh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_tester_15el.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_tty_9mqo.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_twisted_6o33.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.proto_helpers_ar6i.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.reflect_helper_IE_1nvw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.reflect_helper_VE_4e0k.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.reflect_helper_ZDE_8sek.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.ssl_helpers_k6wk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.stdio_test_consumer_1y28.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.stdio_test_halfclose_eups.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.stdio_test_hostpeer_doj2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.stdio_test_lastwrite_ew92.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.stdio_test_loseconn_a030.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.stdio_test_producer_7pgy.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.stdio_test_write_875e.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.stdio_test_writeseq_1ln1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_abstract_czc6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_adbapi_1coa.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_amp_4cca.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_application_6cqq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_banana_camf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_compat_e2vv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_context_eekw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_cooperator_4m81.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_defer_aobd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_defgen_2b86.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_dict_8be7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_digestauth_631p.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_dirdbm_d4ms.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_doc_e8na.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_enterprise_f1hh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_epoll_28z4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_error_ad3x.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_explorer_18u1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_extensions_4xpo.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_factories_c6hu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_failure_2013.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_fdesc_em33.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_finger_ac6k.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_formmethod_94of.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_ftp_1mv8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_hook_cky2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_htb_agkk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_ident_4d3q.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_import_dnp6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_internet_bgls.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_iutils_1q40.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_jelly_2qdd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_journal_35yj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_lockfile_2lxf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_log_5e4x.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_logfile_9hlw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_loopback_dmfn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_manhole_f0c1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_memcache_cs2a.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_modules_9wjo.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_monkey_8hlq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_newcred_6rwi.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_nmea_3xyt.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_paths_4rn5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_pb_d4rg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_pbfailure_e9v1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_pcp_2sj4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_persisted_dbsb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_plugin_csi5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_policies_9ar5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_postfix_ey0s.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_process_agaw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_protocols_892t.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_randbytes_egth.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_rebuild_b7uq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_reflect_31x4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_reflector_csdm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_roots_eoll.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_shortcut_59pf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_sip_db88.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_sob_900u.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_socks_ayz4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_ssl_3jqb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_sslverify_1lgj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_stateful_9721.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_stdio_cld3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_strcred_8byq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_strerror_1g80.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_stringtransport_i8cm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_strports_124p.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_task_4jxt.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_tcp_4mqr.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_tcp_internals_bprv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_text_3i9m.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_threadable_es0o.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_threadpool_99sc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_threads_apuu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_timehelpers_bs0h.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_timeoutqueue_16yz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_tpfile_dscd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_twistd_9rqz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_udp_86li.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_unix_8x10.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_usage_2c0v.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_zshcomp_9tng.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.testutils_7tbg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.time_helpers_4yy7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.__init___einc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.itrial_b5ft.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.reporter_94hk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.runner_ddeo.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.__init___w732.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.detests_1ff0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.erroneous_aduf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.mockcustomsuite2_ezrq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.mockcustomsuite3_2vi1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.mockcustomsuite_52rk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.mockdoctest_7slr.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.moduleself_eq5y.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.moduletest_6rit.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.novars_6p0c.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.packages_4qnj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.sample_x7f4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.scripttest_cpbu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.suppression_4quf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_assertions_684l.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_deferred_8s9u.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_doctest_dzvy.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_keyboard_4ple.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_loader_8mv4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_log_602d.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_output_8qxn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_plugins_a6kx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_pyunitcompat_6yhu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_reporter_1ho7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_runner_9d1j.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_script_d9ap.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_test_visitor_47x4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_testcase_39ak.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_tests_dvc6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_util_dpcz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_warning_exik.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.weird_3ye5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.unittest_bak5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.util_er1e.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.__init___9oha.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web._auth.__init___945p.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web._auth.basic_3id9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web._auth.digest_632a.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web._auth.wrapper_596k.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web._newclient_daa0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web._version_7tf4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.client_25u1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.demo_v465.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.distrib_7run.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.domhelpers_bjli.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.error_8cn4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.google_53zr.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.guard_6c7h.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.html_cia8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.http_e7m5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.http_headers_4h4g.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.iweb_7g8n.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.microdom_djxh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.proxy_6b4e.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.resource_7za8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.rewrite_713x.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.script_2pta.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.server_8sji.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.soap_47c9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.static_4ern.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.sux_1ck7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.tap_c4ui.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.__init___2kn8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test._util_1ar8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_cgi_6nte.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_distrib_5co1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_domhelpers_8opl.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_error_602c.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_http_6llk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_http_headers_23au.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_httpauth_7nmq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_newclient_2mj2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_proxy_e7dd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_resource_atsk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_script_a1vj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_soap_e0zm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_static_cz7q.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_tap_acgl.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_util_9km3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_vhost_d7aq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_web_de3b.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_webclient_a9v5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_wsgi_8sem.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_xml_8s28.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_xmlrpc_43w9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.trp_6o2o.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.twcgi_ct8g.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.util_64v0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.vhost_36jl.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.wsgi_8q6e.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.xmlrpc_4zml.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.__init___8yt5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words._version_2ntz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.ewords_3bu6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.__init___4qb8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.baseaccount_cw3i.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.basechat_6uvb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.basesupport_97mp.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.interfaces_ce51.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.ircsupport_53bz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.locals_bqox.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.pbsupport_3reu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.proxyui_6ua0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.tap_6tm8.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.tocsupport_7ark.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.iwords_3bvw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.__init___f5f1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.irc_2fpg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.__init___3fxj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.client_22f5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.component_bdgg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.error_bjka.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.ijabber_x7us.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.jid_3t2k.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.jstrports_67qa.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.sasl_43kx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.sasl_mechanisms_8o82.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.xmlstream_5aar.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.xmpp_stringprep_6y5x.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.msn_1k1f.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.oscar_6fo2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.toc_4x4h.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.service_909s.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.tap_aou5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.__init___12sy.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_basechat_ewb4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_basesupport_anvz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_domish_dpe5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_irc_cyfw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_irc_service_6wwc.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_jabberclient_djmr.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_jabbercomponent_dgcg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_jabbererror_a2md.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_jabberjid_c8wv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_jabbersasl_8kle.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_jabbersaslmechanisms_85b2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_jabberxmlstream_32y1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_jabberxmppstringprep_bgjk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_msn_e6ug.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_oscar_ahu6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_service_3gah.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_tap_2rp6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_toc_5y12.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_xishutil_6bi3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_xmlstream_usk2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_xmpproutertap_36q9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_xpath_aq0o.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.toctap_hxb0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.xish.__init___8xrs.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.xish.domish_2ez9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.xish.utility_dnde.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.xish.xmlstream_5615.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.xish.xpath_cvih.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.xish.xpathparser_9h8r.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.xmpproutertap_55cn.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/types_ce24.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntu_sso.__init___bckv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntu_sso.auth_5xlx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntu_sso.gui_bhl6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntu_sso.keyring_e7a0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntu_sso.logger_6ahk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntu_sso.main_ggh2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntu_sso.networkstate_2ig3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.__init___4voa.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.api.__init___dv5e.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.api.restclient_dn9z.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.clientdefs_dx5q.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.logger_14fh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.__init___hb4f.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.client_60ti.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.content_hash_6e3n.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.context_cfqz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.delta_ecaz.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.dircontent_3zhf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.dircontent_pb2_80ic.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.errors_4wfa.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.protocol_pb2_cit3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.proxy_tunnel_f585.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.request_7fgf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.sharersp_6aal.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.validators_dulp.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.volumes_65h4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.__init___ceg3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.action_queue_7ghj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.config_bb8d.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.dbus_interface_eudf.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.event_queue_6jgg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.events_nanny_2oxl.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.file_shelf_75um.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.filesystem_manager_dup9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.fsm.__init___66fm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.fsm.fsm_draw_386c.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.fsm.fsm_ekzy.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.fsm.fsm_parser_8ho9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.hash_queue_7qw6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.interfaces_5s8y.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.local_rescan_4p32.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.logger_bpu7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.main_bw1p.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.marker_88t1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.sdreactor_57rg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.states_2ygo.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.sync_bltq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.tools_ej29.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.u1fsfsm_agmw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.volume_manager_b4f4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ufw.__init___dhh0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ufw.applications_whio.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ufw.backend_e6kb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ufw.backend_iptables_2xuj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ufw.common_azfo.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ufw.frontend_9vvx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ufw.parser_7odv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ufw.util_2ge0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/unittest_1byd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/urllib2_8tkw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/urllib_bqpw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/urlparse_e9gj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.__init___6uyu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.backends.__init___1reo.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.backends.base.__init___75k6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.backends.base.backend_e74o.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.backends.udisks.__init___1vpk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.backends.udisks.backend_1p0n.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.frontends.__init___23m3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.frontends.base.__init___57xb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.frontends.base.frontend_55b1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.frontends.gtk.__init___6uy6.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.frontends.gtk.frontend_5c5q.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.install_19yr.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.misc_c1dv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.remtimest_eljj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/user_e3e7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/uu_5tv4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/uuid_e6ex.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/vobject.__init___4cm3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/vobject.base_e8ak.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/vobject.behavior_eswv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/vobject.change_tz_955u.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/vobject.hcalendar_7l2l.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/vobject.icalendar_2udw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/vobject.ics_diff_5kjd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/vobject.vcard_95o9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/vobject.win32tz_c5w5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wadllib.__init___bxnu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wadllib.application_e49u.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wadllib.iso_strptime_5r9k.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wadllib.tests.__init___nxju.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wadllib.tests.test_docs_dkyv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/warnings_3ccy.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wave_al5z.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/weakref_cegs.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/webbrowser_6ynr.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/webkit.__init___9p3j.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/whichdb_5vxd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wsgiref.__init___ac20.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wsgiref.handlers_6qoq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wsgiref.headers_5xhu.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wsgiref.simple_server_d4ka.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wsgiref.util_ce24.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wsgiref.validate_i0lg.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xapian_5hrx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.BaseDirectory_8n8w.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.Config_7ery.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.DesktopEntry_3ff2.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.Exceptions_58lw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.IconTheme_byan.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.IniFile_4lfk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.Locale_au13.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.MenuEditor_2t3t.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.Menu_754s.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.Mime_dg0y.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.RecentFiles_3s6h.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.__init___adq4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdrlib_7v3m.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.__init___17um.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.dom.NodeFilter_8osh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.dom.__init___b3r9.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.dom.domreg_915e.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.dom.expatbuilder_dbbr.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.dom.minicompat_4k30.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.dom.minidom_cvps.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.dom.pulldom_1bjy.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.dom.xmlbuilder_akea.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.etree.ElementInclude_4e8i.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.etree.ElementPath_c4mb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.etree.ElementTree_2q7p.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.etree.__init___4n9l.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.etree.cElementTree_dlf7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.parsers.__init___7dat.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.parsers.expat_1w7i.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.sax.__init___bd6r.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.sax._exceptions_8mps.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.sax.expatreader_equ3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.sax.handler_baxx.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.sax.saxutils_8tfb.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.sax.xmlreader_ad58.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml2po.__init___jh9e.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml2po.modes.__init___do2d.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml2po.modes.basic_5ryl.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml2po.modes.docbook_8kp4.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml2po.modes.gs_b80e.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml2po.modes.mallard_9w3m.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml2po.modes.ubuntu_57ro.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml2po.modes.xhtml_6d93.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xmllib_8men.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xmlrpclib_atgy.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zipfile_dbsh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.__init___baqs.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.__init___31a0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface._flatten_4lue.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.adapter_63os.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.advice_658l.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.common.__init___7x4b.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.common.idatetime_axvp.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.common.interfaces_aalk.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.common.mapping_7zox.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.common.sequence_8alj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.common.tests.__init___2kx1.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.common.tests.basemapping_8xdd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.common.tests.test_idatetime_a6rh.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.common.tests.test_import_interfaces_bpau.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.declarations_6k4f.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.document_5cr3.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.exceptions_6z54.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.interface_7yw7.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.interfaces_63ub.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.ro_8sth.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.__init___d155.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.dummy_ej0l.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.ifoo_6xis.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.m1_5sqe.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.m2_bnn5.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.odd_5vsv.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.test_adapter_agkt.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.test_advice_b3jd.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.test_declarations_5qhm.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.test_document_cr48.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.test_element_43lj.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.test_interface_6nu0.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.test_odd_declarations_cjdw.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.test_sorting_dy4p.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.test_verify_bfex.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.unitfixtures_b3qe.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.verify_37yq.v1_indexcache1
-rw-r--r--Src/.metadata/.plugins/org.eclipse.core.resources/.projects/CatcherGUI/com.python.pydev.analysis/AdditionalProjectInterpreterInfo.pydevinfobin703 -> 0 bytes
-rw-r--r--Src/.metadata/.plugins/org.eclipse.core.resources/.projects/CatcherGUI/org.python.pydev/v1_astmanager/modulesKeys1
-rw-r--r--Src/.metadata/.plugins/org.eclipse.core.resources/.projects/CatcherGUI/org.python.pydev/v1_astmanager/pythonpath1
-rw-r--r--Src/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version1
-rw-r--r--Src/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.indexbin151 -> 0 bytes
-rw-r--r--Src/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version1
-rw-r--r--Src/.metadata/.plugins/org.eclipse.core.resources/.root/1.treebin313 -> 0 bytes
-rw-r--r--Src/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resourcesbin503 -> 0 bytes
-rw-r--r--Src/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs3
-rw-r--r--Src/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs3
-rw-r--r--Src/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs14
-rw-r--r--Src/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs8
-rw-r--r--Src/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs3
-rw-r--r--Src/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.python.pydev.prefs3
-rw-r--r--Src/.metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCachebin4 -> 0 bytes
-rw-r--r--Src/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.datbin115 -> 0 bytes
-rw-r--r--Src/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml2
-rw-r--r--Src/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml2
-rw-r--r--Src/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml10
-rw-r--r--Src/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml9
-rw-r--r--Src/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml7
-rw-r--r--Src/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml287
-rw-r--r--Src/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml4
-rw-r--r--Src/.metadata/.plugins/org.python.pydev/ping.log0
-rw-r--r--Src/.metadata/.plugins/org.python.pydev/v1_4fkkw82y758w8n00pmr7xyd93/modulesKeys3160
-rw-r--r--Src/.metadata/.plugins/org.python.pydev/v1_4fkkw82y758w8n00pmr7xyd93/pythonpath12
-rw-r--r--Src/.metadata/version.ini1
-rw-r--r--Src/PyCatcher/.project17
-rw-r--r--Src/PyCatcher/.pydevproject10
-rw-r--r--Src/PyCatcher/GUI/mainWindow.glade293
-rw-r--r--Src/PyCatcher/src/driverConnector.py70
-rw-r--r--Src/PyCatcher/src/main.py7
-rw-r--r--Src/PyCatcher/src/pyCatcherController.py51
-rw-r--r--Src/PyCatcher/src/pyCatcherModel.py39
-rw-r--r--Src/PyCatcher/src/pyCatcherView.py131
-rw-r--r--Src/PyCatcher/src/xdot.py2212
-rw-r--r--Src/osmoconbb/doc/calypso-block.svg707
-rw-r--r--Src/osmoconbb/doc/calypso-gsm-notes.txt2
-rw-r--r--Src/osmoconbb/doc/calypso-signals.txt184
-rw-r--r--Src/osmoconbb/doc/gsmdevboard-block.svg746
-rw-r--r--Src/osmoconbb/include/l1ctl_proto.h299
-rw-r--r--Src/osmoconbb/include/osmocore/rsl.h24
-rw-r--r--Src/osmoconbb/include/osmocore/utils.h17
-rw-r--r--Src/osmoconbb/src/Makefile119
-rw-r--r--Src/osmoconbb/src/README.building30
-rw-r--r--Src/osmoconbb/src/README.development72
-rwxr-xr-xSrc/osmoconbb/src/host/calypso_pll/pll.pl10
-rw-r--r--Src/osmoconbb/src/host/gsm48-andreas/issues.txt23
-rw-r--r--Src/osmoconbb/src/host/gsmmap/.gitignore35
-rw-r--r--Src/osmoconbb/src/host/gsmmap/Makefile.am17
-rw-r--r--Src/osmoconbb/src/host/gsmmap/configure.ac26
-rw-r--r--Src/osmoconbb/src/host/gsmmap/geo.c47
-rw-r--r--Src/osmoconbb/src/host/gsmmap/geo.h12
-rwxr-xr-xSrc/osmoconbb/src/host/gsmmap/git-version-gen151
-rw-r--r--Src/osmoconbb/src/host/gsmmap/gsmmap.c658
-rw-r--r--Src/osmoconbb/src/host/gsmmap/locate.c182
-rw-r--r--Src/osmoconbb/src/host/gsmmap/locate.h8
-rw-r--r--Src/osmoconbb/src/host/gsmmap/log.c377
-rw-r--r--Src/osmoconbb/src/host/gsmmap/log.h80
-rw-r--r--Src/osmoconbb/src/host/layer23/.gitignore36
-rw-r--r--Src/osmoconbb/src/host/layer23/COPYING339
-rw-r--r--Src/osmoconbb/src/host/layer23/Makefile.am3
-rw-r--r--Src/osmoconbb/src/host/layer23/README42
-rw-r--r--Src/osmoconbb/src/host/layer23/configure.ac38
-rw-r--r--Src/osmoconbb/src/host/layer23/include/Makefile.am2
l---------Src/osmoconbb/src/host/layer23/include/l1ctl_proto.h1
-rw-r--r--Src/osmoconbb/src/host/layer23/include/osmocom/Makefile.am1
-rw-r--r--Src/osmoconbb/src/host/layer23/include/osmocom/bb/Makefile.am1
-rw-r--r--Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/Makefile.am2
-rw-r--r--Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/gps.h53
-rw-r--r--Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/l1ctl.h76
-rw-r--r--Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/l1l2_interface.h8
-rw-r--r--Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/l23_app.h35
-rw-r--r--Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/lapdm.h186
-rw-r--r--Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/logging.h29
-rw-r--r--Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/networks.h24
-rw-r--r--Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/osmocom_data.h129
-rw-r--r--Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/sap_interface.h11
-rw-r--r--Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/sim.h274
-rw-r--r--Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/sysinfo.h158
-rw-r--r--Src/osmoconbb/src/host/layer23/include/osmocom/bb/misc/Makefile.am1
-rw-r--r--Src/osmoconbb/src/host/layer23/include/osmocom/bb/misc/cell_log.h25
-rw-r--r--Src/osmoconbb/src/host/layer23/include/osmocom/bb/misc/layer3.h17
-rw-r--r--Src/osmoconbb/src/host/layer23/include/osmocom/bb/misc/rslms.h23
-rw-r--r--Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/Makefile.am2
-rw-r--r--Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/app_mobile.h17
-rw-r--r--Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/gsm322.h255
-rw-r--r--Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/gsm48_cc.h17
-rw-r--r--Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/gsm48_mm.h230
-rw-r--r--Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/gsm48_rr.h203
-rw-r--r--Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/mncc.h181
-rw-r--r--Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/settings.h120
-rw-r--r--Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/subscriber.h107
-rw-r--r--Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/support.h122
-rw-r--r--Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/transaction.h71
-rw-r--r--Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/voice.h7
-rw-r--r--Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/vty.h20
-rw-r--r--Src/osmoconbb/src/host/layer23/src/Makefile.am1
-rw-r--r--Src/osmoconbb/src/host/layer23/src/common/Makefile.am6
-rw-r--r--Src/osmoconbb/src/host/layer23/src/common/gps.c381
-rw-r--r--Src/osmoconbb/src/host/layer23/src/common/l1ctl.c965
-rw-r--r--Src/osmoconbb/src/host/layer23/src/common/l1ctl_lapdm_glue.c62
-rw-r--r--Src/osmoconbb/src/host/layer23/src/common/l1l2_interface.c179
-rw-r--r--Src/osmoconbb/src/host/layer23/src/common/lapdm.c2510
-rw-r--r--Src/osmoconbb/src/host/layer23/src/common/logging.c136
-rw-r--r--Src/osmoconbb/src/host/layer23/src/common/main.c289
-rw-r--r--Src/osmoconbb/src/host/layer23/src/common/networks.c1986
-rw-r--r--Src/osmoconbb/src/host/layer23/src/common/sap_interface.c189
-rw-r--r--Src/osmoconbb/src/host/layer23/src/common/sim.c1236
-rw-r--r--Src/osmoconbb/src/host/layer23/src/common/sysinfo.c859
-rw-r--r--Src/osmoconbb/src/host/layer23/src/misc/Makefile.am16
-rw-r--r--Src/osmoconbb/src/host/layer23/src/misc/app_bcch_scan.c70
-rw-r--r--Src/osmoconbb/src/host/layer23/src/misc/app_catcher.c195
-rw-r--r--Src/osmoconbb/src/host/layer23/src/misc/app_cbch_sniff.c202
-rw-r--r--Src/osmoconbb/src/host/layer23/src/misc/app_ccch_scan.c483
-rw-r--r--Src/osmoconbb/src/host/layer23/src/misc/app_cell_log.c195
-rw-r--r--Src/osmoconbb/src/host/layer23/src/misc/app_echo_test.c66
-rw-r--r--Src/osmoconbb/src/host/layer23/src/misc/bcch_scan.c318
-rw-r--r--Src/osmoconbb/src/host/layer23/src/misc/catcher.c820
-rw-r--r--Src/osmoconbb/src/host/layer23/src/misc/cell_log.c820
-rw-r--r--Src/osmoconbb/src/host/layer23/src/misc/rslms.c151
-rw-r--r--Src/osmoconbb/src/host/layer23/src/mobile/Makefile.am15
-rw-r--r--Src/osmoconbb/src/host/layer23/src/mobile/app_mobile.c404
-rw-r--r--Src/osmoconbb/src/host/layer23/src/mobile/gsm322.c5168
-rw-r--r--Src/osmoconbb/src/host/layer23/src/mobile/gsm48_cc.c2181
-rw-r--r--Src/osmoconbb/src/host/layer23/src/mobile/gsm48_mm.c4279
-rw-r--r--Src/osmoconbb/src/host/layer23/src/mobile/gsm48_rr.c5265
-rw-r--r--Src/osmoconbb/src/host/layer23/src/mobile/main.c209
-rw-r--r--Src/osmoconbb/src/host/layer23/src/mobile/mnccms.c777
-rw-r--r--Src/osmoconbb/src/host/layer23/src/mobile/settings.c189
-rw-r--r--Src/osmoconbb/src/host/layer23/src/mobile/subscriber.c1207
-rw-r--r--Src/osmoconbb/src/host/layer23/src/mobile/support.c182
-rw-r--r--Src/osmoconbb/src/host/layer23/src/mobile/transaction.c143
-rw-r--r--Src/osmoconbb/src/host/layer23/src/mobile/voice.c78
-rw-r--r--Src/osmoconbb/src/host/layer23/src/mobile/vty_interface.c2798
-rw-r--r--Src/osmoconbb/src/host/osmocon/.gitignore36
-rw-r--r--Src/osmoconbb/src/host/osmocon/COPYING339
-rw-r--r--Src/osmoconbb/src/host/osmocon/Makefile.am21
-rw-r--r--Src/osmoconbb/src/host/osmocon/configure.ac25
-rwxr-xr-xSrc/osmoconbb/src/host/osmocon/git-version-gen151
-rwxr-xr-xSrc/osmoconbb/src/host/osmocon/memdump_convert.pl29
-rw-r--r--Src/osmoconbb/src/host/osmocon/osmocon.c1558
-rw-r--r--Src/osmoconbb/src/host/osmocon/osmoload.c1216
-rw-r--r--Src/osmoconbb/src/host/osmocon/tpu_debug.c138
-rwxr-xr-xSrc/osmoconbb/src/host/rita_pll/mtk_pll.pl79
-rw-r--r--Src/osmoconbb/src/host/rita_pll/mtk_pll.txt4461
-rwxr-xr-xSrc/osmoconbb/src/host/rita_pll/rita_pll.pl115
-rw-r--r--Src/osmoconbb/src/host/rita_pll/rita_pll.txt3625
-rw-r--r--Src/osmoconbb/src/host/rita_pll/rita_pll_notes.txt19
-rw-r--r--Src/osmoconbb/src/shared/.gitignore5
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/.gitignore32
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/COPYING339
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/Makefile.am16
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/configure.ac123
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/debian/changelog17
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/debian/compat1
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/debian/control27
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/debian/copyright54
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/debian/docs0
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/debian/libosmocore-dbg.debhelper.log6
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/debian/libosmocore-dbg.dirs1
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/debian/libosmocore-dbg.install1
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/debian/libosmocore-dev.dirs8
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/debian/libosmocore-dev.install5
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/debian/libosmocore.dirs8
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/debian/libosmocore.install1
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/debian/patches/debian-changes-0.1.17-146
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/debian/patches/series1
-rwxr-xr-xSrc/osmoconbb/src/shared/libosmocore/debian/rules19
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/debian/source/format1
-rwxr-xr-xSrc/osmoconbb/src/shared/libosmocore/git-version-gen151
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/Makefile.am1
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/Makefile.am5
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/codec/Makefile.am3
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/codec/codec.h20
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/Makefile.am12
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/application.h18
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/backtrace.h6
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/bits.h45
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/bitvec.h78
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/conv.h101
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/crc16.h34
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/gsmtap.h89
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/gsmtap_util.h53
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/linuxlist.h360
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/logging.h164
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/msgb.h203
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/msgfile.h49
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/panic.h11
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/plugin.h6
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/prim.h38
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/process.h2
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/rate_ctr.h80
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/select.h22
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/signal.h37
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/socket.h25
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/statistics.h33
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/talloc.h192
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/timer.h72
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/utils.h41
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/write_queue.h46
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/crypt/Makefile.am3
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/crypt/gprs_cipher.h54
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/Makefile.am7
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/a5.h49
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/abis_nm.h31
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/comp128.h22
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/gsm0480.h26
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/gsm0502.h38
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/gsm0808.h49
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/gsm48.h38
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/gsm48_ie.h117
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/gsm_utils.h150
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/lapdm.h186
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/mncc.h71
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/prim.h13
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/Makefile.am6
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/gsm_03_41.h51
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/gsm_04_08.h1265
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/gsm_04_11.h188
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/gsm_04_12.h31
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/gsm_04_80.h126
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/gsm_08_08.h303
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/gsm_08_58.h546
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/gsm_12_21.h713
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/ipaccess.h94
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/rsl.h43
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/rxlev_stat.h22
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/sysinfo.h43
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/tlv.h260
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/vty/Makefile.am4
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/vty/buffer.h102
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/vty/command.h353
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/vty/logging.h12
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/vty/misc.h10
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/vty/telnet_interface.h40
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/vty/vector.h64
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/include/osmocom/vty/vty.h162
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/libosmocodec.pc.in11
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/libosmocore.pc.in11
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/libosmogsm.pc.in11
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/libosmovty.pc.in11
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/m4/DUMMY1
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/Makefile.am32
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/application.c102
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/backtrace.c50
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/bits.c98
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/bitvec.c233
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/codec/Makefile.am11
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/codec/gsm610.c294
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/codec/gsm620.c262
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/codec/gsm660.c256
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/codec/gsm690.c210
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/conv.c496
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/crc16.c62
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/gsm/Makefile.am15
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/gsm/a5.c311
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/gsm/abis_nm.c430
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/gsm/comp128.c230
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/gsm/gprs_cipher_core.c99
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/gsm/gsm0480.c461
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/gsm/gsm0502.c43
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/gsm/gsm0808.c455
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/gsm/gsm48.c428
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/gsm/gsm48_ie.c1095
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/gsm/gsm_utils.c566
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/gsm/lapdm.c2528
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/gsm/rsl.c447
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/gsm/rxlev_stat.c82
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/gsm/sysinfo.c136
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/gsm/tlv_parser.c179
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/gsmtap_util.c280
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/logging.c671
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/logging_syslog.c78
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/msgb.c105
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/msgfile.c123
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/panic.c74
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/plugin.c62
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/rate_ctr.c161
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/select.c153
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/signal.c87
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/socket.c200
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/statistics.c76
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/talloc.c1804
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/timer.c186
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/utils.c160
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/vty/Makefile.am15
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/vty/buffer.c463
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/vty/command.c3229
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/vty/logging_vty.c585
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/vty/telnet_interface.c211
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/vty/utils.c50
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/vty/vector.c192
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/vty/vty.c1698
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/src/write_queue.c90
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/tests/Makefile.am6
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/tests/msgfile/Makefile.am5
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/tests/msgfile/msgconfig.cfg2
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/tests/msgfile/msgfile_test.c50
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/tests/sms/Makefile.am5
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/tests/sms/sms_test.c319
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/tests/smscb/Makefile.am5
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/tests/smscb/smscb_test.c41
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/tests/timer/Makefile.am6
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/tests/timer/timer_test.c77
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/tests/ussd/Makefile.am5
-rw-r--r--Src/osmoconbb/src/shared/libosmocore/tests/ussd/ussd_test.c91
-rwxr-xr-xSrc/osmoconbb/src/shared/update-libosmocore.sh3
-rw-r--r--Src/osmoconbb/src/target/firmware/.gitignore9
-rw-r--r--Src/osmoconbb/src/target/firmware/COPYING339
-rw-r--r--Src/osmoconbb/src/target/firmware/Makefile89
-rw-r--r--Src/osmoconbb/src/target/firmware/Makefile.inc208
-rw-r--r--Src/osmoconbb/src/target/firmware/Makefile.mtk32
-rw-r--r--Src/osmoconbb/src/target/firmware/abb/twl3025.c356
-rw-r--r--Src/osmoconbb/src/target/firmware/apps/chainload/main.c53
-rw-r--r--Src/osmoconbb/src/target/firmware/apps/compal_dsp_dump/main.c62
-rw-r--r--Src/osmoconbb/src/target/firmware/apps/hello_world/main.c149
-rw-r--r--Src/osmoconbb/src/target/firmware/apps/l1test/main.c249
-rw-r--r--Src/osmoconbb/src/target/firmware/apps/layer1/main.c135
-rw-r--r--Src/osmoconbb/src/target/firmware/apps/loader/main.c444
-rw-r--r--Src/osmoconbb/src/target/firmware/apps/loader/protocol.h37
-rw-r--r--Src/osmoconbb/src/target/firmware/apps/loader_mtk/main.c366
-rwxr-xr-xSrc/osmoconbb/src/target/firmware/apps/simtest/main.c307
-rw-r--r--Src/osmoconbb/src/target/firmware/board/common/calypso_pwl.S21
-rw-r--r--Src/osmoconbb/src/target/firmware/board/common/calypso_uart.S92
-rw-r--r--Src/osmoconbb/src/target/firmware/board/compal/LINKAGE.txt12
-rw-r--r--Src/osmoconbb/src/target/firmware/board/compal/exceptions_redirect.S24
-rw-r--r--Src/osmoconbb/src/target/firmware/board/compal/exceptions_redirected.S20
-rw-r--r--Src/osmoconbb/src/target/firmware/board/compal/handlers.S79
-rw-r--r--Src/osmoconbb/src/target/firmware/board/compal/header.S11
-rw-r--r--Src/osmoconbb/src/target/firmware/board/compal/highram.lds121
-rw-r--r--Src/osmoconbb/src/target/firmware/board/compal/macros.S76
-rw-r--r--Src/osmoconbb/src/target/firmware/board/compal/ram.lds123
-rw-r--r--Src/osmoconbb/src/target/firmware/board/compal/rf_power.c62
-rw-r--r--Src/osmoconbb/src/target/firmware/board/compal/rffe_dualband.c102
-rw-r--r--Src/osmoconbb/src/target/firmware/board/compal/start.ram.S26
-rw-r--r--Src/osmoconbb/src/target/firmware/board/compal/start.rom.S32
-rw-r--r--Src/osmoconbb/src/target/firmware/board/compal_e86/init.c143
-rw-r--r--Src/osmoconbb/src/target/firmware/board/compal_e88/LINKAGE.txt33
-rw-r--r--Src/osmoconbb/src/target/firmware/board/compal_e88/MEMORY_MAP.txt21
-rw-r--r--Src/osmoconbb/src/target/firmware/board/compal_e88/flash.lds134
-rw-r--r--Src/osmoconbb/src/target/firmware/board/compal_e88/init.c136
-rw-r--r--Src/osmoconbb/src/target/firmware/board/compal_e88/loader.lds147
-rw-r--r--Src/osmoconbb/src/target/firmware/board/compal_e99/init.c140
-rw-r--r--Src/osmoconbb/src/target/firmware/board/gta0x/init.c136
-rw-r--r--Src/osmoconbb/src/target/firmware/board/gta0x/rf_power.c63
-rw-r--r--Src/osmoconbb/src/target/firmware/board/gta0x/rffe_gta0x_triband.c131
-rw-r--r--Src/osmoconbb/src/target/firmware/board/manifest.c7
-rw-r--r--Src/osmoconbb/src/target/firmware/board/mediatek/macros.S76
-rw-r--r--Src/osmoconbb/src/target/firmware/board/mediatek/ram.lds112
-rw-r--r--Src/osmoconbb/src/target/firmware/board/mediatek/start.ram.S26
-rw-r--r--Src/osmoconbb/src/target/firmware/board/mediatek/uart.c424
-rw-r--r--Src/osmoconbb/src/target/firmware/board/mt62xx/init.c139
-rw-r--r--Src/osmoconbb/src/target/firmware/board/pirelli_dpl10/init.c127
-rw-r--r--Src/osmoconbb/src/target/firmware/board/pirelli_dpl10/rf_power.c63
-rw-r--r--Src/osmoconbb/src/target/firmware/board/pirelli_dpl10/rffe_dpl10_triband.c136
-rw-r--r--Src/osmoconbb/src/target/firmware/calypso/Makefile4
-rw-r--r--Src/osmoconbb/src/target/firmware/calypso/arm.c26
-rw-r--r--Src/osmoconbb/src/target/firmware/calypso/backlight.c69
-rw-r--r--Src/osmoconbb/src/target/firmware/calypso/buzzer.c86
-rw-r--r--Src/osmoconbb/src/target/firmware/calypso/clock.c200
-rw-r--r--Src/osmoconbb/src/target/firmware/calypso/dma.c44
-rw-r--r--Src/osmoconbb/src/target/firmware/calypso/dsp.c693
-rw-r--r--Src/osmoconbb/src/target/firmware/calypso/dsp_bootcode.c9
-rw-r--r--Src/osmoconbb/src/target/firmware/calypso/dsp_dumpcode.c45
-rw-r--r--Src/osmoconbb/src/target/firmware/calypso/dsp_params.c94
-rw-r--r--Src/osmoconbb/src/target/firmware/calypso/du.c51
-rw-r--r--Src/osmoconbb/src/target/firmware/calypso/i2c.c123
-rw-r--r--Src/osmoconbb/src/target/firmware/calypso/irq.c266
-rw-r--r--Src/osmoconbb/src/target/firmware/calypso/keypad.c198
-rw-r--r--Src/osmoconbb/src/target/firmware/calypso/misc.c60
-rw-r--r--Src/osmoconbb/src/target/firmware/calypso/rtc.c83
-rwxr-xr-xSrc/osmoconbb/src/target/firmware/calypso/sim.c740
-rw-r--r--Src/osmoconbb/src/target/firmware/calypso/spi.c141
-rw-r--r--Src/osmoconbb/src/target/firmware/calypso/timer.c156
-rw-r--r--Src/osmoconbb/src/target/firmware/calypso/tpu.c346
-rw-r--r--Src/osmoconbb/src/target/firmware/calypso/tsp.c121
-rw-r--r--Src/osmoconbb/src/target/firmware/calypso/uart.c440
-rw-r--r--Src/osmoconbb/src/target/firmware/calypso/uwire.c136
-rw-r--r--Src/osmoconbb/src/target/firmware/comm/Makefile5
-rw-r--r--Src/osmoconbb/src/target/firmware/comm/msgb.c78
-rw-r--r--Src/osmoconbb/src/target/firmware/comm/sercomm.c297
-rw-r--r--Src/osmoconbb/src/target/firmware/comm/sercomm_cons.c140
-rw-r--r--Src/osmoconbb/src/target/firmware/comm/timer.c217
-rw-r--r--Src/osmoconbb/src/target/firmware/display/display.c20
-rw-r--r--Src/osmoconbb/src/target/firmware/display/font_r8x8.cbin50349 -> 0 bytes
-rw-r--r--Src/osmoconbb/src/target/firmware/display/font_r8x8_horiz.c261
-rw-r--r--Src/osmoconbb/src/target/firmware/display/ssd1783.c257
-rw-r--r--Src/osmoconbb/src/target/firmware/display/st7558.c121
-rw-r--r--Src/osmoconbb/src/target/firmware/display/td014.c185
-rw-r--r--Src/osmoconbb/src/target/firmware/flash/cfi_flash.c574
-rw-r--r--Src/osmoconbb/src/target/firmware/include/abb/twl3025.h136
-rw-r--r--Src/osmoconbb/src/target/firmware/include/arm.h7
-rw-r--r--Src/osmoconbb/src/target/firmware/include/arpa/inet.h2
-rw-r--r--Src/osmoconbb/src/target/firmware/include/asm/assembler.h113
-rw-r--r--Src/osmoconbb/src/target/firmware/include/asm/atomic.h106
-rw-r--r--Src/osmoconbb/src/target/firmware/include/asm/bitops.h225
-rw-r--r--Src/osmoconbb/src/target/firmware/include/asm/div64.h48
-rw-r--r--Src/osmoconbb/src/target/firmware/include/asm/linkage.h18
-rw-r--r--Src/osmoconbb/src/target/firmware/include/asm/ptrace.h128
-rw-r--r--Src/osmoconbb/src/target/firmware/include/asm/swab.h45
-rw-r--r--Src/osmoconbb/src/target/firmware/include/asm/system.h123
-rw-r--r--Src/osmoconbb/src/target/firmware/include/board.h8
-rw-r--r--Src/osmoconbb/src/target/firmware/include/byteorder.h79
-rw-r--r--Src/osmoconbb/src/target/firmware/include/calypso/backlight.h10
-rw-r--r--Src/osmoconbb/src/target/firmware/include/calypso/buzzer.h34
-rw-r--r--Src/osmoconbb/src/target/firmware/include/calypso/clock.h67
-rw-r--r--Src/osmoconbb/src/target/firmware/include/calypso/dma.h6
-rw-r--r--Src/osmoconbb/src/target/firmware/include/calypso/dsp.h41
-rw-r--r--Src/osmoconbb/src/target/firmware/include/calypso/dsp_api.h1560
-rw-r--r--Src/osmoconbb/src/target/firmware/include/calypso/du.h32
-rw-r--r--Src/osmoconbb/src/target/firmware/include/calypso/irq.h49
-rw-r--r--Src/osmoconbb/src/target/firmware/include/calypso/l1_environment.h385
-rw-r--r--Src/osmoconbb/src/target/firmware/include/calypso/misc.h8
-rw-r--r--Src/osmoconbb/src/target/firmware/include/calypso/rtc.h6
-rwxr-xr-xSrc/osmoconbb/src/target/firmware/include/calypso/sim.h191
-rw-r--r--Src/osmoconbb/src/target/firmware/include/calypso/timer.h25
-rw-r--r--Src/osmoconbb/src/target/firmware/include/calypso/tpu.h122
-rw-r--r--Src/osmoconbb/src/target/firmware/include/calypso/tsp.h31
-rw-r--r--Src/osmoconbb/src/target/firmware/include/comm/msgb.h161
-rw-r--r--Src/osmoconbb/src/target/firmware/include/comm/sercomm.h57
-rw-r--r--Src/osmoconbb/src/target/firmware/include/comm/sercomm_cons.h10
-rw-r--r--Src/osmoconbb/src/target/firmware/include/comm/timer.h76
-rw-r--r--Src/osmoconbb/src/target/firmware/include/console.h20
-rw-r--r--Src/osmoconbb/src/target/firmware/include/ctors.h16
-rw-r--r--Src/osmoconbb/src/target/firmware/include/ctype.h54
-rw-r--r--Src/osmoconbb/src/target/firmware/include/debug.h31
-rw-r--r--Src/osmoconbb/src/target/firmware/include/defines.h18
-rw-r--r--Src/osmoconbb/src/target/firmware/include/delay.h7
-rw-r--r--Src/osmoconbb/src/target/firmware/include/display.h48
-rw-r--r--Src/osmoconbb/src/target/firmware/include/display/ssd1783.h56
-rw-r--r--Src/osmoconbb/src/target/firmware/include/flash/cfi_flash.h41
-rw-r--r--Src/osmoconbb/src/target/firmware/include/i2c.h7
-rw-r--r--Src/osmoconbb/src/target/firmware/include/keypad.h66
-rw-r--r--Src/osmoconbb/src/target/firmware/include/layer1/afc.h18
-rw-r--r--Src/osmoconbb/src/target/firmware/include/layer1/agc.h7
-rw-r--r--Src/osmoconbb/src/target/firmware/include/layer1/apc.h10
-rw-r--r--Src/osmoconbb/src/target/firmware/include/layer1/async.h59
-rw-r--r--Src/osmoconbb/src/target/firmware/include/layer1/avg.h23
-rw-r--r--Src/osmoconbb/src/target/firmware/include/layer1/l23_api.h15
-rw-r--r--Src/osmoconbb/src/target/firmware/include/layer1/mframe_sched.h67
-rw-r--r--Src/osmoconbb/src/target/firmware/include/layer1/prim.h34
-rw-r--r--Src/osmoconbb/src/target/firmware/include/layer1/rfch.h9
-rw-r--r--Src/osmoconbb/src/target/firmware/include/layer1/sched_gsmtime.h24
-rw-r--r--Src/osmoconbb/src/target/firmware/include/layer1/sync.h203
-rw-r--r--Src/osmoconbb/src/target/firmware/include/layer1/tdma_sched.h73
-rw-r--r--Src/osmoconbb/src/target/firmware/include/layer1/toa.h10
-rw-r--r--Src/osmoconbb/src/target/firmware/include/layer1/tpu_window.h24
-rw-r--r--Src/osmoconbb/src/target/firmware/include/manifest.h10
-rw-r--r--Src/osmoconbb/src/target/firmware/include/memory.h28
-rw-r--r--Src/osmoconbb/src/target/firmware/include/mtk/bfe.h107
-rw-r--r--Src/osmoconbb/src/target/firmware/include/mtk/bpi.h20
-rw-r--r--Src/osmoconbb/src/target/firmware/include/mtk/bsi.h41
-rw-r--r--Src/osmoconbb/src/target/firmware/include/mtk/emi.h42
-rw-r--r--Src/osmoconbb/src/target/firmware/include/mtk/mt6139.h60
-rw-r--r--Src/osmoconbb/src/target/firmware/include/mtk/mt6235.h74
-rw-r--r--Src/osmoconbb/src/target/firmware/include/mtk/mt6235_sciphone_g2.h38
-rw-r--r--Src/osmoconbb/src/target/firmware/include/mtk/system.h195
-rw-r--r--Src/osmoconbb/src/target/firmware/include/mtk/tdma_timer.h60
-rw-r--r--Src/osmoconbb/src/target/firmware/include/rf/trf6151.h49
-rw-r--r--Src/osmoconbb/src/target/firmware/include/rffe.h35
-rw-r--r--Src/osmoconbb/src/target/firmware/include/spi.h7
-rw-r--r--Src/osmoconbb/src/target/firmware/include/stdint.h36
-rw-r--r--Src/osmoconbb/src/target/firmware/include/stdio.h52
-rw-r--r--Src/osmoconbb/src/target/firmware/include/string.h12
-rw-r--r--Src/osmoconbb/src/target/firmware/include/swab.h297
-rw-r--r--Src/osmoconbb/src/target/firmware/include/uart.h32
-rw-r--r--Src/osmoconbb/src/target/firmware/include/uwire.h7
-rw-r--r--Src/osmoconbb/src/target/firmware/layer1/Makefile9
-rw-r--r--Src/osmoconbb/src/target/firmware/layer1/afc.c130
-rw-r--r--Src/osmoconbb/src/target/firmware/layer1/agc.c62
-rw-r--r--Src/osmoconbb/src/target/firmware/layer1/apc.c57
-rw-r--r--Src/osmoconbb/src/target/firmware/layer1/async.c159
-rw-r--r--Src/osmoconbb/src/target/firmware/layer1/avg.c57
-rw-r--r--Src/osmoconbb/src/target/firmware/layer1/init.c73
-rw-r--r--Src/osmoconbb/src/target/firmware/layer1/l23_api.c633
-rw-r--r--Src/osmoconbb/src/target/firmware/layer1/mframe_sched.c483
-rw-r--r--Src/osmoconbb/src/target/firmware/layer1/prim_fbsb.c573
-rw-r--r--Src/osmoconbb/src/target/firmware/layer1/prim_freq.c112
-rw-r--r--Src/osmoconbb/src/target/firmware/layer1/prim_pm.c238
-rw-r--r--Src/osmoconbb/src/target/firmware/layer1/prim_rach.c159
-rw-r--r--Src/osmoconbb/src/target/firmware/layer1/prim_rx_nb.c215
-rw-r--r--Src/osmoconbb/src/target/firmware/layer1/prim_tch.c752
-rw-r--r--Src/osmoconbb/src/target/firmware/layer1/prim_tx_nb.c173
-rw-r--r--Src/osmoconbb/src/target/firmware/layer1/prim_utils.c74
-rw-r--r--Src/osmoconbb/src/target/firmware/layer1/rfch.c152
-rw-r--r--Src/osmoconbb/src/target/firmware/layer1/sched_gsmtime.c119
-rw-r--r--Src/osmoconbb/src/target/firmware/layer1/sync.c402
-rw-r--r--Src/osmoconbb/src/target/firmware/layer1/tdma_sched.c244
-rw-r--r--Src/osmoconbb/src/target/firmware/layer1/toa.c80
-rw-r--r--Src/osmoconbb/src/target/firmware/layer1/tpu_window.c167
-rw-r--r--Src/osmoconbb/src/target/firmware/lib/Makefile7
-rw-r--r--Src/osmoconbb/src/target/firmware/lib/bitops.h33
-rw-r--r--Src/osmoconbb/src/target/firmware/lib/changebit.S21
-rw-r--r--Src/osmoconbb/src/target/firmware/lib/clearbit.S22
-rw-r--r--Src/osmoconbb/src/target/firmware/lib/console.c190
-rw-r--r--Src/osmoconbb/src/target/firmware/lib/copy_template.S255
-rw-r--r--Src/osmoconbb/src/target/firmware/lib/ctors.c15
-rw-r--r--Src/osmoconbb/src/target/firmware/lib/ctype.c34
-rw-r--r--Src/osmoconbb/src/target/firmware/lib/delay.c16
-rw-r--r--Src/osmoconbb/src/target/firmware/lib/div64.S200
-rw-r--r--Src/osmoconbb/src/target/firmware/lib/lib1funcs.S334
-rw-r--r--Src/osmoconbb/src/target/firmware/lib/memcpy.S59
-rw-r--r--Src/osmoconbb/src/target/firmware/lib/memset.S80
-rw-r--r--Src/osmoconbb/src/target/firmware/lib/printf.c19
-rw-r--r--Src/osmoconbb/src/target/firmware/lib/setbit.S22
-rw-r--r--Src/osmoconbb/src/target/firmware/lib/string.c50
-rw-r--r--Src/osmoconbb/src/target/firmware/lib/testchangebit.S18
-rw-r--r--Src/osmoconbb/src/target/firmware/lib/testclearbit.S18
-rw-r--r--Src/osmoconbb/src/target/firmware/lib/testsetbit.S18
-rw-r--r--Src/osmoconbb/src/target/firmware/lib/vsprintf.c847
-rw-r--r--Src/osmoconbb/src/target/firmware/rf/mt6139.c205
-rw-r--r--Src/osmoconbb/src/target/firmware/rf/trf6151.c601
-rw-r--r--Src/osmoconbb/src/target/ui-experiment/README11
-rw-r--r--Src/osmoconbb/src/target/ui-experiment/display.h46
-rw-r--r--Src/osmoconbb/src/target/ui-experiment/font.hbin61204 -> 0 bytes
-rw-r--r--Src/osmoconbb/src/target/ui-experiment/image.h166
-rw-r--r--Src/osmoconbb/src/target/ui-experiment/menu.h18
-rw-r--r--Src/osmoconbb/src/target/ui-experiment/pixel.h113
-rw-r--r--Src/osmoconbb/src/target/ui-experiment/png2tiny.c51
-rw-r--r--Src/osmoconbb/src/target/ui-experiment/screen.h21
-rw-r--r--Src/osmoconbb/src/target/ui-experiment/sdl.c250
-rw-r--r--Src/osmoconbb/src/target/ui-experiment/sdl.h9
-rw-r--r--Src/osmoconbb/src/target/ui-experiment/ui.h81
-rw-r--r--Src/osmoconbb/src/target_dsp/.gitignore4
-rw-r--r--Src/osmoconbb/src/target_dsp/calypso/Makefile15
-rwxr-xr-xSrc/osmoconbb/src/target_dsp/calypso/bin2cfile.py57
-rw-r--r--Src/osmoconbb/src/target_dsp/calypso/bl_stage3.S142
-rw-r--r--Src/osmoconbb/src/target_dsp/calypso/dsp_dump.lds22
-rwxr-xr-xSrc/osmoconbb/src/target_dsp/calypso/dump2coff.py261
-rw-r--r--Src/osmoconbb/src/target_dsp/calypso/ida/README.txt73
-rw-r--r--Src/osmoconbb/src/target_dsp/calypso/ida/ndb.h294
-rw-r--r--Src/osmoconbb/src/target_dsp/calypso/ida/tms320c54.cfg136
-rw-r--r--Src/osmoconbb/src/wireshark/gsmtap.patch445
-rw-r--r--Src/osmoconbb/src/wireshark/smscb.patch743
3455 files changed, 0 insertions, 121231 deletions
diff --git a/Src/.metadata/.lock b/Src/.metadata/.lock
deleted file mode 100644
index e69de29..0000000
--- a/Src/.metadata/.lock
+++ /dev/null
diff --git a/Src/.metadata/.log b/Src/.metadata/.log
deleted file mode 100644
index 03bdc90..0000000
--- a/Src/.metadata/.log
+++ /dev/null
@@ -1,82 +0,0 @@
-!SESSION 2011-06-17 17:53:37.881 -----------------------------------------------
-eclipse.buildId=M20100211-1343
-java.version=1.6.0_20
-java.vendor=Sun Microsystems Inc.
-BootLoader constants: OS=linux, ARCH=x86, WS=gtk, NL=en_US
-Command-line arguments: -os linux -ws gtk -arch x86
-
-!ENTRY org.eclipse.jface 2 0 2011-06-17 17:53:47.112
-!MESSAGE Keybinding conflicts occurred. They may interfere with normal accelerator operation.
-!SUBENTRY 1 org.eclipse.jface 2 0 2011-06-17 17:53:47.112
-!MESSAGE A conflict occurred for CTRL+SHIFT+T:
-Binding(CTRL+SHIFT+T,
- ParameterizedCommand(Command(org.eclipse.jdt.ui.navigate.open.type,Open Type,
- Open a type in a Java editor,
- Category(org.eclipse.ui.category.navigate,Navigate,null,true),
- ,
- ,,true),null),
- org.eclipse.ui.defaultAcceleratorConfiguration,
- org.eclipse.ui.contexts.window,,,system)
-Binding(CTRL+SHIFT+T,
- ParameterizedCommand(Command(com.python.pydev.analysis.actions.pyGlobalsBrowserWorkbench,Python Show Class Browser,
- Show Class Browser,
- Category(org.python.pydev.ui.category.source,PyDev - Editor,PyDev editor category,true),
- ,
- ,,true),null),
- org.eclipse.ui.defaultAcceleratorConfiguration,
- org.eclipse.ui.contexts.window,,,system)
-
-!ENTRY org.python.pydev 1 1 2011-06-17 17:54:10.199
-!MESSAGE Information about process of adding new interpreter:
-- Chosen interpreter (name and file):'Tuple [python -- /usr/bin/python2.6]
-- Ok, file is non-null. Getting info on:/usr/bin/python2.6
-- Beggining task:Getting libs totalWork:100
-- Setting task name:Mounting executable string...
-- Setting task name:Executing: /usr/bin/python2.6 -u /home/tom/.eclipse/org.eclipse.platform_3.5.0_155965261/plugins/org.python.pydev_2.1.0.2011052613/PySrc/interpreterInfo.py
-- Setting task name:Making pythonpath environment... /usr/bin/python2.6 -u /home/tom/.eclipse/org.eclipse.platform_3.5.0_155965261/plugins/org.python.pydev_2.1.0.2011052613/PySrc/interpreterInfo.py
-- Setting task name:Making exec... /usr/bin/python2.6 -u /home/tom/.eclipse/org.eclipse.platform_3.5.0_155965261/plugins/org.python.pydev_2.1.0.2011052613/PySrc/interpreterInfo.py
-- Setting task name:Reading output...
-- Setting task name:Waiting for process to finish.
-- Success getting the info. Result:Name:python:EndName:Version2.6Executable:/usr/bin/python2.6|/usr/lib/pymodules/python2.6|/usr/lib/pymodules/python2.6/gtk-2.0|/usr/lib/python2.6|/usr/lib/python2.6/dist-packages|/usr/lib/python2.6/dist-packages/PIL|/usr/lib/python2.6/dist-packages/gst-0.10|/usr/lib/python2.6/dist-packages/gtk-2.0|/usr/lib/python2.6/lib-dynload|/usr/lib/python2.6/lib-old|/usr/lib/python2.6/lib-tk|/usr/lib/python2.6/plat-linux2|/usr/local/lib/python2.6/dist-packages@$|Image|OpenGL|__builtin__|__main__|_ast|_bisect|_bytesio|_codecs|_codecs_cn|_codecs_hk|_codecs_iso2022|_codecs_jp|_codecs_kr|_codecs_tw|_collections|_csv|_fileio|_functools|_hashlib|_heapq|_hotshot|_json|_locale|_lsprof|_md5|_multibytecodec|_random|_sha|_sha256|_sha512|_socket|_sre|_ssl|_struct|_subprocess|_symtable|_warnings|_weakref|_winreg|array|audioop|binascii|cPickle|cStringIO|cmath|datetime|email|errno|exceptions|fcntl|future_builtins|gc|grp|hashlib|imageop|imp|itertools|marshal|math|mmap|msvcrt|nt|numpy|operator|os|os.path|parser|posix|pwd|select|signal|socket|spwd|strop|sys|syslog|thread|time|unicodedata|wx|wxPython|xxsubtype|zipimport|zlib
-
-
-!ENTRY org.python.pydev 1 1 2011-06-17 17:54:12.563
-!MESSAGE Restoring info for: /usr/bin/python2.6
-!STACK 0
-java.lang.RuntimeException: Restoring info for: /usr/bin/python2.6
- at org.python.pydev.ui.interpreters.AbstractInterpreterManager.getInterpretersFromPersistedString(AbstractInterpreterManager.java:491)
- at org.python.pydev.ui.interpreters.AbstractInterpreterManager.internalRecreateCacheGetInterpreterInfos(AbstractInterpreterManager.java:326)
- at org.python.pydev.ui.interpreters.AbstractInterpreterManager.setInfos(AbstractInterpreterManager.java:594)
- at org.python.pydev.ui.pythonpathconf.AbstractInterpreterPreferencesPage$3.run(AbstractInterpreterPreferencesPage.java:256)
- at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
-Caused by: java.io.IOException: Expecting: /home/tom/Thesis/Src/.metadata/.plugins/org.python.pydev/v1_4fkkw82y758w8n00pmr7xyd93/modulesKeys to exist (and be a file).
- at org.python.pydev.editor.codecompletion.revisited.ModulesManager.loadFromFile(ModulesManager.java:234)
- at org.python.pydev.editor.codecompletion.revisited.SystemModulesManager.load(SystemModulesManager.java:369)
- at org.python.pydev.ui.interpreters.AbstractInterpreterManager.getInterpretersFromPersistedString(AbstractInterpreterManager.java:489)
- ... 4 more
-
-!ENTRY org.python.pydev.core 1 1 2011-06-17 17:54:22.566
-!MESSAGE Expected IO issue (version changed or validation not ok): properly handled.
-!STACK 0
-java.io.IOException: Expecting: /home/tom/Thesis/Src/.metadata/.plugins/org.eclipse.core.resources/.projects/CatcherGUI/org.python.pydev/v1_astmanager/modulesKeys to exist (and be a file).
- at org.python.pydev.editor.codecompletion.revisited.ModulesManager.loadFromFile(ModulesManager.java:234)
- at org.python.pydev.editor.codecompletion.revisited.ASTManager.loadFromFile(ASTManager.java:106)
- at org.python.pydev.plugin.nature.PythonNature.init(PythonNature.java:548)
- at org.python.pydev.plugin.nature.PythonNature.setProject(PythonNature.java:309)
- at org.eclipse.core.internal.resources.NatureManager.createNature(NatureManager.java:232)
- at org.eclipse.core.internal.resources.NatureManager$1.run(NatureManager.java:142)
- at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
- at org.eclipse.core.internal.resources.NatureManager.configureNature(NatureManager.java:158)
- at org.eclipse.core.internal.resources.NatureManager.configureNatures(NatureManager.java:203)
- at org.eclipse.core.internal.resources.Project.basicSetDescription(Project.java:84)
- at org.eclipse.core.internal.resources.Project.setDescription(Project.java:1054)
- at org.eclipse.core.internal.resources.Project.setDescription(Project.java:1082)
- at org.python.pydev.plugin.nature.PythonNature.addNature(PythonNature.java:418)
- at org.python.pydev.plugin.PyStructureConfigHelpers.createPydevProject(PyStructureConfigHelpers.java:172)
- at org.python.pydev.plugin.PyStructureConfigHelpers.createPydevProject(PyStructureConfigHelpers.java:56)
- at org.python.pydev.ui.wizards.project.PythonProjectWizard.createAndConfigProject(PythonProjectWizard.java:203)
- at org.python.pydev.ui.wizards.project.PythonProjectWizard$1.execute(PythonProjectWizard.java:142)
- at org.eclipse.ui.actions.WorkspaceModifyOperation$1.run(WorkspaceModifyOperation.java:106)
- at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1800)
- at org.eclipse.ui.actions.WorkspaceModifyOperation.run(WorkspaceModifyOperation.java:118)
- at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/python.pydevsysteminfo b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/python.pydevsysteminfo
deleted file mode 100644
index 94281f9..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/python.pydevsysteminfo
+++ /dev/null
Binary files differ
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ANSI_cjux.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ANSI_cjux.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ANSI_cjux.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/AptUrl.AptUrl_db1m.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/AptUrl.AptUrl_db1m.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/AptUrl.AptUrl_db1m.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/AptUrl.Helpers_8t9v.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/AptUrl.Helpers_8t9v.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/AptUrl.Helpers_8t9v.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/AptUrl.Parser_b3mb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/AptUrl.Parser_b3mb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/AptUrl.Parser_b3mb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/AptUrl.UI_bodj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/AptUrl.UI_bodj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/AptUrl.UI_bodj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/AptUrl.Version_6s1m.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/AptUrl.Version_6s1m.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/AptUrl.Version_6s1m.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/AptUrl.__init___3c5k.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/AptUrl.__init___3c5k.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/AptUrl.__init___3c5k.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/AptUrl.gtk.GtkUI_ao52.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/AptUrl.gtk.GtkUI_ao52.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/AptUrl.gtk.GtkUI_ao52.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/AptUrl.gtk.__init___emwd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/AptUrl.gtk.__init___emwd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/AptUrl.gtk.__init___emwd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ArgImagePlugin_crhf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ArgImagePlugin_crhf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ArgImagePlugin_crhf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/BaseHTTPServer_inj3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/BaseHTTPServer_inj3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/BaseHTTPServer_inj3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Bastion_8204.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Bastion_8204.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Bastion_8204.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/BdfFontFile_2aji.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/BdfFontFile_2aji.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/BdfFontFile_2aji.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/BmpImagePlugin_8k86.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/BmpImagePlugin_8k86.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/BmpImagePlugin_8k86.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/BufrStubImagePlugin_aa87.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/BufrStubImagePlugin_aa87.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/BufrStubImagePlugin_aa87.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/CDDB_7kj4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/CDDB_7kj4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/CDDB_7kj4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/CDROM_9r0q.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/CDROM_9r0q.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/CDROM_9r0q.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/CGIHTTPServer_chwl.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/CGIHTTPServer_chwl.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/CGIHTTPServer_chwl.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Canvas_6jte.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Canvas_6jte.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Canvas_6jte.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/CommandNotFound.CommandNotFound_esff.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/CommandNotFound.CommandNotFound_esff.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/CommandNotFound.CommandNotFound_esff.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/CommandNotFound.__init___5kps.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/CommandNotFound.__init___5kps.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/CommandNotFound.__init___5kps.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/CommandNotFound.util_a41p.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/CommandNotFound.util_a41p.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/CommandNotFound.util_a41p.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ConfigParser_8csi.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ConfigParser_8csi.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ConfigParser_8csi.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ContainerIO_b82o.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ContainerIO_b82o.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ContainerIO_b82o.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Cookie_6nmm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Cookie_6nmm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Cookie_6nmm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Cipher.__init___6gkz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Cipher.__init___6gkz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Cipher.__init___6gkz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Hash.HMAC_a93w.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Hash.HMAC_a93w.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Hash.HMAC_a93w.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Hash.MD5_4rb0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Hash.MD5_4rb0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Hash.MD5_4rb0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Hash.SHA_ec7d.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Hash.SHA_ec7d.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Hash.SHA_ec7d.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Hash.__init___d3ve.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Hash.__init___d3ve.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Hash.__init___d3ve.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Protocol.AllOrNothing_5rt8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Protocol.AllOrNothing_5rt8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Protocol.AllOrNothing_5rt8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Protocol.Chaffing_21ks.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Protocol.Chaffing_21ks.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Protocol.Chaffing_21ks.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Protocol.__init___bdzy.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Protocol.__init___bdzy.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Protocol.__init___bdzy.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.PublicKey.DSA_1q09.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.PublicKey.DSA_1q09.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.PublicKey.DSA_1q09.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.PublicKey.ElGamal_cfct.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.PublicKey.ElGamal_cfct.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.PublicKey.ElGamal_cfct.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.PublicKey.RSA_2yu6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.PublicKey.RSA_2yu6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.PublicKey.RSA_2yu6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.PublicKey.__init___bmkn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.PublicKey.__init___bmkn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.PublicKey.__init___bmkn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.PublicKey.pubkey_82hc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.PublicKey.pubkey_82hc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.PublicKey.pubkey_82hc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.PublicKey.qNEW_4qtx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.PublicKey.qNEW_4qtx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.PublicKey.qNEW_4qtx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Util.RFC1751_8z7p.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Util.RFC1751_8z7p.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Util.RFC1751_8z7p.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Util.__init___998h.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Util.__init___998h.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Util.__init___998h.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Util.number_12g0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Util.number_12g0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Util.number_12g0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Util.randpool_59gf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Util.randpool_59gf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Util.randpool_59gf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Util.test_2pki.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Util.test_2pki.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.Util.test_2pki.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.__init___3ey2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.__init___3ey2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.__init___3ey2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.test_5m0n.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.test_5m0n.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Crypto.test_5m0n.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/CurImagePlugin_tdb1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/CurImagePlugin_tdb1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/CurImagePlugin_tdb1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DLFCN_ap9p.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DLFCN_ap9p.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DLFCN_ap9p.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DcxImagePlugin_bq6j.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DcxImagePlugin_bq6j.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DcxImagePlugin_bq6j.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Dialog_cgzu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Dialog_cgzu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Dialog_cgzu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DiscID_2j6f.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DiscID_2j6f.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DiscID_2j6f.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeApport_am3j.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeApport_am3j.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeApport_am3j.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeAptCdrom_36b9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeAptCdrom_36b9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeAptCdrom_36b9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeAufs_3fs2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeAufs_3fs2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeAufs_3fs2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeCache_awbq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeCache_awbq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeCache_awbq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeConfigParser_3xse.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeConfigParser_3xse.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeConfigParser_3xse.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeController_4m1n.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeController_4m1n.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeController_4m1n.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeFetcherCore_3yc7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeFetcherCore_3yc7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeFetcherCore_3yc7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeFetcherSelf_5j0c.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeFetcherSelf_5j0c.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeFetcherSelf_5j0c.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeGettext_3kyr.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeGettext_3kyr.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeGettext_3kyr.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeMain_aohk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeMain_aohk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeMain_aohk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeQuirks_82ka.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeQuirks_82ka.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeQuirks_82ka.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeVersion_7a50.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeVersion_7a50.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeVersion_7a50.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeViewGtk_bkg9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeViewGtk_bkg9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeViewGtk_bkg9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeViewKDE_41lg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeViewKDE_41lg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeViewKDE_41lg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeViewNonInteractive_8tcv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeViewNonInteractive_8tcv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeViewNonInteractive_8tcv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeViewText_4w6s.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeViewText_4w6s.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeViewText_4w6s.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeView_exzt.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeView_exzt.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.DistUpgradeView_exzt.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.MetaRelease_65pv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.MetaRelease_65pv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.MetaRelease_65pv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.SimpleGtkbuilderApp_cuwt.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.SimpleGtkbuilderApp_cuwt.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.SimpleGtkbuilderApp_cuwt.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.__init___7m9y.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.__init___7m9y.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.__init___7m9y.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.distinfo_bgwl.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.distinfo_bgwl.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.distinfo_bgwl.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.distro_7fac.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.distro_7fac.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.distro_7fac.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.sourceslist_anrp.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.sourceslist_anrp.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.sourceslist_anrp.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.utils_418v.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.utils_418v.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.utils_418v.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.xorg_fix_proprietary_b3i0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.xorg_fix_proprietary_b3i0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DistUpgrade.xorg_fix_proprietary_b3i0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DocXMLRPCServer_533a.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DocXMLRPCServer_533a.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/DocXMLRPCServer_533a.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/EpsImagePlugin_dovi.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/EpsImagePlugin_dovi.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/EpsImagePlugin_dovi.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ExifTags_d84j.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ExifTags_d84j.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ExifTags_d84j.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/FSM_78rb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/FSM_78rb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/FSM_78rb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/FileDialog_2132.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/FileDialog_2132.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/FileDialog_2132.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/FitsStubImagePlugin_46tw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/FitsStubImagePlugin_46tw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/FitsStubImagePlugin_46tw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/FixTk_7gag.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/FixTk_7gag.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/FixTk_7gag.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/FliImagePlugin_80xg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/FliImagePlugin_80xg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/FliImagePlugin_80xg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/FontFile_el2r.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/FontFile_el2r.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/FontFile_el2r.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/FpxImagePlugin_71cw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/FpxImagePlugin_71cw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/FpxImagePlugin_71cw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GDebi.DebPackage_72dt.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GDebi.DebPackage_72dt.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GDebi.DebPackage_72dt.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GDebi.GDebiCli_20wy.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GDebi.GDebiCli_20wy.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GDebi.GDebiCli_20wy.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GDebi.GDebiCommon_de8a.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GDebi.GDebiCommon_de8a.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GDebi.GDebiCommon_de8a.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GDebi.GDebi_cdvu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GDebi.GDebi_cdvu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GDebi.GDebi_cdvu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GDebi.SimpleGtkbuilderApp_d9zc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GDebi.SimpleGtkbuilderApp_d9zc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GDebi.SimpleGtkbuilderApp_d9zc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GDebi.Version_7zsj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GDebi.Version_7zsj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GDebi.Version_7zsj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GDebi.__init___x7oy.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GDebi.__init___x7oy.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GDebi.__init___x7oy.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GMenuSimpleEditor.__init___71ye.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GMenuSimpleEditor.__init___71ye.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GMenuSimpleEditor.__init___71ye.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GMenuSimpleEditor.config_7vbr.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GMenuSimpleEditor.config_7vbr.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GMenuSimpleEditor.config_7vbr.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GMenuSimpleEditor.main_7p1d.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GMenuSimpleEditor.main_7p1d.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GMenuSimpleEditor.main_7p1d.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GMenuSimpleEditor.maindialog_6brk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GMenuSimpleEditor.maindialog_6brk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GMenuSimpleEditor.maindialog_6brk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GMenuSimpleEditor.menufilewriter_ahhd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GMenuSimpleEditor.menufilewriter_ahhd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GMenuSimpleEditor.menufilewriter_ahhd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GMenuSimpleEditor.menutreemodel_cy7x.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GMenuSimpleEditor.menutreemodel_cy7x.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GMenuSimpleEditor.menutreemodel_cy7x.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GbrImagePlugin_7y1p.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GbrImagePlugin_7y1p.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GbrImagePlugin_7y1p.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GdImageFile_62q9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GdImageFile_62q9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GdImageFile_62q9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GifImagePlugin_8i54.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GifImagePlugin_8i54.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GifImagePlugin_8i54.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GimpGradientFile_1yrz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GimpGradientFile_1yrz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GimpGradientFile_1yrz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GimpPaletteFile_69q2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GimpPaletteFile_69q2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GimpPaletteFile_69q2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GnomeCodecInstall.MainWindow_b9na.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GnomeCodecInstall.MainWindow_b9na.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GnomeCodecInstall.MainWindow_b9na.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GnomeCodecInstall.Main_aonp.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GnomeCodecInstall.Main_aonp.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GnomeCodecInstall.Main_aonp.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GnomeCodecInstall.PackageWorker_aofu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GnomeCodecInstall.PackageWorker_aofu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GnomeCodecInstall.PackageWorker_aofu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GnomeCodecInstall.__init___2fcn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GnomeCodecInstall.__init___2fcn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GnomeCodecInstall.__init___2fcn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GnuPGInterface_1458.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GnuPGInterface_1458.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GnuPGInterface_1458.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GribStubImagePlugin_a4ko.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GribStubImagePlugin_a4ko.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/GribStubImagePlugin_a4ko.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/HTMLParser_c838.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/HTMLParser_c838.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/HTMLParser_c838.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Hdf5StubImagePlugin_8due.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Hdf5StubImagePlugin_8due.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Hdf5StubImagePlugin_8due.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/IN_bv6h.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/IN_bv6h.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/IN_bv6h.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/IcnsImagePlugin_6r31.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/IcnsImagePlugin_6r31.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/IcnsImagePlugin_6r31.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/IcoImagePlugin_46mh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/IcoImagePlugin_46mh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/IcoImagePlugin_46mh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImImagePlugin_7y91.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImImagePlugin_7y91.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImImagePlugin_7y91.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageChops_5gld.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageChops_5gld.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageChops_5gld.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageCms_dk2n.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageCms_dk2n.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageCms_dk2n.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageColor_5ttj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageColor_5ttj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageColor_5ttj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageDraw2_5iw2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageDraw2_5iw2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageDraw2_5iw2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageDraw_ay59.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageDraw_ay59.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageDraw_ay59.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageEnhance_62g1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageEnhance_62g1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageEnhance_62g1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageFileIO_adab.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageFileIO_adab.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageFileIO_adab.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageFile_5vog.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageFile_5vog.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageFile_5vog.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageFilter_enhc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageFilter_enhc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageFilter_enhc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageFont_e98q.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageFont_e98q.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageFont_e98q.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageGL_e88g.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageGL_e88g.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageGL_e88g.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageGrab_8bbc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageGrab_8bbc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageGrab_8bbc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageMath_ackk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageMath_ackk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageMath_ackk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageMode_1rkp.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageMode_1rkp.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageMode_1rkp.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageOps_2cej.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageOps_2cej.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageOps_2cej.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImagePalette_6mio.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImagePalette_6mio.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImagePalette_6mio.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImagePath_bts1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImagePath_bts1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImagePath_bts1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageQt_83yx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageQt_83yx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageQt_83yx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageSequence_iaa5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageSequence_iaa5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageSequence_iaa5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageShow_5xvc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageShow_5xvc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageShow_5xvc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageStat_8oh7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageStat_8oh7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageStat_8oh7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageTransform_bxwo.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageTransform_bxwo.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageTransform_bxwo.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageWin_8iq8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageWin_8iq8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImageWin_8iq8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Image_b9n2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Image_b9n2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Image_b9n2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImtImagePlugin_dhbc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImtImagePlugin_dhbc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ImtImagePlugin_dhbc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/IptcImagePlugin_cwzi.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/IptcImagePlugin_cwzi.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/IptcImagePlugin_cwzi.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/JpegImagePlugin_33c6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/JpegImagePlugin_33c6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/JpegImagePlugin_33c6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.CheckLanguageSupport_e9za.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.CheckLanguageSupport_e9za.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.CheckLanguageSupport_e9za.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.FontConfig_6ke4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.FontConfig_6ke4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.FontConfig_6ke4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.ImSwitch_9fzu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.ImSwitch_9fzu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.ImSwitch_9fzu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.LangCache_1suo.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.LangCache_1suo.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.LangCache_1suo.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.LanguageSelector_a7ej.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.LanguageSelector_a7ej.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.LanguageSelector_a7ej.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.LocaleInfo_aa1r.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.LocaleInfo_aa1r.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.LocaleInfo_aa1r.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.__init___4yjw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.__init___4yjw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.__init___4yjw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.gtk.GtkLanguageSelector_2mrb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.gtk.GtkLanguageSelector_2mrb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.gtk.GtkLanguageSelector_2mrb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.gtk.SimpleGtkbuilderApp_1a1x.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.gtk.SimpleGtkbuilderApp_1a1x.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.gtk.SimpleGtkbuilderApp_1a1x.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.gtk.__init___6uik.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.gtk.__init___6uik.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.gtk.__init___6uik.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.macros_9cd1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.macros_9cd1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.macros_9cd1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.utils_2ell.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.utils_2ell.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.utils_2ell.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.xkb_5qz4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.xkb_5qz4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LanguageSelector.xkb_5qz4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LaunchpadIntegration.__init___c8c6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LaunchpadIntegration.__init___c8c6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/LaunchpadIntegration.__init___c8c6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/McIdasImagePlugin_5w3o.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/McIdasImagePlugin_5w3o.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/McIdasImagePlugin_5w3o.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/MicImagePlugin_59r2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/MicImagePlugin_59r2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/MicImagePlugin_59r2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/MimeWriter_38id.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/MimeWriter_38id.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/MimeWriter_38id.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/MpegImagePlugin_fkor.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/MpegImagePlugin_fkor.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/MpegImagePlugin_fkor.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/MspImagePlugin_ahmi.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/MspImagePlugin_ahmi.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/MspImagePlugin_ahmi.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/NvidiaDetector.__init___94cs.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/NvidiaDetector.__init___94cs.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/NvidiaDetector.__init___94cs.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/NvidiaDetector.alternatives_5ugu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/NvidiaDetector.alternatives_5ugu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/NvidiaDetector.alternatives_5ugu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/NvidiaDetector.nvidiadetector_1jvi.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/NvidiaDetector.nvidiadetector_1jvi.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/NvidiaDetector.nvidiadetector_1jvi.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/OleFileIO_4mtf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/OleFileIO_4mtf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/OleFileIO_4mtf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.Config_23p7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.Config_23p7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.Config_23p7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.Exceptions_567e.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.Exceptions_567e.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.Exceptions_567e.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.IconPalette_a7cj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.IconPalette_a7cj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.IconPalette_a7cj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.Indicator_diek.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.Indicator_diek.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.Indicator_diek.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.KbdWindow_753a.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.KbdWindow_753a.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.KbdWindow_753a.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.KeyCommon_9tw2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.KeyCommon_9tw2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.KeyCommon_9tw2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.KeyGtk_3wow.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.KeyGtk_3wow.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.KeyGtk_3wow.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.KeyboardGTK_6f7l.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.KeyboardGTK_6f7l.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.KeyboardGTK_6f7l.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.KeyboardSVG_8zgi.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.KeyboardSVG_8zgi.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.KeyboardSVG_8zgi.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.Keyboard_dfda.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.Keyboard_dfda.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.Keyboard_dfda.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.OnboardGtk_er49.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.OnboardGtk_er49.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.OnboardGtk_er49.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.Pane_a09x.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.Pane_a09x.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.Pane_a09x.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.SnippetList_a3p8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.SnippetList_a3p8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.SnippetList_a3p8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.X11_1qo7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.X11_1qo7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.X11_1qo7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.__init___94b7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.__init___94b7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.__init___94b7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.settings_1psh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.settings_1psh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.settings_1psh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.utils_6ug2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.utils_6ug2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Onboard.utils_6ug2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/OpenSSL.__init___6tb6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/OpenSSL.__init___6tb6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/OpenSSL.__init___6tb6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/OpenSSL.test.__init___aa80.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/OpenSSL.test.__init___aa80.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/OpenSSL.test.__init___aa80.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/OpenSSL.test.test_crypto_1w16.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/OpenSSL.test.test_crypto_1w16.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/OpenSSL.test.test_crypto_1w16.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/OpenSSL.test.test_rand_d4i9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/OpenSSL.test.test_rand_d4i9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/OpenSSL.test.test_rand_d4i9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/OpenSSL.test.test_ssl_6cdd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/OpenSSL.test.test_ssl_6cdd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/OpenSSL.test.test_ssl_6cdd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/OpenSSL.test.util_blmg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/OpenSSL.test.util_blmg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/OpenSSL.test.util_blmg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/OpenSSL.tsafe_dm42.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/OpenSSL.tsafe_dm42.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/OpenSSL.tsafe_dm42.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/OpenSSL.version_6wwq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/OpenSSL.version_6wwq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/OpenSSL.version_6wwq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PSDraw_4wgh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PSDraw_4wgh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PSDraw_4wgh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PaletteFile_eda8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PaletteFile_eda8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PaletteFile_eda8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PalmImagePlugin_5ya5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PalmImagePlugin_5ya5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PalmImagePlugin_5ya5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PcdImagePlugin_5mop.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PcdImagePlugin_5mop.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PcdImagePlugin_5mop.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PcfFontFile_dits.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PcfFontFile_dits.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PcfFontFile_dits.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PcxImagePlugin_9eb4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PcxImagePlugin_9eb4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PcxImagePlugin_9eb4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PdfImagePlugin_7yyx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PdfImagePlugin_7yyx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PdfImagePlugin_7yyx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PixarImagePlugin_6g3o.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PixarImagePlugin_6g3o.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PixarImagePlugin_6g3o.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PngImagePlugin_2bvz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PngImagePlugin_2bvz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PngImagePlugin_2bvz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PpmImagePlugin_15yp.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PpmImagePlugin_15yp.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PpmImagePlugin_15yp.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PsdImagePlugin_ezsg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PsdImagePlugin_ezsg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PsdImagePlugin_ezsg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyKDE4.__init___7v9e.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyKDE4.__init___7v9e.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyKDE4.__init___7v9e.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyKDE4.pykdeconfig_c063.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyKDE4.pykdeconfig_c063.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyKDE4.pykdeconfig_c063.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.__init___2kls.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.__init___2kls.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.__init___2kls.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.pyqtconfig_dfqu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.pyqtconfig_dfqu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.pyqtconfig_dfqu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Compiler.__init___3fx9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Compiler.__init___3fx9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Compiler.__init___3fx9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Compiler.compiler_34gw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Compiler.compiler_34gw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Compiler.compiler_34gw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Compiler.indenter_b3p8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Compiler.indenter_b3p8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Compiler.indenter_b3p8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Compiler.misc_18tv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Compiler.misc_18tv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Compiler.misc_18tv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Compiler.proxy_type_7zca.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Compiler.proxy_type_7zca.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Compiler.proxy_type_7zca.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Compiler.qobjectcreator_7dqt.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Compiler.qobjectcreator_7dqt.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Compiler.qobjectcreator_7dqt.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Compiler.qtproxies_7xbd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Compiler.qtproxies_7xbd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Compiler.qtproxies_7xbd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Loader.__init___ets9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Loader.__init___ets9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Loader.__init___ets9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Loader.loader_ef4p.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Loader.loader_ef4p.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Loader.loader_ef4p.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Loader.qobjectcreator_322f.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Loader.qobjectcreator_322f.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.Loader.qobjectcreator_322f.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.__init___3cpa.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.__init___3cpa.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.__init___3cpa.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.driver_59b1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.driver_59b1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.driver_59b1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.exceptions_cby4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.exceptions_cby4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.exceptions_cby4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.icon_cache_1e13.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.icon_cache_1e13.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.icon_cache_1e13.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.objcreator_2j7f.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.objcreator_2j7f.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.objcreator_2j7f.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.port_v2.__init___7bv2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.port_v2.__init___7bv2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.port_v2.__init___7bv2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.port_v2.ascii_upper_1dpl.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.port_v2.ascii_upper_1dpl.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.port_v2.ascii_upper_1dpl.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.port_v2.encode_utf8_1zee.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.port_v2.encode_utf8_1zee.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.port_v2.encode_utf8_1zee.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.port_v2.invoke_782z.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.port_v2.invoke_782z.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.port_v2.invoke_782z.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.port_v2.load_plugin_31g3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.port_v2.load_plugin_31g3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.port_v2.load_plugin_31g3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.port_v2.proxy_base_ekkg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.port_v2.proxy_base_ekkg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.port_v2.proxy_base_ekkg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.port_v2.string_io_emht.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.port_v2.string_io_emht.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.port_v2.string_io_emht.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.properties_cquo.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.properties_cquo.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.properties_cquo.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.pykdeuic4_4bma.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.pykdeuic4_4bma.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.pykdeuic4_4bma.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.pyuic_3l9v.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.pyuic_3l9v.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.pyuic_3l9v.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.uiparser_2kzm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.uiparser_2kzm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/PyQt4.uic.uiparser_2kzm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Queue_6rbm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Queue_6rbm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Queue_6rbm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ScreenResolution.__init___4ust.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ScreenResolution.__init___4ust.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ScreenResolution.__init___4ust.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ScreenResolution.ui_eiii.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ScreenResolution.ui_eiii.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ScreenResolution.ui_eiii.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ScrolledText_obzp.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ScrolledText_obzp.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ScrolledText_obzp.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/SgiImagePlugin_e5ph.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/SgiImagePlugin_e5ph.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/SgiImagePlugin_e5ph.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/SimpleDialog_8ekv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/SimpleDialog_8ekv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/SimpleDialog_8ekv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/SimpleHTTPServer_dl0r.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/SimpleHTTPServer_dl0r.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/SimpleHTTPServer_dl0r.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/SimpleXMLRPCServer_23br.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/SimpleXMLRPCServer_23br.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/SimpleXMLRPCServer_23br.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/SocketServer_wa2l.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/SocketServer_wa2l.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/SocketServer_wa2l.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/SpiderImagePlugin_9n1s.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/SpiderImagePlugin_9n1s.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/SpiderImagePlugin_9n1s.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/StringIO_a06u.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/StringIO_a06u.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/StringIO_a06u.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/SunImagePlugin_84xy.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/SunImagePlugin_84xy.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/SunImagePlugin_84xy.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/TYPES_6cbc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/TYPES_6cbc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/TYPES_6cbc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/TarIO_1i8g.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/TarIO_1i8g.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/TarIO_1i8g.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/TgaImagePlugin_3chn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/TgaImagePlugin_3chn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/TgaImagePlugin_3chn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/TiffImagePlugin_3le1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/TiffImagePlugin_3le1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/TiffImagePlugin_3le1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/TiffTags_e7dm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/TiffTags_e7dm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/TiffTags_e7dm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Tix_b364.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Tix_b364.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Tix_b364.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Tkconstants_nqh4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Tkconstants_nqh4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Tkconstants_nqh4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Tkdnd_bgrj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Tkdnd_bgrj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Tkdnd_bgrj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Tkinter_6lqi.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Tkinter_6lqi.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/Tkinter_6lqi.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UbuntuSystemService.__init___5z7k.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UbuntuSystemService.__init___5z7k.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UbuntuSystemService.__init___5z7k.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UbuntuSystemService.utils_1jfz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UbuntuSystemService.utils_1jfz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UbuntuSystemService.utils_1jfz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.ChangelogViewer_5ia3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.ChangelogViewer_5ia3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.ChangelogViewer_5ia3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.Core.AlertWatcher_9olu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.Core.AlertWatcher_9olu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.Core.AlertWatcher_9olu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.Core.DistUpgradeFetcherCore_cau1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.Core.DistUpgradeFetcherCore_cau1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.Core.DistUpgradeFetcherCore_cau1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.Core.MetaRelease_ci7q.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.Core.MetaRelease_ci7q.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.Core.MetaRelease_ci7q.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.Core.MyCache_cthf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.Core.MyCache_cthf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.Core.MyCache_cthf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.Core.UpdateList_53q0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.Core.UpdateList_53q0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.Core.UpdateList_53q0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.Core.__init___7cm0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.Core.__init___7cm0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.Core.__init___7cm0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.Core.utils_733i.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.Core.utils_733i.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.Core.utils_733i.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.DistUpgradeFetcher_5gtn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.DistUpgradeFetcher_5gtn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.DistUpgradeFetcher_5gtn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.GtkProgress_3u3c.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.GtkProgress_3u3c.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.GtkProgress_3u3c.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.HelpViewer_2guv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.HelpViewer_2guv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.HelpViewer_2guv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.MetaReleaseGObject_5c6u.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.MetaReleaseGObject_5c6u.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.MetaReleaseGObject_5c6u.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.ReleaseNotesViewer_dgfb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.ReleaseNotesViewer_dgfb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.ReleaseNotesViewer_dgfb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.SafeGConfClient_b32s.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.SafeGConfClient_b32s.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.SafeGConfClient_b32s.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.SimpleGtkbuilderApp_c0l8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.SimpleGtkbuilderApp_c0l8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.SimpleGtkbuilderApp_c0l8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.UpdateManager_5vvm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.UpdateManager_5vvm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.UpdateManager_5vvm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.__init___cqpo.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.__init___cqpo.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.__init___cqpo.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.backend.InstallBackendAptdaemon_94w0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.backend.InstallBackendAptdaemon_94w0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.backend.InstallBackendAptdaemon_94w0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.backend.InstallBackendSynaptic_avse.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.backend.InstallBackendSynaptic_avse.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.backend.InstallBackendSynaptic_avse.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.backend.__init___774p.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.backend.__init___774p.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UpdateManager.backend.__init___774p.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UserDict_ap0o.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UserDict_ap0o.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UserDict_ap0o.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UserList_5q9g.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UserList_5q9g.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UserList_5q9g.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UserString_c41h.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UserString_c41h.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/UserString_c41h.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/WalImageFile_184s.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/WalImageFile_184s.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/WalImageFile_184s.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/WmfImagePlugin_82fr.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/WmfImagePlugin_82fr.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/WmfImagePlugin_82fr.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/XKit.__init___8nkx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/XKit.__init___8nkx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/XKit.__init___8nkx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/XKit.xorgparser_atcl.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/XKit.xorgparser_atcl.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/XKit.xorgparser_atcl.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/XKit.xutils_52ul.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/XKit.xutils_52ul.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/XKit.xutils_52ul.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/XVThumbImagePlugin_5ivn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/XVThumbImagePlugin_5ivn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/XVThumbImagePlugin_5ivn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/XbmImagePlugin_b3lm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/XbmImagePlugin_b3lm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/XbmImagePlugin_b3lm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/XpmImagePlugin_5k8n.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/XpmImagePlugin_5k8n.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/XpmImagePlugin_5k8n.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/_LWPCookieJar_5lkz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/_LWPCookieJar_5lkz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/_LWPCookieJar_5lkz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/_MozillaCookieJar_2z0e.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/_MozillaCookieJar_2z0e.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/_MozillaCookieJar_2z0e.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/__future___dmnv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/__future___dmnv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/__future___dmnv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/__init___2rh8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/__init___2rh8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/__init___2rh8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/__phello__.foo_8d9e.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/__phello__.foo_8d9e.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/__phello__.foo_8d9e.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/_abcoll_616o.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/_abcoll_616o.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/_abcoll_616o.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/_strptime_9t0z.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/_strptime_9t0z.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/_strptime_9t0z.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/_threading_local_81zi.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/_threading_local_81zi.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/_threading_local_81zi.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/abc_8iwz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/abc_8iwz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/abc_8iwz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aifc_c9py.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aifc_c9py.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aifc_c9py.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/anydbm_ee8j.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/anydbm_ee8j.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/anydbm_ee8j.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/appindicator.__init___9sc2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/appindicator.__init___9sc2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/appindicator.__init___9sc2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.REThread_acqj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.REThread_acqj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.REThread_acqj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.__init___4sl4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.__init___4sl4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.__init___4sl4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.chroot_dii5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.chroot_dii5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.chroot_dii5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.crashdb_982z.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.crashdb_982z.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.crashdb_982z.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.crashdb_impl.__init___d3wk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.crashdb_impl.__init___d3wk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.crashdb_impl.__init___d3wk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.crashdb_impl.launchpad_97ew.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.crashdb_impl.launchpad_97ew.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.crashdb_impl.launchpad_97ew.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.crashdb_impl.memory_1u10.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.crashdb_impl.memory_1u10.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.crashdb_impl.memory_1u10.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.crashdb_impl.multipartpost_handler_eok4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.crashdb_impl.multipartpost_handler_eok4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.crashdb_impl.multipartpost_handler_eok4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.fileutils_3lio.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.fileutils_3lio.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.fileutils_3lio.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.hookutils_4ewi.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.hookutils_4ewi.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.hookutils_4ewi.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.packaging_bszq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.packaging_bszq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.packaging_bszq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.packaging_impl_2pax.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.packaging_impl_2pax.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.packaging_impl_2pax.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.report_6rhf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.report_6rhf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.report_6rhf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.ui_8mlc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.ui_8mlc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport.ui_8mlc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport_python_hook_1tfe.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport_python_hook_1tfe.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apport_python_hook_1tfe.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.__init___6rlq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.__init___6rlq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.__init___6rlq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.cache_cc34.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.cache_cc34.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.cache_cc34.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.cdrom_25l3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.cdrom_25l3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.cdrom_25l3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.debfile_6irj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.debfile_6irj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.debfile_6irj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.deprecation_d1d3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.deprecation_d1d3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.deprecation_d1d3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.package_7toh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.package_7toh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.package_7toh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.progress.__init___6f3u.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.progress.__init___6f3u.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.progress.__init___6f3u.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.progress.base_5841.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.progress.base_5841.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.progress.base_5841.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.progress.gtk2_d8p2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.progress.gtk2_d8p2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.progress.gtk2_d8p2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.progress.old_e04j.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.progress.old_e04j.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.progress.old_e04j.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.progress.text_dzfr.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.progress.text_dzfr.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.progress.text_dzfr.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.utils_8ou1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.utils_8ou1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/apt.utils_8ou1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.__init___4hdi.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.__init___4hdi.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.__init___4hdi.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.client_1xb6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.client_1xb6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.client_1xb6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.console_9ufw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.console_9ufw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.console_9ufw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.core_26eh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.core_26eh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.core_26eh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.debconf_3r36.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.debconf_3r36.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.debconf_3r36.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.defer_49sc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.defer_49sc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.defer_49sc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.enums_g4e5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.enums_g4e5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.enums_g4e5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.errors_3wgj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.errors_3wgj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.errors_3wgj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.gtkwidgets_bblt.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.gtkwidgets_bblt.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.gtkwidgets_bblt.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.lock_2bia.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.lock_2bia.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.lock_2bia.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.loop_dbk6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.loop_dbk6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.loop_dbk6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.policykit1_3ach.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.policykit1_3ach.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.policykit1_3ach.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.progress_4gs2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.progress_4gs2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.progress_4gs2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.worker_7d22.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.worker_7d22.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptdaemon.worker_7d22.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptsources.__init___4sfi.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptsources.__init___4sfi.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptsources.__init___4sfi.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptsources.distinfo_7lzd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptsources.distinfo_7lzd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptsources.distinfo_7lzd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptsources.distro_5tjp.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptsources.distro_5tjp.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptsources.distro_5tjp.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptsources.sourceslist_13b5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptsources.sourceslist_13b5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/aptsources.sourceslist_13b5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ast_7crk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ast_7crk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ast_7crk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/asynchat_56nd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/asynchat_56nd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/asynchat_56nd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/asyncore_2mps.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/asyncore_2mps.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/asyncore_2mps.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/atexit_6mad.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/atexit_6mad.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/atexit_6mad.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/audiodev_77xy.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/audiodev_77xy.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/audiodev_77xy.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/avahi.ServiceTypeDatabase_blwp.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/avahi.ServiceTypeDatabase_blwp.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/avahi.ServiceTypeDatabase_blwp.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/avahi.__init___dsol.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/avahi.__init___dsol.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/avahi.__init___dsol.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/axi.__init___98zr.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/axi.__init___98zr.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/axi.__init___98zr.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/axi.indexer_7cbt.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/axi.indexer_7cbt.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/axi.indexer_7cbt.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/base64_8uwk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/base64_8uwk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/base64_8uwk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bdb_e07k.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bdb_e07k.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bdb_e07k.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/binhex_468c.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/binhex_468c.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/binhex_468c.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bisect_7935.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bisect_7935.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bisect_7935.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bonobo.__init___8uru.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bonobo.__init___8uru.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bonobo.__init___8uru.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bsddb.__init___5not.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bsddb.__init___5not.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bsddb.__init___5not.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bsddb.db_bxs9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bsddb.db_bxs9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bsddb.db_bxs9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bsddb.dbobj_8x0m.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bsddb.dbobj_8x0m.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bsddb.dbobj_8x0m.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bsddb.dbrecio_5spz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bsddb.dbrecio_5spz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bsddb.dbrecio_5spz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bsddb.dbshelve_ct1v.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bsddb.dbshelve_ct1v.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bsddb.dbshelve_ct1v.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bsddb.dbtables_cupi.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bsddb.dbtables_cupi.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bsddb.dbtables_cupi.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bsddb.dbutils_aaw5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bsddb.dbutils_aaw5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/bsddb.dbutils_aaw5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cProfile_dlzk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cProfile_dlzk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cProfile_dlzk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cairo.__init___8t2z.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cairo.__init___8t2z.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cairo.__init___8t2z.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/calendar_9ixn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/calendar_9ixn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/calendar_9ixn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cgi_8ed5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cgi_8ed5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cgi_8ed5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cgitb_131a.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cgitb_131a.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cgitb_131a.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.__init___6kw7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.__init___6kw7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.__init___6kw7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.big5freq_ew8d.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.big5freq_ew8d.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.big5freq_ew8d.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.big5prober_cdp2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.big5prober_cdp2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.big5prober_cdp2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.chardistribution_bqo4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.chardistribution_bqo4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.chardistribution_bqo4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.charsetgroupprober_anme.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.charsetgroupprober_anme.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.charsetgroupprober_anme.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.charsetprober_80qc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.charsetprober_80qc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.charsetprober_80qc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.codingstatemachine_1o0k.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.codingstatemachine_1o0k.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.codingstatemachine_1o0k.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.constants_2of8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.constants_2of8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.constants_2of8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.escprober_9u0c.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.escprober_9u0c.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.escprober_9u0c.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.escsm_aqs0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.escsm_aqs0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.escsm_aqs0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.eucjpprober_d1bu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.eucjpprober_d1bu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.eucjpprober_d1bu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.euckrfreq_dkqn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.euckrfreq_dkqn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.euckrfreq_dkqn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.euckrprober_861l.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.euckrprober_861l.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.euckrprober_861l.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.euctwfreq_5fta.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.euctwfreq_5fta.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.euctwfreq_5fta.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.euctwprober_egst.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.euctwprober_egst.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.euctwprober_egst.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.gb2312freq_615o.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.gb2312freq_615o.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.gb2312freq_615o.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.gb2312prober_dgdu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.gb2312prober_dgdu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.gb2312prober_dgdu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.hebrewprober_c769.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.hebrewprober_c769.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.hebrewprober_c769.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.jisfreq_3y92.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.jisfreq_3y92.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.jisfreq_3y92.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.jpcntx_1pfu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.jpcntx_1pfu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.jpcntx_1pfu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.langbulgarianmodel_7c2n.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.langbulgarianmodel_7c2n.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.langbulgarianmodel_7c2n.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.langcyrillicmodel_2qe2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.langcyrillicmodel_2qe2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.langcyrillicmodel_2qe2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.langgreekmodel_9veg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.langgreekmodel_9veg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.langgreekmodel_9veg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.langhebrewmodel_k8nn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.langhebrewmodel_k8nn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.langhebrewmodel_k8nn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.langhungarianmodel_7h5a.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.langhungarianmodel_7h5a.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.langhungarianmodel_7h5a.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.langthaimodel_cxb9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.langthaimodel_cxb9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.langthaimodel_cxb9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.latin1prober_47za.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.latin1prober_47za.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.latin1prober_47za.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.mbcharsetprober_buwi.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.mbcharsetprober_buwi.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.mbcharsetprober_buwi.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.mbcsgroupprober_7hq0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.mbcsgroupprober_7hq0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.mbcsgroupprober_7hq0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.mbcssm_528v.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.mbcssm_528v.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.mbcssm_528v.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.sbcharsetprober_612b.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.sbcharsetprober_612b.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.sbcharsetprober_612b.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.sbcsgroupprober_3ezh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.sbcsgroupprober_3ezh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.sbcsgroupprober_3ezh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.sjisprober_e74m.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.sjisprober_e74m.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.sjisprober_e74m.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.test_1h06.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.test_1h06.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.test_1h06.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.universaldetector_4l0w.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.universaldetector_4l0w.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.universaldetector_4l0w.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.utf8prober_8diw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.utf8prober_8diw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chardet.utf8prober_8diw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chunk_5d0b.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chunk_5d0b.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/chunk_5d0b.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cmd_d9ee.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cmd_d9ee.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cmd_d9ee.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/code_bfrl.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/code_bfrl.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/code_bfrl.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/codecs_q2ax.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/codecs_q2ax.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/codecs_q2ax.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/codeop_892b.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/codeop_892b.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/codeop_892b.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/collections_oqdb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/collections_oqdb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/collections_oqdb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/colorsys_dxro.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/colorsys_dxro.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/colorsys_dxro.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/commands_5nda.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/commands_5nda.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/commands_5nda.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compileall_73ff.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compileall_73ff.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compileall_73ff.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.__init___dux9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.__init___dux9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.__init___dux9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.ast_13b8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.ast_13b8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.ast_13b8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.consts_bfe5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.consts_bfe5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.consts_bfe5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.future_93d3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.future_93d3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.future_93d3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.misc_drk2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.misc_drk2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.misc_drk2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.pyassem_990c.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.pyassem_990c.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.pyassem_990c.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.pycodegen_e8h4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.pycodegen_e8h4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.pycodegen_e8h4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.symbols_bus8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.symbols_bus8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.symbols_bus8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.syntax_27fg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.syntax_27fg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.syntax_27fg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.transformer_ci7a.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.transformer_ci7a.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.transformer_ci7a.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.visitor_38vd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.visitor_38vd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/compiler.visitor_38vd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.__init___33s3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.__init___33s3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.__init___33s3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.cruft_dw80.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.cruft_dw80.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.cruft_dw80.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.cruft_tests_199r.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.cruft_tests_199r.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.cruft_tests_199r.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.exc_4uiu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.exc_4uiu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.exc_4uiu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.exc_tests_5rgh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.exc_tests_5rgh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.exc_tests_5rgh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.file_cruft_6z7l.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.file_cruft_6z7l.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.file_cruft_6z7l.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.file_cruft_tests_4ttx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.file_cruft_tests_4ttx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.file_cruft_tests_4ttx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.missing_package_cruft_nii2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.missing_package_cruft_nii2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.missing_package_cruft_nii2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.missing_package_cruft_tests_6uu4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.missing_package_cruft_tests_6uu4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.missing_package_cruft_tests_6uu4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.package_cruft_brkx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.package_cruft_brkx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.package_cruft_brkx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.package_cruft_tests_8nu1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.package_cruft_tests_8nu1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.package_cruft_tests_8nu1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.plugin_f56e.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.plugin_f56e.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.plugin_f56e.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.plugin_tests_4bdg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.plugin_tests_4bdg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/computerjanitor.plugin_tests_4bdg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.__init___5wwt.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.__init___5wwt.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.__init___5wwt.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.inischema.__init___43st.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.inischema.__init___43st.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.inischema.__init___43st.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.inischema.attributed_f0rx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.inischema.attributed_f0rx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.inischema.attributed_f0rx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.inischema.glue_4ml6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.inischema.glue_4ml6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.inischema.glue_4ml6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.inischema.parsers_e6rb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.inischema.parsers_e6rb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.inischema.parsers_e6rb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.inischema.typed_95wj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.inischema.typed_95wj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.inischema.typed_95wj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.pyschema.__init___8um3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.pyschema.__init___8um3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.pyschema.__init___8um3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.pyschema.options_242z.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.pyschema.options_242z.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.pyschema.options_242z.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.pyschema.parser_9wfs.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.pyschema.parser_9wfs.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.pyschema.parser_9wfs.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.pyschema.schema_dj7d.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.pyschema.schema_dj7d.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/configglue.pyschema.schema_dj7d.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/contextlib_dm6x.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/contextlib_dm6x.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/contextlib_dm6x.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cookielib_5jaw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cookielib_5jaw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cookielib_5jaw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/copy_1423.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/copy_1423.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/copy_1423.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/copy_reg_a6m1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/copy_reg_a6m1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/copy_reg_a6m1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.__init___5ugg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.__init___5ugg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.__init___5ugg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.client_4udl.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.client_4udl.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.client_4udl.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.design_4tbd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.design_4tbd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.design_4tbd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.json_9ohm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.json_9ohm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.json_9ohm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.multipart_1hvu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.multipart_1hvu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.multipart_1hvu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.schema_4x36.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.schema_4x36.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.schema_4x36.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.tools.__init___cyfb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.tools.__init___cyfb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.tools.__init___cyfb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.tools.dump_6uf6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.tools.dump_6uf6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.tools.dump_6uf6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.tools.load_cmll.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.tools.load_cmll.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.tools.load_cmll.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.tools.replication_helper_duor.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.tools.replication_helper_duor.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.tools.replication_helper_duor.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.tools.replication_helper_test_bqv8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.tools.replication_helper_test_bqv8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.tools.replication_helper_test_bqv8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.view_5sat.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.view_5sat.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/couchdb.view_5sat.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/csv_5u1c.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/csv_5u1c.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/csv_5u1c.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ctypes.__init___3i7o.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ctypes.__init___3i7o.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ctypes.__init___3i7o.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ctypes._endian_bxu2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ctypes._endian_bxu2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ctypes._endian_bxu2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ctypes.util_9wqy.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ctypes.util_9wqy.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ctypes.util_9wqy.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ctypes.wintypes_1kgg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ctypes.wintypes_1kgg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ctypes.wintypes_1kgg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cupshelpers.__init___chik.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cupshelpers.__init___chik.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cupshelpers.__init___chik.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cupshelpers.cupshelpers_6zen.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cupshelpers.cupshelpers_6zen.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cupshelpers.cupshelpers_6zen.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cupshelpers.openprinting_92tj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cupshelpers.openprinting_92tj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cupshelpers.openprinting_92tj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cupshelpers.ppds_62sw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cupshelpers.ppds_62sw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/cupshelpers.ppds_62sw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/curl.__init___2eis.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/curl.__init___2eis.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/curl.__init___2eis.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/curses.__init___a0kh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/curses.__init___a0kh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/curses.__init___a0kh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/curses.ascii_ecja.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/curses.ascii_ecja.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/curses.ascii_ecja.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/curses.has_key_31xi.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/curses.has_key_31xi.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/curses.has_key_31xi.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/curses.panel_6kie.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/curses.panel_6kie.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/curses.panel_6kie.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/curses.textpad_3b9b.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/curses.textpad_3b9b.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/curses.textpad_3b9b.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/curses.wrapper_2x7e.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/curses.wrapper_2x7e.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/curses.wrapper_2x7e.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dateutil.__init___6fub.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dateutil.__init___6fub.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dateutil.__init___6fub.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dateutil.easter_1mq9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dateutil.easter_1mq9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dateutil.easter_1mq9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dateutil.parser_dzef.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dateutil.parser_dzef.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dateutil.parser_dzef.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dateutil.relativedelta_9sqx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dateutil.relativedelta_9sqx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dateutil.relativedelta_9sqx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dateutil.rrule_81b2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dateutil.rrule_81b2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dateutil.rrule_81b2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dateutil.tz_9b6w.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dateutil.tz_9b6w.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dateutil.tz_9b6w.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dateutil.tzwin_buti.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dateutil.tzwin_buti.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dateutil.tzwin_buti.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dateutil.zoneinfo.__init___161x.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dateutil.zoneinfo.__init___161x.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dateutil.zoneinfo.__init___161x.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbhash_2859.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbhash_2859.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbhash_2859.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.__init___cdb0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.__init___cdb0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.__init___cdb0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus._dbus_2r97.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus._dbus_2r97.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus._dbus_2r97.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus._expat_introspect_parser_9scl.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus._expat_introspect_parser_9scl.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus._expat_introspect_parser_9scl.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus._version_6exf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus._version_6exf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus._version_6exf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.bus_3isd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.bus_3isd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.bus_3isd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.connection_b3w3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.connection_b3w3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.connection_b3w3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.dbus_bindings_3nmj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.dbus_bindings_3nmj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.dbus_bindings_3nmj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.decorators_w84t.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.decorators_w84t.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.decorators_w84t.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.exceptions_2rei.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.exceptions_2rei.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.exceptions_2rei.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.glib_77rd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.glib_77rd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.glib_77rd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.gobject_service_904n.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.gobject_service_904n.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.gobject_service_904n.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.lowlevel_6tvt.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.lowlevel_6tvt.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.lowlevel_6tvt.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.mainloop.__init___cel8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.mainloop.__init___cel8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.mainloop.__init___cel8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.mainloop.glib_bwqt.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.mainloop.glib_bwqt.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.mainloop.glib_bwqt.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.proxies_6x62.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.proxies_6x62.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.proxies_6x62.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.server_77r6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.server_77r6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.server_77r6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.service_4w91.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.service_4w91.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.service_4w91.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.types_4y18.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.types_4y18.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus.types_4y18.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus_bindings_3f2h.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus_bindings_3f2h.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dbus_bindings_3f2h.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/deb822_8amd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/deb822_8amd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/deb822_8amd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debconf_5ah5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debconf_5ah5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debconf_5ah5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debian.__init___85gt.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debian.__init___85gt.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debian.__init___85gt.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debian.arfile_6lds.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debian.arfile_6lds.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debian.arfile_6lds.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debian.changelog_8984.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debian.changelog_8984.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debian.changelog_8984.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debian.deb822_5alk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debian.deb822_5alk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debian.deb822_5alk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debian.debfile_1e9b.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debian.debfile_1e9b.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debian.debfile_1e9b.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debian.debian_support_8ele.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debian.debian_support_8ele.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debian.debian_support_8ele.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debian.debtags_38sx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debian.debtags_38sx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debian.debtags_38sx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debian.deprecation_17dp.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debian.deprecation_17dp.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debian.deprecation_17dp.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debian_bundle.__init___5gfv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debian_bundle.__init___5gfv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/debian_bundle.__init___5gfv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/decimal_b88a.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/decimal_b88a.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/decimal_b88a.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.__init___68k2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.__init___68k2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.__init___68k2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.bookmarks.__init___8pa8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.bookmarks.__init___8pa8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.bookmarks.__init___8pa8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.bookmarks.record_dic0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.bookmarks.record_dic0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.bookmarks.record_dic0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.contacts.__init___wsgz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.contacts.__init___wsgz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.contacts.__init___wsgz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.contacts.contactspicker_cn18.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.contacts.contactspicker_cn18.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.contacts.contactspicker_cn18.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.contacts.record_4oou.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.contacts.record_4oou.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.contacts.record_4oou.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.contacts.testing.__init___8kul.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.contacts.testing.__init___8kul.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.contacts.testing.__init___8kul.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.contacts.testing.create_319y.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.contacts.testing.create_319y.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.contacts.testing.create_319y.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.contacts.view_6miy.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.contacts.view_6miy.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.contacts.view_6miy.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.local_files_7u62.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.local_files_7u62.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.local_files_7u62.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.notes.__init___9z0i.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.notes.__init___9z0i.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.notes.__init___9z0i.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.notes.record_cxyd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.notes.record_cxyd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.notes.record_cxyd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.pair.__init___7rv8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.pair.__init___7rv8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.pair.__init___7rv8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.pair.couchdb_pairing.__init___3osa.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.pair.couchdb_pairing.__init___3osa.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.pair.couchdb_pairing.__init___3osa.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.pair.couchdb_pairing.couchdb_io_42a1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.pair.couchdb_pairing.couchdb_io_42a1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.pair.couchdb_pairing.couchdb_io_42a1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.pair.couchdb_pairing.dbus_io_e9fo.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.pair.couchdb_pairing.dbus_io_e9fo.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.pair.couchdb_pairing.dbus_io_e9fo.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.pair.couchdb_pairing.network_io_3w0o.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.pair.couchdb_pairing.network_io_3w0o.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.pair.couchdb_pairing.network_io_3w0o.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.pair.couchdb_pairing.ubuntuone_pairing_h85l.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.pair.couchdb_pairing.ubuntuone_pairing_h85l.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.pair.couchdb_pairing.ubuntuone_pairing_h85l.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.records.__init___ewr0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.records.__init___ewr0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.records.__init___ewr0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.records.couchgrid_u3sj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.records.couchgrid_u3sj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.records.couchgrid_u3sj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.records.field_registry_6lnd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.records.field_registry_6lnd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.records.field_registry_6lnd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.records.record_8w1x.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.records.record_8w1x.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.records.record_8w1x.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.records.server_base_cpif.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.records.server_base_cpif.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.records.server_base_cpif.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.records.server_drhf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.records.server_drhf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.records.server_drhf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.replication_14km.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.replication_14km.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.replication_14km.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.replication_services.__init___3bzw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.replication_services.__init___3bzw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.replication_services.__init___3bzw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.replication_services.example_a771.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.replication_services.example_a771.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.replication_services.example_a771.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.replication_services.ubuntuone_14ru.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.replication_services.ubuntuone_14ru.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.replication_services.ubuntuone_14ru.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.start_local_couchdb_42q2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.start_local_couchdb_42q2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.start_local_couchdb_42q2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.stop_local_couchdb_4dym.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.stop_local_couchdb_4dym.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.stop_local_couchdb_4dym.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.tasks.__init___8quo.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.tasks.__init___8quo.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.tasks.__init___8quo.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.tasks.record_3rwk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.tasks.record_3rwk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/desktopcouch.tasks.record_3rwk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/difflib_482j.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/difflib_482j.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/difflib_482j.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dircache_5jzj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dircache_5jzj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dircache_5jzj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dis_4ju5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dis_4ju5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dis_4ju5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.__init___67sn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.__init___67sn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.__init___67sn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.archive_util_6smp.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.archive_util_6smp.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.archive_util_6smp.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.bcppcompiler_1snh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.bcppcompiler_1snh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.bcppcompiler_1snh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.ccompiler_87u7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.ccompiler_87u7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.ccompiler_87u7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.cmd_dfyt.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.cmd_dfyt.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.cmd_dfyt.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.__init___jhp6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.__init___jhp6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.__init___jhp6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.bdist_8zjq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.bdist_8zjq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.bdist_8zjq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.bdist_dumb_c7gj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.bdist_dumb_c7gj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.bdist_dumb_c7gj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.bdist_msi_60s3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.bdist_msi_60s3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.bdist_msi_60s3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.bdist_rpm_7vm0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.bdist_rpm_7vm0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.bdist_rpm_7vm0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.bdist_wininst_6d15.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.bdist_wininst_6d15.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.bdist_wininst_6d15.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.build_55gu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.build_55gu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.build_55gu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.build_clib_ba5b.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.build_clib_ba5b.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.build_clib_ba5b.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.build_ext_a7iz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.build_ext_a7iz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.build_ext_a7iz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.build_py_8jx1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.build_py_8jx1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.build_py_8jx1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.build_scripts_o0d1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.build_scripts_o0d1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.build_scripts_o0d1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.clean_2idi.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.clean_2idi.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.clean_2idi.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.config_24ve.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.config_24ve.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.config_24ve.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.install_czin.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.install_czin.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.install_czin.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.install_data_9dts.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.install_data_9dts.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.install_data_9dts.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.install_egg_info_8tkq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.install_egg_info_8tkq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.install_egg_info_8tkq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.install_headers_o8c6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.install_headers_o8c6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.install_headers_o8c6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.install_lib_2b2t.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.install_lib_2b2t.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.install_lib_2b2t.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.install_scripts_ctby.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.install_scripts_ctby.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.install_scripts_ctby.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.register_1wrk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.register_1wrk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.register_1wrk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.sdist_ckvt.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.sdist_ckvt.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.sdist_ckvt.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.upload_1qan.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.upload_1qan.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.command.upload_1qan.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.config_aibs.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.config_aibs.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.config_aibs.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.core_be79.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.core_be79.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.core_be79.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.cygwinccompiler_56f2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.cygwinccompiler_56f2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.cygwinccompiler_56f2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.debug_c08j.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.debug_c08j.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.debug_c08j.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.dep_util_cghi.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.dep_util_cghi.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.dep_util_cghi.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.dir_util_8v6a.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.dir_util_8v6a.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.dir_util_8v6a.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.dist_1grl.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.dist_1grl.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.dist_1grl.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.emxccompiler_6j3l.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.emxccompiler_6j3l.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.emxccompiler_6j3l.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.errors_dslv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.errors_dslv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.errors_dslv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.extension_6e7s.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.extension_6e7s.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.extension_6e7s.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.fancy_getopt_6h8z.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.fancy_getopt_6h8z.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.fancy_getopt_6h8z.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.file_util_8dyu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.file_util_8dyu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.file_util_8dyu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.filelist_bjr6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.filelist_bjr6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.filelist_bjr6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.log_4jau.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.log_4jau.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.log_4jau.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.msvc9compiler_5gfa.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.msvc9compiler_5gfa.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.msvc9compiler_5gfa.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.msvccompiler_cqjf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.msvccompiler_cqjf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.msvccompiler_cqjf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.mwerkscompiler_c837.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.mwerkscompiler_c837.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.mwerkscompiler_c837.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.spawn_1nxz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.spawn_1nxz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.spawn_1nxz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.sysconfig_1vve.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.sysconfig_1vve.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.sysconfig_1vve.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.text_file_3qws.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.text_file_3qws.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.text_file_3qws.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.unixccompiler_7uqh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.unixccompiler_7uqh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.unixccompiler_7uqh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.util_3zep.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.util_3zep.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.util_3zep.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.version_beft.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.version_beft.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.version_beft.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.versionpredicate_bg7z.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.versionpredicate_bg7z.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/distutils.versionpredicate_bg7z.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/docky.__init___32s2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/docky.__init___32s2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/docky.__init___32s2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/docky.docky_cegr.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/docky.docky_cegr.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/docky.docky_cegr.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/doctest_2mrl.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/doctest_2mrl.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/doctest_2mrl.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/drv_libxml2_5vmg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/drv_libxml2_5vmg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/drv_libxml2_5vmg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dsextras_2wgo.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dsextras_2wgo.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dsextras_2wgo.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dumbdbm_6nf7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dumbdbm_6nf7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dumbdbm_6nf7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dummy_thread_a4k5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dummy_thread_a4k5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dummy_thread_a4k5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dummy_threading_4jab.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dummy_threading_4jab.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/dummy_threading_4jab.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.__init___83w5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.__init___83w5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.__init___83w5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email._parseaddr_5fgr.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email._parseaddr_5fgr.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email._parseaddr_5fgr.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.base64mime_ags6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.base64mime_ags6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.base64mime_ags6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.charset_2xg7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.charset_2xg7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.charset_2xg7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.encoders_4uyr.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.encoders_4uyr.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.encoders_4uyr.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.errors_39fc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.errors_39fc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.errors_39fc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.feedparser_7hck.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.feedparser_7hck.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.feedparser_7hck.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.generator_aml0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.generator_aml0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.generator_aml0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.header_d5s9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.header_d5s9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.header_d5s9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.iterators_8zuu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.iterators_8zuu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.iterators_8zuu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.message_dtwx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.message_dtwx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.message_dtwx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.mime.__init___2hz2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.mime.__init___2hz2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.mime.__init___2hz2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.mime.application_bj2k.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.mime.application_bj2k.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.mime.application_bj2k.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.mime.audio_cgaf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.mime.audio_cgaf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.mime.audio_cgaf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.mime.base_d1kz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.mime.base_d1kz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.mime.base_d1kz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.mime.image_2bit.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.mime.image_2bit.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.mime.image_2bit.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.mime.message_ciz2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.mime.message_ciz2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.mime.message_ciz2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.mime.multipart_9qdu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.mime.multipart_9qdu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.mime.multipart_9qdu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.mime.nonmultipart_6cos.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.mime.nonmultipart_6cos.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.mime.nonmultipart_6cos.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.mime.text_6pz0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.mime.text_6pz0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.mime.text_6pz0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.parser_8dct.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.parser_8dct.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.parser_8dct.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.quoprimime_8a7l.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.quoprimime_8a7l.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.quoprimime_8a7l.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.utils_1knp.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.utils_1knp.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/email.utils_1knp.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant.__init___8tei.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant.__init___8tei.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant.__init___8tei.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant._enchant_9v4l.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant._enchant_9v4l.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant._enchant_9v4l.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant.checker.CmdLineChecker_bfly.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant.checker.CmdLineChecker_bfly.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant.checker.CmdLineChecker_bfly.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant.checker.GtkSpellCheckerDialog_d06i.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant.checker.GtkSpellCheckerDialog_d06i.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant.checker.GtkSpellCheckerDialog_d06i.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant.checker.__init___5v66.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant.checker.__init___5v66.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant.checker.__init___5v66.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant.checker.wxSpellCheckerDialog_2206.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant.checker.wxSpellCheckerDialog_2206.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant.checker.wxSpellCheckerDialog_2206.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant.pypwl_boxu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant.pypwl_boxu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant.pypwl_boxu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant.tokenize.__init___b9a4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant.tokenize.__init___b9a4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant.tokenize.__init___b9a4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant.tokenize.en_d1l2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant.tokenize.en_d1l2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant.tokenize.en_d1l2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant.utils_3kdl.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant.utils_3kdl.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/enchant.utils_3kdl.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.__init___cmxb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.__init___cmxb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.__init___cmxb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.aliases_bhze.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.aliases_bhze.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.aliases_bhze.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.ascii_3bdx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.ascii_3bdx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.ascii_3bdx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.base64_codec_5fxj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.base64_codec_5fxj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.base64_codec_5fxj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.big5_cdb3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.big5_cdb3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.big5_cdb3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.big5hkscs_e5k7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.big5hkscs_e5k7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.big5hkscs_e5k7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.bz2_codec_7idj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.bz2_codec_7idj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.bz2_codec_7idj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.charmap_2g7u.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.charmap_2g7u.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.charmap_2g7u.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp037_b0q9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp037_b0q9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp037_b0q9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1006_dsi9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1006_dsi9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1006_dsi9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1026_cdcu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1026_cdcu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1026_cdcu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1140_a6ei.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1140_a6ei.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1140_a6ei.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1250_bwte.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1250_bwte.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1250_bwte.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1251_d3yv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1251_d3yv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1251_d3yv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1252_28dr.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1252_28dr.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1252_28dr.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1253_3oh6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1253_3oh6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1253_3oh6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1254_8ngj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1254_8ngj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1254_8ngj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1255_5cy0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1255_5cy0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1255_5cy0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1256_aizs.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1256_aizs.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1256_aizs.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1257_el41.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1257_el41.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1257_el41.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1258_es5z.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1258_es5z.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp1258_es5z.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp424_bxmh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp424_bxmh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp424_bxmh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp437_78mz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp437_78mz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp437_78mz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp500_4jac.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp500_4jac.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp500_4jac.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp737_62u6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp737_62u6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp737_62u6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp775_rntx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp775_rntx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp775_rntx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp850_hghh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp850_hghh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp850_hghh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp852_9hb8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp852_9hb8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp852_9hb8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp855_abfu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp855_abfu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp855_abfu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp856_5e2n.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp856_5e2n.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp856_5e2n.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp857_8ai6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp857_8ai6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp857_8ai6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp860_2qzd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp860_2qzd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp860_2qzd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp861_86hy.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp861_86hy.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp861_86hy.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp862_3e3w.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp862_3e3w.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp862_3e3w.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp863_751m.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp863_751m.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp863_751m.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp864_4s5u.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp864_4s5u.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp864_4s5u.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp865_cunc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp865_cunc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp865_cunc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp866_1vpo.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp866_1vpo.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp866_1vpo.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp869_3phc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp869_3phc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp869_3phc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp874_4ft9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp874_4ft9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp874_4ft9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp875_8v07.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp875_8v07.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp875_8v07.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp932_3mrt.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp932_3mrt.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp932_3mrt.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp949_461t.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp949_461t.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp949_461t.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp950_7w2i.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp950_7w2i.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.cp950_7w2i.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.euc_jis_2004_efxm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.euc_jis_2004_efxm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.euc_jis_2004_efxm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.euc_jisx0213_596e.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.euc_jisx0213_596e.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.euc_jisx0213_596e.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.euc_jp_9dkt.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.euc_jp_9dkt.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.euc_jp_9dkt.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.euc_kr_3gw2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.euc_kr_3gw2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.euc_kr_3gw2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.gb18030_6d2l.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.gb18030_6d2l.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.gb18030_6d2l.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.gb2312_c9qb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.gb2312_c9qb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.gb2312_c9qb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.gbk_86rz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.gbk_86rz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.gbk_86rz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.hex_codec_4c2i.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.hex_codec_4c2i.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.hex_codec_4c2i.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.hp_roman8_28xu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.hp_roman8_28xu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.hp_roman8_28xu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.hz_996o.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.hz_996o.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.hz_996o.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.idna_d8ez.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.idna_d8ez.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.idna_d8ez.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso2022_jp_1_4jyc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso2022_jp_1_4jyc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso2022_jp_1_4jyc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso2022_jp_2004_ojiz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso2022_jp_2004_ojiz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso2022_jp_2004_ojiz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso2022_jp_2_1vuf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso2022_jp_2_1vuf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso2022_jp_2_1vuf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso2022_jp_3_4flg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso2022_jp_3_4flg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso2022_jp_3_4flg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso2022_jp_e4i6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso2022_jp_e4i6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso2022_jp_e4i6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso2022_jp_ext_14lj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso2022_jp_ext_14lj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso2022_jp_ext_14lj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso2022_kr_e0b3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso2022_kr_e0b3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso2022_kr_e0b3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_10_7yv4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_10_7yv4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_10_7yv4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_11_ezvh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_11_ezvh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_11_ezvh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_13_cyfo.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_13_cyfo.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_13_cyfo.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_14_3n4y.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_14_3n4y.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_14_3n4y.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_15_5byn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_15_5byn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_15_5byn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_16_7wfa.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_16_7wfa.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_16_7wfa.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_1_3ovs.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_1_3ovs.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_1_3ovs.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_2_f350.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_2_f350.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_2_f350.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_3_7ic9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_3_7ic9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_3_7ic9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_4_ctlu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_4_ctlu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_4_ctlu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_5_987q.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_5_987q.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_5_987q.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_6_cd91.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_6_cd91.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_6_cd91.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_7_12t4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_7_12t4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_7_12t4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_8_1w0r.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_8_1w0r.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_8_1w0r.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_9_63bv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_9_63bv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.iso8859_9_63bv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.johab_f1xw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.johab_f1xw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.johab_f1xw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.koi8_r_dun0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.koi8_r_dun0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.koi8_r_dun0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.koi8_u_33ff.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.koi8_u_33ff.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.koi8_u_33ff.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.latin_1_exq7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.latin_1_exq7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.latin_1_exq7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_arabic_7y22.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_arabic_7y22.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_arabic_7y22.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_centeuro_b1c4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_centeuro_b1c4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_centeuro_b1c4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_croatian_cus7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_croatian_cus7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_croatian_cus7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_cyrillic_6uaa.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_cyrillic_6uaa.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_cyrillic_6uaa.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_farsi_9mmz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_farsi_9mmz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_farsi_9mmz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_greek_8cyu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_greek_8cyu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_greek_8cyu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_iceland_4q9z.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_iceland_4q9z.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_iceland_4q9z.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_latin2_dvk5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_latin2_dvk5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_latin2_dvk5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_roman_ekmx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_roman_ekmx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_roman_ekmx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_romanian_7le2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_romanian_7le2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_romanian_7le2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_turkish_27tx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_turkish_27tx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mac_turkish_27tx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mbcs_9dsw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mbcs_9dsw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.mbcs_9dsw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.palmos_axg0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.palmos_axg0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.palmos_axg0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.ptcp154_82cf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.ptcp154_82cf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.ptcp154_82cf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.punycode_5akd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.punycode_5akd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.punycode_5akd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.quopri_codec_hkyj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.quopri_codec_hkyj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.quopri_codec_hkyj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.raw_unicode_escape_atas.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.raw_unicode_escape_atas.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.raw_unicode_escape_atas.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.rot_13_7vx5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.rot_13_7vx5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.rot_13_7vx5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.shift_jis_2004_afcu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.shift_jis_2004_afcu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.shift_jis_2004_afcu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.shift_jis_70ag.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.shift_jis_70ag.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.shift_jis_70ag.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.shift_jisx0213_hm77.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.shift_jisx0213_hm77.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.shift_jisx0213_hm77.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.string_escape_7swy.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.string_escape_7swy.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.string_escape_7swy.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.tis_620_18sa.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.tis_620_18sa.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.tis_620_18sa.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.undefined_5wmc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.undefined_5wmc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.undefined_5wmc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.unicode_escape_3jub.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.unicode_escape_3jub.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.unicode_escape_3jub.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.unicode_internal_4bxe.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.unicode_internal_4bxe.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.unicode_internal_4bxe.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.utf_16_be_5krl.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.utf_16_be_5krl.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.utf_16_be_5krl.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.utf_16_bp4u.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.utf_16_bp4u.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.utf_16_bp4u.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.utf_16_le_f2z8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.utf_16_le_f2z8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.utf_16_le_f2z8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.utf_32_3b0i.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.utf_32_3b0i.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.utf_32_3b0i.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.utf_32_be_dlqw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.utf_32_be_dlqw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.utf_32_be_dlqw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.utf_32_le_76s9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.utf_32_le_76s9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.utf_32_le_76s9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.utf_7_36so.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.utf_7_36so.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.utf_7_36so.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.utf_8_f4io.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.utf_8_f4io.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.utf_8_f4io.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.utf_8_sig_7d83.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.utf_8_sig_7d83.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.utf_8_sig_7d83.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.uu_codec_5tfl.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.uu_codec_5tfl.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.uu_codec_5tfl.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.zlib_codec_crvq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.zlib_codec_crvq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/encodings.zlib_codec_crvq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/evolution.__init___cm4p.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/evolution.__init___cm4p.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/evolution.__init___cm4p.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/fdpexpect_4ucm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/fdpexpect_4ucm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/fdpexpect_4ucm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/feedparser_e4l7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/feedparser_e4l7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/feedparser_e4l7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/filecmp_5s3r.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/filecmp_5s3r.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/filecmp_5s3r.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/fileinput_cg13.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/fileinput_cg13.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/fileinput_cg13.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/fnmatch_3az6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/fnmatch_3az6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/fnmatch_3az6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/formatter_edwf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/formatter_edwf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/formatter_edwf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/fpformat_8dpn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/fpformat_8dpn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/fpformat_8dpn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/fractions_7m2u.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/fractions_7m2u.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/fractions_7m2u.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ftplib_ezud.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ftplib_ezud.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ftplib_ezud.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/functools_ew8b.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/functools_ew8b.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/functools_ew8b.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/genericpath_btcw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/genericpath_btcw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/genericpath_btcw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/getopt_55tg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/getopt_55tg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/getopt_55tg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/getpass_80e3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/getpass_80e3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/getpass_80e3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gettext_6g1s.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gettext_6g1s.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gettext_6g1s.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.__init___6ii1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.__init___6ii1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.__init___6ii1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.importer_derj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.importer_derj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.importer_derj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.module_4dbw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.module_4dbw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.module_4dbw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.overrides.GIMarshallingTests_2vxf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.overrides.GIMarshallingTests_2vxf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.overrides.GIMarshallingTests_2vxf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.overrides.Gdk_95rb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.overrides.Gdk_95rb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.overrides.Gdk_95rb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.overrides.Gtk_6z7f.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.overrides.Gtk_6z7f.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.overrides.Gtk_6z7f.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.overrides.__init___771i.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.overrides.__init___771i.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.overrides.__init___771i.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.overrides.keysyms_5zja.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.overrides.keysyms_5zja.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.overrides.keysyms_5zja.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.repository.__init___akgz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.repository.__init___akgz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.repository.__init___akgz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.types_8b02.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.types_8b02.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gi.types_8b02.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gio.__init___363h.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gio.__init___363h.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gio.__init___363h.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/glib.__init___40kt.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/glib.__init___40kt.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/glib.__init___40kt.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/glib.option_9qj2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/glib.option_9qj2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/glib.option_9qj2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/glob_7yow.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/glob_7yow.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/glob_7yow.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome.__init___8a7b.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome.__init___8a7b.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome.__init___8a7b.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome.applet_bzyy.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome.applet_bzyy.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome.applet_bzyy.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome.canvas_1ier.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome.canvas_1ier.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome.canvas_1ier.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome.vfs_ajpb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome.vfs_ajpb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome.vfs_ajpb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.__init___55mf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.__init___55mf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.__init___55mf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.colors_2cqj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.colors_2cqj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.colors_2cqj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.dancer_cqrb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.dancer_cqrb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.dancer_cqrb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.defaults_556k.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.defaults_556k.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.defaults_556k.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.dialog_swallower_eivg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.dialog_swallower_eivg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.dialog_swallower_eivg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.game_selector_32le.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.game_selector_32le.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.game_selector_32le.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.gnome_sudoku_7en8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.gnome_sudoku_7en8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.gnome_sudoku_7en8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.gsudoku_a4q4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.gsudoku_a4q4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.gsudoku_a4q4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.gtk_goodies.Undo_3uel.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.gtk_goodies.Undo_3uel.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.gtk_goodies.Undo_3uel.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.gtk_goodies.__init___21co.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.gtk_goodies.__init___21co.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.gtk_goodies.__init___21co.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.gtk_goodies.dialog_extras_bayd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.gtk_goodies.dialog_extras_bayd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.gtk_goodies.dialog_extras_bayd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.gtk_goodies.gconf_wrapper_e4ru.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.gtk_goodies.gconf_wrapper_e4ru.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.gtk_goodies.gconf_wrapper_e4ru.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.main_2psl.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.main_2psl.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.main_2psl.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.number_box_8bk9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.number_box_8bk9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.number_box_8bk9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.pausable_bn2e.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.pausable_bn2e.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.pausable_bn2e.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.printing_1x6z.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.printing_1x6z.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.printing_1x6z.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.saver_arlf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.saver_arlf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.saver_arlf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.simple_debug_ehuy.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.simple_debug_ehuy.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.simple_debug_ehuy.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.sudoku_2hu3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.sudoku_2hu3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.sudoku_2hu3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.sudoku_maker_dgrf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.sudoku_maker_dgrf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.sudoku_maker_dgrf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.sudoku_thumber_2uum.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.sudoku_thumber_2uum.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.sudoku_thumber_2uum.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.timer_7tkn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.timer_7tkn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.timer_7tkn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.tracker_info_2cbs.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.tracker_info_2cbs.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnome_sudoku.tracker_info_2cbs.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnomevfs.__init___ai3h.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnomevfs.__init___ai3h.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gnomevfs.__init___ai3h.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gobject.__init___3utm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gobject.__init___3utm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gobject.__init___3utm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gobject.constants_6rum.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gobject.constants_6rum.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gobject.constants_6rum.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gobject.propertyhelper_91xo.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gobject.propertyhelper_91xo.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gobject.propertyhelper_91xo.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.__init___abw5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.__init___abw5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.__init___abw5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.__init___2d6c.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.__init___2d6c.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.__init___2d6c.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.descriptor_50sh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.descriptor_50sh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.descriptor_50sh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.descriptor_pb2_54ha.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.descriptor_pb2_54ha.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.descriptor_pb2_54ha.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.internal.__init___b8cq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.internal.__init___b8cq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.internal.__init___b8cq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.internal.containers_c7sh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.internal.containers_c7sh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.internal.containers_c7sh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.internal.decoder_77u5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.internal.decoder_77u5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.internal.decoder_77u5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.internal.encoder_3wgj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.internal.encoder_3wgj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.internal.encoder_3wgj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.internal.message_listener_90kb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.internal.message_listener_90kb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.internal.message_listener_90kb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.internal.type_checkers_9qo9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.internal.type_checkers_9qo9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.internal.type_checkers_9qo9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.internal.wire_format_6egn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.internal.wire_format_6egn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.internal.wire_format_6egn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.message_2sb7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.message_2sb7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.message_2sb7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.reflection_cs5p.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.reflection_cs5p.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.reflection_cs5p.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.service_d20d.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.service_d20d.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.service_d20d.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.service_reflection_17sm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.service_reflection_17sm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.service_reflection_17sm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.text_format_79t6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.text_format_79t6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/google.protobuf.text_format_79t6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gst.__init___5jv9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gst.__init___5jv9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gst.__init___5jv9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gst.extend.__init___yfwh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gst.extend.__init___yfwh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gst.extend.__init___yfwh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gst.extend.discoverer_ep70.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gst.extend.discoverer_ep70.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gst.extend.discoverer_ep70.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gst.extend.jukebox_abew.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gst.extend.jukebox_abew.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gst.extend.jukebox_abew.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gst.extend.leveller_c5lh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gst.extend.leveller_c5lh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gst.extend.leveller_c5lh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gst.extend.pygobject_1zpj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gst.extend.pygobject_1zpj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gst.extend.pygobject_1zpj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gst.extend.sources_6zn5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gst.extend.sources_6zn5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gst.extend.sources_6zn5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gst.extend.utils_17wc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gst.extend.utils_17wc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gst.extend.utils_17wc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gtk.__init___4ytx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gtk.__init___4ytx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gtk.__init___4ytx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gtk._lazyutils_c422.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gtk._lazyutils_c422.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gtk._lazyutils_c422.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gtk.compat_75c0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gtk.compat_75c0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gtk.compat_75c0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gtk.deprecation_9lll.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gtk.deprecation_9lll.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gtk.deprecation_9lll.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gtk.keysyms_87fx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gtk.keysyms_87fx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gtk.keysyms_87fx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.__init___6ajy.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.__init___6ajy.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.__init___6ajy.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.accounts_d9lj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.accounts_d9lj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.accounts_d9lj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.actions_5e54.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.actions_5e54.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.actions_5e54.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.client_3gpu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.client_3gpu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.client_3gpu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.error_4iiu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.error_4iiu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.error_4iiu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.gwui_3g2l.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.gwui_3g2l.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.gwui_3g2l.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.__init___3ivj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.__init___3ivj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.__init___3ivj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.__init___27sn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.__init___27sn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.__init___27sn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.buzz_a7mo.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.buzz_a7mo.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.buzz_a7mo.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.digg_ay6f.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.digg_ay6f.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.digg_ay6f.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.facebook_4ctr.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.facebook_4ctr.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.facebook_4ctr.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.flickr_qef5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.flickr_qef5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.flickr_qef5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.friendfeed_vx39.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.friendfeed_vx39.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.friendfeed_vx39.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.identica_60sp.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.identica_60sp.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.identica_60sp.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.pingfm_78kn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.pingfm_78kn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.pingfm_78kn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.qaiku_1lj2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.qaiku_1lj2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.qaiku_1lj2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.statusnet_4nfe.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.statusnet_4nfe.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.statusnet_4nfe.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.twitter_4qf6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.twitter_4qf6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.twitter_4qf6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.widgets_d0q5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.widgets_d0q5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.lib.gtk.widgets_d0q5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.__init___72rh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.__init___72rh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.__init___72rh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.brightkite_bm4m.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.brightkite_bm4m.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.brightkite_bm4m.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.buzz_7r54.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.buzz_7r54.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.buzz_7r54.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.can_4owx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.can_4owx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.can_4owx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.config_eeos.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.config_eeos.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.config_eeos.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.digg_ef7p.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.digg_ef7p.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.digg_ef7p.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.dispatcher_1b7q.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.dispatcher_1b7q.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.dispatcher_1b7q.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.facebook_beiq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.facebook_beiq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.facebook_beiq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.flickr_cq6k.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.flickr_cq6k.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.flickr_cq6k.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.friendfeed_dj6e.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.friendfeed_dj6e.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.friendfeed_dj6e.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.greader_cjom.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.greader_cjom.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.greader_cjom.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.gwp_1mpg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.gwp_1mpg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.gwp_1mpg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.identica_e6xe.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.identica_e6xe.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.identica_e6xe.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.jaiku_9rct.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.jaiku_9rct.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.jaiku_9rct.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.network_afzm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.network_afzm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.network_afzm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.opencollaboration_9pb3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.opencollaboration_9pb3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.opencollaboration_9pb3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.pingfm_9u4t.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.pingfm_9u4t.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.pingfm_9u4t.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.qaiku_3rzr.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.qaiku_3rzr.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.qaiku_3rzr.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.rss_cbqx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.rss_cbqx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.rss_cbqx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.statusnet_6wlt.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.statusnet_6wlt.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.statusnet_6wlt.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.storage_ejv2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.storage_ejv2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.storage_ejv2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.swp_5wnv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.swp_5wnv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.swp_5wnv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.twitter_akph.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.twitter_akph.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.twitter_akph.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.urlshorter.__init___awar.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.urlshorter.__init___awar.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.urlshorter.__init___awar.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.urlshorter.cligs_2kh1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.urlshorter.cligs_2kh1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.urlshorter.cligs_2kh1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.urlshorter.isgd_3rr2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.urlshorter.isgd_3rr2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.urlshorter.isgd_3rr2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.urlshorter.snipurlcom_dpaq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.urlshorter.snipurlcom_dpaq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.urlshorter.snipurlcom_dpaq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.urlshorter.tinyurlcom_7m5z.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.urlshorter.tinyurlcom_7m5z.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.urlshorter.tinyurlcom_7m5z.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.urlshorter.ur1ca_7mhb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.urlshorter.ur1ca_7mhb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.urlshorter.ur1ca_7mhb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.urlshorter.zima_b4qt.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.urlshorter.zima_b4qt.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.urlshorter.zima_b4qt.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.__init___elyq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.__init___elyq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.__init___elyq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.const_cbl3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.const_cbl3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.const_cbl3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.couchmigrate_6s25.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.couchmigrate_6s25.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.couchmigrate_6s25.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.custom_8w67.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.custom_8w67.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.custom_8w67.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.exceptions_as94.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.exceptions_as94.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.exceptions_as94.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.facelib_5u48.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.facelib_5u48.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.facelib_5u48.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.imagehandler_afx9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.imagehandler_afx9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.imagehandler_afx9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.keyring_2209.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.keyring_2209.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.keyring_2209.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.log_8omf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.log_8omf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.log_8omf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.resources_psx5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.resources_psx5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.microblog.util.resources_psx5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.pidgin_2oom.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.pidgin_2oom.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.pidgin_2oom.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.preferences_572j.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.preferences_572j.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.preferences_572j.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.resources_58p0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.resources_58p0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.resources_58p0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.util_72xt.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.util_72xt.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gwibber.util_72xt.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gzip_6wj7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gzip_6wj7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/gzip_6wj7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/hashlib_2cug.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/hashlib_2cug.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/hashlib_2cug.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/heapq_91ml.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/heapq_91ml.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/heapq_91ml.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/hmac_5exf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/hmac_5exf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/hmac_5exf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/hotshot.__init___9m6m.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/hotshot.__init___9m6m.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/hotshot.__init___9m6m.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/hotshot.log_eg46.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/hotshot.log_eg46.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/hotshot.log_eg46.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/hotshot.stats_3p3t.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/hotshot.stats_3p3t.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/hotshot.stats_3p3t.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/hotshot.stones_2kw4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/hotshot.stones_2kw4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/hotshot.stones_2kw4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/htmlentitydefs_15mg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/htmlentitydefs_15mg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/htmlentitydefs_15mg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/htmllib_7hto.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/htmllib_7hto.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/htmllib_7hto.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/httplib2.__init___qfbz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/httplib2.__init___qfbz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/httplib2.__init___qfbz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/httplib2.iri2uri_d13r.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/httplib2.iri2uri_d13r.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/httplib2.iri2uri_d13r.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/httplib_37kf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/httplib_37kf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/httplib_37kf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.__init___1i47.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.__init___1i47.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.__init___1i47.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus._config_9hz1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus._config_9hz1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus._config_9hz1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus._gtk_cjv1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus._gtk_cjv1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus._gtk_cjv1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.application_coo8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.application_coo8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.application_coo8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.ascii_243j.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.ascii_243j.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.ascii_243j.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.attribute_aacw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.attribute_aacw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.attribute_aacw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.bus_3ing.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.bus_3ing.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.bus_3ing.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.common_dnnj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.common_dnnj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.common_dnnj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.component_dgg3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.component_dgg3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.component_dgg3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.config_6dfm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.config_6dfm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.config_6dfm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.engine_1hds.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.engine_1hds.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.engine_1hds.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.enginedesc_e4oi.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.enginedesc_e4oi.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.enginedesc_e4oi.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.exception_9pkq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.exception_9pkq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.exception_9pkq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.factory_aprr.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.factory_aprr.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.factory_aprr.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.inputcontext_9apj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.inputcontext_9apj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.inputcontext_9apj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.interface.__init___9xwg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.interface.__init___9xwg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.interface.__init___9xwg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.interface.iconfig_72yz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.interface.iconfig_72yz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.interface.iconfig_72yz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.interface.iengine_4nbt.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.interface.iengine_4nbt.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.interface.iengine_4nbt.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.interface.ienginefactory_93qt.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.interface.ienginefactory_93qt.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.interface.ienginefactory_93qt.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.interface.iibus_9x2a.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.interface.iibus_9x2a.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.interface.iibus_9x2a.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.interface.iinputcontext_8wa1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.interface.iinputcontext_8wa1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.interface.iinputcontext_8wa1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.interface.inotifications_7keq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.interface.inotifications_7keq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.interface.inotifications_7keq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.interface.ipanel_f4sd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.interface.ipanel_f4sd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.interface.ipanel_f4sd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.keysyms_bj4j.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.keysyms_bj4j.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.keysyms_bj4j.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.lang_20cm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.lang_20cm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.lang_20cm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.lookuptable_dp6j.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.lookuptable_dp6j.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.lookuptable_dp6j.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.modifier_5gd7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.modifier_5gd7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.modifier_5gd7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.notifications_483c.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.notifications_483c.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.notifications_483c.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.object_al8s.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.object_al8s.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.object_al8s.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.observedpath_9c0k.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.observedpath_9c0k.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.observedpath_9c0k.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.panel_17iy.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.panel_17iy.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.panel_17iy.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.property_7cly.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.property_7cly.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.property_7cly.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.serializable_ap0n.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.serializable_ap0n.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.serializable_ap0n.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.text_f0j2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.text_f0j2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.text_f0j2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.utility_8jo0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.utility_8jo0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ibus.utility_8jo0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ihooks_aw7m.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ihooks_aw7m.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ihooks_aw7m.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/imaplib_4p33.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/imaplib_4p33.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/imaplib_4p33.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/imghdr_bs6g.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/imghdr_bs6g.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/imghdr_bs6g.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/imputil_2abe.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/imputil_2abe.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/imputil_2abe.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/indicate.__init___ptyx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/indicate.__init___ptyx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/indicate.__init___ptyx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/iniparse.__init___7rc9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/iniparse.__init___7rc9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/iniparse.__init___7rc9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/iniparse.compat_37le.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/iniparse.compat_37le.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/iniparse.compat_37le.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/iniparse.config_bcii.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/iniparse.config_bcii.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/iniparse.config_bcii.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/iniparse.ini_9xqu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/iniparse.ini_9xqu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/iniparse.ini_9xqu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/inspect_8pyz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/inspect_8pyz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/inspect_8pyz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/invest.__init___5112.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/invest.__init___5112.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/invest.__init___5112.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/invest.about_7w5d.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/invest.about_7w5d.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/invest.about_7w5d.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/invest.applet_9jf0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/invest.applet_9jf0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/invest.applet_9jf0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/invest.chart_ajnz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/invest.chart_ajnz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/invest.chart_ajnz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/invest.defs_9wq5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/invest.defs_9wq5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/invest.defs_9wq5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/invest.networkmanager_57sq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/invest.networkmanager_57sq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/invest.networkmanager_57sq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/invest.preferences_c0kw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/invest.preferences_c0kw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/invest.preferences_c0kw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/invest.quotes_5ekv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/invest.quotes_5ekv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/invest.quotes_5ekv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/invest.widgets_c96g.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/invest.widgets_c96g.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/invest.widgets_c96g.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/io_ervn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/io_ervn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/io_ervn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/jockey.__init___1j9b.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/jockey.__init___1j9b.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/jockey.__init___1j9b.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/jockey.backend_1iy5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/jockey.backend_1iy5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/jockey.backend_1iy5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/jockey.detection_a43c.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/jockey.detection_a43c.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/jockey.detection_a43c.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/jockey.handlers_4zaa.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/jockey.handlers_4zaa.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/jockey.handlers_4zaa.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/jockey.oslib_58st.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/jockey.oslib_58st.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/jockey.oslib_58st.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/jockey.ui_1j8u.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/jockey.ui_1j8u.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/jockey.ui_1j8u.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/jockey.xorg_driver_dxkd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/jockey.xorg_driver_dxkd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/jockey.xorg_driver_dxkd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/json.__init___3eg6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/json.__init___3eg6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/json.__init___3eg6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/json.decoder_881a.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/json.decoder_881a.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/json.decoder_881a.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/json.encoder_5833.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/json.encoder_5833.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/json.encoder_5833.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/json.scanner_4qfx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/json.scanner_4qfx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/json.scanner_4qfx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/json.tool_cz51.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/json.tool_cz51.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/json.tool_cz51.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/keyword_cs33.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/keyword_cs33.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/keyword_cs33.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.__init___8nc6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.__init___8nc6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.__init___8nc6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.apps_4gjm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.apps_4gjm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.apps_4gjm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.credentials_e805.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.credentials_e805.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.credentials_e805.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.errors_b89s.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.errors_b89s.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.errors_b89s.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.launchpad_b9xa.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.launchpad_b9xa.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.launchpad_b9xa.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.testing.__init___ctng.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.testing.__init___ctng.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.testing.__init___ctng.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.testing.helpers_7g1b.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.testing.helpers_7g1b.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.testing.helpers_7g1b.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.tests.__init___15ne.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.tests.__init___15ne.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.tests.__init___15ne.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.tests.test_launchpad_6nul.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.tests.test_launchpad_6nul.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.tests.test_launchpad_6nul.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.uris_i1wv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.uris_i1wv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/launchpadlib.uris_i1wv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.__init___5bs8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.__init___5bs8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.__init___5bs8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixer_base_1kvs.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixer_base_1kvs.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixer_base_1kvs.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixer_util_6o8v.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixer_util_6o8v.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixer_util_6o8v.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.__init___6mem.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.__init___6mem.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.__init___6mem.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_apply_2oux.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_apply_2oux.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_apply_2oux.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_basestring_d6lj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_basestring_d6lj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_basestring_d6lj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_buffer_4qj2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_buffer_4qj2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_buffer_4qj2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_callable_cmmm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_callable_cmmm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_callable_cmmm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_dict_crgu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_dict_crgu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_dict_crgu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_except_ewa0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_except_ewa0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_except_ewa0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_exec_c8g1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_exec_c8g1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_exec_c8g1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_execfile_b1ey.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_execfile_b1ey.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_execfile_b1ey.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_exitfunc_93cf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_exitfunc_93cf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_exitfunc_93cf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_filter_bqww.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_filter_bqww.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_filter_bqww.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_funcattrs_f0xj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_funcattrs_f0xj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_funcattrs_f0xj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_future_16gv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_future_16gv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_future_16gv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_getcwdu_3djg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_getcwdu_3djg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_getcwdu_3djg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_has_key_3gae.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_has_key_3gae.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_has_key_3gae.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_idioms_6udi.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_idioms_6udi.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_idioms_6udi.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_import_50lb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_import_50lb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_import_50lb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_imports2_bcko.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_imports2_bcko.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_imports2_bcko.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_imports_akf8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_imports_akf8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_imports_akf8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_input_9bxc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_input_9bxc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_input_9bxc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_intern_d78u.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_intern_d78u.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_intern_d78u.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_isinstance_5j97.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_isinstance_5j97.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_isinstance_5j97.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_itertools_6xgu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_itertools_6xgu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_itertools_6xgu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_itertools_imports_d53v.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_itertools_imports_d53v.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_itertools_imports_d53v.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_long_eovd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_long_eovd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_long_eovd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_map_bdl8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_map_bdl8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_map_bdl8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_metaclass_ccgn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_metaclass_ccgn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_metaclass_ccgn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_methodattrs_8anv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_methodattrs_8anv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_methodattrs_8anv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_ne_6ixc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_ne_6ixc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_ne_6ixc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_next_3jy4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_next_3jy4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_next_3jy4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_nonzero_53s4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_nonzero_53s4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_nonzero_53s4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_numliterals_7v4j.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_numliterals_7v4j.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_numliterals_7v4j.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_operator_7ekk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_operator_7ekk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_operator_7ekk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_paren_933b.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_paren_933b.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_paren_933b.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_print_3zd1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_print_3zd1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_print_3zd1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_raise_bfj8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_raise_bfj8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_raise_bfj8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_raw_input_ayyc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_raw_input_ayyc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_raw_input_ayyc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_reduce_5r5d.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_reduce_5r5d.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_reduce_5r5d.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_renames_9jjg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_renames_9jjg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_renames_9jjg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_repr_6pxo.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_repr_6pxo.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_repr_6pxo.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_set_literal_arnx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_set_literal_arnx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_set_literal_arnx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_standarderror_d8tu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_standarderror_d8tu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_standarderror_d8tu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_sys_exc_2lru.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_sys_exc_2lru.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_sys_exc_2lru.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_throw_1u3g.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_throw_1u3g.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_throw_1u3g.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_tuple_params_bxlj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_tuple_params_bxlj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_tuple_params_bxlj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_types_4l5o.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_types_4l5o.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_types_4l5o.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_unicode_4z0p.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_unicode_4z0p.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_unicode_4z0p.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_urllib_ddjg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_urllib_ddjg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_urllib_ddjg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_ws_comma_ecda.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_ws_comma_ecda.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_ws_comma_ecda.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_xrange_1gp0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_xrange_1gp0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_xrange_1gp0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_xreadlines_4qjj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_xreadlines_4qjj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_xreadlines_4qjj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_zip_bsux.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_zip_bsux.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.fixes.fix_zip_bsux.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.main_91kd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.main_91kd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.main_91kd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.patcomp_43lz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.patcomp_43lz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.patcomp_43lz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pgen2.__init___2lwy.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pgen2.__init___2lwy.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pgen2.__init___2lwy.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pgen2.conv_1hul.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pgen2.conv_1hul.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pgen2.conv_1hul.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pgen2.driver_asug.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pgen2.driver_asug.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pgen2.driver_asug.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pgen2.grammar_c2on.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pgen2.grammar_c2on.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pgen2.grammar_c2on.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pgen2.literals_4w1g.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pgen2.literals_4w1g.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pgen2.literals_4w1g.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pgen2.parse_ditn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pgen2.parse_ditn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pgen2.parse_ditn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pgen2.pgen_azhn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pgen2.pgen_azhn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pgen2.pgen_azhn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pgen2.token_5j3o.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pgen2.token_5j3o.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pgen2.token_5j3o.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pgen2.tokenize_cfg1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pgen2.tokenize_cfg1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pgen2.tokenize_cfg1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pygram_7cqq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pygram_7cqq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pygram_7cqq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pytree_5om7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pytree_5om7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.pytree_5om7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.refactor_emg4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.refactor_emg4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lib2to3.refactor_emg4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/libproxy_ts9q.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/libproxy_ts9q.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/libproxy_ts9q.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/libxml2_6wao.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/libxml2_6wao.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/libxml2_6wao.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/linecache_2zqq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/linecache_2zqq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/linecache_2zqq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/locale_ev8b.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/locale_ev8b.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/locale_ev8b.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/logging.__init___dkgm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/logging.__init___dkgm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/logging.__init___dkgm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/logging.config_v3s6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/logging.config_v3s6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/logging.config_v3s6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/logging.handlers_7k50.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/logging.handlers_7k50.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/logging.handlers_7k50.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lsb_release_j9kk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lsb_release_j9kk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lsb_release_j9kk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.ElementInclude_d59g.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.ElementInclude_d59g.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.ElementInclude_d59g.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.__init___5rn5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.__init___5rn5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.__init___5rn5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml._elementpath_ddyn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml._elementpath_ddyn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml._elementpath_ddyn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.builder_cawl.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.builder_cawl.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.builder_cawl.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.cssselect_27is.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.cssselect_27is.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.cssselect_27is.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.doctestcompare_3smg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.doctestcompare_3smg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.doctestcompare_3smg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.ElementSoup_3chq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.ElementSoup_3chq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.ElementSoup_3chq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.__init___7ry7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.__init___7ry7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.__init___7ry7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html._dictmixin_5ys9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html._dictmixin_5ys9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html._dictmixin_5ys9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html._diffcommand_7a0p.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html._diffcommand_7a0p.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html._diffcommand_7a0p.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html._html5builder_5876.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html._html5builder_5876.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html._html5builder_5876.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html._setmixin_3w3f.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html._setmixin_3w3f.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html._setmixin_3w3f.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.builder_wwit.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.builder_wwit.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.builder_wwit.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.clean_e6k7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.clean_e6k7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.clean_e6k7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.defs_cwu4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.defs_cwu4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.defs_cwu4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.diff_3x21.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.diff_3x21.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.diff_3x21.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.formfill_4yon.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.formfill_4yon.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.formfill_4yon.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.html5parser_4np1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.html5parser_4np1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.html5parser_4np1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.soupparser_2rlw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.soupparser_2rlw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.soupparser_2rlw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.usedoctest_a152.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.usedoctest_a152.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.html.usedoctest_a152.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.pyclasslookup_834u.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.pyclasslookup_834u.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.pyclasslookup_834u.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.sax_cud6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.sax_cud6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.sax_cud6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.usedoctest_2tlx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.usedoctest_2tlx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/lxml.usedoctest_2tlx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/macpath_eelq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/macpath_eelq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/macpath_eelq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/macurl2path_3rjs.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/macurl2path_3rjs.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/macurl2path_3rjs.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mailbox_6saa.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mailbox_6saa.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mailbox_6saa.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mailcap_3tr6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mailcap_3tr6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mailcap_3tr6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.__init___4b4t.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.__init___4b4t.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.__init___4b4t.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako._ast_util_1f6g.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako._ast_util_1f6g.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako._ast_util_1f6g.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.ast_4hw7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.ast_4hw7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.ast_4hw7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.cache_pqbp.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.cache_pqbp.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.cache_pqbp.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.codegen_5utr.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.codegen_5utr.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.codegen_5utr.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.exceptions_eoqv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.exceptions_eoqv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.exceptions_eoqv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.ext.__init___8fsd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.ext.__init___8fsd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.ext.__init___8fsd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.ext.autohandler_aydb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.ext.autohandler_aydb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.ext.autohandler_aydb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.ext.babelplugin_2l8x.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.ext.babelplugin_2l8x.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.ext.babelplugin_2l8x.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.ext.preprocessors_e7pu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.ext.preprocessors_e7pu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.ext.preprocessors_e7pu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.ext.pygmentplugin_3avf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.ext.pygmentplugin_3avf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.ext.pygmentplugin_3avf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.ext.turbogears_10l8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.ext.turbogears_10l8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.ext.turbogears_10l8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.filters_7x8y.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.filters_7x8y.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.filters_7x8y.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.lexer_1d4b.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.lexer_1d4b.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.lexer_1d4b.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.lookup_85ky.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.lookup_85ky.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.lookup_85ky.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.parsetree_127t.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.parsetree_127t.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.parsetree_127t.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.pygen_1du5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.pygen_1du5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.pygen_1du5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.pyparser_1rot.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.pyparser_1rot.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.pyparser_1rot.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.runtime_9fl7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.runtime_9fl7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.runtime_9fl7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.template_bd0h.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.template_bd0h.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.template_bd0h.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.util_6sx8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.util_6sx8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mako.util_6sx8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/markupbase_f3ab.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/markupbase_f3ab.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/markupbase_f3ab.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/markupsafe.__init___7sd1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/markupsafe.__init___7sd1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/markupsafe.__init___7sd1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/markupsafe._constants_egzw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/markupsafe._constants_egzw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/markupsafe._constants_egzw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/markupsafe._native_2gyp.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/markupsafe._native_2gyp.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/markupsafe._native_2gyp.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/markupsafe.tests_7kq7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/markupsafe.tests_7kq7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/markupsafe.tests_7kq7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/md5_1n5x.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/md5_1n5x.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/md5_1n5x.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mhlib_aspo.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mhlib_aspo.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mhlib_aspo.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mimetools_9qph.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mimetools_9qph.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mimetools_9qph.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mimetypes_2o04.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mimetypes_2o04.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mimetypes_2o04.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mimify_3ei5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mimify_3ei5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mimify_3ei5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/modulefinder_7hsx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/modulefinder_7hsx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/modulefinder_7hsx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multifile_f2km.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multifile_f2km.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multifile_f2km.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.__init___82k3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.__init___82k3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.__init___82k3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.connection_w2w9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.connection_w2w9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.connection_w2w9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.dummy.__init___5g2d.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.dummy.__init___5g2d.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.dummy.__init___5g2d.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.dummy.connection_7jqx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.dummy.connection_7jqx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.dummy.connection_7jqx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.forking_3cim.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.forking_3cim.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.forking_3cim.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.heap_5h1k.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.heap_5h1k.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.heap_5h1k.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.managers_28jy.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.managers_28jy.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.managers_28jy.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.pool_ddmu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.pool_ddmu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.pool_ddmu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.process_1prf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.process_1prf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.process_1prf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.queues_9y5w.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.queues_9y5w.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.queues_9y5w.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.reduction_2d6b.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.reduction_2d6b.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.reduction_2d6b.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.sharedctypes_b7jv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.sharedctypes_b7jv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.sharedctypes_b7jv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.synchronize_48vd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.synchronize_48vd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.synchronize_48vd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.util_8z6f.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.util_8z6f.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/multiprocessing.util_8z6f.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.__init___5a0o.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.__init___5a0o.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.__init___5a0o.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen._constants_7n61.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen._constants_7n61.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen._constants_7n61.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen._util_768r.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen._util_768r.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen._util_768r.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen._vorbis_53e0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen._vorbis_53e0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen._vorbis_53e0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.apev2_5mzr.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.apev2_5mzr.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.apev2_5mzr.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.asf_as5h.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.asf_as5h.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.asf_as5h.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.easyid3_41os.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.easyid3_41os.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.easyid3_41os.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.easymp4_2llf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.easymp4_2llf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.easymp4_2llf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.flac_6wy6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.flac_6wy6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.flac_6wy6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.id3_d4j3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.id3_d4j3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.id3_d4j3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.m4a_45o2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.m4a_45o2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.m4a_45o2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.monkeysaudio_2klv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.monkeysaudio_2klv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.monkeysaudio_2klv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.mp3_cro0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.mp3_cro0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.mp3_cro0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.mp4_cvnk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.mp4_cvnk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.mp4_cvnk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.musepack_9144.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.musepack_9144.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.musepack_9144.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.ogg_8tc3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.ogg_8tc3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.ogg_8tc3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.oggflac_9k7o.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.oggflac_9k7o.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.oggflac_9k7o.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.oggspeex_9ve8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.oggspeex_9ve8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.oggspeex_9ve8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.oggtheora_6m0b.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.oggtheora_6m0b.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.oggtheora_6m0b.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.oggvorbis_alxn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.oggvorbis_alxn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.oggvorbis_alxn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.optimfrog_7um2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.optimfrog_7um2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.optimfrog_7um2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.trueaudio_eoy9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.trueaudio_eoy9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.trueaudio_eoy9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.wavpack_7g0m.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.wavpack_7g0m.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutagen.wavpack_7g0m.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutex_286u.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutex_286u.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mutex_286u.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.ARPA_34j6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.ARPA_34j6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.ARPA_34j6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.DateTime_3bxj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.DateTime_3bxj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.DateTime_3bxj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.Feasts_b83a.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.Feasts_b83a.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.Feasts_b83a.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.ISO_a5wd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.ISO_a5wd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.ISO_a5wd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.LazyModule_bvuu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.LazyModule_bvuu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.LazyModule_bvuu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.Locale_1wzu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.Locale_1wzu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.Locale_1wzu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.NIST_bgaz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.NIST_bgaz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.NIST_bgaz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.ODMG_bnry.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.ODMG_bnry.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.ODMG_bnry.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.Parser_mna5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.Parser_mna5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.Parser_mna5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.Timezone_95wn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.Timezone_95wn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.Timezone_95wn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.__init___77ko.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.__init___77ko.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.__init___77ko.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.__init___427a.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.__init___427a.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.__init___427a.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.mxDateTime_Python_8lav.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.mxDateTime_Python_8lav.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.mxDateTime_Python_8lav.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.test_c7lb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.test_c7lb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.test_c7lb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.testcmp_7wii.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.testcmp_7wii.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.testcmp_7wii.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.testcoerce_7xpq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.testcoerce_7xpq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.testcoerce_7xpq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.testcomdates_53yt.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.testcomdates_53yt.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.testcomdates_53yt.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.testnow_5ary.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.testnow_5ary.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.testnow_5ary.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.testpydatetime_4qkg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.testpydatetime_4qkg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.testpydatetime_4qkg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.testrichard_4nt1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.testrichard_4nt1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.testrichard_4nt1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.testroundoff_kpcx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.testroundoff_kpcx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.testroundoff_kpcx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.teststrftime_ccpy.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.teststrftime_ccpy.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.teststrftime_ccpy.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.testsubclassing_au2d.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.testsubclassing_au2d.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.testsubclassing_au2d.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.testticks_d79v.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.testticks_d79v.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.mxDateTime.testticks_d79v.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.timegm_7cri.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.timegm_7cri.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.DateTime.timegm_7cri.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Log_33bh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Log_33bh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Log_33bh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.CSV_f2rm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.CSV_f2rm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.CSV_f2rm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.Cache_7dvp.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.Cache_7dvp.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.Cache_7dvp.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.CommandLine_5a4g.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.CommandLine_5a4g.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.CommandLine_5a4g.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.ConfigFile_4gr8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.ConfigFile_4gr8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.ConfigFile_4gr8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.Cookie_d05w.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.Cookie_d05w.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.Cookie_d05w.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.ExitFunctions_2yio.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.ExitFunctions_2yio.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.ExitFunctions_2yio.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.FileLock_3unw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.FileLock_3unw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.FileLock_3unw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.LazyModule_63uw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.LazyModule_63uw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.LazyModule_63uw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.Namespace_gqma.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.Namespace_gqma.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.Namespace_gqma.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.OrderedMapping_cls1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.OrderedMapping_cls1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.OrderedMapping_cls1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.PackageTools_26d7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.PackageTools_26d7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.PackageTools_26d7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.__init___b29v.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.__init___b29v.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Misc.__init___b29v.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.NewBuiltins_28b3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.NewBuiltins_28b3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.NewBuiltins_28b3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Tools.NewBuiltins_9dxw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Tools.NewBuiltins_9dxw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Tools.NewBuiltins_9dxw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Tools.Tools_8tqu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Tools.Tools_8tqu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Tools.Tools_8tqu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Tools.__init___9w62.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Tools.__init___9w62.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Tools.__init___9w62.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Tools.mxTools.__init___auyi.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Tools.mxTools.__init___auyi.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Tools.mxTools.__init___auyi.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Tools.mxTools.bench1_5izz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Tools.mxTools.bench1_5izz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Tools.mxTools.bench1_5izz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Tools.mxTools.bench2_6bju.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Tools.mxTools.bench2_6bju.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Tools.mxTools.bench2_6bju.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Tools.mxTools.hack_eyof.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Tools.mxTools.hack_eyof.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Tools.mxTools.hack_eyof.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Tools.mxTools.test_9s21.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Tools.mxTools.test_9s21.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Tools.mxTools.test_9s21.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Tools.mxTools.test_safecall_43p1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Tools.mxTools.test_safecall_43p1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.Tools.mxTools.test_safecall_43p1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.__init___423z.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.__init___423z.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/mx.__init___423z.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/netrc_b839.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/netrc_b839.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/netrc_b839.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/new_21x9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/new_21x9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/new_21x9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/nntplib_9cad.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/nntplib_9cad.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/nntplib_9cad.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ntpath_c6q2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ntpath_c6q2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ntpath_c6q2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/nturl2path_dzg8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/nturl2path_dzg8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/nturl2path_dzg8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numbers_e40i.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numbers_e40i.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numbers_e40i.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.__config___2d6b.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.__config___2d6b.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.__config___2d6b.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.__init___bcgp.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.__init___bcgp.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.__init___bcgp.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy._import_tools_58ib.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy._import_tools_58ib.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy._import_tools_58ib.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.add_newdocs_a6e7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.add_newdocs_a6e7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.add_newdocs_a6e7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.__init___18lh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.__init___18lh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.__init___18lh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core._internal_c28m.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core._internal_c28m.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core._internal_c28m.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.arrayprint_f0c6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.arrayprint_f0c6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.arrayprint_f0c6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.defchararray_9nhh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.defchararray_9nhh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.defchararray_9nhh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.defmatrix_dxn7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.defmatrix_dxn7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.defmatrix_dxn7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.fromnumeric_86ps.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.fromnumeric_86ps.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.fromnumeric_86ps.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.generate_numpy_api_2mp2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.generate_numpy_api_2mp2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.generate_numpy_api_2mp2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.info_3n1a.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.info_3n1a.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.info_3n1a.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.memmap_efyv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.memmap_efyv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.memmap_efyv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.numeric_6y6l.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.numeric_6y6l.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.numeric_6y6l.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.numerictypes_86k7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.numerictypes_86k7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.numerictypes_86k7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.records_cybn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.records_cybn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.records_cybn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.scons_support_l6ix.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.scons_support_l6ix.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.scons_support_l6ix.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.setup_common_ck40.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.setup_common_ck40.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.setup_common_ck40.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.setup_djw7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.setup_djw7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.setup_djw7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.setupscons_eoxb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.setupscons_eoxb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.core.setupscons_eoxb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ctypeslib_c4p3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ctypeslib_c4p3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ctypeslib_c4p3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.__config___9yts.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.__config___9yts.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.__config___9yts.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.__init___84fd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.__init___84fd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.__init___84fd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.__version___8dbb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.__version___8dbb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.__version___8dbb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.ccompiler_1ult.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.ccompiler_1ult.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.ccompiler_1ult.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.__init___554d.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.__init___554d.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.__init___554d.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.autodist_4ynb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.autodist_4ynb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.autodist_4ynb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.bdist_rpm_4ib1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.bdist_rpm_4ib1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.bdist_rpm_4ib1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.build_cga4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.build_cga4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.build_cga4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.build_clib_1g9v.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.build_clib_1g9v.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.build_clib_1g9v.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.build_ext_3y0t.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.build_ext_3y0t.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.build_ext_3y0t.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.build_py_az7x.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.build_py_az7x.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.build_py_az7x.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.build_scripts_8x2k.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.build_scripts_8x2k.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.build_scripts_8x2k.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.build_src_bqh3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.build_src_bqh3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.build_src_bqh3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.config_compiler_2k9j.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.config_compiler_2k9j.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.config_compiler_2k9j.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.config_du4f.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.config_du4f.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.config_du4f.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.develop_adyn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.develop_adyn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.develop_adyn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.egg_info_8qwk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.egg_info_8qwk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.egg_info_8qwk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.install_1o9m.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.install_1o9m.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.install_1o9m.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.install_data_dn01.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.install_data_dn01.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.install_data_dn01.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.install_headers_701o.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.install_headers_701o.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.install_headers_701o.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.scons_946w.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.scons_946w.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.scons_946w.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.sdist_bk0l.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.sdist_bk0l.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.command.sdist_bk0l.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.conv_template_181u.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.conv_template_181u.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.conv_template_181u.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.core_e745.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.core_e745.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.core_e745.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.cpuinfo_bi9f.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.cpuinfo_bi9f.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.cpuinfo_bi9f.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.environment_ir0h.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.environment_ir0h.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.environment_ir0h.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.exec_command_9elw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.exec_command_9elw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.exec_command_9elw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.extension_9w97.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.extension_9w97.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.extension_9w97.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.__init___63cu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.__init___63cu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.__init___63cu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.absoft_485s.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.absoft_485s.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.absoft_485s.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.compaq_ev2b.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.compaq_ev2b.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.compaq_ev2b.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.g95_efli.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.g95_efli.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.g95_efli.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.gnu_9qyw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.gnu_9qyw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.gnu_9qyw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.hpux_57fc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.hpux_57fc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.hpux_57fc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.ibm_evuu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.ibm_evuu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.ibm_evuu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.intel_d9yx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.intel_d9yx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.intel_d9yx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.lahey_5s5m.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.lahey_5s5m.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.lahey_5s5m.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.mips_5ojo.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.mips_5ojo.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.mips_5ojo.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.nag_4n7s.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.nag_4n7s.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.nag_4n7s.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.none_47is.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.none_47is.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.none_47is.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.pg_2823.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.pg_2823.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.pg_2823.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.sun_fohu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.sun_fohu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.sun_fohu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.vast_ata7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.vast_ata7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.fcompiler.vast_ata7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.from_template_6bi1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.from_template_6bi1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.from_template_6bi1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.info_d9qn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.info_d9qn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.info_d9qn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.intelccompiler_1qdf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.intelccompiler_1qdf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.intelccompiler_1qdf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.interactive_5ynh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.interactive_5ynh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.interactive_5ynh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.lib2def_ef19.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.lib2def_ef19.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.lib2def_ef19.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.line_endings_8gpl.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.line_endings_8gpl.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.line_endings_8gpl.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.log_2wsa.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.log_2wsa.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.log_2wsa.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.mingw32ccompiler_3lvu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.mingw32ccompiler_3lvu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.mingw32ccompiler_3lvu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.misc_util_dqoo.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.misc_util_dqoo.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.misc_util_dqoo.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.numpy_distribution_8bcf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.numpy_distribution_8bcf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.numpy_distribution_8bcf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.setup_5qgp.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.setup_5qgp.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.setup_5qgp.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.setupscons_6ith.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.setupscons_6ith.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.setupscons_6ith.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.system_info_alt8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.system_info_alt8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.system_info_alt8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.unixccompiler_9ufg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.unixccompiler_9ufg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.distutils.unixccompiler_9ufg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.dual_29cf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.dual_29cf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.dual_29cf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.__init___52ue.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.__init___52ue.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.__init___52ue.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.__version___1h7v.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.__version___1h7v.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.__version___1h7v.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.auxfuncs_8ty8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.auxfuncs_8ty8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.auxfuncs_8ty8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.capi_maps_3gzd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.capi_maps_3gzd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.capi_maps_3gzd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.cb_rules_aq8p.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.cb_rules_aq8p.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.cb_rules_aq8p.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.cfuncs_ctbg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.cfuncs_ctbg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.cfuncs_ctbg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.common_rules_6xiv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.common_rules_6xiv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.common_rules_6xiv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.crackfortran_14tv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.crackfortran_14tv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.crackfortran_14tv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.diagnose_2772.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.diagnose_2772.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.diagnose_2772.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.f2py2e_2ojh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.f2py2e_2ojh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.f2py2e_2ojh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.f2py_testing_2o0h.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.f2py_testing_2o0h.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.f2py_testing_2o0h.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.f90mod_rules_32rn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.f90mod_rules_32rn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.f90mod_rules_32rn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.func2subr_8e3x.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.func2subr_8e3x.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.func2subr_8e3x.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.info_a3qa.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.info_a3qa.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.info_a3qa.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.rules_7mrk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.rules_7mrk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.rules_7mrk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.setup_2d9l.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.setup_2d9l.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.setup_2d9l.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.setupscons_ddt1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.setupscons_ddt1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.setupscons_ddt1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.use_rules_8ss0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.use_rules_8ss0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.f2py.use_rules_8ss0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.fft.__init___blih.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.fft.__init___blih.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.fft.__init___blih.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.fft.fftpack_1ev3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.fft.fftpack_1ev3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.fft.fftpack_1ev3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.fft.helper_596k.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.fft.helper_596k.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.fft.helper_596k.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.fft.info_4hyi.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.fft.info_4hyi.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.fft.info_4hyi.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.fft.setup_96uo.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.fft.setup_96uo.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.fft.setup_96uo.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.fft.setupscons_6cty.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.fft.setupscons_6cty.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.fft.setupscons_6cty.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.__init___749w.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.__init___749w.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.__init___749w.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib._datasource_czuh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib._datasource_czuh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib._datasource_czuh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib._iotools_cxey.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib._iotools_cxey.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib._iotools_cxey.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.arraysetops_efy2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.arraysetops_efy2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.arraysetops_efy2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.arrayterator_45x5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.arrayterator_45x5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.arrayterator_45x5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.financial_5416.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.financial_5416.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.financial_5416.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.format_1vf5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.format_1vf5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.format_1vf5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.function_base_2f2n.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.function_base_2f2n.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.function_base_2f2n.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.getlimits_2m27.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.getlimits_2m27.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.getlimits_2m27.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.index_tricks_1wjr.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.index_tricks_1wjr.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.index_tricks_1wjr.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.info_28bq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.info_28bq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.info_28bq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.io_1ysn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.io_1ysn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.io_1ysn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.machar_2xk3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.machar_2xk3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.machar_2xk3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.polynomial_70m3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.polynomial_70m3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.polynomial_70m3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.recfunctions_cuih.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.recfunctions_cuih.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.recfunctions_cuih.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.scimath_1kje.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.scimath_1kje.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.scimath_1kje.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.setup_dpqm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.setup_dpqm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.setup_dpqm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.setupscons_d9r8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.setupscons_d9r8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.setupscons_d9r8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.shape_base_4bjm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.shape_base_4bjm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.shape_base_4bjm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.stride_tricks_3vz4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.stride_tricks_3vz4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.stride_tricks_3vz4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.twodim_base_bz0i.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.twodim_base_bz0i.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.twodim_base_bz0i.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.type_check_axlv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.type_check_axlv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.type_check_axlv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.ufunclike_by6t.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.ufunclike_by6t.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.ufunclike_by6t.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.user_array_6nvv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.user_array_6nvv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.user_array_6nvv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.utils_6lps.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.utils_6lps.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.lib.utils_6lps.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.linalg.__init___d44w.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.linalg.__init___d44w.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.linalg.__init___d44w.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.linalg.info_7zhv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.linalg.info_7zhv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.linalg.info_7zhv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.linalg.linalg_3z0v.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.linalg.linalg_3z0v.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.linalg.linalg_3z0v.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.linalg.setup_cljo.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.linalg.setup_cljo.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.linalg.setup_cljo.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.linalg.setupscons_csem.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.linalg.setupscons_csem.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.linalg.setupscons_csem.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.__init___ed6m.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.__init___ed6m.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.__init___ed6m.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.bench_8qj3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.bench_8qj3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.bench_8qj3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.core_x5vl.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.core_x5vl.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.core_x5vl.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.extras_piqg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.extras_piqg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.extras_piqg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.mrecords_9evl.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.mrecords_9evl.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.mrecords_9evl.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.setup_9tdm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.setup_9tdm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.setup_9tdm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.setupscons_6sfd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.setupscons_6sfd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.setupscons_6sfd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.testutils_ddo9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.testutils_ddo9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.testutils_ddo9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.timer_comparison_cyjh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.timer_comparison_cyjh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.timer_comparison_cyjh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.version_7afq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.version_7afq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.ma.version_7afq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.matlib_eh6j.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.matlib_eh6j.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.matlib_eh6j.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.__init___3p5f.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.__init___3p5f.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.__init___3p5f.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.alter_code1_5m55.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.alter_code1_5m55.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.alter_code1_5m55.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.alter_code2_2pal.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.alter_code2_2pal.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.alter_code2_2pal.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.compat_78z2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.compat_78z2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.compat_78z2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.convolve_ns70.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.convolve_ns70.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.convolve_ns70.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.fft_5kph.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.fft_5kph.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.fft_5kph.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.functions_9smv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.functions_9smv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.functions_9smv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.image_22k9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.image_22k9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.image_22k9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.linear_algebra_fccq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.linear_algebra_fccq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.linear_algebra_fccq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.ma_hfv6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.ma_hfv6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.ma_hfv6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.matrix_eg4z.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.matrix_eg4z.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.matrix_eg4z.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.mlab_73y2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.mlab_73y2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.mlab_73y2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.nd_image_29o1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.nd_image_29o1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.nd_image_29o1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.numerictypes_7dw7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.numerictypes_7dw7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.numerictypes_7dw7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.random_array_8170.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.random_array_8170.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.random_array_8170.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.session_8eqz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.session_8eqz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.session_8eqz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.setup_1oce.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.setup_1oce.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.setup_1oce.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.setupscons_7fac.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.setupscons_7fac.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.setupscons_7fac.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.ufuncs_efx6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.ufuncs_efx6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.ufuncs_efx6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.util_82fr.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.util_82fr.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.numarray.util_82fr.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.__init___df92.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.__init___df92.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.__init___df92.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.alter_code1_25nx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.alter_code1_25nx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.alter_code1_25nx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.alter_code2_bwwg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.alter_code2_bwwg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.alter_code2_bwwg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.array_printer_7maa.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.array_printer_7maa.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.array_printer_7maa.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.arrayfns_1jnp.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.arrayfns_1jnp.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.arrayfns_1jnp.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.compat_ttc8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.compat_ttc8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.compat_ttc8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.fft_6bkk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.fft_6bkk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.fft_6bkk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.fix_default_axis_czyu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.fix_default_axis_czyu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.fix_default_axis_czyu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.functions_7o5m.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.functions_7o5m.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.functions_7o5m.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.linear_algebra_apu2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.linear_algebra_apu2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.linear_algebra_apu2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.ma_9s9s.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.ma_9s9s.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.ma_9s9s.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.matrix_2gjt.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.matrix_2gjt.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.matrix_2gjt.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.misc_9af0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.misc_9af0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.misc_9af0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.mlab_78wl.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.mlab_78wl.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.mlab_78wl.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.precision_271m.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.precision_271m.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.precision_271m.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.random_array_z75q.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.random_array_z75q.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.random_array_z75q.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.rng_5o1q.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.rng_5o1q.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.rng_5o1q.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.rng_stats_413b.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.rng_stats_413b.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.rng_stats_413b.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.setup_1ad9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.setup_1ad9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.setup_1ad9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.setupscons_c5bs.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.setupscons_c5bs.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.setupscons_c5bs.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.typeconv_1915.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.typeconv_1915.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.typeconv_1915.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.ufuncs_dmcy.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.ufuncs_dmcy.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.ufuncs_dmcy.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.user_array_94gk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.user_array_94gk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.oldnumeric.user_array_94gk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.random.__init___6l5b.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.random.__init___6l5b.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.random.__init___6l5b.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.random.info_ezih.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.random.info_ezih.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.random.info_ezih.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.random.setup_7i8p.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.random.setup_7i8p.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.random.setup_7i8p.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.random.setupscons_bbta.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.random.setupscons_bbta.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.random.setupscons_bbta.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.setup_9uyp.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.setup_9uyp.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.setup_9uyp.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.setupscons_3x4t.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.setupscons_3x4t.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.setupscons_3x4t.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.testing.__init___elrn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.testing.__init___elrn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.testing.__init___elrn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.testing.decorators_1mb7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.testing.decorators_1mb7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.testing.decorators_1mb7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.testing.noseclasses_bc7p.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.testing.noseclasses_bc7p.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.testing.noseclasses_bc7p.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.testing.nosetester_acyv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.testing.nosetester_acyv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.testing.nosetester_acyv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.testing.nulltester_6gej.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.testing.nulltester_6gej.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.testing.nulltester_6gej.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.testing.numpytest_enw1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.testing.numpytest_enw1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.testing.numpytest_enw1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.testing.setup_5vdy.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.testing.setup_5vdy.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.testing.setup_5vdy.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.testing.setupscons_f4z5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.testing.setupscons_f4z5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.testing.setupscons_f4z5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.testing.utils_9mke.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.testing.utils_9mke.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.testing.utils_9mke.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.version_2r8p.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.version_2r8p.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/numpy.version_2r8p.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/oauth.__init___cqz3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/oauth.__init___cqz3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/oauth.__init___cqz3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/oauth.oauth_d16j.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/oauth.oauth_d16j.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/oauth.oauth_d16j.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/opcode_8281.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/opcode_8281.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/opcode_8281.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/optparse_cbds.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/optparse_cbds.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/optparse_cbds.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/os2emxpath_e3es.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/os2emxpath_e3es.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/os2emxpath_e3es.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/os_d3ey.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/os_d3ey.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/os_d3ey.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pdb_305r.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pdb_305r.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pdb_305r.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pexpect_eqtm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pexpect_eqtm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pexpect_eqtm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pickle_d0eg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pickle_d0eg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pickle_d0eg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pickletools_27jz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pickletools_27jz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pickletools_27jz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pipes_264v.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pipes_264v.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pipes_264v.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pkg_resources_16n7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pkg_resources_16n7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pkg_resources_16n7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pkgutil_1cys.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pkgutil_1cys.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pkgutil_1cys.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/platform_347s.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/platform_347s.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/platform_347s.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/plistlib_6pdg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/plistlib_6pdg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/plistlib_6pdg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/popen2_eb10.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/popen2_eb10.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/popen2_eb10.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/poplib_e737.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/poplib_e737.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/poplib_e737.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/posixfile_al4f.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/posixfile_al4f.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/posixfile_al4f.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/posixpath_9ize.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/posixpath_9ize.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/posixpath_9ize.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pprint_97ru.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pprint_97ru.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pprint_97ru.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/problem_report_17hz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/problem_report_17hz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/problem_report_17hz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pty_dpdh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pty_dpdh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pty_dpdh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pxssh_4eb8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pxssh_4eb8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pxssh_4eb8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/py_compile_4jsx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/py_compile_4jsx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/py_compile_4jsx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.__init___c47e.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.__init___c47e.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.__init___c47e.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.__init___a84e.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.__init___a84e.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.__init___a84e.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.ber.__init___36xo.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.ber.__init___36xo.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.ber.__init___36xo.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.ber.decoder_es7j.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.ber.decoder_es7j.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.ber.decoder_es7j.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.ber.encoder_e0sr.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.ber.encoder_e0sr.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.ber.encoder_e0sr.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.ber.eoo_1iuf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.ber.eoo_1iuf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.ber.eoo_1iuf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.cer.__init___1xlb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.cer.__init___1xlb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.cer.__init___1xlb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.cer.decoder_50b1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.cer.decoder_50b1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.cer.decoder_50b1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.cer.encoder_9p4c.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.cer.encoder_9p4c.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.cer.encoder_9p4c.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.der.__init___8m3j.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.der.__init___8m3j.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.der.__init___8m3j.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.der.decoder_42na.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.der.decoder_42na.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.der.decoder_42na.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.der.encoder_8o23.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.der.encoder_8o23.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.codec.der.encoder_8o23.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.error_euvd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.error_euvd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.error_euvd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.__init___amo3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.__init___amo3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.__init___amo3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.base_bdt3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.base_bdt3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.base_bdt3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.char_1ns4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.char_1ns4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.char_1ns4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.constraint_elce.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.constraint_elce.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.constraint_elce.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.error_c99d.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.error_c99d.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.error_c99d.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.namedtype_efqi.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.namedtype_efqi.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.namedtype_efqi.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.namedval_63jc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.namedval_63jc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.namedval_63jc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.tag_c21g.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.tag_c21g.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.tag_c21g.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.univ_ew35.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.univ_ew35.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.univ_ew35.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.useful_7skm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.useful_7skm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyasn1.type.useful_7skm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyclbr_34md.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyclbr_34md.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyclbr_34md.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pydoc_18n1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pydoc_18n1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pydoc_18n1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pydoc_topics_69x6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pydoc_topics_69x6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pydoc_topics_69x6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pygst_767j.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pygst_767j.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pygst_767j.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pygtk_94l6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pygtk_94l6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pygtk_94l6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyinotify_3prl.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyinotify_3prl.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pyinotify_3prl.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pynotify.__init___e3nq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pynotify.__init___e3nq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/pynotify.__init___e3nq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/quopri_53fi.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/quopri_53fi.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/quopri_53fi.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/random_7g9o.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/random_7g9o.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/random_7g9o.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/re_14c1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/re_14c1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/re_14c1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/repr_60py.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/repr_60py.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/repr_60py.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/rexec_af00.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/rexec_af00.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/rexec_af00.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/rfc822_83gb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/rfc822_83gb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/rfc822_83gb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/rlcompleter_9i9j.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/rlcompleter_9i9j.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/rlcompleter_9i9j.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/robotparser_b0nj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/robotparser_b0nj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/robotparser_b0nj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/runpy_f1vb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/runpy_f1vb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/runpy_f1vb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sched_489r.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sched_489r.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sched_489r.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screen_5b07.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screen_5b07.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screen_5b07.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.Plugins_1ho6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.Plugins_1ho6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.Plugins_1ho6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.__init___4kju.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.__init___4kju.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.__init___4kju.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.backend_3np7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.backend_3np7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.backend_3np7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.drawing_5hw7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.drawing_5hw7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.drawing_5hw7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.install_ch0z.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.install_ch0z.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.install_ch0z.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.menu_84iw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.menu_84iw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.menu_84iw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.options_enn4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.options_enn4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.options_enn4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Amarok_bjdi.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Amarok_bjdi.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Amarok_bjdi.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.AmazonCoverArtSearch_201q.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.AmazonCoverArtSearch_201q.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.AmazonCoverArtSearch_201q.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Audacious_adnb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Audacious_adnb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Audacious_adnb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Banshee_7xje.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Banshee_7xje.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Banshee_7xje.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.BaseConverter_aja4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.BaseConverter_aja4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.BaseConverter_aja4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Convert_22g7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Convert_22g7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Convert_22g7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.CoverSearch_dmnv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.CoverSearch_dmnv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.CoverSearch_dmnv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Evolution_4b99.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Evolution_4b99.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Evolution_4b99.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Exaile_djsi.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Exaile_djsi.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Exaile_djsi.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Flickr_4n4y.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Flickr_4n4y.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Flickr_4n4y.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.GenericPlayer_95w0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.GenericPlayer_95w0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.GenericPlayer_95w0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Gstreamer_6j1x.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Gstreamer_6j1x.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Gstreamer_6j1x.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Juk_65xk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Juk_65xk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Juk_65xk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Kaffeine_5x3c.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Kaffeine_5x3c.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Kaffeine_5x3c.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.LastFMProxy_cv0w.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.LastFMProxy_cv0w.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.LastFMProxy_cv0w.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.LengthConverter_3l0e.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.LengthConverter_3l0e.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.LengthConverter_3l0e.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Listen_dp4z.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Listen_dp4z.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Listen_dp4z.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Loader_8an0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Loader_8an0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Loader_8an0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Mail_e2z4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Mail_e2z4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Mail_e2z4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Mplayer_683w.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Mplayer_683w.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Mplayer_683w.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Proxy_ddw0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Proxy_ddw0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Proxy_ddw0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Quodlibet_85il.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Quodlibet_85il.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Quodlibet_85il.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Rhythmbox_39fk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Rhythmbox_39fk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Rhythmbox_39fk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.SizeConverter_1ccf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.SizeConverter_1ccf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.SizeConverter_1ccf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Sonata_4zuv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Sonata_4zuv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Sonata_4zuv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Songbird_f32r.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Songbird_f32r.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.Songbird_f32r.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.TemperatureConverter_ac8l.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.TemperatureConverter_ac8l.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.TemperatureConverter_ac8l.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.__init___2ebr.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.__init___2ebr.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.__init___2ebr.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.iCal_e5xn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.iCal_e5xn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.iCal_e5xn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.keyring_azd8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.keyring_azd8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.keyring_azd8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.mpdclient2_bp2b.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.mpdclient2_bp2b.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.plugins.mpdclient2_bp2b.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.sensors_bmzp.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.sensors_bmzp.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.sensors_bmzp.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.services_bcil.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.services_bcil.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.services_bcil.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.session_e824.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.session_e824.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.session_e824.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.utils_9dia.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.utils_9dia.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/screenlets.utils_9dia.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/serial.__init___bkw8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/serial.__init___bkw8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/serial.__init___bkw8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/serial.serialjava_2zae.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/serial.serialjava_2zae.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/serial.serialjava_2zae.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/serial.serialposix_8d32.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/serial.serialposix_8d32.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/serial.serialposix_8d32.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/serial.serialutil_67vl.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/serial.serialutil_67vl.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/serial.serialutil_67vl.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/serial.serialwin32_8r0n.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/serial.serialwin32_8r0n.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/serial.serialwin32_8r0n.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/serial.sermsdos_agqi.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/serial.sermsdos_agqi.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/serial.sermsdos_agqi.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sessioninstaller.__init___d5pv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sessioninstaller.__init___d5pv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sessioninstaller.__init___d5pv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sessioninstaller.backends.__init___avmx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sessioninstaller.backends.__init___avmx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sessioninstaller.backends.__init___avmx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sessioninstaller.backends.aptd_ct33.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sessioninstaller.backends.aptd_ct33.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sessioninstaller.backends.aptd_ct33.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sessioninstaller.backends.dummy_1b1p.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sessioninstaller.backends.dummy_1b1p.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sessioninstaller.backends.dummy_1b1p.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sessioninstaller.backends.synaptic_74ym.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sessioninstaller.backends.synaptic_74ym.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sessioninstaller.backends.synaptic_74ym.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sessioninstaller.core_ebex.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sessioninstaller.core_ebex.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sessioninstaller.core_ebex.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sessioninstaller.errors_18f2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sessioninstaller.errors_18f2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sessioninstaller.errors_18f2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sessioninstaller.gstinstaller_56x9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sessioninstaller.gstinstaller_56x9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sessioninstaller.gstinstaller_56x9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sessioninstaller.utils_cz1w.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sessioninstaller.utils_cz1w.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sessioninstaller.utils_cz1w.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sets_1e72.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sets_1e72.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sets_1e72.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sgmllib_ce0k.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sgmllib_ce0k.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sgmllib_ce0k.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sha_bzj2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sha_bzj2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sha_bzj2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/shelve_2lny.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/shelve_2lny.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/shelve_2lny.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/shlex_a9ym.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/shlex_a9ym.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/shlex_a9ym.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/shutil_3ekl.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/shutil_3ekl.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/shutil_3ekl.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.__init___bjh5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.__init___bjh5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.__init___bjh5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.decoder_bn5j.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.decoder_bn5j.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.decoder_bn5j.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.encoder_9jvf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.encoder_9jvf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.encoder_9jvf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.ordered_dict_2ui0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.ordered_dict_2ui0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.ordered_dict_2ui0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.scanner_dhbm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.scanner_dhbm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.scanner_dhbm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.__init___b1b7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.__init___b1b7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.__init___b1b7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_check_circular_d4as.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_check_circular_d4as.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_check_circular_d4as.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_decimal_4dxt.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_decimal_4dxt.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_decimal_4dxt.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_decode_3zs2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_decode_3zs2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_decode_3zs2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_default_7ce0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_default_7ce0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_default_7ce0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_dump_aqu9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_dump_aqu9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_dump_aqu9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_encode_basestring_ascii_8nng.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_encode_basestring_ascii_8nng.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_encode_basestring_ascii_8nng.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_encode_for_html_82b2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_encode_for_html_82b2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_encode_for_html_82b2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_fail_51wp.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_fail_51wp.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_fail_51wp.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_float_bckd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_float_bckd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_float_bckd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_indent_3fub.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_indent_3fub.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_indent_3fub.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_pass1_o2k8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_pass1_o2k8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_pass1_o2k8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_pass2_bdb7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_pass2_bdb7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_pass2_bdb7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_pass3_6p31.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_pass3_6p31.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_pass3_6p31.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_recursion_2s44.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_recursion_2s44.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_recursion_2s44.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_scanstring_eix6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_scanstring_eix6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_scanstring_eix6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_separators_3oww.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_separators_3oww.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_separators_3oww.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_speedups_cdj9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_speedups_cdj9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_speedups_cdj9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_unicode_16cx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_unicode_16cx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tests.test_unicode_16cx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tool_aorj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tool_aorj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/simplejson.tool_aorj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sipconfig_nd_en7i.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sipconfig_nd_en7i.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sipconfig_nd_en7i.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sipconfig_ztta.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sipconfig_ztta.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sipconfig_ztta.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/site_91t8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/site_91t8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/site_91t8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sitecustomize_1abk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sitecustomize_1abk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sitecustomize_1abk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/smtpd_78jg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/smtpd_78jg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/smtpd_78jg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/smtplib_50f1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/smtplib_50f1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/smtplib_50f1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/snack_2eac.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/snack_2eac.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/snack_2eac.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sndhdr_5qcf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sndhdr_5qcf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sndhdr_5qcf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/socket_5sr2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/socket_5sr2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/socket_5sr2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.AptAuth_5mne.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.AptAuth_5mne.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.AptAuth_5mne.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.CountryInformation_7e4x.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.CountryInformation_7e4x.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.CountryInformation_7e4x.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.MirrorTest_5llz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.MirrorTest_5llz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.MirrorTest_5llz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.SoftwareProperties_41nm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.SoftwareProperties_41nm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.SoftwareProperties_41nm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.__init___8pz5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.__init___8pz5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.__init___8pz5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.distro_cpc7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.distro_cpc7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.distro_cpc7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.CdromProgress_a4jd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.CdromProgress_a4jd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.CdromProgress_a4jd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.DialogAddSourcesList_aor8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.DialogAddSourcesList_aor8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.DialogAddSourcesList_aor8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.DialogAdd_cyb5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.DialogAdd_cyb5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.DialogAdd_cyb5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.DialogCacheOutdated_9uvn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.DialogCacheOutdated_9uvn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.DialogCacheOutdated_9uvn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.DialogEdit_39dn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.DialogEdit_39dn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.DialogEdit_39dn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.DialogMirror_ezab.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.DialogMirror_ezab.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.DialogMirror_ezab.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.SimpleGtkbuilderApp_2ker.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.SimpleGtkbuilderApp_2ker.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.SimpleGtkbuilderApp_2ker.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.SoftwarePropertiesGtk_exfd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.SoftwarePropertiesGtk_exfd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.SoftwarePropertiesGtk_exfd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.__init___cu9g.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.__init___cu9g.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.__init___cu9g.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.dialogs_dnor.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.dialogs_dnor.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.dialogs_dnor.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.utils_9ry2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.utils_9ry2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.gtk.utils_9ry2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.ppa_czeq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.ppa_czeq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/softwareproperties.ppa_czeq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sqlite3.__init___217z.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sqlite3.__init___217z.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sqlite3.__init___217z.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sqlite3.dbapi2_bjdj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sqlite3.dbapi2_bjdj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sqlite3.dbapi2_bjdj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sqlite3.dump_52u2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sqlite3.dump_52u2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sqlite3.dump_52u2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sre_asqq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sre_asqq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sre_asqq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sre_compile_8jnl.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sre_compile_8jnl.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sre_compile_8jnl.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sre_constants_6s0s.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sre_constants_6s0s.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sre_constants_6s0s.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sre_parse_8xss.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sre_parse_8xss.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sre_parse_8xss.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ssl_esgx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ssl_esgx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ssl_esgx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/stat_73gw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/stat_73gw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/stat_73gw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/statvfs_e35s.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/statvfs_e35s.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/statvfs_e35s.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/string_aoem.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/string_aoem.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/string_aoem.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/stringold_3z31.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/stringold_3z31.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/stringold_3z31.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/stringprep_e2vw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/stringprep_e2vw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/stringprep_e2vw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/struct_x5a9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/struct_x5a9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/struct_x5a9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/subprocess_bi26.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/subprocess_bi26.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/subprocess_bi26.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sunau_8wcj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sunau_8wcj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sunau_8wcj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sunaudio_e81n.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sunaudio_e81n.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/sunaudio_e81n.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/symbol_8zf7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/symbol_8zf7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/symbol_8zf7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/symtable_dwhi.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/symtable_dwhi.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/symtable_dwhi.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tabnanny_19e2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tabnanny_19e2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tabnanny_19e2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tarfile_44xw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tarfile_44xw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tarfile_44xw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/telnetlib_a7ri.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/telnetlib_a7ri.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/telnetlib_a7ri.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tempfile_w0p8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tempfile_w0p8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tempfile_w0p8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/test.__init___7dj3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/test.__init___7dj3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/test.__init___7dj3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/test.pystone_984o.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/test.pystone_984o.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/test.pystone_984o.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/test.regrtest_dw29.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/test.regrtest_dw29.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/test.regrtest_dw29.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/test.test_support_48no.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/test.test_support_48no.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/test.test_support_48no.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/textwrap_a02q.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/textwrap_a02q.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/textwrap_a02q.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/this_9dym.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/this_9dym.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/this_9dym.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/threading_aib7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/threading_aib7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/threading_aib7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tidy.__init___a869.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tidy.__init___a869.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tidy.__init___a869.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tidy.error_62y2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tidy.error_62y2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tidy.error_62y2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tidy.lib_a7m8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tidy.lib_a7m8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tidy.lib_a7m8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tidy.test_tidy_bvtn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tidy.test_tidy_bvtn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tidy.test_tidy_bvtn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/timeit_bjk5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/timeit_bjk5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/timeit_bjk5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tkColorChooser_aath.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tkColorChooser_aath.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tkColorChooser_aath.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tkCommonDialog_dz7x.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tkCommonDialog_dz7x.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tkCommonDialog_dz7x.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tkFileDialog_8ncg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tkFileDialog_8ncg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tkFileDialog_8ncg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tkFont_bfb2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tkFont_bfb2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tkFont_bfb2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tkMessageBox_106i.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tkMessageBox_106i.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tkMessageBox_106i.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tkSimpleDialog_aki1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tkSimpleDialog_aki1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tkSimpleDialog_aki1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/toaiff_9a8l.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/toaiff_9a8l.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/toaiff_9a8l.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/token_8srm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/token_8srm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/token_8srm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tokenize_73kj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tokenize_73kj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tokenize_73kj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/trace_9x1u.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/trace_9x1u.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/trace_9x1u.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/traceback_6y7d.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/traceback_6y7d.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/traceback_6y7d.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.__init___a9bp.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.__init___a9bp.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.__init___a9bp.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.__version___a4ey.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.__version___a4ey.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.__version___a4ey.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.__init___ccoe.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.__init___ccoe.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.__init___ccoe.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.accesskey_btiq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.accesskey_btiq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.accesskey_btiq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.convert_5tnc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.convert_5tnc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.convert_5tnc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.csv2po_dojk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.csv2po_dojk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.csv2po_dojk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.csv2tbx_450a.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.csv2tbx_450a.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.csv2tbx_450a.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.dtd2po_4qz9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.dtd2po_4qz9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.dtd2po_4qz9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.html2po_4729.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.html2po_4729.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.html2po_4729.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.ical2po_ezx3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.ical2po_ezx3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.ical2po_ezx3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.ini2po_6tyi.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.ini2po_6tyi.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.ini2po_6tyi.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.moz2po_6jse.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.moz2po_6jse.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.moz2po_6jse.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.mozfunny2prop_atne.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.mozfunny2prop_atne.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.mozfunny2prop_atne.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.odf2xliff_4qhc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.odf2xliff_4qhc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.odf2xliff_4qhc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.oo2po_42fv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.oo2po_42fv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.oo2po_42fv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.oo2xliff_um1c.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.oo2xliff_um1c.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.oo2xliff_um1c.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.php2po_voz8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.php2po_voz8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.php2po_voz8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2csv_b66v.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2csv_b66v.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2csv_b66v.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2dtd_3jh1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2dtd_3jh1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2dtd_3jh1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2html_b69y.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2html_b69y.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2html_b69y.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2ical_bxx8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2ical_bxx8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2ical_bxx8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2ini_5qbi.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2ini_5qbi.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2ini_5qbi.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2moz_e4ih.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2moz_e4ih.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2moz_e4ih.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2oo_7ey8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2oo_7ey8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2oo_7ey8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2php_5j67.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2php_5j67.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2php_5j67.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2prop_3i0p.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2prop_3i0p.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2prop_3i0p.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2rc_3s51.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2rc_3s51.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2rc_3s51.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2sub_bpz5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2sub_bpz5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2sub_bpz5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2symb_dztf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2symb_dztf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2symb_dztf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2tiki_68lq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2tiki_68lq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2tiki_68lq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2tmx_cbpq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2tmx_cbpq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2tmx_cbpq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2ts_7k4u.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2ts_7k4u.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2ts_7k4u.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2txt_7uet.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2txt_7uet.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2txt_7uet.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2web2py_6ndw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2web2py_6ndw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2web2py_6ndw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2wordfast_ds96.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2wordfast_ds96.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2wordfast_ds96.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2xliff_a0k7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2xliff_a0k7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.po2xliff_a0k7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.poreplace_9ngy.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.poreplace_9ngy.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.poreplace_9ngy.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.pot2po_ee2w.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.pot2po_ee2w.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.pot2po_ee2w.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.prop2mozfunny_181f.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.prop2mozfunny_181f.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.prop2mozfunny_181f.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.prop2po_b99e.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.prop2po_b99e.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.prop2po_b99e.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.rc2po_2gyf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.rc2po_2gyf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.rc2po_2gyf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.sub2po_6gho.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.sub2po_6gho.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.sub2po_6gho.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.symb2po_e628.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.symb2po_e628.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.symb2po_e628.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_accesskey_2klm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_accesskey_2klm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_accesskey_2klm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_convert_eeji.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_convert_eeji.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_convert_eeji.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_csv2po_e79l.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_csv2po_e79l.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_csv2po_e79l.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_dtd2po_5qxq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_dtd2po_5qxq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_dtd2po_5qxq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_html2po_buhm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_html2po_buhm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_html2po_buhm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_moz2po_2c3o.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_moz2po_2c3o.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_moz2po_2c3o.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_mozfunny2prop_5s6o.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_mozfunny2prop_5s6o.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_mozfunny2prop_5s6o.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_oo2po_a0iv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_oo2po_a0iv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_oo2po_a0iv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_oo2xliff_5q3m.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_oo2xliff_5q3m.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_oo2xliff_5q3m.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_php2po_angx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_php2po_angx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_php2po_angx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2csv_64ra.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2csv_64ra.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2csv_64ra.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2dtd_cqi0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2dtd_cqi0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2dtd_cqi0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2html_5dp0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2html_5dp0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2html_5dp0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2moz_4zsx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2moz_4zsx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2moz_4zsx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2oo_eg3j.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2oo_eg3j.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2oo_eg3j.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2php_dkkr.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2php_dkkr.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2php_dkkr.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2prop_egzc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2prop_egzc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2prop_egzc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2tiki_8vss.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2tiki_8vss.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2tiki_8vss.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2tmx_6m80.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2tmx_6m80.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2tmx_6m80.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2ts_2bvp.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2ts_2bvp.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2ts_2bvp.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2txt_k0lb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2txt_k0lb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2txt_k0lb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2xliff_dc9a.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2xliff_dc9a.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_po2xliff_dc9a.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_pot2po_47zl.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_pot2po_47zl.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_pot2po_47zl.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_prop2mozfunny_7ld8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_prop2mozfunny_7ld8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_prop2mozfunny_7ld8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_prop2po_8pw8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_prop2po_8pw8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_prop2po_8pw8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_tiki2po_8ew5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_tiki2po_8ew5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_tiki2po_8ew5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_ts2po_5zwl.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_ts2po_5zwl.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_ts2po_5zwl.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_txt2po_qqrx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_txt2po_qqrx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_txt2po_qqrx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_xliff2po_69jq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_xliff2po_69jq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.test_xliff2po_69jq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.tiki2po_9lmb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.tiki2po_9lmb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.tiki2po_9lmb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.ts2po_1l2t.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.ts2po_1l2t.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.ts2po_1l2t.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.txt2po_65yb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.txt2po_65yb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.txt2po_65yb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.web2py2po_6gbv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.web2py2po_6gbv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.web2py2po_6gbv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.xliff2odf_e6an.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.xliff2odf_e6an.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.xliff2odf_e6an.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.xliff2oo_a8r0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.xliff2oo_a8r0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.xliff2oo_a8r0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.xliff2po_9fxp.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.xliff2po_9fxp.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.convert.xliff2po_9fxp.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.__init___4juk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.__init___4juk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.__init___4juk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.autocorrect_ero3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.autocorrect_ero3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.autocorrect_ero3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.checks_3r8j.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.checks_3r8j.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.checks_3r8j.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.decoration_4z4y.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.decoration_4z4y.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.decoration_4z4y.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.helpers_afo9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.helpers_afo9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.helpers_afo9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.pofilter_1whw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.pofilter_1whw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.pofilter_1whw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.prefilters_8h3f.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.prefilters_8h3f.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.prefilters_8h3f.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.spelling_f2mj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.spelling_f2mj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.spelling_f2mj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.test_autocorrect_2eft.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.test_autocorrect_2eft.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.test_autocorrect_2eft.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.test_checks_58ho.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.test_checks_58ho.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.test_checks_58ho.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.test_decoration_9lj9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.test_decoration_9lj9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.test_decoration_9lj9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.test_pofilter_8np5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.test_pofilter_8np5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.test_pofilter_8np5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.test_prefilters_ase8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.test_prefilters_ase8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.filters.test_prefilters_ase8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.i18n_5gvd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.i18n_5gvd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.i18n_5gvd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.__init___9piw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.__init___9piw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.__init___9piw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.af_el6h.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.af_el6h.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.af_el6h.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.am_6ov4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.am_6ov4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.am_6ov4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.ar_blbn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.ar_blbn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.ar_blbn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.bn_ey9b.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.bn_ey9b.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.bn_ey9b.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.code_or_30z4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.code_or_30z4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.code_or_30z4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.common_5u1h.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.common_5u1h.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.common_5u1h.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.data_bpnf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.data_bpnf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.data_bpnf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.de_ap4t.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.de_ap4t.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.de_ap4t.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.el_c3l7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.el_c3l7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.el_c3l7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.es_33uo.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.es_33uo.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.es_33uo.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.fa_fth2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.fa_fth2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.fa_fth2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.factory_5gbm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.factory_5gbm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.factory_5gbm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.fi_dmja.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.fi_dmja.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.fi_dmja.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.fr_8zv2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.fr_8zv2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.fr_8zv2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.he_4nrc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.he_4nrc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.he_4nrc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.hy_8c54.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.hy_8c54.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.hy_8c54.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.identify_5c9r.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.identify_5c9r.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.identify_5c9r.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.ja_1nv6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.ja_1nv6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.ja_1nv6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.km_8iet.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.km_8iet.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.km_8iet.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.kn_ei0e.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.kn_ei0e.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.kn_ei0e.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.ko_beas.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.ko_beas.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.ko_beas.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.ml_8eh1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.ml_8eh1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.ml_8eh1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.ne_b442.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.ne_b442.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.ne_b442.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.ngram_90ug.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.ngram_90ug.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.ngram_90ug.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.pa_9lrc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.pa_9lrc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.pa_9lrc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.poedit_abuf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.poedit_abuf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.poedit_abuf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.si_31v5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.si_31v5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.si_31v5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.st_bdr0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.st_bdr0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.st_bdr0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.sv_4vko.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.sv_4vko.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.sv_4vko.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.te_1jlp.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.te_1jlp.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.te_1jlp.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.team_c0gz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.team_c0gz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.team_c0gz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_af_blnl.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_af_blnl.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_af_blnl.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_am_ab2c.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_am_ab2c.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_am_ab2c.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_ar_2nge.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_ar_2nge.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_ar_2nge.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_common_50oa.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_common_50oa.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_common_50oa.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_data_c58o.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_data_c58o.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_data_c58o.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_el_17tt.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_el_17tt.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_el_17tt.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_es_6ika.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_es_6ika.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_es_6ika.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_factory_7lvr.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_factory_7lvr.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_factory_7lvr.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_fr_amvf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_fr_amvf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_fr_amvf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_hy_exkx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_hy_exkx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_hy_exkx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_identify_b7cb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_identify_b7cb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_identify_b7cb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_km_vlj4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_km_vlj4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_km_vlj4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_ko_8jj7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_ko_8jj7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_ko_8jj7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_ne_2hjr.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_ne_2hjr.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_ne_2hjr.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_or_butf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_or_butf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_or_butf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_poedit_8yvq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_poedit_8yvq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_poedit_8yvq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_team_avou.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_team_avou.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_team_avou.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_th_2ngq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_th_2ngq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_th_2ngq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_vi_eqho.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_vi_eqho.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_vi_eqho.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_zh_5v8c.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_zh_5v8c.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.test_zh_5v8c.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.th_bb8b.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.th_bb8b.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.th_bb8b.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.ur_4ugi.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.ur_4ugi.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.ur_4ugi.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.vi_bfj9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.vi_bfj9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.vi_bfj9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.zh_5tj6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.zh_5tj6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.lang.zh_5tj6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.__init___5pbl.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.__init___5pbl.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.__init___5pbl.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.autoencode_784m.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.autoencode_784m.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.autoencode_784m.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.context_dbi5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.context_dbi5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.context_dbi5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.contextlib_3g15.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.contextlib_3g15.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.contextlib_3g15.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.dictutils_cb3b.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.dictutils_cb3b.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.dictutils_cb3b.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.file_discovery_6vz1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.file_discovery_6vz1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.file_discovery_6vz1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.hash_24l3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.hash_24l3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.hash_24l3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.ini_8cyh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.ini_8cyh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.ini_8cyh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.lru_yuwm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.lru_yuwm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.lru_yuwm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.multistring_eiuu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.multistring_eiuu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.multistring_eiuu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.optrecurse_4g57.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.optrecurse_4g57.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.optrecurse_4g57.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.ourdom_e3yp.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.ourdom_e3yp.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.ourdom_e3yp.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.progressbar_6z4y.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.progressbar_6z4y.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.progressbar_6z4y.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.quote_920f.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.quote_920f.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.quote_920f.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.selector_6q0d.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.selector_6q0d.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.selector_6q0d.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.sparse_1j6e.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.sparse_1j6e.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.sparse_1j6e.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.stdiotell_1l80.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.stdiotell_1l80.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.stdiotell_1l80.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.test_autoencode_97a1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.test_autoencode_97a1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.test_autoencode_97a1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.test_dictutils_7d0u.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.test_dictutils_7d0u.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.test_dictutils_7d0u.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.test_multistring_s64l.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.test_multistring_s64l.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.test_multistring_s64l.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.test_optrecurse_2bct.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.test_optrecurse_2bct.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.test_optrecurse_2bct.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.test_quote_61ha.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.test_quote_61ha.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.test_quote_61ha.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.test_zipfileext_8iqb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.test_zipfileext_8iqb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.test_zipfileext_8iqb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.textwrap_902o.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.textwrap_902o.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.textwrap_902o.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.typecheck.__init___epq7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.typecheck.__init___epq7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.typecheck.__init___epq7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.typecheck.doctest_support_2fos.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.typecheck.doctest_support_2fos.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.typecheck.doctest_support_2fos.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.typecheck.mixins_b1vu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.typecheck.mixins_b1vu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.typecheck.mixins_b1vu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.typecheck.sets_dg0r.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.typecheck.sets_dg0r.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.typecheck.sets_dg0r.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.typecheck.typeclasses_drr5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.typecheck.typeclasses_drr5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.typecheck.typeclasses_drr5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.wStringIO_a2da.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.wStringIO_a2da.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.wStringIO_a2da.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.wsgi_4tvg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.wsgi_4tvg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.wsgi_4tvg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.xml_helpers_a4q8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.xml_helpers_a4q8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.xml_helpers_a4q8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.xmlwrapper_334q.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.xmlwrapper_334q.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.xmlwrapper_334q.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.zipfileext_du2c.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.zipfileext_du2c.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.misc.zipfileext_du2c.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.__init___791n.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.__init___791n.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.__init___791n.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.indexing.CommonIndexer_a75z.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.indexing.CommonIndexer_a75z.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.indexing.CommonIndexer_a75z.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.indexing.PyLuceneIndexer1_5q91.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.indexing.PyLuceneIndexer1_5q91.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.indexing.PyLuceneIndexer1_5q91.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.indexing.PyLuceneIndexer_axz8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.indexing.PyLuceneIndexer_axz8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.indexing.PyLuceneIndexer_axz8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.indexing.XapianIndexer_4y72.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.indexing.XapianIndexer_4y72.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.indexing.XapianIndexer_4y72.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.indexing.__init___a9ig.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.indexing.__init___a9ig.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.indexing.__init___a9ig.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.indexing.test_indexers_ya18.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.indexing.test_indexers_ya18.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.indexing.test_indexers_ya18.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.lshtein_6erc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.lshtein_6erc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.lshtein_6erc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.match_3hpw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.match_3hpw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.match_3hpw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.segment_2m06.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.segment_2m06.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.segment_2m06.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.terminology_4qq7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.terminology_4qq7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.terminology_4qq7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.test_lshtein_7shj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.test_lshtein_7shj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.test_lshtein_7shj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.test_match_7yjd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.test_match_7yjd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.test_match_7yjd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.test_terminology_8ax5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.test_terminology_8ax5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.search.test_terminology_8ax5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.services.__init___2mh5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.services.__init___2mh5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.services.__init___2mh5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.services.lookupclient_uav0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.services.lookupclient_uav0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.services.lookupclient_uav0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.services.lookupservice_eer2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.services.lookupservice_eer2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.services.lookupservice_eer2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.services.tmserver_1krk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.services.tmserver_1krk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.services.tmserver_1krk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.__init___7orx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.__init___7orx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.__init___7orx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.base_bdvi.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.base_bdvi.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.base_bdvi.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.benchmark_c7x3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.benchmark_c7x3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.benchmark_c7x3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.cpo_4x91.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.cpo_4x91.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.cpo_4x91.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.csvl10n_bagq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.csvl10n_bagq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.csvl10n_bagq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.directory_dymy.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.directory_dymy.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.directory_dymy.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.dtd_e0l9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.dtd_e0l9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.dtd_e0l9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.factory_97za.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.factory_97za.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.factory_97za.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.fpo_tuyg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.fpo_tuyg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.fpo_tuyg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.html_eipt.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.html_eipt.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.html_eipt.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.ical_3tlf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.ical_3tlf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.ical_3tlf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.ini_2t6w.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.ini_2t6w.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.ini_2t6w.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.lisa_dpv7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.lisa_dpv7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.lisa_dpv7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.mo_1acv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.mo_1acv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.mo_1acv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.odf_io_czlc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.odf_io_czlc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.odf_io_czlc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.odf_shared_bla6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.odf_shared_bla6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.odf_shared_bla6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.omegat_1y1r.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.omegat_1y1r.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.omegat_1y1r.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.oo_arry.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.oo_arry.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.oo_arry.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.php_188p.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.php_188p.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.php_188p.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.__init___5l85.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.__init___5l85.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.__init___5l85.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.base_ek4b.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.base_ek4b.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.base_ek4b.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.general_4s6g.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.general_4s6g.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.general_4s6g.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.interfaces_9xcc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.interfaces_9xcc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.interfaces_9xcc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.lisa_2700.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.lisa_2700.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.lisa_2700.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.parse_59fd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.parse_59fd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.parse_59fd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.strelem_au37.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.strelem_au37.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.strelem_au37.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.terminology_cfwc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.terminology_cfwc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.terminology_cfwc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.test_base_i2vy.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.test_base_i2vy.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.test_base_i2vy.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.test_general_8ff8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.test_general_8ff8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.test_general_8ff8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.test_lisa_4e9g.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.test_lisa_4e9g.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.test_lisa_4e9g.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.test_terminology_8dft.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.test_terminology_8dft.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.test_terminology_8dft.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.xliff_dlgz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.xliff_dlgz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.placeables.xliff_dlgz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.po_rfcp.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.po_rfcp.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.po_rfcp.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.pocommon_b18m.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.pocommon_b18m.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.pocommon_b18m.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.poheader_d26o.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.poheader_d26o.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.poheader_d26o.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.poparser_78x0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.poparser_78x0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.poparser_78x0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.poxliff_ee8p.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.poxliff_ee8p.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.poxliff_ee8p.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.properties_e9l6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.properties_e9l6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.properties_e9l6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.pypo_4oyv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.pypo_4oyv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.pypo_4oyv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.qm_cs7j.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.qm_cs7j.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.qm_cs7j.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.qph_8mky.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.qph_8mky.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.qph_8mky.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.rc_bk2z.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.rc_bk2z.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.rc_bk2z.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.statistics_dzpg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.statistics_dzpg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.statistics_dzpg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.statsdb_dv8i.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.statsdb_dv8i.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.statsdb_dv8i.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.subtitles_6qqc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.subtitles_6qqc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.subtitles_6qqc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.symbian_d0pi.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.symbian_d0pi.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.symbian_d0pi.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.tbx_9xrv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.tbx_9xrv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.tbx_9xrv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_base_a73c.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_base_a73c.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_base_a73c.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_cpo_6nmp.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_cpo_6nmp.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_cpo_6nmp.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_csvl10n_dr27.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_csvl10n_dr27.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_csvl10n_dr27.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_directory_6x1x.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_directory_6x1x.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_directory_6x1x.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_dtd_f064.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_dtd_f064.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_dtd_f064.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_factory_wwb2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_factory_wwb2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_factory_wwb2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_mo_y4h5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_mo_y4h5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_mo_y4h5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_monolingual_1uw8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_monolingual_1uw8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_monolingual_1uw8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_omegat_5ak7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_omegat_5ak7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_omegat_5ak7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_oo_7msw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_oo_7msw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_oo_7msw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_php_8yrn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_php_8yrn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_php_8yrn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_po_19py.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_po_19py.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_po_19py.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_poheader_cm3f.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_poheader_cm3f.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_poheader_cm3f.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_poxliff_1zkr.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_poxliff_1zkr.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_poxliff_1zkr.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_properties_675n.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_properties_675n.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_properties_675n.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_pypo_dmpc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_pypo_dmpc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_pypo_dmpc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_qm_2al6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_qm_2al6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_qm_2al6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_qph_69ca.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_qph_69ca.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_qph_69ca.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_rc_31y1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_rc_31y1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_rc_31y1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_statsdb_7r9i.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_statsdb_7r9i.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_statsdb_7r9i.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_tbx_dwkw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_tbx_dwkw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_tbx_dwkw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_tiki_1j7m.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_tiki_1j7m.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_tiki_1j7m.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_tmx_9wnc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_tmx_9wnc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_tmx_9wnc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_ts2_4qxu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_ts2_4qxu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_ts2_4qxu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_ts_x8b8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_ts_x8b8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_ts_x8b8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_txt_cmg9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_txt_cmg9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_txt_cmg9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_wordfast_jf6g.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_wordfast_jf6g.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_wordfast_jf6g.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_xliff_bv7z.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_xliff_bv7z.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_xliff_bv7z.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_zip_b15v.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_zip_b15v.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_zip_b15v.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_zipfile_f3vm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_zipfile_f3vm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.test_zipfile_f3vm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.tiki_6x1q.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.tiki_6x1q.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.tiki_6x1q.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.tmdb_9n5b.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.tmdb_9n5b.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.tmdb_9n5b.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.tmx_9if9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.tmx_9if9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.tmx_9if9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.ts2_17a7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.ts2_17a7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.ts2_17a7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.ts_e31d.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.ts_e31d.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.ts_e31d.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.txt_6h0l.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.txt_6h0l.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.txt_6h0l.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.versioncontrol.__init___2854.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.versioncontrol.__init___2854.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.versioncontrol.__init___2854.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.versioncontrol.bzr_5brp.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.versioncontrol.bzr_5brp.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.versioncontrol.bzr_5brp.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.versioncontrol.cvs_dnj1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.versioncontrol.cvs_dnj1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.versioncontrol.cvs_dnj1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.versioncontrol.darcs_8m7v.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.versioncontrol.darcs_8m7v.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.versioncontrol.darcs_8m7v.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.versioncontrol.git_4sif.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.versioncontrol.git_4sif.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.versioncontrol.git_4sif.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.versioncontrol.hg_17qn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.versioncontrol.hg_17qn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.versioncontrol.hg_17qn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.versioncontrol.svn_26w1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.versioncontrol.svn_26w1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.versioncontrol.svn_26w1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.wordfast_afqe.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.wordfast_afqe.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.wordfast_afqe.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xliff_9rbm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xliff_9rbm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xliff_9rbm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_extract.__init___3swh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_extract.__init___3swh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_extract.__init___3swh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_extract.extract_7ikj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_extract.extract_7ikj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_extract.extract_7ikj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_extract.generate_dvlg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_extract.generate_dvlg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_extract.generate_dvlg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_extract.misc_3hi1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_extract.misc_3hi1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_extract.misc_3hi1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_extract.test_misc_eql6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_extract.test_misc_eql6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_extract.test_misc_eql6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_extract.test_unit_tree_6utl.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_extract.test_unit_tree_6utl.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_extract.test_unit_tree_6utl.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_extract.test_xpath_breadcrumb_bz1t.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_extract.test_xpath_breadcrumb_bz1t.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_extract.test_xpath_breadcrumb_bz1t.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_extract.unit_tree_luo2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_extract.unit_tree_luo2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_extract.unit_tree_luo2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_extract.xpath_breadcrumb_f3ix.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_extract.xpath_breadcrumb_f3ix.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_extract.xpath_breadcrumb_f3ix.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_name_9sak.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_name_9sak.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xml_name_9sak.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xpi_9d3z.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xpi_9d3z.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.xpi_9d3z.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.zip_6734.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.zip_6734.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.storage.zip_6734.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.__init___1316.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.__init___1316.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.__init___1316.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.build_tmdb_8qh2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.build_tmdb_8qh2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.build_tmdb_8qh2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.phppo2pypo_bwlc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.phppo2pypo_bwlc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.phppo2pypo_bwlc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.poclean_2hmb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.poclean_2hmb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.poclean_2hmb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.pocompile_baos.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.pocompile_baos.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.pocompile_baos.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.poconflicts_abvi.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.poconflicts_abvi.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.poconflicts_abvi.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.pocount_agwq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.pocount_agwq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.pocount_agwq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.podebug_2jjm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.podebug_2jjm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.podebug_2jjm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.pogrep_8vjb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.pogrep_8vjb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.pogrep_8vjb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.pomerge_ai87.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.pomerge_ai87.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.pomerge_ai87.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.porestructure_ehpk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.porestructure_ehpk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.porestructure_ehpk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.posegment_8854.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.posegment_8854.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.posegment_8854.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.poswap_e8f2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.poswap_e8f2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.poswap_e8f2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.poterminology_bb8r.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.poterminology_bb8r.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.poterminology_bb8r.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.pretranslate_1k6b.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.pretranslate_1k6b.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.pretranslate_1k6b.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.pydiff_6e5h.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.pydiff_6e5h.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.pydiff_6e5h.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.pypo2phppo_6h0i.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.pypo2phppo_6h0i.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.pypo2phppo_6h0i.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.test_phppo2pypo_b188.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.test_phppo2pypo_b188.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.test_phppo2pypo_b188.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.test_pocount_dty4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.test_pocount_dty4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.test_pocount_dty4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.test_podebug_84st.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.test_podebug_84st.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.test_podebug_84st.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.test_pogrep_7fph.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.test_pogrep_7fph.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.test_pogrep_7fph.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.test_pomerge_5art.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.test_pomerge_5art.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.test_pomerge_5art.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.test_pretranslate_9r0u.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.test_pretranslate_9r0u.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.test_pretranslate_9r0u.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.test_pypo2phppo_4kgo.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.test_pypo2phppo_4kgo.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/translate.tools.test_pypo2phppo_4kgo.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tty_6lpw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tty_6lpw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/tty_6lpw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/turtle_ckrn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/turtle_ckrn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/turtle_ckrn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.__init___bwr0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.__init___bwr0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.__init___bwr0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted._version_52gl.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted._version_52gl.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted._version_52gl.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.application.__init___gql2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.application.__init___gql2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.application.__init___gql2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.application.app_9k02.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.application.app_9k02.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.application.app_9k02.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.application.internet_397f.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.application.internet_397f.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.application.internet_397f.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.application.reactors_9d4w.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.application.reactors_9d4w.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.application.reactors_9d4w.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.application.service_7skq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.application.service_7skq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.application.service_7skq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.application.strports_6h76.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.application.strports_6h76.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.application.strports_6h76.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.__init___8g4w.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.__init___8g4w.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.__init___8g4w.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch._version_egiw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch._version_egiw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch._version_egiw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.avatar_3eqs.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.avatar_3eqs.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.avatar_3eqs.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.checkers_9dgr.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.checkers_9dgr.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.checkers_9dgr.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.client.__init___6ubr.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.client.__init___6ubr.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.client.__init___6ubr.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.client.agent_cvyp.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.client.agent_cvyp.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.client.agent_cvyp.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.client.connect_1l50.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.client.connect_1l50.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.client.connect_1l50.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.client.default_asvo.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.client.default_asvo.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.client.default_asvo.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.client.direct_dplj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.client.direct_dplj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.client.direct_dplj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.client.knownhosts_8zj9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.client.knownhosts_8zj9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.client.knownhosts_8zj9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.client.options_com4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.client.options_com4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.client.options_com4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.error_cd20.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.error_cd20.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.error_cd20.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.insults.__init___48js.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.insults.__init___48js.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.insults.__init___48js.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.insults.client_2k8i.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.insults.client_2k8i.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.insults.client_2k8i.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.insults.colors_7xfx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.insults.colors_7xfx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.insults.colors_7xfx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.insults.helper_3j9h.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.insults.helper_3j9h.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.insults.helper_3j9h.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.insults.insults_9rh4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.insults.insults_9rh4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.insults.insults_9rh4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.insults.text_e1oe.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.insults.text_e1oe.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.insults.text_e1oe.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.insults.window_ec0k.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.insults.window_ec0k.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.insults.window_ec0k.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.interfaces_ddsz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.interfaces_ddsz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.interfaces_ddsz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ls_9mq0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ls_9mq0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ls_9mq0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.manhole_7wft.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.manhole_7wft.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.manhole_7wft.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.manhole_ssh_1d1z.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.manhole_ssh_1d1z.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.manhole_ssh_1d1z.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.manhole_tap_5q56.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.manhole_tap_5q56.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.manhole_tap_5q56.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.mixin_9p8k.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.mixin_9p8k.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.mixin_9p8k.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.openssh_compat.__init___co5u.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.openssh_compat.__init___co5u.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.openssh_compat.__init___co5u.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.openssh_compat.factory_3ytz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.openssh_compat.factory_3ytz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.openssh_compat.factory_3ytz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.openssh_compat.primes_418z.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.openssh_compat.primes_418z.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.openssh_compat.primes_418z.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.recvline_cdty.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.recvline_cdty.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.recvline_cdty.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.scripts.__init___4l04.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.scripts.__init___4l04.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.scripts.__init___4l04.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.scripts.cftp_401u.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.scripts.cftp_401u.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.scripts.cftp_401u.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.scripts.ckeygen_clam.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.scripts.ckeygen_clam.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.scripts.ckeygen_clam.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.scripts.conch_6b6j.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.scripts.conch_6b6j.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.scripts.conch_6b6j.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.scripts.tkconch_4aw2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.scripts.tkconch_4aw2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.scripts.tkconch_4aw2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.__init___6uac.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.__init___6uac.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.__init___6uac.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.agent_cnkn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.agent_cnkn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.agent_cnkn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.channel_866m.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.channel_866m.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.channel_866m.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.common_81si.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.common_81si.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.common_81si.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.connection_e3pf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.connection_e3pf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.connection_e3pf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.factory_f438.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.factory_f438.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.factory_f438.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.filetransfer_dw5w.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.filetransfer_dw5w.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.filetransfer_dw5w.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.forwarding_7q8z.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.forwarding_7q8z.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.forwarding_7q8z.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.keys_8kih.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.keys_8kih.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.keys_8kih.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.service_87c9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.service_87c9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.service_87c9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.session_76ot.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.session_76ot.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.session_76ot.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.sexpy_3jrn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.sexpy_3jrn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.sexpy_3jrn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.transport_8g6t.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.transport_8g6t.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.transport_8g6t.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.userauth_6eq2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.userauth_6eq2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ssh.userauth_6eq2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.stdio_4hnx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.stdio_4hnx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.stdio_4hnx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.tap_6q9f.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.tap_6q9f.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.tap_6q9f.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.telnet_3y5o.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.telnet_3y5o.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.telnet_3y5o.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.__init___5nkv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.__init___5nkv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.__init___5nkv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.keydata_50q4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.keydata_50q4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.keydata_50q4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_agent_4th0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_agent_4th0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_agent_4th0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_cftp_3v9f.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_cftp_3v9f.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_cftp_3v9f.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_channel_5edq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_channel_5edq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_channel_5edq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_checkers_e4bl.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_checkers_e4bl.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_checkers_e4bl.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_ckeygen_cvsb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_ckeygen_cvsb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_ckeygen_cvsb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_conch_8mwc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_conch_8mwc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_conch_8mwc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_connection_ae9i.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_connection_ae9i.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_connection_ae9i.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_default_arpn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_default_arpn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_default_arpn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_filetransfer_ahke.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_filetransfer_ahke.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_filetransfer_ahke.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_helper_dkcf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_helper_dkcf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_helper_dkcf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_insults_7sjf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_insults_7sjf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_insults_7sjf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_keys_2oed.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_keys_2oed.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_keys_2oed.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_knownhosts_5t49.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_knownhosts_5t49.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_knownhosts_5t49.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_manhole_5g0u.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_manhole_5g0u.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_manhole_5g0u.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_mixin_cg30.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_mixin_cg30.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_mixin_cg30.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_openssh_compat_6xbo.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_openssh_compat_6xbo.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_openssh_compat_6xbo.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_recvline_b5lu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_recvline_b5lu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_recvline_b5lu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_session_5a71.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_session_5a71.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_session_5a71.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_ssh_9tru.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_ssh_9tru.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_ssh_9tru.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_tap_6dg2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_tap_6dg2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_tap_6dg2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_telnet_6cpy.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_telnet_6cpy.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_telnet_6cpy.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_text_6e94.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_text_6e94.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_text_6e94.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_transport_ecgz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_transport_ecgz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_transport_ecgz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_userauth_314y.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_userauth_314y.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_userauth_314y.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_window_5fad.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_window_5fad.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.test.test_window_5fad.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ttymodes_2v18.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ttymodes_2v18.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ttymodes_2v18.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ui.__init___1oh0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ui.__init___1oh0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ui.__init___1oh0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ui.ansi_cwg1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ui.ansi_cwg1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ui.ansi_cwg1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ui.tkvt100_ey3a.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ui.tkvt100_ey3a.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.ui.tkvt100_ey3a.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.unix_5bod.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.unix_5bod.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.conch.unix_5bod.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.copyright_b4kg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.copyright_b4kg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.copyright_b4kg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.cred.__init___9sba.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.cred.__init___9sba.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.cred.__init___9sba.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.cred._digest_7sen.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.cred._digest_7sen.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.cred._digest_7sen.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.cred.checkers_ecr8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.cred.checkers_ecr8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.cred.checkers_ecr8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.cred.credentials_ubnm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.cred.credentials_ubnm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.cred.credentials_ubnm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.cred.error_9ww2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.cred.error_9ww2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.cred.error_9ww2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.cred.pamauth_74op.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.cred.pamauth_74op.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.cred.pamauth_74op.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.cred.portal_dyur.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.cred.portal_dyur.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.cred.portal_dyur.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.cred.strcred_b4qx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.cred.strcred_b4qx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.cred.strcred_b4qx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.cred.util_bavl.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.cred.util_bavl.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.cred.util_bavl.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.enterprise.__init___aa18.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.enterprise.__init___aa18.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.enterprise.__init___aa18.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.enterprise.adbapi_mzh9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.enterprise.adbapi_mzh9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.enterprise.adbapi_mzh9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.enterprise.reflector_by7g.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.enterprise.reflector_by7g.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.enterprise.reflector_by7g.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.enterprise.row_drt9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.enterprise.row_drt9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.enterprise.row_drt9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.enterprise.sqlreflector_2iiv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.enterprise.sqlreflector_2iiv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.enterprise.sqlreflector_2iiv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.enterprise.util_c9dg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.enterprise.util_c9dg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.enterprise.util_c9dg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.__init___5lla.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.__init___5lla.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.__init___5lla.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._baseprocess_9021.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._baseprocess_9021.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._baseprocess_9021.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._dumbwin32proc_36ie.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._dumbwin32proc_36ie.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._dumbwin32proc_36ie.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._pollingfile_64vu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._pollingfile_64vu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._pollingfile_64vu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._posixserialport_5hwa.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._posixserialport_5hwa.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._posixserialport_5hwa.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._posixstdio_7yxa.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._posixstdio_7yxa.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._posixstdio_7yxa.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._signals_27um.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._signals_27um.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._signals_27um.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._sslverify_96q7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._sslverify_96q7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._sslverify_96q7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._threadedselect_11fe.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._threadedselect_11fe.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._threadedselect_11fe.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._win32serialport_7ipn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._win32serialport_7ipn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._win32serialport_7ipn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._win32stdio_a2xs.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._win32stdio_a2xs.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet._win32stdio_a2xs.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.abstract_bxjc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.abstract_bxjc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.abstract_bxjc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.address_7zvg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.address_7zvg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.address_7zvg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.base_6vh7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.base_6vh7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.base_6vh7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.cfreactor_dz3g.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.cfreactor_dz3g.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.cfreactor_dz3g.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.default_e6jk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.default_e6jk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.default_e6jk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.defer_d4py.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.defer_d4py.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.defer_d4py.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.endpoints_8ofn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.endpoints_8ofn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.endpoints_8ofn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.epollreactor_b70m.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.epollreactor_b70m.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.epollreactor_b70m.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.error_d97f.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.error_d97f.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.error_d97f.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.fdesc_2h03.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.fdesc_2h03.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.fdesc_2h03.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.glib2reactor_ewzk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.glib2reactor_ewzk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.glib2reactor_ewzk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.gtk2reactor_2zju.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.gtk2reactor_2zju.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.gtk2reactor_2zju.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.gtkreactor_c1nz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.gtkreactor_c1nz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.gtkreactor_c1nz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.inotify_405t.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.inotify_405t.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.inotify_405t.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.interfaces_drbb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.interfaces_drbb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.interfaces_drbb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.iocpreactor.__init___8ixu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.iocpreactor.__init___8ixu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.iocpreactor.__init___8ixu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.iocpreactor.abstract_4zuu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.iocpreactor.abstract_4zuu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.iocpreactor.abstract_4zuu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.iocpreactor.const_8ze5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.iocpreactor.const_8ze5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.iocpreactor.const_8ze5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.iocpreactor.interfaces_i0nd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.iocpreactor.interfaces_i0nd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.iocpreactor.interfaces_i0nd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.iocpreactor.reactor_bx7d.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.iocpreactor.reactor_bx7d.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.iocpreactor.reactor_bx7d.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.iocpreactor.setup_1dhz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.iocpreactor.setup_1dhz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.iocpreactor.setup_1dhz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.iocpreactor.tcp_bpmf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.iocpreactor.tcp_bpmf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.iocpreactor.tcp_bpmf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.iocpreactor.udp_60j6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.iocpreactor.udp_60j6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.iocpreactor.udp_60j6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.kqreactor_2x41.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.kqreactor_2x41.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.kqreactor_2x41.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.main_4s7p.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.main_4s7p.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.main_4s7p.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.pollreactor_17xt.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.pollreactor_17xt.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.pollreactor_17xt.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.posixbase_8ubf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.posixbase_8ubf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.posixbase_8ubf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.process_bxmr.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.process_bxmr.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.process_bxmr.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.protocol_bzpw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.protocol_bzpw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.protocol_bzpw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.pyuisupport_1426.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.pyuisupport_1426.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.pyuisupport_1426.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.qtreactor_7xnc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.qtreactor_7xnc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.qtreactor_7xnc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.reactor_8q7v.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.reactor_8q7v.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.reactor_8q7v.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.selectreactor_56es.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.selectreactor_56es.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.selectreactor_56es.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.serialport_c602.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.serialport_c602.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.serialport_c602.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.ssl_bn8h.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.ssl_bn8h.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.ssl_bn8h.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.stdio_9khe.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.stdio_9khe.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.stdio_9khe.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.task_d1xp.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.task_d1xp.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.task_d1xp.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.tcp_4u50.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.tcp_4u50.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.tcp_4u50.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.__init___epcj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.__init___epcj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.__init___epcj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.inlinecb_tests_8s3g.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.inlinecb_tests_8s3g.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.inlinecb_tests_8s3g.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.process_helper_35q6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.process_helper_35q6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.process_helper_35q6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.reactormixins_2v97.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.reactormixins_2v97.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.reactormixins_2v97.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_address_caq0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_address_caq0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_address_caq0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_base_34m3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_base_34m3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_base_34m3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_baseprocess_7sbw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_baseprocess_7sbw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_baseprocess_7sbw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_core_959c.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_core_959c.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_core_959c.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_endpoints_dctj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_endpoints_dctj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_endpoints_dctj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_fdset_5fu7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_fdset_5fu7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_fdset_5fu7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_gtkreactor_bgo4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_gtkreactor_bgo4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_gtkreactor_bgo4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_inlinecb_4tj9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_inlinecb_4tj9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_inlinecb_4tj9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_inotify_aqyg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_inotify_aqyg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_inotify_aqyg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_iocp_cmpc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_iocp_cmpc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_iocp_cmpc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_pollingfile_7bg2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_pollingfile_7bg2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_pollingfile_7bg2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_posixbase_e7b2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_posixbase_e7b2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_posixbase_e7b2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_process_2ukp.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_process_2ukp.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_process_2ukp.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_protocol_awz4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_protocol_awz4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_protocol_awz4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_qtreactor_9qmn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_qtreactor_9qmn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_qtreactor_9qmn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_sigchld_1fku.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_sigchld_1fku.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_sigchld_1fku.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_tcp_cqao.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_tcp_cqao.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_tcp_cqao.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_threads_1ajo.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_threads_1ajo.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_threads_1ajo.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_time_6r7y.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_time_6r7y.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_time_6r7y.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_tls_4r5r.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_tls_4r5r.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_tls_4r5r.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_unix_2e65.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_unix_2e65.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.test.test_unix_2e65.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.threads_cujt.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.threads_cujt.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.threads_cujt.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.tksupport_3yx9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.tksupport_3yx9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.tksupport_3yx9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.udp_7gy6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.udp_7gy6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.udp_7gy6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.unix_3jnm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.unix_3jnm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.unix_3jnm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.utils_6raq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.utils_6raq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.utils_6raq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.win32eventreactor_115o.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.win32eventreactor_115o.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.win32eventreactor_115o.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.wxreactor_1rt0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.wxreactor_1rt0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.wxreactor_1rt0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.wxsupport_bnkt.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.wxsupport_bnkt.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.internet.wxsupport_bnkt.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.__init___eycu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.__init___eycu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.__init___eycu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore._version_d7fr.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore._version_d7fr.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore._version_d7fr.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.default_ejkq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.default_ejkq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.default_ejkq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.docbook_1wgt.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.docbook_1wgt.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.docbook_1wgt.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.htmlbook_2xvp.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.htmlbook_2xvp.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.htmlbook_2xvp.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.indexer_5iek.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.indexer_5iek.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.indexer_5iek.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.latex_5bnw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.latex_5bnw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.latex_5bnw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.lint_b1nk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.lint_b1nk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.lint_b1nk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.lmath_f4bf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.lmath_f4bf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.lmath_f4bf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.man2lore_3l1k.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.man2lore_3l1k.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.man2lore_3l1k.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.numberer_ea4t.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.numberer_ea4t.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.numberer_ea4t.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.process_epqp.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.process_epqp.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.process_epqp.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.scripts.__init___4zc4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.scripts.__init___4zc4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.scripts.__init___4zc4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.scripts.lore_dkr2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.scripts.lore_dkr2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.scripts.lore_dkr2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.slides_4m5k.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.slides_4m5k.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.slides_4m5k.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.test.__init___e43d.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.test.__init___e43d.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.test.__init___e43d.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.test.test_docbook_dksk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.test.test_docbook_dksk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.test.test_docbook_dksk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.test.test_latex_c0us.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.test.test_latex_c0us.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.test.test_latex_c0us.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.test.test_lint_4q5f.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.test.test_lint_4q5f.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.test.test_lint_4q5f.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.test.test_lmath_e1x5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.test.test_lmath_e1x5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.test.test_lmath_e1x5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.test.test_lore_34j7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.test.test_lore_34j7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.test.test_lore_34j7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.test.test_man2lore_1jqr.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.test.test_man2lore_1jqr.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.test.test_man2lore_1jqr.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.test.test_slides_b837.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.test.test_slides_b837.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.test.test_slides_b837.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.texi_46mf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.texi_46mf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.texi_46mf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.tree_adlh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.tree_adlh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.lore.tree_adlh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.__init___dydj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.__init___dydj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.__init___dydj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail._version_7j51.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail._version_7j51.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail._version_7j51.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.alias_4hfu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.alias_4hfu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.alias_4hfu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.bounce_5kk9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.bounce_5kk9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.bounce_5kk9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.imap4_br7j.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.imap4_br7j.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.imap4_br7j.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.mail_eoev.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.mail_eoev.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.mail_eoev.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.maildir_enyl.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.maildir_enyl.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.maildir_enyl.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.pb_f5g5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.pb_f5g5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.pb_f5g5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.pop3_ie0n.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.pop3_ie0n.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.pop3_ie0n.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.pop3client_8zba.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.pop3client_8zba.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.pop3client_8zba.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.protocols_9oqa.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.protocols_9oqa.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.protocols_9oqa.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.relay_5x22.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.relay_5x22.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.relay_5x22.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.relaymanager_1gw3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.relaymanager_1gw3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.relaymanager_1gw3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.scripts.__init___fh04.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.scripts.__init___fh04.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.scripts.__init___fh04.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.scripts.mailmail_5wyg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.scripts.mailmail_5wyg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.scripts.mailmail_5wyg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.smtp_43ph.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.smtp_43ph.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.smtp_43ph.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.tap_3nte.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.tap_3nte.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.tap_3nte.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.__init___8m0j.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.__init___8m0j.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.__init___8m0j.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.pop3testserver_ejfm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.pop3testserver_ejfm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.pop3testserver_ejfm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.test_bounce_cbsk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.test_bounce_cbsk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.test_bounce_cbsk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.test_imap_e0qk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.test_imap_e0qk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.test_imap_e0qk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.test_mail_9nu6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.test_mail_9nu6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.test_mail_9nu6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.test_mailmail_2qj3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.test_mailmail_2qj3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.test_mailmail_2qj3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.test_options_8u86.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.test_options_8u86.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.test_options_8u86.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.test_pop3_8cug.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.test_pop3_8cug.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.test_pop3_8cug.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.test_pop3client_30af.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.test_pop3client_30af.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.test_pop3client_30af.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.test_smtp_74u1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.test_smtp_74u1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.mail.test.test_smtp_74u1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole.__init___3tki.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole.__init___3tki.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole.__init___3tki.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole._inspectro_ew21.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole._inspectro_ew21.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole._inspectro_ew21.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole.explorer_6du4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole.explorer_6du4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole.explorer_6du4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole.gladereactor_6vsw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole.gladereactor_6vsw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole.gladereactor_6vsw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole.service_7wvq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole.service_7wvq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole.service_7wvq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole.telnet_easg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole.telnet_easg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole.telnet_easg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole.ui.__init___70th.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole.ui.__init___70th.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole.ui.__init___70th.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole.ui.gtk2manhole_e7yh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole.ui.gtk2manhole_e7yh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole.ui.gtk2manhole_e7yh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole.ui.test.__init___2byk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole.ui.test.__init___2byk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole.ui.test.__init___2byk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole.ui.test.test_gtk2manhole_yjdz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole.ui.test.test_gtk2manhole_yjdz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.manhole.ui.test.test_gtk2manhole_yjdz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.__init___cyaz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.__init___cyaz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.__init___cyaz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names._version_6djn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names._version_6djn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names._version_6djn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.authority_b3ip.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.authority_b3ip.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.authority_b3ip.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.cache_bahh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.cache_bahh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.cache_bahh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.client_7kz3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.client_7kz3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.client_7kz3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.common_bd7h.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.common_bd7h.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.common_bd7h.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.dns_74o3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.dns_74o3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.dns_74o3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.error_2dx7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.error_2dx7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.error_2dx7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.hosts_yi7n.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.hosts_yi7n.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.hosts_yi7n.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.resolve_3akw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.resolve_3akw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.resolve_3akw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.root_1vpf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.root_1vpf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.root_1vpf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.secondary_525q.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.secondary_525q.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.secondary_525q.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.server_87zh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.server_87zh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.server_87zh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.srvconnect_c5uu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.srvconnect_c5uu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.srvconnect_c5uu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.tap_d8kw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.tap_d8kw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.tap_d8kw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.test.__init___82mb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.test.__init___82mb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.test.__init___82mb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.test.test_cache_3a3y.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.test.test_cache_3a3y.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.test.test_cache_3a3y.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.test.test_client_5439.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.test.test_client_5439.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.test.test_client_5439.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.test.test_common_bou9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.test.test_common_bou9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.test.test_common_bou9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.test.test_dns_34q8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.test.test_dns_34q8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.test.test_dns_34q8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.test.test_names_5zvr.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.test.test_names_5zvr.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.test.test_names_5zvr.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.test.test_rootresolve_eh40.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.test.test_rootresolve_eh40.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.test.test_rootresolve_eh40.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.test.test_srvconnect_5gwf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.test.test_srvconnect_5gwf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.names.test.test_srvconnect_5gwf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.news.__init___8wlj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.news.__init___8wlj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.news.__init___8wlj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.news._version_89nc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.news._version_89nc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.news._version_89nc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.news.database_5sja.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.news.database_5sja.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.news.database_5sja.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.news.news_1mwn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.news.news_1mwn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.news.news_1mwn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.news.nntp_crs8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.news.nntp_crs8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.news.nntp_crs8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.news.tap_abh5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.news.tap_abh5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.news.tap_abh5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.news.test.__init___24kj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.news.test.__init___24kj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.news.test.__init___24kj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.news.test.test_news_cf0b.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.news.test.test_news_cf0b.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.news.test.test_news_cf0b.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.news.test.test_nntp_7a0r.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.news.test.test_nntp_7a0r.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.news.test.test_nntp_7a0r.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.__init___6d8g.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.__init___6d8g.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.__init___6d8g.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.aot_7mv8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.aot_7mv8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.aot_7mv8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.crefutil_dgt3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.crefutil_dgt3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.crefutil_dgt3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.dirdbm_4r7r.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.dirdbm_4r7r.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.dirdbm_4r7r.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.journal.__init___csw3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.journal.__init___csw3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.journal.__init___csw3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.journal.base_6e3d.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.journal.base_6e3d.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.journal.base_6e3d.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.journal.picklelog_47y1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.journal.picklelog_47y1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.journal.picklelog_47y1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.journal.rowjournal_e8y9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.journal.rowjournal_e8y9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.journal.rowjournal_e8y9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.sob_auc1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.sob_auc1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.sob_auc1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.styles_c9sw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.styles_c9sw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.persisted.styles_c9sw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugin_6hjk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugin_6hjk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugin_6hjk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.__init___5qc4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.__init___5qc4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.__init___5qc4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.cred_anonymous_16xq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.cred_anonymous_16xq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.cred_anonymous_16xq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.cred_file_ec2r.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.cred_file_ec2r.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.cred_file_ec2r.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.cred_memory_8pnw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.cred_memory_8pnw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.cred_memory_8pnw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.cred_unix_9c36.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.cred_unix_9c36.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.cred_unix_9c36.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_conch_2o67.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_conch_2o67.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_conch_2o67.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_ftp_1kl8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_ftp_1kl8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_ftp_1kl8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_inet_alt4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_inet_alt4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_inet_alt4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_lore_28n5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_lore_28n5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_lore_28n5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_mail_1vay.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_mail_1vay.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_mail_1vay.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_manhole_21w3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_manhole_21w3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_manhole_21w3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_names_8ljb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_names_8ljb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_names_8ljb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_news_6xmi.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_news_6xmi.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_news_6xmi.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_portforward_6s6l.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_portforward_6s6l.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_portforward_6s6l.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_qtstub_4vk5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_qtstub_4vk5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_qtstub_4vk5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_reactors_5v7c.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_reactors_5v7c.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_reactors_5v7c.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_runner_bi2g.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_runner_bi2g.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_runner_bi2g.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_socks_96gf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_socks_96gf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_socks_96gf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_telnet_6ctv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_telnet_6ctv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_telnet_6ctv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_trial_8ww4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_trial_8ww4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_trial_8ww4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_web_bwpr.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_web_bwpr.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_web_bwpr.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_words_ct02.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_words_ct02.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.plugins.twisted_words_ct02.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.__init___3cye.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.__init___3cye.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.__init___3cye.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.amp_ez74.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.amp_ez74.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.amp_ez74.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.basic_2phe.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.basic_2phe.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.basic_2phe.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.dict_bit7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.dict_bit7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.dict_bit7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.finger_3d20.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.finger_3d20.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.finger_3d20.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.ftp_e1zz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.ftp_e1zz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.ftp_e1zz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.gps.__init___6ncd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.gps.__init___6ncd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.gps.__init___6ncd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.gps.nmea_dbpj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.gps.nmea_dbpj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.gps.nmea_dbpj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.gps.rockwell_ar10.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.gps.rockwell_ar10.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.gps.rockwell_ar10.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.htb_74bw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.htb_74bw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.htb_74bw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.ident_5cdb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.ident_5cdb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.ident_5cdb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.loopback_3z91.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.loopback_3z91.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.loopback_3z91.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.memcache_49sg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.memcache_49sg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.memcache_49sg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.mice.__init___egfr.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.mice.__init___egfr.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.mice.__init___egfr.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.mice.mouseman_2hct.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.mice.mouseman_2hct.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.mice.mouseman_2hct.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.pcp_3o4k.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.pcp_3o4k.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.pcp_3o4k.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.policies_dd05.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.policies_dd05.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.policies_dd05.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.portforward_85oh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.portforward_85oh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.portforward_85oh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.postfix_drm0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.postfix_drm0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.postfix_drm0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.shoutcast_1ie2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.shoutcast_1ie2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.shoutcast_1ie2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.sip_c23c.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.sip_c23c.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.sip_c23c.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.socks_a7x1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.socks_a7x1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.socks_a7x1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.stateful_37g5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.stateful_37g5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.stateful_37g5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.telnet_8uz8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.telnet_8uz8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.telnet_8uz8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.test.__init___n0zz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.test.__init___n0zz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.test.__init___n0zz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.test.test_tls_8yqt.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.test.test_tls_8yqt.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.test.test_tls_8yqt.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.tls_9s4c.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.tls_9s4c.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.tls_9s4c.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.wire_ex6y.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.wire_ex6y.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.protocols.wire_ex6y.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.__init___c97r.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.__init___c97r.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.__init___c97r.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python._inotify_er2e.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python._inotify_er2e.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python._inotify_er2e.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python._release_4zgn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python._release_4zgn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python._release_4zgn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.compat_adrx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.compat_adrx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.compat_adrx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.components_59y5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.components_59y5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.components_59y5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.context_8ut2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.context_8ut2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.context_8ut2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.deprecate_87d9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.deprecate_87d9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.deprecate_87d9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.dispatch_f4rl.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.dispatch_f4rl.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.dispatch_f4rl.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.dist_9sp4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.dist_9sp4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.dist_9sp4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.dxprofile_3c3t.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.dxprofile_3c3t.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.dxprofile_3c3t.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.failure_4wyg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.failure_4wyg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.failure_4wyg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.fakepwd_cc1j.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.fakepwd_cc1j.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.fakepwd_cc1j.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.filepath_9sxl.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.filepath_9sxl.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.filepath_9sxl.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.finalize_w8jh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.finalize_w8jh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.finalize_w8jh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.formmethod_3vk0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.formmethod_3vk0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.formmethod_3vk0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.hashlib_6w5m.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.hashlib_6w5m.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.hashlib_6w5m.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.hook_5vbg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.hook_5vbg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.hook_5vbg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.htmlizer_4dd6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.htmlizer_4dd6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.htmlizer_4dd6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.lockfile_595k.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.lockfile_595k.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.lockfile_595k.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.log_34p3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.log_34p3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.log_34p3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.logfile_857l.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.logfile_857l.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.logfile_857l.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.modules_d8sh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.modules_d8sh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.modules_d8sh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.monkey_edsb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.monkey_edsb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.monkey_edsb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.otp_3617.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.otp_3617.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.otp_3617.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.procutils_f8wx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.procutils_f8wx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.procutils_f8wx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.randbytes_dmrw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.randbytes_dmrw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.randbytes_dmrw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.rebuild_b7jf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.rebuild_b7jf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.rebuild_b7jf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.reflect_d2f9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.reflect_d2f9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.reflect_d2f9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.release_2pv1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.release_2pv1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.release_2pv1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.roots_9ohn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.roots_9ohn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.roots_9ohn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.runtime_e1qz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.runtime_e1qz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.runtime_e1qz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.shortcut_18p4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.shortcut_18p4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.shortcut_18p4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.syslog_2dey.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.syslog_2dey.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.syslog_2dey.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.__init___d82f.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.__init___d82f.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.__init___d82f.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.deprecatedattributes_f590.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.deprecatedattributes_f590.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.deprecatedattributes_f590.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_components_b2mg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_components_b2mg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_components_b2mg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_deprecate_35b9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_deprecate_35b9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_deprecate_35b9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_dist_9muq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_dist_9muq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_dist_9muq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_fakepwd_e5dv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_fakepwd_e5dv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_fakepwd_e5dv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_hashlib_1ws5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_hashlib_1ws5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_hashlib_1ws5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_htmlizer_49vf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_htmlizer_49vf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_htmlizer_49vf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_inotify_8thq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_inotify_8thq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_inotify_8thq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_release_30p5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_release_30p5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_release_30p5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_runtime_5xdv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_runtime_5xdv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_runtime_5xdv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_syslog_blwa.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_syslog_blwa.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_syslog_blwa.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_util_5d9a.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_util_5d9a.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_util_5d9a.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_versions_1107.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_versions_1107.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_versions_1107.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_win32_1bln.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_win32_1bln.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_win32_1bln.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_zipstream_4cy5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_zipstream_4cy5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.test.test_zipstream_4cy5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.text_9ynz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.text_9ynz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.text_9ynz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.threadable_6kjb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.threadable_6kjb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.threadable_6kjb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.threadpool_auer.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.threadpool_auer.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.threadpool_auer.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.timeoutqueue_1i78.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.timeoutqueue_1i78.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.timeoutqueue_1i78.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.urlpath_aiq7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.urlpath_aiq7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.urlpath_aiq7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.usage_ekcs.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.usage_ekcs.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.usage_ekcs.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.util_3n4h.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.util_3n4h.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.util_3n4h.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.versions_255j.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.versions_255j.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.versions_255j.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.win32_20wp.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.win32_20wp.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.win32_20wp.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.zippath_b9lv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.zippath_b9lv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.zippath_b9lv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.zipstream_2qn6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.zipstream_2qn6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.zipstream_2qn6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.zshcomp_81ee.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.zshcomp_81ee.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.python.zshcomp_81ee.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.__init___bdal.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.__init___bdal.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.__init___bdal.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner._version_cl7l.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner._version_cl7l.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner._version_cl7l.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.inetd_59ql.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.inetd_59ql.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.inetd_59ql.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.inetdconf_3rpv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.inetdconf_3rpv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.inetdconf_3rpv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.inetdtap_63o6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.inetdtap_63o6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.inetdtap_63o6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.procmon_ayg0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.procmon_ayg0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.procmon_ayg0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.procmontap_emum.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.procmontap_emum.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.procmontap_emum.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.procutils_4kav.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.procutils_4kav.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.procutils_4kav.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.test.__init___1jl9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.test.__init___1jl9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.test.__init___1jl9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.test.test_procmon_4jvp.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.test.test_procmon_4jvp.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.test.test_procmon_4jvp.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.test.test_procmontap_262p.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.test.test_procmontap_262p.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.runner.test.test_procmontap_262p.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.__init___1i0y.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.__init___1i0y.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.__init___1i0y.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts._twistd_unix_7d57.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts._twistd_unix_7d57.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts._twistd_unix_7d57.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts._twistw_anu0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts._twistw_anu0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts._twistw_anu0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.htmlizer_ab7r.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.htmlizer_ab7r.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.htmlizer_ab7r.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.manhole_2aa3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.manhole_2aa3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.manhole_2aa3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.mktap_f493.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.mktap_f493.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.mktap_f493.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.tap2deb_wu3w.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.tap2deb_wu3w.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.tap2deb_wu3w.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.tap2rpm_a77m.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.tap2rpm_a77m.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.tap2rpm_a77m.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.tapconvert_bot0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.tapconvert_bot0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.tapconvert_bot0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.test.__init___8vn7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.test.__init___8vn7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.test.__init___8vn7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.test.test_mktap_cwys.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.test.test_mktap_cwys.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.test.test_mktap_cwys.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.test.test_tap2rpm_7xh6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.test.test_tap2rpm_7xh6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.test.test_tap2rpm_7xh6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.tkunzip_5gij.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.tkunzip_5gij.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.tkunzip_5gij.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.trial_5wfr.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.trial_5wfr.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.trial_5wfr.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.twistd_yt27.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.twistd_yt27.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.scripts.twistd_yt27.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.__init___az22.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.__init___az22.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.__init___az22.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.banana_2wot.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.banana_2wot.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.banana_2wot.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.flavors_4dap.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.flavors_4dap.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.flavors_4dap.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.interfaces_b3vu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.interfaces_b3vu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.interfaces_b3vu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.jelly_e81i.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.jelly_e81i.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.jelly_e81i.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.pb_12qj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.pb_12qj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.pb_12qj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.publish_3srz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.publish_3srz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.publish_3srz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.refpath_6wue.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.refpath_6wue.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.refpath_6wue.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.ui.__init___95pu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.ui.__init___95pu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.ui.__init___95pu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.ui.gtk2util_2obp.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.ui.gtk2util_2obp.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.ui.gtk2util_2obp.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.ui.tktree_7g7u.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.ui.tktree_7g7u.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.ui.tktree_7g7u.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.ui.tkutil_b3ne.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.ui.tkutil_b3ne.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.ui.tkutil_b3ne.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.util_c98e.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.util_c98e.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.spread.util_c98e.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.tap.__init___6rer.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.tap.__init___6rer.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.tap.__init___6rer.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.tap.ftp_45i5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.tap.ftp_45i5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.tap.ftp_45i5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.tap.manhole_7v7t.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.tap.manhole_7v7t.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.tap.manhole_7v7t.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.tap.portforward_e07k.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.tap.portforward_e07k.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.tap.portforward_e07k.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.tap.socks_62gd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.tap.socks_62gd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.tap.socks_62gd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.tap.telnet_4777.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.tap.telnet_4777.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.tap.telnet_4777.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.__init___1z62.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.__init___1z62.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.__init___1z62.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.crash_test_dummy_eln7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.crash_test_dummy_eln7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.crash_test_dummy_eln7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.generator_failure_tests_29yk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.generator_failure_tests_29yk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.generator_failure_tests_29yk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.iosim_c96l.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.iosim_c96l.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.iosim_c96l.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.mock_win32process_8vfi.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.mock_win32process_8vfi.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.mock_win32process_8vfi.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.myrebuilder1_2ss2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.myrebuilder1_2ss2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.myrebuilder1_2ss2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.myrebuilder2_5vsb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.myrebuilder2_5vsb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.myrebuilder2_5vsb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.plugin_basic_ehfo.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.plugin_basic_ehfo.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.plugin_basic_ehfo.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.plugin_extra1_3mug.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.plugin_extra1_3mug.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.plugin_extra1_3mug.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.plugin_extra2_3vtz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.plugin_extra2_3vtz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.plugin_extra2_3vtz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_cmdline_2yzw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_cmdline_2yzw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_cmdline_2yzw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_echoer_t0ar.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_echoer_t0ar.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_echoer_t0ar.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_fds_cnje.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_fds_cnje.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_fds_cnje.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_linger_3ym3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_linger_3ym3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_linger_3ym3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_reader_17yn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_reader_17yn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_reader_17yn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_signal_8x8o.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_signal_8x8o.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_signal_8x8o.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_stdinreader_17sh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_stdinreader_17sh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_stdinreader_17sh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_tester_15el.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_tester_15el.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_tester_15el.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_tty_9mqo.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_tty_9mqo.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_tty_9mqo.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_twisted_6o33.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_twisted_6o33.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.process_twisted_6o33.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.proto_helpers_ar6i.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.proto_helpers_ar6i.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.proto_helpers_ar6i.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.reflect_helper_IE_1nvw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.reflect_helper_IE_1nvw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.reflect_helper_IE_1nvw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.reflect_helper_VE_4e0k.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.reflect_helper_VE_4e0k.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.reflect_helper_VE_4e0k.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.reflect_helper_ZDE_8sek.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.reflect_helper_ZDE_8sek.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.reflect_helper_ZDE_8sek.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.ssl_helpers_k6wk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.ssl_helpers_k6wk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.ssl_helpers_k6wk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.stdio_test_consumer_1y28.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.stdio_test_consumer_1y28.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.stdio_test_consumer_1y28.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.stdio_test_halfclose_eups.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.stdio_test_halfclose_eups.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.stdio_test_halfclose_eups.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.stdio_test_hostpeer_doj2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.stdio_test_hostpeer_doj2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.stdio_test_hostpeer_doj2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.stdio_test_lastwrite_ew92.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.stdio_test_lastwrite_ew92.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.stdio_test_lastwrite_ew92.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.stdio_test_loseconn_a030.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.stdio_test_loseconn_a030.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.stdio_test_loseconn_a030.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.stdio_test_producer_7pgy.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.stdio_test_producer_7pgy.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.stdio_test_producer_7pgy.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.stdio_test_write_875e.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.stdio_test_write_875e.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.stdio_test_write_875e.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.stdio_test_writeseq_1ln1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.stdio_test_writeseq_1ln1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.stdio_test_writeseq_1ln1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_abstract_czc6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_abstract_czc6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_abstract_czc6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_adbapi_1coa.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_adbapi_1coa.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_adbapi_1coa.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_amp_4cca.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_amp_4cca.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_amp_4cca.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_application_6cqq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_application_6cqq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_application_6cqq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_banana_camf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_banana_camf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_banana_camf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_compat_e2vv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_compat_e2vv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_compat_e2vv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_context_eekw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_context_eekw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_context_eekw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_cooperator_4m81.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_cooperator_4m81.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_cooperator_4m81.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_defer_aobd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_defer_aobd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_defer_aobd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_defgen_2b86.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_defgen_2b86.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_defgen_2b86.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_dict_8be7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_dict_8be7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_dict_8be7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_digestauth_631p.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_digestauth_631p.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_digestauth_631p.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_dirdbm_d4ms.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_dirdbm_d4ms.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_dirdbm_d4ms.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_doc_e8na.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_doc_e8na.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_doc_e8na.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_enterprise_f1hh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_enterprise_f1hh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_enterprise_f1hh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_epoll_28z4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_epoll_28z4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_epoll_28z4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_error_ad3x.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_error_ad3x.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_error_ad3x.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_explorer_18u1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_explorer_18u1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_explorer_18u1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_extensions_4xpo.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_extensions_4xpo.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_extensions_4xpo.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_factories_c6hu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_factories_c6hu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_factories_c6hu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_failure_2013.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_failure_2013.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_failure_2013.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_fdesc_em33.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_fdesc_em33.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_fdesc_em33.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_finger_ac6k.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_finger_ac6k.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_finger_ac6k.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_formmethod_94of.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_formmethod_94of.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_formmethod_94of.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_ftp_1mv8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_ftp_1mv8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_ftp_1mv8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_hook_cky2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_hook_cky2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_hook_cky2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_htb_agkk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_htb_agkk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_htb_agkk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_ident_4d3q.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_ident_4d3q.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_ident_4d3q.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_import_dnp6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_import_dnp6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_import_dnp6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_internet_bgls.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_internet_bgls.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_internet_bgls.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_iutils_1q40.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_iutils_1q40.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_iutils_1q40.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_jelly_2qdd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_jelly_2qdd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_jelly_2qdd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_journal_35yj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_journal_35yj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_journal_35yj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_lockfile_2lxf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_lockfile_2lxf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_lockfile_2lxf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_log_5e4x.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_log_5e4x.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_log_5e4x.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_logfile_9hlw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_logfile_9hlw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_logfile_9hlw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_loopback_dmfn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_loopback_dmfn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_loopback_dmfn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_manhole_f0c1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_manhole_f0c1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_manhole_f0c1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_memcache_cs2a.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_memcache_cs2a.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_memcache_cs2a.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_modules_9wjo.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_modules_9wjo.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_modules_9wjo.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_monkey_8hlq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_monkey_8hlq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_monkey_8hlq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_newcred_6rwi.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_newcred_6rwi.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_newcred_6rwi.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_nmea_3xyt.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_nmea_3xyt.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_nmea_3xyt.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_paths_4rn5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_paths_4rn5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_paths_4rn5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_pb_d4rg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_pb_d4rg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_pb_d4rg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_pbfailure_e9v1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_pbfailure_e9v1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_pbfailure_e9v1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_pcp_2sj4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_pcp_2sj4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_pcp_2sj4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_persisted_dbsb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_persisted_dbsb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_persisted_dbsb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_plugin_csi5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_plugin_csi5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_plugin_csi5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_policies_9ar5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_policies_9ar5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_policies_9ar5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_postfix_ey0s.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_postfix_ey0s.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_postfix_ey0s.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_process_agaw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_process_agaw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_process_agaw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_protocols_892t.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_protocols_892t.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_protocols_892t.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_randbytes_egth.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_randbytes_egth.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_randbytes_egth.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_rebuild_b7uq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_rebuild_b7uq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_rebuild_b7uq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_reflect_31x4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_reflect_31x4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_reflect_31x4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_reflector_csdm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_reflector_csdm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_reflector_csdm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_roots_eoll.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_roots_eoll.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_roots_eoll.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_shortcut_59pf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_shortcut_59pf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_shortcut_59pf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_sip_db88.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_sip_db88.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_sip_db88.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_sob_900u.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_sob_900u.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_sob_900u.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_socks_ayz4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_socks_ayz4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_socks_ayz4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_ssl_3jqb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_ssl_3jqb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_ssl_3jqb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_sslverify_1lgj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_sslverify_1lgj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_sslverify_1lgj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_stateful_9721.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_stateful_9721.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_stateful_9721.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_stdio_cld3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_stdio_cld3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_stdio_cld3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_strcred_8byq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_strcred_8byq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_strcred_8byq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_strerror_1g80.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_strerror_1g80.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_strerror_1g80.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_stringtransport_i8cm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_stringtransport_i8cm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_stringtransport_i8cm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_strports_124p.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_strports_124p.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_strports_124p.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_task_4jxt.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_task_4jxt.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_task_4jxt.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_tcp_4mqr.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_tcp_4mqr.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_tcp_4mqr.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_tcp_internals_bprv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_tcp_internals_bprv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_tcp_internals_bprv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_text_3i9m.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_text_3i9m.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_text_3i9m.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_threadable_es0o.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_threadable_es0o.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_threadable_es0o.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_threadpool_99sc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_threadpool_99sc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_threadpool_99sc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_threads_apuu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_threads_apuu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_threads_apuu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_timehelpers_bs0h.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_timehelpers_bs0h.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_timehelpers_bs0h.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_timeoutqueue_16yz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_timeoutqueue_16yz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_timeoutqueue_16yz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_tpfile_dscd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_tpfile_dscd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_tpfile_dscd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_twistd_9rqz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_twistd_9rqz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_twistd_9rqz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_udp_86li.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_udp_86li.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_udp_86li.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_unix_8x10.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_unix_8x10.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_unix_8x10.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_usage_2c0v.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_usage_2c0v.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_usage_2c0v.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_zshcomp_9tng.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_zshcomp_9tng.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.test_zshcomp_9tng.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.testutils_7tbg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.testutils_7tbg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.testutils_7tbg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.time_helpers_4yy7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.time_helpers_4yy7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.test.time_helpers_4yy7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.__init___einc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.__init___einc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.__init___einc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.itrial_b5ft.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.itrial_b5ft.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.itrial_b5ft.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.reporter_94hk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.reporter_94hk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.reporter_94hk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.runner_ddeo.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.runner_ddeo.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.runner_ddeo.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.__init___w732.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.__init___w732.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.__init___w732.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.detests_1ff0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.detests_1ff0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.detests_1ff0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.erroneous_aduf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.erroneous_aduf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.erroneous_aduf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.mockcustomsuite2_ezrq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.mockcustomsuite2_ezrq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.mockcustomsuite2_ezrq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.mockcustomsuite3_2vi1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.mockcustomsuite3_2vi1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.mockcustomsuite3_2vi1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.mockcustomsuite_52rk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.mockcustomsuite_52rk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.mockcustomsuite_52rk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.mockdoctest_7slr.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.mockdoctest_7slr.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.mockdoctest_7slr.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.moduleself_eq5y.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.moduleself_eq5y.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.moduleself_eq5y.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.moduletest_6rit.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.moduletest_6rit.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.moduletest_6rit.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.novars_6p0c.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.novars_6p0c.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.novars_6p0c.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.packages_4qnj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.packages_4qnj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.packages_4qnj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.sample_x7f4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.sample_x7f4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.sample_x7f4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.scripttest_cpbu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.scripttest_cpbu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.scripttest_cpbu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.suppression_4quf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.suppression_4quf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.suppression_4quf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_assertions_684l.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_assertions_684l.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_assertions_684l.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_deferred_8s9u.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_deferred_8s9u.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_deferred_8s9u.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_doctest_dzvy.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_doctest_dzvy.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_doctest_dzvy.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_keyboard_4ple.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_keyboard_4ple.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_keyboard_4ple.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_loader_8mv4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_loader_8mv4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_loader_8mv4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_log_602d.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_log_602d.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_log_602d.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_output_8qxn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_output_8qxn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_output_8qxn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_plugins_a6kx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_plugins_a6kx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_plugins_a6kx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_pyunitcompat_6yhu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_pyunitcompat_6yhu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_pyunitcompat_6yhu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_reporter_1ho7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_reporter_1ho7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_reporter_1ho7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_runner_9d1j.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_runner_9d1j.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_runner_9d1j.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_script_d9ap.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_script_d9ap.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_script_d9ap.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_test_visitor_47x4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_test_visitor_47x4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_test_visitor_47x4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_testcase_39ak.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_testcase_39ak.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_testcase_39ak.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_tests_dvc6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_tests_dvc6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_tests_dvc6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_util_dpcz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_util_dpcz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_util_dpcz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_warning_exik.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_warning_exik.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.test_warning_exik.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.weird_3ye5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.weird_3ye5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.test.weird_3ye5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.unittest_bak5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.unittest_bak5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.unittest_bak5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.util_er1e.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.util_er1e.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.trial.util_er1e.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.__init___9oha.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.__init___9oha.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.__init___9oha.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web._auth.__init___945p.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web._auth.__init___945p.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web._auth.__init___945p.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web._auth.basic_3id9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web._auth.basic_3id9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web._auth.basic_3id9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web._auth.digest_632a.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web._auth.digest_632a.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web._auth.digest_632a.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web._auth.wrapper_596k.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web._auth.wrapper_596k.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web._auth.wrapper_596k.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web._newclient_daa0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web._newclient_daa0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web._newclient_daa0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web._version_7tf4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web._version_7tf4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web._version_7tf4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.client_25u1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.client_25u1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.client_25u1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.demo_v465.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.demo_v465.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.demo_v465.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.distrib_7run.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.distrib_7run.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.distrib_7run.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.domhelpers_bjli.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.domhelpers_bjli.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.domhelpers_bjli.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.error_8cn4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.error_8cn4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.error_8cn4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.google_53zr.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.google_53zr.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.google_53zr.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.guard_6c7h.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.guard_6c7h.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.guard_6c7h.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.html_cia8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.html_cia8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.html_cia8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.http_e7m5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.http_e7m5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.http_e7m5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.http_headers_4h4g.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.http_headers_4h4g.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.http_headers_4h4g.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.iweb_7g8n.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.iweb_7g8n.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.iweb_7g8n.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.microdom_djxh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.microdom_djxh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.microdom_djxh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.proxy_6b4e.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.proxy_6b4e.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.proxy_6b4e.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.resource_7za8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.resource_7za8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.resource_7za8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.rewrite_713x.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.rewrite_713x.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.rewrite_713x.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.script_2pta.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.script_2pta.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.script_2pta.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.server_8sji.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.server_8sji.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.server_8sji.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.soap_47c9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.soap_47c9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.soap_47c9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.static_4ern.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.static_4ern.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.static_4ern.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.sux_1ck7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.sux_1ck7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.sux_1ck7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.tap_c4ui.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.tap_c4ui.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.tap_c4ui.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.__init___2kn8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.__init___2kn8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.__init___2kn8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test._util_1ar8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test._util_1ar8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test._util_1ar8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_cgi_6nte.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_cgi_6nte.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_cgi_6nte.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_distrib_5co1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_distrib_5co1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_distrib_5co1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_domhelpers_8opl.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_domhelpers_8opl.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_domhelpers_8opl.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_error_602c.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_error_602c.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_error_602c.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_http_6llk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_http_6llk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_http_6llk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_http_headers_23au.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_http_headers_23au.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_http_headers_23au.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_httpauth_7nmq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_httpauth_7nmq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_httpauth_7nmq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_newclient_2mj2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_newclient_2mj2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_newclient_2mj2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_proxy_e7dd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_proxy_e7dd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_proxy_e7dd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_resource_atsk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_resource_atsk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_resource_atsk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_script_a1vj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_script_a1vj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_script_a1vj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_soap_e0zm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_soap_e0zm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_soap_e0zm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_static_cz7q.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_static_cz7q.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_static_cz7q.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_tap_acgl.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_tap_acgl.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_tap_acgl.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_util_9km3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_util_9km3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_util_9km3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_vhost_d7aq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_vhost_d7aq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_vhost_d7aq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_web_de3b.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_web_de3b.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_web_de3b.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_webclient_a9v5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_webclient_a9v5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_webclient_a9v5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_wsgi_8sem.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_wsgi_8sem.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_wsgi_8sem.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_xml_8s28.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_xml_8s28.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_xml_8s28.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_xmlrpc_43w9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_xmlrpc_43w9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.test.test_xmlrpc_43w9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.trp_6o2o.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.trp_6o2o.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.trp_6o2o.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.twcgi_ct8g.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.twcgi_ct8g.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.twcgi_ct8g.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.util_64v0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.util_64v0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.util_64v0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.vhost_36jl.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.vhost_36jl.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.vhost_36jl.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.wsgi_8q6e.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.wsgi_8q6e.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.wsgi_8q6e.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.xmlrpc_4zml.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.xmlrpc_4zml.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.web.xmlrpc_4zml.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.__init___8yt5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.__init___8yt5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.__init___8yt5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words._version_2ntz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words._version_2ntz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words._version_2ntz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.ewords_3bu6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.ewords_3bu6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.ewords_3bu6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.__init___4qb8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.__init___4qb8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.__init___4qb8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.baseaccount_cw3i.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.baseaccount_cw3i.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.baseaccount_cw3i.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.basechat_6uvb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.basechat_6uvb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.basechat_6uvb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.basesupport_97mp.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.basesupport_97mp.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.basesupport_97mp.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.interfaces_ce51.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.interfaces_ce51.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.interfaces_ce51.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.ircsupport_53bz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.ircsupport_53bz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.ircsupport_53bz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.locals_bqox.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.locals_bqox.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.locals_bqox.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.pbsupport_3reu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.pbsupport_3reu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.pbsupport_3reu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.proxyui_6ua0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.proxyui_6ua0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.proxyui_6ua0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.tap_6tm8.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.tap_6tm8.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.tap_6tm8.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.tocsupport_7ark.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.tocsupport_7ark.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.im.tocsupport_7ark.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.iwords_3bvw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.iwords_3bvw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.iwords_3bvw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.__init___f5f1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.__init___f5f1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.__init___f5f1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.irc_2fpg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.irc_2fpg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.irc_2fpg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.__init___3fxj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.__init___3fxj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.__init___3fxj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.client_22f5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.client_22f5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.client_22f5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.component_bdgg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.component_bdgg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.component_bdgg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.error_bjka.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.error_bjka.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.error_bjka.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.ijabber_x7us.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.ijabber_x7us.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.ijabber_x7us.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.jid_3t2k.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.jid_3t2k.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.jid_3t2k.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.jstrports_67qa.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.jstrports_67qa.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.jstrports_67qa.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.sasl_43kx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.sasl_43kx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.sasl_43kx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.sasl_mechanisms_8o82.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.sasl_mechanisms_8o82.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.sasl_mechanisms_8o82.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.xmlstream_5aar.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.xmlstream_5aar.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.xmlstream_5aar.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.xmpp_stringprep_6y5x.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.xmpp_stringprep_6y5x.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.jabber.xmpp_stringprep_6y5x.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.msn_1k1f.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.msn_1k1f.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.msn_1k1f.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.oscar_6fo2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.oscar_6fo2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.oscar_6fo2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.toc_4x4h.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.toc_4x4h.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.protocols.toc_4x4h.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.service_909s.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.service_909s.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.service_909s.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.tap_aou5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.tap_aou5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.tap_aou5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.__init___12sy.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.__init___12sy.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.__init___12sy.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_basechat_ewb4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_basechat_ewb4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_basechat_ewb4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_basesupport_anvz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_basesupport_anvz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_basesupport_anvz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_domish_dpe5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_domish_dpe5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_domish_dpe5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_irc_cyfw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_irc_cyfw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_irc_cyfw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_irc_service_6wwc.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_irc_service_6wwc.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_irc_service_6wwc.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_jabberclient_djmr.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_jabberclient_djmr.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_jabberclient_djmr.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_jabbercomponent_dgcg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_jabbercomponent_dgcg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_jabbercomponent_dgcg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_jabbererror_a2md.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_jabbererror_a2md.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_jabbererror_a2md.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_jabberjid_c8wv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_jabberjid_c8wv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_jabberjid_c8wv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_jabbersasl_8kle.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_jabbersasl_8kle.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_jabbersasl_8kle.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_jabbersaslmechanisms_85b2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_jabbersaslmechanisms_85b2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_jabbersaslmechanisms_85b2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_jabberxmlstream_32y1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_jabberxmlstream_32y1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_jabberxmlstream_32y1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_jabberxmppstringprep_bgjk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_jabberxmppstringprep_bgjk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_jabberxmppstringprep_bgjk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_msn_e6ug.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_msn_e6ug.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_msn_e6ug.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_oscar_ahu6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_oscar_ahu6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_oscar_ahu6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_service_3gah.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_service_3gah.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_service_3gah.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_tap_2rp6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_tap_2rp6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_tap_2rp6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_toc_5y12.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_toc_5y12.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_toc_5y12.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_xishutil_6bi3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_xishutil_6bi3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_xishutil_6bi3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_xmlstream_usk2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_xmlstream_usk2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_xmlstream_usk2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_xmpproutertap_36q9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_xmpproutertap_36q9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_xmpproutertap_36q9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_xpath_aq0o.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_xpath_aq0o.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.test.test_xpath_aq0o.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.toctap_hxb0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.toctap_hxb0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.toctap_hxb0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.xish.__init___8xrs.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.xish.__init___8xrs.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.xish.__init___8xrs.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.xish.domish_2ez9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.xish.domish_2ez9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.xish.domish_2ez9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.xish.utility_dnde.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.xish.utility_dnde.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.xish.utility_dnde.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.xish.xmlstream_5615.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.xish.xmlstream_5615.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.xish.xmlstream_5615.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.xish.xpath_cvih.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.xish.xpath_cvih.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.xish.xpath_cvih.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.xish.xpathparser_9h8r.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.xish.xpathparser_9h8r.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.xish.xpathparser_9h8r.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.xmpproutertap_55cn.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.xmpproutertap_55cn.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/twisted.words.xmpproutertap_55cn.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/types_ce24.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/types_ce24.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/types_ce24.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntu_sso.__init___bckv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntu_sso.__init___bckv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntu_sso.__init___bckv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntu_sso.auth_5xlx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntu_sso.auth_5xlx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntu_sso.auth_5xlx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntu_sso.gui_bhl6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntu_sso.gui_bhl6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntu_sso.gui_bhl6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntu_sso.keyring_e7a0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntu_sso.keyring_e7a0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntu_sso.keyring_e7a0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntu_sso.logger_6ahk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntu_sso.logger_6ahk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntu_sso.logger_6ahk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntu_sso.main_ggh2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntu_sso.main_ggh2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntu_sso.main_ggh2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntu_sso.networkstate_2ig3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntu_sso.networkstate_2ig3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntu_sso.networkstate_2ig3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.__init___4voa.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.__init___4voa.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.__init___4voa.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.api.__init___dv5e.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.api.__init___dv5e.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.api.__init___dv5e.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.api.restclient_dn9z.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.api.restclient_dn9z.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.api.restclient_dn9z.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.clientdefs_dx5q.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.clientdefs_dx5q.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.clientdefs_dx5q.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.logger_14fh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.logger_14fh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.logger_14fh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.__init___hb4f.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.__init___hb4f.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.__init___hb4f.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.client_60ti.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.client_60ti.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.client_60ti.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.content_hash_6e3n.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.content_hash_6e3n.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.content_hash_6e3n.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.context_cfqz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.context_cfqz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.context_cfqz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.delta_ecaz.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.delta_ecaz.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.delta_ecaz.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.dircontent_3zhf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.dircontent_3zhf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.dircontent_3zhf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.dircontent_pb2_80ic.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.dircontent_pb2_80ic.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.dircontent_pb2_80ic.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.errors_4wfa.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.errors_4wfa.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.errors_4wfa.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.protocol_pb2_cit3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.protocol_pb2_cit3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.protocol_pb2_cit3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.proxy_tunnel_f585.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.proxy_tunnel_f585.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.proxy_tunnel_f585.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.request_7fgf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.request_7fgf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.request_7fgf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.sharersp_6aal.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.sharersp_6aal.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.sharersp_6aal.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.validators_dulp.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.validators_dulp.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.validators_dulp.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.volumes_65h4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.volumes_65h4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.storageprotocol.volumes_65h4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.__init___ceg3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.__init___ceg3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.__init___ceg3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.action_queue_7ghj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.action_queue_7ghj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.action_queue_7ghj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.config_bb8d.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.config_bb8d.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.config_bb8d.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.dbus_interface_eudf.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.dbus_interface_eudf.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.dbus_interface_eudf.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.event_queue_6jgg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.event_queue_6jgg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.event_queue_6jgg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.events_nanny_2oxl.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.events_nanny_2oxl.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.events_nanny_2oxl.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.file_shelf_75um.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.file_shelf_75um.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.file_shelf_75um.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.filesystem_manager_dup9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.filesystem_manager_dup9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.filesystem_manager_dup9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.fsm.__init___66fm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.fsm.__init___66fm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.fsm.__init___66fm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.fsm.fsm_draw_386c.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.fsm.fsm_draw_386c.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.fsm.fsm_draw_386c.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.fsm.fsm_ekzy.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.fsm.fsm_ekzy.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.fsm.fsm_ekzy.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.fsm.fsm_parser_8ho9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.fsm.fsm_parser_8ho9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.fsm.fsm_parser_8ho9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.hash_queue_7qw6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.hash_queue_7qw6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.hash_queue_7qw6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.interfaces_5s8y.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.interfaces_5s8y.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.interfaces_5s8y.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.local_rescan_4p32.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.local_rescan_4p32.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.local_rescan_4p32.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.logger_bpu7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.logger_bpu7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.logger_bpu7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.main_bw1p.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.main_bw1p.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.main_bw1p.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.marker_88t1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.marker_88t1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.marker_88t1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.sdreactor_57rg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.sdreactor_57rg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.sdreactor_57rg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.states_2ygo.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.states_2ygo.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.states_2ygo.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.sync_bltq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.sync_bltq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.sync_bltq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.tools_ej29.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.tools_ej29.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.tools_ej29.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.u1fsfsm_agmw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.u1fsfsm_agmw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.u1fsfsm_agmw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.volume_manager_b4f4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.volume_manager_b4f4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ubuntuone.syncdaemon.volume_manager_b4f4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ufw.__init___dhh0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ufw.__init___dhh0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ufw.__init___dhh0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ufw.applications_whio.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ufw.applications_whio.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ufw.applications_whio.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ufw.backend_e6kb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ufw.backend_e6kb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ufw.backend_e6kb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ufw.backend_iptables_2xuj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ufw.backend_iptables_2xuj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ufw.backend_iptables_2xuj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ufw.common_azfo.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ufw.common_azfo.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ufw.common_azfo.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ufw.frontend_9vvx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ufw.frontend_9vvx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ufw.frontend_9vvx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ufw.parser_7odv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ufw.parser_7odv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ufw.parser_7odv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ufw.util_2ge0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ufw.util_2ge0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/ufw.util_2ge0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/unittest_1byd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/unittest_1byd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/unittest_1byd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/urllib2_8tkw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/urllib2_8tkw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/urllib2_8tkw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/urllib_bqpw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/urllib_bqpw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/urllib_bqpw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/urlparse_e9gj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/urlparse_e9gj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/urlparse_e9gj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.__init___6uyu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.__init___6uyu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.__init___6uyu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.backends.__init___1reo.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.backends.__init___1reo.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.backends.__init___1reo.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.backends.base.__init___75k6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.backends.base.__init___75k6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.backends.base.__init___75k6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.backends.base.backend_e74o.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.backends.base.backend_e74o.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.backends.base.backend_e74o.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.backends.udisks.__init___1vpk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.backends.udisks.__init___1vpk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.backends.udisks.__init___1vpk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.backends.udisks.backend_1p0n.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.backends.udisks.backend_1p0n.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.backends.udisks.backend_1p0n.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.frontends.__init___23m3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.frontends.__init___23m3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.frontends.__init___23m3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.frontends.base.__init___57xb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.frontends.base.__init___57xb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.frontends.base.__init___57xb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.frontends.base.frontend_55b1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.frontends.base.frontend_55b1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.frontends.base.frontend_55b1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.frontends.gtk.__init___6uy6.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.frontends.gtk.__init___6uy6.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.frontends.gtk.__init___6uy6.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.frontends.gtk.frontend_5c5q.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.frontends.gtk.frontend_5c5q.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.frontends.gtk.frontend_5c5q.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.install_19yr.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.install_19yr.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.install_19yr.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.misc_c1dv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.misc_c1dv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.misc_c1dv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.remtimest_eljj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.remtimest_eljj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/usbcreator.remtimest_eljj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/user_e3e7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/user_e3e7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/user_e3e7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/uu_5tv4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/uu_5tv4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/uu_5tv4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/uuid_e6ex.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/uuid_e6ex.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/uuid_e6ex.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/vobject.__init___4cm3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/vobject.__init___4cm3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/vobject.__init___4cm3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/vobject.base_e8ak.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/vobject.base_e8ak.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/vobject.base_e8ak.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/vobject.behavior_eswv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/vobject.behavior_eswv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/vobject.behavior_eswv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/vobject.change_tz_955u.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/vobject.change_tz_955u.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/vobject.change_tz_955u.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/vobject.hcalendar_7l2l.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/vobject.hcalendar_7l2l.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/vobject.hcalendar_7l2l.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/vobject.icalendar_2udw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/vobject.icalendar_2udw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/vobject.icalendar_2udw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/vobject.ics_diff_5kjd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/vobject.ics_diff_5kjd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/vobject.ics_diff_5kjd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/vobject.vcard_95o9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/vobject.vcard_95o9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/vobject.vcard_95o9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/vobject.win32tz_c5w5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/vobject.win32tz_c5w5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/vobject.win32tz_c5w5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wadllib.__init___bxnu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wadllib.__init___bxnu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wadllib.__init___bxnu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wadllib.application_e49u.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wadllib.application_e49u.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wadllib.application_e49u.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wadllib.iso_strptime_5r9k.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wadllib.iso_strptime_5r9k.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wadllib.iso_strptime_5r9k.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wadllib.tests.__init___nxju.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wadllib.tests.__init___nxju.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wadllib.tests.__init___nxju.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wadllib.tests.test_docs_dkyv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wadllib.tests.test_docs_dkyv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wadllib.tests.test_docs_dkyv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/warnings_3ccy.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/warnings_3ccy.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/warnings_3ccy.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wave_al5z.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wave_al5z.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wave_al5z.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/weakref_cegs.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/weakref_cegs.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/weakref_cegs.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/webbrowser_6ynr.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/webbrowser_6ynr.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/webbrowser_6ynr.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/webkit.__init___9p3j.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/webkit.__init___9p3j.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/webkit.__init___9p3j.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/whichdb_5vxd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/whichdb_5vxd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/whichdb_5vxd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wsgiref.__init___ac20.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wsgiref.__init___ac20.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wsgiref.__init___ac20.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wsgiref.handlers_6qoq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wsgiref.handlers_6qoq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wsgiref.handlers_6qoq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wsgiref.headers_5xhu.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wsgiref.headers_5xhu.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wsgiref.headers_5xhu.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wsgiref.simple_server_d4ka.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wsgiref.simple_server_d4ka.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wsgiref.simple_server_d4ka.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wsgiref.util_ce24.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wsgiref.util_ce24.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wsgiref.util_ce24.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wsgiref.validate_i0lg.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wsgiref.validate_i0lg.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/wsgiref.validate_i0lg.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xapian_5hrx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xapian_5hrx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xapian_5hrx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.BaseDirectory_8n8w.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.BaseDirectory_8n8w.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.BaseDirectory_8n8w.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.Config_7ery.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.Config_7ery.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.Config_7ery.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.DesktopEntry_3ff2.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.DesktopEntry_3ff2.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.DesktopEntry_3ff2.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.Exceptions_58lw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.Exceptions_58lw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.Exceptions_58lw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.IconTheme_byan.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.IconTheme_byan.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.IconTheme_byan.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.IniFile_4lfk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.IniFile_4lfk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.IniFile_4lfk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.Locale_au13.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.Locale_au13.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.Locale_au13.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.MenuEditor_2t3t.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.MenuEditor_2t3t.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.MenuEditor_2t3t.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.Menu_754s.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.Menu_754s.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.Menu_754s.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.Mime_dg0y.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.Mime_dg0y.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.Mime_dg0y.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.RecentFiles_3s6h.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.RecentFiles_3s6h.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.RecentFiles_3s6h.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.__init___adq4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.__init___adq4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdg.__init___adq4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdrlib_7v3m.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdrlib_7v3m.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xdrlib_7v3m.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.__init___17um.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.__init___17um.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.__init___17um.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.dom.NodeFilter_8osh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.dom.NodeFilter_8osh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.dom.NodeFilter_8osh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.dom.__init___b3r9.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.dom.__init___b3r9.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.dom.__init___b3r9.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.dom.domreg_915e.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.dom.domreg_915e.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.dom.domreg_915e.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.dom.expatbuilder_dbbr.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.dom.expatbuilder_dbbr.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.dom.expatbuilder_dbbr.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.dom.minicompat_4k30.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.dom.minicompat_4k30.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.dom.minicompat_4k30.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.dom.minidom_cvps.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.dom.minidom_cvps.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.dom.minidom_cvps.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.dom.pulldom_1bjy.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.dom.pulldom_1bjy.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.dom.pulldom_1bjy.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.dom.xmlbuilder_akea.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.dom.xmlbuilder_akea.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.dom.xmlbuilder_akea.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.etree.ElementInclude_4e8i.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.etree.ElementInclude_4e8i.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.etree.ElementInclude_4e8i.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.etree.ElementPath_c4mb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.etree.ElementPath_c4mb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.etree.ElementPath_c4mb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.etree.ElementTree_2q7p.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.etree.ElementTree_2q7p.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.etree.ElementTree_2q7p.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.etree.__init___4n9l.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.etree.__init___4n9l.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.etree.__init___4n9l.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.etree.cElementTree_dlf7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.etree.cElementTree_dlf7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.etree.cElementTree_dlf7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.parsers.__init___7dat.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.parsers.__init___7dat.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.parsers.__init___7dat.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.parsers.expat_1w7i.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.parsers.expat_1w7i.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.parsers.expat_1w7i.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.sax.__init___bd6r.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.sax.__init___bd6r.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.sax.__init___bd6r.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.sax._exceptions_8mps.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.sax._exceptions_8mps.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.sax._exceptions_8mps.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.sax.expatreader_equ3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.sax.expatreader_equ3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.sax.expatreader_equ3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.sax.handler_baxx.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.sax.handler_baxx.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.sax.handler_baxx.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.sax.saxutils_8tfb.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.sax.saxutils_8tfb.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.sax.saxutils_8tfb.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.sax.xmlreader_ad58.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.sax.xmlreader_ad58.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml.sax.xmlreader_ad58.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml2po.__init___jh9e.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml2po.__init___jh9e.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml2po.__init___jh9e.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml2po.modes.__init___do2d.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml2po.modes.__init___do2d.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml2po.modes.__init___do2d.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml2po.modes.basic_5ryl.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml2po.modes.basic_5ryl.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml2po.modes.basic_5ryl.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml2po.modes.docbook_8kp4.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml2po.modes.docbook_8kp4.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml2po.modes.docbook_8kp4.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml2po.modes.gs_b80e.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml2po.modes.gs_b80e.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml2po.modes.gs_b80e.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml2po.modes.mallard_9w3m.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml2po.modes.mallard_9w3m.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml2po.modes.mallard_9w3m.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml2po.modes.ubuntu_57ro.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml2po.modes.ubuntu_57ro.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml2po.modes.ubuntu_57ro.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml2po.modes.xhtml_6d93.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml2po.modes.xhtml_6d93.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xml2po.modes.xhtml_6d93.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xmllib_8men.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xmllib_8men.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xmllib_8men.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xmlrpclib_atgy.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xmlrpclib_atgy.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/xmlrpclib_atgy.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zipfile_dbsh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zipfile_dbsh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zipfile_dbsh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.__init___baqs.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.__init___baqs.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.__init___baqs.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.__init___31a0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.__init___31a0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.__init___31a0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface._flatten_4lue.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface._flatten_4lue.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface._flatten_4lue.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.adapter_63os.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.adapter_63os.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.adapter_63os.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.advice_658l.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.advice_658l.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.advice_658l.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.common.__init___7x4b.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.common.__init___7x4b.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.common.__init___7x4b.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.common.idatetime_axvp.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.common.idatetime_axvp.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.common.idatetime_axvp.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.common.interfaces_aalk.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.common.interfaces_aalk.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.common.interfaces_aalk.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.common.mapping_7zox.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.common.mapping_7zox.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.common.mapping_7zox.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.common.sequence_8alj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.common.sequence_8alj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.common.sequence_8alj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.common.tests.__init___2kx1.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.common.tests.__init___2kx1.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.common.tests.__init___2kx1.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.common.tests.basemapping_8xdd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.common.tests.basemapping_8xdd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.common.tests.basemapping_8xdd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.common.tests.test_idatetime_a6rh.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.common.tests.test_idatetime_a6rh.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.common.tests.test_idatetime_a6rh.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.common.tests.test_import_interfaces_bpau.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.common.tests.test_import_interfaces_bpau.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.common.tests.test_import_interfaces_bpau.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.declarations_6k4f.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.declarations_6k4f.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.declarations_6k4f.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.document_5cr3.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.document_5cr3.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.document_5cr3.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.exceptions_6z54.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.exceptions_6z54.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.exceptions_6z54.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.interface_7yw7.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.interface_7yw7.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.interface_7yw7.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.interfaces_63ub.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.interfaces_63ub.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.interfaces_63ub.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.ro_8sth.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.ro_8sth.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.ro_8sth.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.__init___d155.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.__init___d155.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.__init___d155.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.dummy_ej0l.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.dummy_ej0l.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.dummy_ej0l.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.ifoo_6xis.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.ifoo_6xis.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.ifoo_6xis.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.m1_5sqe.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.m1_5sqe.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.m1_5sqe.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.m2_bnn5.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.m2_bnn5.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.m2_bnn5.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.odd_5vsv.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.odd_5vsv.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.odd_5vsv.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.test_adapter_agkt.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.test_adapter_agkt.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.test_adapter_agkt.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.test_advice_b3jd.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.test_advice_b3jd.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.test_advice_b3jd.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.test_declarations_5qhm.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.test_declarations_5qhm.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.test_declarations_5qhm.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.test_document_cr48.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.test_document_cr48.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.test_document_cr48.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.test_element_43lj.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.test_element_43lj.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.test_element_43lj.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.test_interface_6nu0.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.test_interface_6nu0.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.test_interface_6nu0.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.test_odd_declarations_cjdw.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.test_odd_declarations_cjdw.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.test_odd_declarations_cjdw.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.test_sorting_dy4p.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.test_sorting_dy4p.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.test_sorting_dy4p.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.test_verify_bfex.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.test_verify_bfex.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.test_verify_bfex.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.unitfixtures_b3qe.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.unitfixtures_b3qe.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.tests.unitfixtures_b3qe.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.verify_37yq.v1_indexcache b/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.verify_37yq.v1_indexcache
deleted file mode 100644
index c227083..0000000
--- a/Src/.metadata/.plugins/com.python.pydev.analysis/python_v1_4fkkw82y758w8n00pmr7xyd93/v1_indexcache/zope.interface.verify_37yq.v1_indexcache
+++ /dev/null
@@ -1 +0,0 @@
-0 \ No newline at end of file
diff --git a/Src/.metadata/.plugins/org.eclipse.core.resources/.projects/CatcherGUI/com.python.pydev.analysis/AdditionalProjectInterpreterInfo.pydevinfo b/Src/.metadata/.plugins/org.eclipse.core.resources/.projects/CatcherGUI/com.python.pydev.analysis/AdditionalProjectInterpreterInfo.pydevinfo
deleted file mode 100644
index b7ae27f..0000000
--- a/Src/.metadata/.plugins/org.eclipse.core.resources/.projects/CatcherGUI/com.python.pydev.analysis/AdditionalProjectInterpreterInfo.pydevinfo
+++ /dev/null
Binary files differ
diff --git a/Src/.metadata/.plugins/org.eclipse.core.resources/.projects/CatcherGUI/org.python.pydev/v1_astmanager/modulesKeys b/Src/.metadata/.plugins/org.eclipse.core.resources/.projects/CatcherGUI/org.python.pydev/v1_astmanager/modulesKeys
deleted file mode 100644
index 8ba8238..0000000
--- a/Src/.metadata/.plugins/org.eclipse.core.resources/.projects/CatcherGUI/org.python.pydev/v1_astmanager/modulesKeys
+++ /dev/null
@@ -1 +0,0 @@
-MODULES_MANAGER_V1
diff --git a/Src/.metadata/.plugins/org.eclipse.core.resources/.projects/CatcherGUI/org.python.pydev/v1_astmanager/pythonpath b/Src/.metadata/.plugins/org.eclipse.core.resources/.projects/CatcherGUI/org.python.pydev/v1_astmanager/pythonpath
deleted file mode 100644
index b6ca46a..0000000
--- a/Src/.metadata/.plugins/org.eclipse.core.resources/.projects/CatcherGUI/org.python.pydev/v1_astmanager/pythonpath
+++ /dev/null
@@ -1 +0,0 @@
-/home/tom/Thesis/Src/CatcherGUI/src \ No newline at end of file
diff --git a/Src/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version b/Src/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version
deleted file mode 100644
index 25cb955..0000000
--- a/Src/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version
+++ /dev/null
@@ -1 +0,0 @@
- \ No newline at end of file
diff --git a/Src/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index b/Src/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index
deleted file mode 100644
index c58aa7c..0000000
--- a/Src/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index
+++ /dev/null
Binary files differ
diff --git a/Src/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version b/Src/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version
deleted file mode 100644
index 6b2aaa7..0000000
--- a/Src/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version
+++ /dev/null
@@ -1 +0,0 @@
- \ No newline at end of file
diff --git a/Src/.metadata/.plugins/org.eclipse.core.resources/.root/1.tree b/Src/.metadata/.plugins/org.eclipse.core.resources/.root/1.tree
deleted file mode 100644
index 9e10cfc..0000000
--- a/Src/.metadata/.plugins/org.eclipse.core.resources/.root/1.tree
+++ /dev/null
Binary files differ
diff --git a/Src/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources b/Src/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources
deleted file mode 100644
index 9a2ca4e..0000000
--- a/Src/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources
+++ /dev/null
Binary files differ
diff --git a/Src/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs b/Src/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs
deleted file mode 100644
index d579418..0000000
--- a/Src/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Fri Jun 17 17:54:22 CEST 2011
-version=1
-eclipse.preferences.version=1
diff --git a/Src/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs b/Src/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs
deleted file mode 100644
index c9f1a04..0000000
--- a/Src/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Fri Jun 17 17:54:32 CEST 2011
-eclipse.preferences.version=1
-org.eclipse.debug.ui.PREF_LAUNCH_PERSPECTIVES=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?>\n<launchPerspectives/>\n
diff --git a/Src/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs b/Src/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index 085b830..0000000
--- a/Src/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,14 +0,0 @@
-#Fri Jun 17 17:54:32 CEST 2011
-useQuickDiffPrefPage=true
-proposalOrderMigrated=true
-tabWidthPropagated=true
-content_assist_proposals_background=255,255,255
-org.eclipse.jdt.ui.javadoclocations.migrated=true
-useAnnotationsPrefPage=true
-org.eclipse.jface.textfont=1|Monospace|10.0|0|GTK|1|;
-org.eclipse.jdt.ui.editor.tab.width=
-org.eclipse.jdt.ui.formatterprofiles.version=11
-spelling_locale_initialized=true
-eclipse.preferences.version=1
-content_assist_proposals_foreground=0,0,0
-fontPropagated=true
diff --git a/Src/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs b/Src/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs
deleted file mode 100644
index 25dd4d0..0000000
--- a/Src/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs
+++ /dev/null
@@ -1,8 +0,0 @@
-#Fri Jun 17 17:54:31 CEST 2011
-SWITCH_PERSPECTIVE_ON_PROJECT_CREATION=always
-eclipse.preferences.version=1
-tipsAndTricks=true
-platformState=1308234316999
-EXIT_PROMPT_ON_CLOSE_LAST_WINDOW=false
-quickStart=true
-PROBLEMS_FILTERS_MIGRATE=true
diff --git a/Src/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs b/Src/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs
deleted file mode 100644
index 4a5f206..0000000
--- a/Src/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Fri Jun 17 17:54:32 CEST 2011
-eclipse.preferences.version=1
-showIntro=false
diff --git a/Src/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.python.pydev.prefs b/Src/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.python.pydev.prefs
deleted file mode 100644
index b235401..0000000
--- a/Src/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.python.pydev.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Fri Jun 17 17:54:12 CEST 2011
-eclipse.preferences.version=1
-INTERPRETER_PATH_NEW=Name\:python\:EndName\:Version2.6Executable\:/usr/bin/python2.6|/usr/lib/pymodules/python2.6|/usr/lib/pymodules/python2.6/gtk-2.0|/usr/lib/python2.6|/usr/lib/python2.6/dist-packages|/usr/lib/python2.6/dist-packages/PIL|/usr/lib/python2.6/dist-packages/gst-0.10|/usr/lib/python2.6/dist-packages/gtk-2.0|/usr/lib/python2.6/lib-dynload|/usr/lib/python2.6/lib-old|/usr/lib/python2.6/lib-tk|/usr/lib/python2.6/plat-linux2|/usr/local/lib/python2.6/dist-packages@$|Image|OpenGL|__builtin__|__main__|_ast|_bisect|_bytesio|_codecs|_codecs_cn|_codecs_hk|_codecs_iso2022|_codecs_jp|_codecs_kr|_codecs_tw|_collections|_csv|_fileio|_functools|_hashlib|_heapq|_hotshot|_json|_locale|_lsprof|_md5|_multibytecodec|_random|_sha|_sha256|_sha512|_socket|_sre|_ssl|_struct|_subprocess|_symtable|_warnings|_weakref|_winreg|array|audioop|binascii|cPickle|cStringIO|cmath|datetime|email|errno|exceptions|fcntl|future_builtins|gc|grp|hashlib|imageop|imp|itertools|marshal|math|mmap|msvcrt|nt|numpy|operator|os|os.path|parser|posix|pwd|select|signal|socket|spwd|strop|sys|syslog|thread|time|unicodedata|wx|wxPython|xxsubtype|zipimport|zlib&&&&&
diff --git a/Src/.metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCache b/Src/.metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCache
deleted file mode 100644
index 593f470..0000000
--- a/Src/.metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCache
+++ /dev/null
Binary files differ
diff --git a/Src/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.dat b/Src/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.dat
deleted file mode 100644
index 46ba64d..0000000
--- a/Src/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.dat
+++ /dev/null
Binary files differ
diff --git a/Src/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml b/Src/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml
deleted file mode 100644
index a4ee3cb..0000000
--- a/Src/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<typeInfoHistroy/>
diff --git a/Src/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml b/Src/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml
deleted file mode 100644
index 9e390f5..0000000
--- a/Src/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<qualifiedTypeNameHistroy/>
diff --git a/Src/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml b/Src/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml
deleted file mode 100644
index 04c9878..0000000
--- a/Src/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<section name="Workbench">
- <section name="org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart">
- <item value="true" key="group_libraries"/>
- <item value="false" key="linkWithEditor"/>
- <item value="2" key="layout"/>
- <item value="1" key="rootMode"/>
- <item value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#x0A;&lt;packageExplorer group_libraries=&quot;1&quot; layout=&quot;2&quot; linkWithEditor=&quot;0&quot; rootMode=&quot;1&quot; workingSetName=&quot;Aggregate for window 1308326025882&quot;&gt;&#x0A;&lt;customFilters userDefinedPatternsEnabled=&quot;false&quot;&gt;&#x0A;&lt;xmlDefinedFilters&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.LibraryFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.LocalTypesFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.StaticsFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.pde.ui.ExternalPluginLibrariesFilter1&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.ClosedProjectsFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.NonSharedProjectsFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.NonJavaElementFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.ContainedLibraryFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.CuAndClassFileFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.NonJavaProjectsFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.internal.ui.PackageExplorer.EmptyInnerPackageFilter&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.PackageDeclarationFilter&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.internal.ui.PackageExplorer.EmptyPackageFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.ImportDeclarationFilter&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.FieldsFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.internal.ui.PackageExplorer.HideInnerClassFilesFilter&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.NonPublicFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer_patternFilterId_.*&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.EmptyLibraryContainerFilter&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.pde.ui.BinaryProjectFilter1&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.SyntheticMembersFilter&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;/xmlDefinedFilters&gt;&#x0A;&lt;/customFilters&gt;&#x0A;&lt;/packageExplorer&gt;" key="memento"/>
- </section>
-</section>
diff --git a/Src/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml b/Src/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml
deleted file mode 100644
index 799ec6d..0000000
--- a/Src/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<section name="Workbench">
- <section name="NewWizardAction">
- <item value="org.python.pydev.ui.wizards.project.PythonProjectWizard" key="NewWizardSelectionPage.STORE_SELECTED_ID"/>
- <list key="NewWizardSelectionPage.STORE_EXPANDED_CATEGORIES_ID">
- <item value="org.python.pydev.PythonCategory"/>
- </list>
- </section>
-</section>
diff --git a/Src/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml b/Src/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml
deleted file mode 100644
index 864b6ae..0000000
--- a/Src/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<section name="Workbench">
- <section name="WorkbenchPreferenceDialogSettings">
- <item value="0" key="DIALOG_Y_ORIGIN"/>
- <item value="50" key="DIALOG_X_ORIGIN"/>
- </section>
-</section>
diff --git a/Src/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml b/Src/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml
deleted file mode 100644
index afdc394..0000000
--- a/Src/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml
+++ /dev/null
@@ -1,287 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<workbench progressCount="13" version="2.0">
-<workbenchAdvisor/>
-<window height="768" width="1024" x="0" y="30">
-<fastViewData fastViewLocation="1024"/>
-<perspectiveBar>
-<itemSize x="160"/>
-</perspectiveBar>
-<coolbarLayout locked="0">
-<coolItem id="group.file" itemType="typeGroupMarker"/>
-<coolItem id="org.eclipse.ui.workbench.file" itemType="typeToolBarContribution" x="96" y="26"/>
-<coolItem id="additions" itemType="typeGroupMarker"/>
-<coolItem id="com.python.pydev.navigate.actionSet" itemType="typeToolBarContribution" x="36" y="26"/>
-<coolItem id="org.eclipse.debug.ui.launchActionSet" itemType="typeToolBarContribution" x="112" y="26"/>
-<coolItem id="org.eclipse.jdt.ui.JavaElementCreationActionSet" itemType="typeToolBarContribution" x="96" y="26"/>
-<coolItem id="org.eclipse.search.searchActionSet" itemType="typeToolBarContribution" x="44" y="26"/>
-<coolItem id="group.nav" itemType="typeGroupMarker"/>
-<coolItem id="org.eclipse.ui.workbench.navigate" itemType="typeToolBarContribution" x="172" y="26"/>
-<coolItem id="group.editor" itemType="typeGroupMarker"/>
-<coolItem id="group.help" itemType="typeGroupMarker"/>
-<coolItem id="org.eclipse.ui.workbench.help" itemType="typeToolBarContribution" x="-1" y="-1"/>
-</coolbarLayout>
-<page aggregateWorkingSetId="Aggregate for window 1308326025882" focus="true" label="Workspace - PyDev">
-<editors>
-<editorArea activeWorkbook="DefaultEditorWorkbook">
-<info part="DefaultEditorWorkbook">
-<folder appearance="1" expanded="2">
-<presentation id="org.eclipse.ui.presentations.WorkbenchPresentationFactory"/>
-</folder>
-</info>
-</editorArea>
-</editors>
-<views>
-<view id="org.eclipse.jdt.ui.TypeHierarchy" partName="Hierarchy"/>
-<view id="org.eclipse.ui.views.ProblemView" partName="Problems">
-<viewState PRIMARY_SORT_FIELD="org.eclipse.ui.ide.severityAndDescriptionField" categoryGroup="org.eclipse.ui.ide.severity" markerContentGenerator="org.eclipse.ui.ide.problemsGenerator" partName="Problems">
-<columnWidths org.eclipse.ui.ide.locationField="83" org.eclipse.ui.ide.markerType="123" org.eclipse.ui.ide.pathField="163" org.eclipse.ui.ide.resourceField="123" org.eclipse.ui.ide.severityAndDescriptionField="400"/>
-<visible IMemento.internal.id="org.eclipse.ui.ide.severityAndDescriptionField"/>
-<visible IMemento.internal.id="org.eclipse.ui.ide.resourceField"/>
-<visible IMemento.internal.id="org.eclipse.ui.ide.pathField"/>
-<visible IMemento.internal.id="org.eclipse.ui.ide.locationField"/>
-<visible IMemento.internal.id="org.eclipse.ui.ide.markerType"/>
-</viewState>
-</view>
-<view id="org.eclipse.jdt.ui.PackageExplorer" partName="Package Explorer">
-<viewState group_libraries="1" layout="2" linkWithEditor="0" rootMode="1" workingSetName="Aggregate for window 1308326025882">
-<customFilters userDefinedPatternsEnabled="false">
-<xmlDefinedFilters>
-<child filterId="org.eclipse.jdt.ui.PackageExplorer.LibraryFilter" isEnabled="false"/>
-<child filterId="org.eclipse.jdt.ui.PackageExplorer.LocalTypesFilter" isEnabled="false"/>
-<child filterId="org.eclipse.jdt.ui.PackageExplorer.StaticsFilter" isEnabled="false"/>
-<child filterId="org.eclipse.pde.ui.ExternalPluginLibrariesFilter1" isEnabled="true"/>
-<child filterId="org.eclipse.jdt.ui.PackageExplorer.ClosedProjectsFilter" isEnabled="false"/>
-<child filterId="org.eclipse.jdt.ui.PackageExplorer.NonSharedProjectsFilter" isEnabled="false"/>
-<child filterId="org.eclipse.jdt.ui.PackageExplorer.NonJavaElementFilter" isEnabled="false"/>
-<child filterId="org.eclipse.jdt.ui.PackageExplorer.ContainedLibraryFilter" isEnabled="false"/>
-<child filterId="org.eclipse.jdt.ui.PackageExplorer.CuAndClassFileFilter" isEnabled="false"/>
-<child filterId="org.eclipse.jdt.ui.PackageExplorer.NonJavaProjectsFilter" isEnabled="false"/>
-<child filterId="org.eclipse.jdt.internal.ui.PackageExplorer.EmptyInnerPackageFilter" isEnabled="true"/>
-<child filterId="org.eclipse.jdt.ui.PackageExplorer.PackageDeclarationFilter" isEnabled="true"/>
-<child filterId="org.eclipse.jdt.internal.ui.PackageExplorer.EmptyPackageFilter" isEnabled="false"/>
-<child filterId="org.eclipse.jdt.ui.PackageExplorer.ImportDeclarationFilter" isEnabled="true"/>
-<child filterId="org.eclipse.jdt.ui.PackageExplorer.FieldsFilter" isEnabled="false"/>
-<child filterId="org.eclipse.jdt.internal.ui.PackageExplorer.HideInnerClassFilesFilter" isEnabled="true"/>
-<child filterId="org.eclipse.jdt.ui.PackageExplorer.NonPublicFilter" isEnabled="false"/>
-<child filterId="org.eclipse.jdt.ui.PackageExplorer_patternFilterId_.*" isEnabled="true"/>
-<child filterId="org.eclipse.jdt.ui.PackageExplorer.EmptyLibraryContainerFilter" isEnabled="true"/>
-<child filterId="org.eclipse.pde.ui.BinaryProjectFilter1" isEnabled="false"/>
-<child filterId="org.eclipse.jdt.ui.PackageExplorer.SyntheticMembersFilter" isEnabled="true"/>
-</xmlDefinedFilters>
-</customFilters>
-</viewState>
-</view>
-<view id="org.eclipse.ui.views.ContentOutline" partName="Outline">
-<viewState/>
-</view>
-<view id="org.eclipse.jdt.ui.SourceView" partName="Declaration"/>
-<view id="org.python.pydev.navigator.view" partName="PyDev Package Explorer">
-<viewState CommonNavigator.LINKING_ENABLED="0" org.eclipse.ui.navigator.resources.workingSets.showTopLevelWorkingSets="0"/>
-</view>
-<view id="org.eclipse.jdt.ui.JavadocView" partName="Javadoc"/>
-</views>
-<perspectives activePart="org.eclipse.ui.views.ProblemView" activePerspective="org.python.pydev.ui.PythonPerspective">
-<perspective editorAreaTrimState="2" editorAreaVisible="1" fixed="0" version="0.016">
-<descriptor class="org.eclipse.jdt.internal.ui.JavaPerspectiveFactory" id="org.eclipse.jdt.ui.JavaPerspective" label="Java"/>
-<alwaysOnActionSet id="org.eclipse.search.searchActionSet"/>
-<alwaysOnActionSet id="org.eclipse.ui.edit.text.actionSet.annotationNavigation"/>
-<alwaysOnActionSet id="org.eclipse.ui.edit.text.actionSet.navigation"/>
-<alwaysOnActionSet id="org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo"/>
-<alwaysOnActionSet id="org.eclipse.ui.externaltools.ExternalToolsSet"/>
-<alwaysOnActionSet id="org.eclipse.ui.actionSet.keyBindings"/>
-<alwaysOnActionSet id="org.eclipse.ui.actionSet.openFiles"/>
-<alwaysOnActionSet id="org.eclipse.ui.cheatsheets.actionSet"/>
-<alwaysOnActionSet id="org.eclipse.debug.ui.launchActionSet"/>
-<alwaysOnActionSet id="org.eclipse.jdt.ui.JavaActionSet"/>
-<alwaysOnActionSet id="org.eclipse.jdt.ui.JavaElementCreationActionSet"/>
-<alwaysOnActionSet id="org.eclipse.ui.NavigateActionSet"/>
-<alwaysOnActionSet id="org.eclipse.debug.ui.breakpointActionSet"/>
-<alwaysOnActionSet id="org.eclipse.jdt.debug.ui.JDTDebugActionSet"/>
-<alwaysOnActionSet id="org.eclipse.jdt.junit.JUnitActionSet"/>
-<show_view_action id="org.eclipse.jdt.ui.PackageExplorer"/>
-<show_view_action id="org.eclipse.jdt.ui.TypeHierarchy"/>
-<show_view_action id="org.eclipse.jdt.ui.SourceView"/>
-<show_view_action id="org.eclipse.jdt.ui.JavadocView"/>
-<show_view_action id="org.eclipse.search.ui.views.SearchView"/>
-<show_view_action id="org.eclipse.ui.console.ConsoleView"/>
-<show_view_action id="org.eclipse.ui.views.ContentOutline"/>
-<show_view_action id="org.eclipse.ui.views.ProblemView"/>
-<show_view_action id="org.eclipse.ui.views.ResourceNavigator"/>
-<show_view_action id="org.eclipse.ui.views.TaskList"/>
-<show_view_action id="org.eclipse.ui.views.ProgressView"/>
-<show_view_action id="org.eclipse.ui.navigator.ProjectExplorer"/>
-<show_view_action id="org.eclipse.ui.texteditor.TemplatesView"/>
-<show_view_action id="org.eclipse.ant.ui.views.AntView"/>
-<show_view_action id="org.eclipse.pde.runtime.LogView"/>
-<new_wizard_action id="org.eclipse.jdt.ui.wizards.JavaProjectWizard"/>
-<new_wizard_action id="org.eclipse.jdt.ui.wizards.NewPackageCreationWizard"/>
-<new_wizard_action id="org.eclipse.jdt.ui.wizards.NewClassCreationWizard"/>
-<new_wizard_action id="org.eclipse.jdt.ui.wizards.NewInterfaceCreationWizard"/>
-<new_wizard_action id="org.eclipse.jdt.ui.wizards.NewEnumCreationWizard"/>
-<new_wizard_action id="org.eclipse.jdt.ui.wizards.NewAnnotationCreationWizard"/>
-<new_wizard_action id="org.eclipse.jdt.ui.wizards.NewSourceFolderCreationWizard"/>
-<new_wizard_action id="org.eclipse.jdt.ui.wizards.NewSnippetFileCreationWizard"/>
-<new_wizard_action id="org.eclipse.jdt.ui.wizards.NewJavaWorkingSetWizard"/>
-<new_wizard_action id="org.eclipse.ui.wizards.new.folder"/>
-<new_wizard_action id="org.eclipse.ui.wizards.new.file"/>
-<new_wizard_action id="org.eclipse.ui.editors.wizards.UntitledTextFileWizard"/>
-<new_wizard_action id="org.eclipse.jdt.junit.wizards.NewTestCaseCreationWizard"/>
-<perspective_action id="org.eclipse.debug.ui.DebugPerspective"/>
-<perspective_action id="org.eclipse.jdt.ui.JavaBrowsingPerspective"/>
-<hide_toolbar_item_id id="org.eclipse.ui.edit.text.toggleShowSelectedElementOnly"/>
-<view id="org.eclipse.jdt.ui.PackageExplorer"/>
-<view id="org.eclipse.jdt.ui.TypeHierarchy"/>
-<view id="org.eclipse.ui.views.ProblemView"/>
-<view id="org.eclipse.jdt.ui.JavadocView"/>
-<view id="org.eclipse.jdt.ui.SourceView"/>
-<view id="org.eclipse.ui.views.ContentOutline"/>
-<fastViewBars/>
-<layout>
-<mainWindow>
-<info folder="true" part="left">
-<folder activePageID="org.eclipse.jdt.ui.PackageExplorer" appearance="2" expanded="2">
-<page content="org.eclipse.jdt.ui.PackageExplorer" label="Package Explorer"/>
-<page content="org.eclipse.jdt.ui.TypeHierarchy" label="Hierarchy"/>
-<page content="org.eclipse.ui.views.ResourceNavigator" label="LabelNotFound"/>
-<page content="org.eclipse.ui.navigator.ProjectExplorer" label="LabelNotFound"/>
-<page content="org.eclipse.jdt.junit.ResultView" label="LabelNotFound"/>
-<presentation id="org.eclipse.ui.presentations.WorkbenchPresentationFactory">
-<part id="0"/>
-<part id="1"/>
-</presentation>
-</folder>
-</info>
-<info folder="true" part="org.eclipse.ui.internal.ViewStack@46a658" ratio="0.7495049" ratioLeft="757" ratioRight="253" relationship="2" relative="left">
-<folder appearance="2" expanded="2">
-<page content="org.eclipse.help.ui.HelpView" label="LabelNotFound"/>
-<page content="org.eclipse.ui.internal.introview" label="LabelNotFound"/>
-<page content="org.eclipse.ui.cheatsheets.views.CheatSheetView" label="LabelNotFound"/>
-<presentation id="org.eclipse.ui.presentations.WorkbenchPresentationFactory"/>
-</folder>
-</info>
-<info part="org.eclipse.ui.editorss" ratio="0.24950495" ratioLeft="252" ratioRight="758" relationship="2" relative="left"/>
-<info folder="true" part="bottom" ratio="0.7488226" ratioLeft="477" ratioRight="160" relationship="4" relative="org.eclipse.ui.editorss">
-<folder activePageID="org.eclipse.ui.views.ProblemView" appearance="2" expanded="2">
-<page content="org.eclipse.ui.views.ProblemView" label="Problems"/>
-<page content="org.eclipse.jdt.ui.JavadocView" label="Javadoc"/>
-<page content="org.eclipse.jdt.ui.SourceView" label="Declaration"/>
-<page content="org.eclipse.search.ui.views.SearchView" label="LabelNotFound"/>
-<page content="org.eclipse.ui.console.ConsoleView" label="LabelNotFound"/>
-<page content="org.eclipse.ui.views.BookmarkView" label="LabelNotFound"/>
-<page content="org.eclipse.ui.views.ProgressView" label="LabelNotFound"/>
-<presentation id="org.eclipse.ui.presentations.WorkbenchPresentationFactory">
-<part id="0"/>
-<part id="1"/>
-<part id="2"/>
-</presentation>
-</folder>
-</info>
-<info folder="true" part="right" ratio="0.74934036" ratioLeft="568" ratioRight="190" relationship="2" relative="org.eclipse.ui.editorss">
-<folder activePageID="org.eclipse.ui.views.ContentOutline" appearance="2" expanded="2">
-<page content="org.eclipse.ui.views.ContentOutline" label="Outline"/>
-<page content="org.eclipse.ui.texteditor.TemplatesView" label="LabelNotFound"/>
-<page content="org.eclipse.ant.ui.views.AntView" label="LabelNotFound"/>
-<presentation id="org.eclipse.ui.presentations.WorkbenchPresentationFactory">
-<part id="0"/>
-</presentation>
-</folder>
-</info>
-</mainWindow>
-</layout>
-</perspective>
-<perspective editorAreaTrimState="2" editorAreaVisible="1" fixed="0" version="0.016">
-<descriptor class="org.python.pydev.ui.perspective.PythonPerspectiveFactory" id="org.python.pydev.ui.PythonPerspective" label="PyDev"/>
-<alwaysOnActionSet id="org.eclipse.search.searchActionSet"/>
-<alwaysOnActionSet id="org.eclipse.ui.edit.text.actionSet.annotationNavigation"/>
-<alwaysOnActionSet id="org.eclipse.ui.edit.text.actionSet.navigation"/>
-<alwaysOnActionSet id="org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo"/>
-<alwaysOnActionSet id="org.eclipse.ui.externaltools.ExternalToolsSet"/>
-<alwaysOnActionSet id="org.eclipse.ui.actionSet.keyBindings"/>
-<alwaysOnActionSet id="org.eclipse.ui.actionSet.openFiles"/>
-<alwaysOnActionSet id="org.eclipse.ui.cheatsheets.actionSet"/>
-<alwaysOnActionSet id="org.eclipse.debug.ui.launchActionSet"/>
-<alwaysOnActionSet id="org.eclipse.ui.NavigateActionSet"/>
-<alwaysOnActionSet id="com.python.pydev.navigate.actionSet"/>
-<show_view_action id="org.python.pydev.views.PyCodeCoverageView"/>
-<show_view_action id="org.python.pydev.navigator.view"/>
-<show_view_action id="org.python.pydev.debug.pyunit.pyUnitView"/>
-<show_view_action id="org.eclipse.search.ui.views.SearchView"/>
-<show_view_action id="org.eclipse.ui.console.ConsoleView"/>
-<show_view_action id="org.eclipse.ui.views.ContentOutline"/>
-<show_view_action id="org.eclipse.ui.views.ProblemView"/>
-<show_view_action id="org.eclipse.ui.views.ResourceNavigator"/>
-<show_view_action id="org.eclipse.pde.runtime.LogView"/>
-<show_view_action id="org.eclipse.ui.views.TaskList"/>
-<new_wizard_action id="org.python.pydev.ui.wizards.project.PythonProjectWizard"/>
-<new_wizard_action id="org.python.pydev.ui.wizards.files.PythonSourceFolderWizard"/>
-<new_wizard_action id="org.python.pydev.ui.wizards.files.PythonPackageWizard"/>
-<new_wizard_action id="org.python.pydev.ui.wizards.files.PythonModuleWizard"/>
-<new_wizard_action id="org.eclipse.ui.wizards.new.folder"/>
-<new_wizard_action id="org.eclipse.ui.wizards.new.file"/>
-<new_wizard_action id="org.eclipse.ui.editors.wizards.UntitledTextFileWizard"/>
-<hide_toolbar_item_id id="org.eclipse.ui.edit.text.toggleShowSelectedElementOnly"/>
-<view id="org.python.pydev.navigator.view"/>
-<view id="org.eclipse.ui.views.ProblemView"/>
-<view id="org.eclipse.ui.views.ContentOutline"/>
-<fastViewBars/>
-<layout>
-<mainWindow>
-<info folder="true" part="topLeft">
-<folder activePageID="org.python.pydev.navigator.view" appearance="2" expanded="2">
-<page content="org.python.pydev.navigator.view" label="PyDev Package Explorer"/>
-<presentation id="org.eclipse.ui.presentations.WorkbenchPresentationFactory">
-<part id="0"/>
-</presentation>
-</folder>
-</info>
-<info folder="true" part="stickyFolderRight" ratio="0.7495049" ratioLeft="757" ratioRight="253" relationship="2" relative="topLeft">
-<folder appearance="2" expanded="2">
-<page content="org.eclipse.help.ui.HelpView" label="LabelNotFound"/>
-<page content="org.eclipse.ui.internal.introview" label="LabelNotFound"/>
-<page content="org.eclipse.ui.cheatsheets.views.CheatSheetView" label="LabelNotFound"/>
-</folder>
-</info>
-<info part="org.eclipse.ui.editorss" ratio="0.25940594" ratioLeft="262" ratioRight="748" relationship="2" relative="topLeft"/>
-<info folder="true" part="bottom" ratio="0.7492114" ratioLeft="475" ratioRight="159" relationship="4" relative="org.eclipse.ui.editorss">
-<folder activePageID="org.eclipse.ui.views.ProblemView" appearance="2" expanded="2">
-<page content="org.eclipse.ui.views.ProblemView" label="Problems"/>
-<page content="org.eclipse.search.ui.views.SearchView" label="LabelNotFound"/>
-<page content="org.eclipse.ui.console.ConsoleView" label="LabelNotFound"/>
-<page content="org.eclipse.ui.views.BookmarkView" label="LabelNotFound"/>
-<page content="org.eclipse.ui.views.ProgressView" label="LabelNotFound"/>
-<presentation id="org.eclipse.ui.presentations.WorkbenchPresentationFactory">
-<part id="0"/>
-</presentation>
-</folder>
-</info>
-<info folder="true" part="org.eclipse.ui.internal.ViewStack@1aa4a43" ratio="0.75" ratioLeft="561" ratioRight="187" relationship="2" relative="org.eclipse.ui.editorss">
-<folder activePageID="org.eclipse.ui.views.ContentOutline" appearance="2" expanded="2">
-<page content="org.eclipse.ui.views.ContentOutline" label="Outline"/>
-<presentation id="org.eclipse.ui.presentations.WorkbenchPresentationFactory">
-<part id="0"/>
-</presentation>
-</folder>
-</info>
-</mainWindow>
-</layout>
-</perspective>
-</perspectives>
-<workingSets/>
-<navigationHistory/>
-<input factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/" type="8"/>
-</page>
-<workbenchWindowAdvisor/>
-<actionBarAdvisor/>
-<trimLayout>
-<trimArea IMemento.internal.id="128">
-<trimItem IMemento.internal.id="org.eclipse.ui.internal.WorkbenchWindow.topBar"/>
-</trimArea>
-<trimArea IMemento.internal.id="1024">
-<trimItem IMemento.internal.id="org.eclise.ui.internal.FastViewBar"/>
-<trimItem IMemento.internal.id="org.eclipse.jface.action.StatusLineManager"/>
-<trimItem IMemento.internal.id="org.eclipse.ui.internal.progress.ProgressRegion"/>
-</trimArea>
-</trimLayout>
-</window>
-<mruList/>
-</workbench> \ No newline at end of file
diff --git a/Src/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml b/Src/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml
deleted file mode 100644
index 3f73a41..0000000
--- a/Src/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<workingSetManager>
-<workingSet aggregate="true" factoryID="org.eclipse.ui.internal.WorkingSetFactory" id="1308326025884_0" label="Window Working Set" name="Aggregate for window 1308326025882"/>
-</workingSetManager> \ No newline at end of file
diff --git a/Src/.metadata/.plugins/org.python.pydev/ping.log b/Src/.metadata/.plugins/org.python.pydev/ping.log
deleted file mode 100644
index e69de29..0000000
--- a/Src/.metadata/.plugins/org.python.pydev/ping.log
+++ /dev/null
diff --git a/Src/.metadata/.plugins/org.python.pydev/v1_4fkkw82y758w8n00pmr7xyd93/modulesKeys b/Src/.metadata/.plugins/org.python.pydev/v1_4fkkw82y758w8n00pmr7xyd93/modulesKeys
deleted file mode 100644
index 76d706b..0000000
--- a/Src/.metadata/.plugins/org.python.pydev/v1_4fkkw82y758w8n00pmr7xyd93/modulesKeys
+++ /dev/null
@@ -1,3160 +0,0 @@
-MODULES_MANAGER_V1
-ANSI|/usr/lib/python2.6/dist-packages/ANSI.py
-AptUrl.AptUrl|/usr/lib/python2.6/dist-packages/AptUrl/AptUrl.py
-AptUrl.Helpers|/usr/lib/python2.6/dist-packages/AptUrl/Helpers.py
-AptUrl.Parser|/usr/lib/python2.6/dist-packages/AptUrl/Parser.py
-AptUrl.UI|/usr/lib/python2.6/dist-packages/AptUrl/UI.py
-AptUrl.Version|/usr/lib/python2.6/dist-packages/AptUrl/Version.py
-AptUrl.__init__|/usr/lib/python2.6/dist-packages/AptUrl/__init__.py
-AptUrl.gtk.GtkUI|/usr/lib/python2.6/dist-packages/AptUrl/gtk/GtkUI.py
-AptUrl.gtk.__init__|/usr/lib/python2.6/dist-packages/AptUrl/gtk/__init__.py
-ArgImagePlugin|/usr/lib/python2.6/dist-packages/PIL/ArgImagePlugin.py
-Avogadro|/usr/lib/python2.6/dist-packages/Avogadro.so
-BaseHTTPServer|/usr/lib/python2.6/BaseHTTPServer.py
-Bastion|/usr/lib/python2.6/Bastion.py
-BdfFontFile|/usr/lib/python2.6/dist-packages/PIL/BdfFontFile.py
-BmpImagePlugin|/usr/lib/python2.6/dist-packages/PIL/BmpImagePlugin.py
-BufrStubImagePlugin|/usr/lib/python2.6/dist-packages/PIL/BufrStubImagePlugin.py
-CDDB|/usr/lib/pymodules/python2.6/CDDB.py
-CDROM|/usr/lib/python2.6/plat-linux2/CDROM.py
-CGIHTTPServer|/usr/lib/python2.6/CGIHTTPServer.py
-Canvas|/usr/lib/python2.6/lib-tk/Canvas.py
-CommandNotFound.CommandNotFound|/usr/lib/python2.6/dist-packages/CommandNotFound/CommandNotFound.py
-CommandNotFound.__init__|/usr/lib/python2.6/dist-packages/CommandNotFound/__init__.py
-CommandNotFound.util|/usr/lib/python2.6/dist-packages/CommandNotFound/util.py
-ConfigParser|/usr/lib/python2.6/ConfigParser.py
-ContainerIO|/usr/lib/python2.6/dist-packages/PIL/ContainerIO.py
-Cookie|/usr/lib/python2.6/Cookie.py
-Crypto.Cipher.AES|/usr/lib/python2.6/dist-packages/Crypto/Cipher/AES.so
-Crypto.Cipher.ARC2|/usr/lib/python2.6/dist-packages/Crypto/Cipher/ARC2.so
-Crypto.Cipher.ARC4|/usr/lib/python2.6/dist-packages/Crypto/Cipher/ARC4.so
-Crypto.Cipher.Blowfish|/usr/lib/python2.6/dist-packages/Crypto/Cipher/Blowfish.so
-Crypto.Cipher.CAST|/usr/lib/python2.6/dist-packages/Crypto/Cipher/CAST.so
-Crypto.Cipher.DES|/usr/lib/python2.6/dist-packages/Crypto/Cipher/DES.so
-Crypto.Cipher.DES3|/usr/lib/python2.6/dist-packages/Crypto/Cipher/DES3.so
-Crypto.Cipher.XOR|/usr/lib/python2.6/dist-packages/Crypto/Cipher/XOR.so
-Crypto.Cipher.__init__|/usr/lib/python2.6/dist-packages/Crypto/Cipher/__init__.py
-Crypto.Hash.HMAC|/usr/lib/python2.6/dist-packages/Crypto/Hash/HMAC.py
-Crypto.Hash.MD2|/usr/lib/python2.6/dist-packages/Crypto/Hash/MD2.so
-Crypto.Hash.MD4|/usr/lib/python2.6/dist-packages/Crypto/Hash/MD4.so
-Crypto.Hash.MD5|/usr/lib/python2.6/dist-packages/Crypto/Hash/MD5.py
-Crypto.Hash.SHA|/usr/lib/python2.6/dist-packages/Crypto/Hash/SHA.py
-Crypto.Hash.SHA256|/usr/lib/python2.6/dist-packages/Crypto/Hash/SHA256.so
-Crypto.Hash.__init__|/usr/lib/python2.6/dist-packages/Crypto/Hash/__init__.py
-Crypto.Protocol.AllOrNothing|/usr/lib/python2.6/dist-packages/Crypto/Protocol/AllOrNothing.py
-Crypto.Protocol.Chaffing|/usr/lib/python2.6/dist-packages/Crypto/Protocol/Chaffing.py
-Crypto.Protocol.__init__|/usr/lib/python2.6/dist-packages/Crypto/Protocol/__init__.py
-Crypto.PublicKey.DSA|/usr/lib/python2.6/dist-packages/Crypto/PublicKey/DSA.py
-Crypto.PublicKey.ElGamal|/usr/lib/python2.6/dist-packages/Crypto/PublicKey/ElGamal.py
-Crypto.PublicKey.RSA|/usr/lib/python2.6/dist-packages/Crypto/PublicKey/RSA.py
-Crypto.PublicKey.__init__|/usr/lib/python2.6/dist-packages/Crypto/PublicKey/__init__.py
-Crypto.PublicKey._fastmath|/usr/lib/python2.6/dist-packages/Crypto/PublicKey/_fastmath.so
-Crypto.PublicKey.pubkey|/usr/lib/python2.6/dist-packages/Crypto/PublicKey/pubkey.py
-Crypto.PublicKey.qNEW|/usr/lib/python2.6/dist-packages/Crypto/PublicKey/qNEW.py
-Crypto.Util.RFC1751|/usr/lib/python2.6/dist-packages/Crypto/Util/RFC1751.py
-Crypto.Util.__init__|/usr/lib/python2.6/dist-packages/Crypto/Util/__init__.py
-Crypto.Util.number|/usr/lib/python2.6/dist-packages/Crypto/Util/number.py
-Crypto.Util.randpool|/usr/lib/python2.6/dist-packages/Crypto/Util/randpool.py
-Crypto.Util.test|/usr/lib/python2.6/dist-packages/Crypto/Util/test.py
-Crypto.__init__|/usr/lib/python2.6/dist-packages/Crypto/__init__.py
-Crypto.test|/usr/lib/python2.6/dist-packages/Crypto/test.py
-CurImagePlugin|/usr/lib/python2.6/dist-packages/PIL/CurImagePlugin.py
-DLFCN|/usr/lib/python2.6/plat-linux2/DLFCN.py
-DcxImagePlugin|/usr/lib/python2.6/dist-packages/PIL/DcxImagePlugin.py
-Dialog|/usr/lib/python2.6/lib-tk/Dialog.py
-DiscID|/usr/lib/pymodules/python2.6/DiscID.py
-DistUpgrade.DistUpgradeApport|/usr/lib/python2.6/dist-packages/DistUpgrade/DistUpgradeApport.py
-DistUpgrade.DistUpgradeAptCdrom|/usr/lib/python2.6/dist-packages/DistUpgrade/DistUpgradeAptCdrom.py
-DistUpgrade.DistUpgradeAufs|/usr/lib/python2.6/dist-packages/DistUpgrade/DistUpgradeAufs.py
-DistUpgrade.DistUpgradeCache|/usr/lib/python2.6/dist-packages/DistUpgrade/DistUpgradeCache.py
-DistUpgrade.DistUpgradeConfigParser|/usr/lib/python2.6/dist-packages/DistUpgrade/DistUpgradeConfigParser.py
-DistUpgrade.DistUpgradeController|/usr/lib/python2.6/dist-packages/DistUpgrade/DistUpgradeController.py
-DistUpgrade.DistUpgradeFetcherCore|/usr/lib/python2.6/dist-packages/DistUpgrade/DistUpgradeFetcherCore.py
-DistUpgrade.DistUpgradeFetcherSelf|/usr/lib/python2.6/dist-packages/DistUpgrade/DistUpgradeFetcherSelf.py
-DistUpgrade.DistUpgradeGettext|/usr/lib/python2.6/dist-packages/DistUpgrade/DistUpgradeGettext.py
-DistUpgrade.DistUpgradeMain|/usr/lib/python2.6/dist-packages/DistUpgrade/DistUpgradeMain.py
-DistUpgrade.DistUpgradeQuirks|/usr/lib/python2.6/dist-packages/DistUpgrade/DistUpgradeQuirks.py
-DistUpgrade.DistUpgradeVersion|/usr/lib/python2.6/dist-packages/DistUpgrade/DistUpgradeVersion.py
-DistUpgrade.DistUpgradeView|/usr/lib/python2.6/dist-packages/DistUpgrade/DistUpgradeView.py
-DistUpgrade.DistUpgradeViewGtk|/usr/lib/python2.6/dist-packages/DistUpgrade/DistUpgradeViewGtk.py
-DistUpgrade.DistUpgradeViewKDE|/usr/lib/python2.6/dist-packages/DistUpgrade/DistUpgradeViewKDE.py
-DistUpgrade.DistUpgradeViewNonInteractive|/usr/lib/python2.6/dist-packages/DistUpgrade/DistUpgradeViewNonInteractive.py
-DistUpgrade.DistUpgradeViewText|/usr/lib/python2.6/dist-packages/DistUpgrade/DistUpgradeViewText.py
-DistUpgrade.MetaRelease|/usr/lib/python2.6/dist-packages/DistUpgrade/MetaRelease.py
-DistUpgrade.SimpleGtkbuilderApp|/usr/lib/python2.6/dist-packages/DistUpgrade/SimpleGtkbuilderApp.py
-DistUpgrade.__init__|/usr/lib/python2.6/dist-packages/DistUpgrade/__init__.py
-DistUpgrade.distinfo|/usr/lib/python2.6/dist-packages/DistUpgrade/distinfo.py
-DistUpgrade.distro|/usr/lib/python2.6/dist-packages/DistUpgrade/distro.py
-DistUpgrade.sourceslist|/usr/lib/python2.6/dist-packages/DistUpgrade/sourceslist.py
-DistUpgrade.utils|/usr/lib/python2.6/dist-packages/DistUpgrade/utils.py
-DistUpgrade.xorg_fix_proprietary|/usr/lib/python2.6/dist-packages/DistUpgrade/xorg_fix_proprietary.py
-DocXMLRPCServer|/usr/lib/python2.6/DocXMLRPCServer.py
-EpsImagePlugin|/usr/lib/python2.6/dist-packages/PIL/EpsImagePlugin.py
-ExifTags|/usr/lib/python2.6/dist-packages/PIL/ExifTags.py
-FSM|/usr/lib/python2.6/dist-packages/FSM.py
-FileDialog|/usr/lib/python2.6/lib-tk/FileDialog.py
-FitsStubImagePlugin|/usr/lib/python2.6/dist-packages/PIL/FitsStubImagePlugin.py
-FixTk|/usr/lib/python2.6/lib-tk/FixTk.py
-FliImagePlugin|/usr/lib/python2.6/dist-packages/PIL/FliImagePlugin.py
-FontFile|/usr/lib/python2.6/dist-packages/PIL/FontFile.py
-FpxImagePlugin|/usr/lib/python2.6/dist-packages/PIL/FpxImagePlugin.py
-GDebi.DebPackage|/usr/lib/python2.6/dist-packages/GDebi/DebPackage.py
-GDebi.GDebi|/usr/lib/python2.6/dist-packages/GDebi/GDebi.py
-GDebi.GDebiCli|/usr/lib/python2.6/dist-packages/GDebi/GDebiCli.py
-GDebi.GDebiCommon|/usr/lib/python2.6/dist-packages/GDebi/GDebiCommon.py
-GDebi.SimpleGtkbuilderApp|/usr/lib/python2.6/dist-packages/GDebi/SimpleGtkbuilderApp.py
-GDebi.Version|/usr/lib/python2.6/dist-packages/GDebi/Version.py
-GDebi.__init__|/usr/lib/python2.6/dist-packages/GDebi/__init__.py
-GMenuSimpleEditor.__init__|/usr/lib/pymodules/python2.6/GMenuSimpleEditor/__init__.py
-GMenuSimpleEditor.config|/usr/lib/pymodules/python2.6/GMenuSimpleEditor/config.py
-GMenuSimpleEditor.main|/usr/lib/pymodules/python2.6/GMenuSimpleEditor/main.py
-GMenuSimpleEditor.maindialog|/usr/lib/pymodules/python2.6/GMenuSimpleEditor/maindialog.py
-GMenuSimpleEditor.menufilewriter|/usr/lib/pymodules/python2.6/GMenuSimpleEditor/menufilewriter.py
-GMenuSimpleEditor.menutreemodel|/usr/lib/pymodules/python2.6/GMenuSimpleEditor/menutreemodel.py
-GbrImagePlugin|/usr/lib/python2.6/dist-packages/PIL/GbrImagePlugin.py
-GdImageFile|/usr/lib/python2.6/dist-packages/PIL/GdImageFile.py
-GifImagePlugin|/usr/lib/python2.6/dist-packages/PIL/GifImagePlugin.py
-GimpGradientFile|/usr/lib/python2.6/dist-packages/PIL/GimpGradientFile.py
-GimpPaletteFile|/usr/lib/python2.6/dist-packages/PIL/GimpPaletteFile.py
-GnomeCodecInstall.Main|/usr/lib/python2.6/dist-packages/GnomeCodecInstall/Main.py
-GnomeCodecInstall.MainWindow|/usr/lib/python2.6/dist-packages/GnomeCodecInstall/MainWindow.py
-GnomeCodecInstall.PackageWorker|/usr/lib/python2.6/dist-packages/GnomeCodecInstall/PackageWorker.py
-GnomeCodecInstall.__init__|/usr/lib/python2.6/dist-packages/GnomeCodecInstall/__init__.py
-GnuPGInterface|/usr/lib/pymodules/python2.6/GnuPGInterface.py
-GribStubImagePlugin|/usr/lib/python2.6/dist-packages/PIL/GribStubImagePlugin.py
-HTMLParser|/usr/lib/python2.6/HTMLParser.py
-Hdf5StubImagePlugin|/usr/lib/python2.6/dist-packages/PIL/Hdf5StubImagePlugin.py
-IN|/usr/lib/python2.6/plat-linux2/IN.py
-IcnsImagePlugin|/usr/lib/python2.6/dist-packages/PIL/IcnsImagePlugin.py
-IcoImagePlugin|/usr/lib/python2.6/dist-packages/PIL/IcoImagePlugin.py
-ImImagePlugin|/usr/lib/python2.6/dist-packages/PIL/ImImagePlugin.py
-Image|/usr/lib/python2.6/dist-packages/PIL/Image.py
-ImageChops|/usr/lib/python2.6/dist-packages/PIL/ImageChops.py
-ImageCms|/usr/lib/python2.6/dist-packages/PIL/ImageCms.py
-ImageColor|/usr/lib/python2.6/dist-packages/PIL/ImageColor.py
-ImageDraw|/usr/lib/python2.6/dist-packages/PIL/ImageDraw.py
-ImageDraw2|/usr/lib/python2.6/dist-packages/PIL/ImageDraw2.py
-ImageEnhance|/usr/lib/python2.6/dist-packages/PIL/ImageEnhance.py
-ImageFile|/usr/lib/python2.6/dist-packages/PIL/ImageFile.py
-ImageFileIO|/usr/lib/python2.6/dist-packages/PIL/ImageFileIO.py
-ImageFilter|/usr/lib/python2.6/dist-packages/PIL/ImageFilter.py
-ImageFont|/usr/lib/python2.6/dist-packages/PIL/ImageFont.py
-ImageGL|/usr/lib/python2.6/dist-packages/PIL/ImageGL.py
-ImageGrab|/usr/lib/python2.6/dist-packages/PIL/ImageGrab.py
-ImageMath|/usr/lib/python2.6/dist-packages/PIL/ImageMath.py
-ImageMode|/usr/lib/python2.6/dist-packages/PIL/ImageMode.py
-ImageOps|/usr/lib/python2.6/dist-packages/PIL/ImageOps.py
-ImagePalette|/usr/lib/python2.6/dist-packages/PIL/ImagePalette.py
-ImagePath|/usr/lib/python2.6/dist-packages/PIL/ImagePath.py
-ImageQt|/usr/lib/python2.6/dist-packages/PIL/ImageQt.py
-ImageSequence|/usr/lib/python2.6/dist-packages/PIL/ImageSequence.py
-ImageShow|/usr/lib/python2.6/dist-packages/PIL/ImageShow.py
-ImageStat|/usr/lib/python2.6/dist-packages/PIL/ImageStat.py
-ImageTransform|/usr/lib/python2.6/dist-packages/PIL/ImageTransform.py
-ImageWin|/usr/lib/python2.6/dist-packages/PIL/ImageWin.py
-ImtImagePlugin|/usr/lib/python2.6/dist-packages/PIL/ImtImagePlugin.py
-IptcImagePlugin|/usr/lib/python2.6/dist-packages/PIL/IptcImagePlugin.py
-JpegImagePlugin|/usr/lib/python2.6/dist-packages/PIL/JpegImagePlugin.py
-LanguageSelector.CheckLanguageSupport|/usr/lib/python2.6/dist-packages/LanguageSelector/CheckLanguageSupport.py
-LanguageSelector.FontConfig|/usr/lib/python2.6/dist-packages/LanguageSelector/FontConfig.py
-LanguageSelector.ImSwitch|/usr/lib/python2.6/dist-packages/LanguageSelector/ImSwitch.py
-LanguageSelector.LangCache|/usr/lib/python2.6/dist-packages/LanguageSelector/LangCache.py
-LanguageSelector.LanguageSelector|/usr/lib/python2.6/dist-packages/LanguageSelector/LanguageSelector.py
-LanguageSelector.LocaleInfo|/usr/lib/python2.6/dist-packages/LanguageSelector/LocaleInfo.py
-LanguageSelector.__init__|/usr/lib/python2.6/dist-packages/LanguageSelector/__init__.py
-LanguageSelector.gtk.GtkLanguageSelector|/usr/lib/python2.6/dist-packages/LanguageSelector/gtk/GtkLanguageSelector.py
-LanguageSelector.gtk.SimpleGtkbuilderApp|/usr/lib/python2.6/dist-packages/LanguageSelector/gtk/SimpleGtkbuilderApp.py
-LanguageSelector.gtk.__init__|/usr/lib/python2.6/dist-packages/LanguageSelector/gtk/__init__.py
-LanguageSelector.macros|/usr/lib/python2.6/dist-packages/LanguageSelector/macros.py
-LanguageSelector.utils|/usr/lib/python2.6/dist-packages/LanguageSelector/utils.py
-LanguageSelector.xkb|/usr/lib/python2.6/dist-packages/LanguageSelector/xkb.py
-LaunchpadIntegration.__init__|/usr/lib/python2.6/dist-packages/gtk-2.0/LaunchpadIntegration/__init__.py
-LaunchpadIntegration._lpi|/usr/lib/python2.6/dist-packages/gtk-2.0/LaunchpadIntegration/_lpi.so
-Levenshtein|/usr/lib/python2.6/dist-packages/Levenshtein.so
-McIdasImagePlugin|/usr/lib/python2.6/dist-packages/PIL/McIdasImagePlugin.py
-MicImagePlugin|/usr/lib/python2.6/dist-packages/PIL/MicImagePlugin.py
-MimeWriter|/usr/lib/python2.6/MimeWriter.py
-MpegImagePlugin|/usr/lib/python2.6/dist-packages/PIL/MpegImagePlugin.py
-MspImagePlugin|/usr/lib/python2.6/dist-packages/PIL/MspImagePlugin.py
-NvidiaDetector.__init__|/usr/lib/python2.6/dist-packages/NvidiaDetector/__init__.py
-NvidiaDetector.alternatives|/usr/lib/python2.6/dist-packages/NvidiaDetector/alternatives.py
-NvidiaDetector.nvidiadetector|/usr/lib/python2.6/dist-packages/NvidiaDetector/nvidiadetector.py
-ORBit|/usr/lib/pymodules/python2.6/ORBit.so
-OleFileIO|/usr/lib/python2.6/dist-packages/PIL/OleFileIO.py
-Onboard.Config|/usr/lib/python2.6/dist-packages/Onboard/Config.py
-Onboard.Exceptions|/usr/lib/python2.6/dist-packages/Onboard/Exceptions.py
-Onboard.IconPalette|/usr/lib/python2.6/dist-packages/Onboard/IconPalette.py
-Onboard.Indicator|/usr/lib/python2.6/dist-packages/Onboard/Indicator.py
-Onboard.KbdWindow|/usr/lib/python2.6/dist-packages/Onboard/KbdWindow.py
-Onboard.KeyCommon|/usr/lib/python2.6/dist-packages/Onboard/KeyCommon.py
-Onboard.KeyGtk|/usr/lib/python2.6/dist-packages/Onboard/KeyGtk.py
-Onboard.Keyboard|/usr/lib/python2.6/dist-packages/Onboard/Keyboard.py
-Onboard.KeyboardGTK|/usr/lib/python2.6/dist-packages/Onboard/KeyboardGTK.py
-Onboard.KeyboardSVG|/usr/lib/python2.6/dist-packages/Onboard/KeyboardSVG.py
-Onboard.OnboardGtk|/usr/lib/python2.6/dist-packages/Onboard/OnboardGtk.py
-Onboard.Pane|/usr/lib/python2.6/dist-packages/Onboard/Pane.py
-Onboard.SnippetList|/usr/lib/python2.6/dist-packages/Onboard/SnippetList.py
-Onboard.X11|/usr/lib/python2.6/dist-packages/Onboard/X11.py
-Onboard.__init__|/usr/lib/python2.6/dist-packages/Onboard/__init__.py
-Onboard.settings|/usr/lib/python2.6/dist-packages/Onboard/settings.py
-Onboard.utils|/usr/lib/python2.6/dist-packages/Onboard/utils.py
-OpenGL
-OpenSSL.SSL|/usr/lib/pymodules/python2.6/OpenSSL/SSL.so
-OpenSSL.__init__|/usr/lib/pymodules/python2.6/OpenSSL/__init__.py
-OpenSSL.crypto|/usr/lib/pymodules/python2.6/OpenSSL/crypto.so
-OpenSSL.rand|/usr/lib/pymodules/python2.6/OpenSSL/rand.so
-OpenSSL.test.__init__|/usr/lib/pymodules/python2.6/OpenSSL/test/__init__.py
-OpenSSL.test.test_crypto|/usr/lib/pymodules/python2.6/OpenSSL/test/test_crypto.py
-OpenSSL.test.test_rand|/usr/lib/pymodules/python2.6/OpenSSL/test/test_rand.py
-OpenSSL.test.test_ssl|/usr/lib/pymodules/python2.6/OpenSSL/test/test_ssl.py
-OpenSSL.test.util|/usr/lib/pymodules/python2.6/OpenSSL/test/util.py
-OpenSSL.tsafe|/usr/lib/pymodules/python2.6/OpenSSL/tsafe.py
-OpenSSL.version|/usr/lib/pymodules/python2.6/OpenSSL/version.py
-PAMmodule|/usr/lib/python2.6/dist-packages/PAMmodule.so
-PSDraw|/usr/lib/python2.6/dist-packages/PIL/PSDraw.py
-PaletteFile|/usr/lib/python2.6/dist-packages/PIL/PaletteFile.py
-PalmImagePlugin|/usr/lib/python2.6/dist-packages/PIL/PalmImagePlugin.py
-PcdImagePlugin|/usr/lib/python2.6/dist-packages/PIL/PcdImagePlugin.py
-PcfFontFile|/usr/lib/python2.6/dist-packages/PIL/PcfFontFile.py
-PcxImagePlugin|/usr/lib/python2.6/dist-packages/PIL/PcxImagePlugin.py
-PdfImagePlugin|/usr/lib/python2.6/dist-packages/PIL/PdfImagePlugin.py
-PixarImagePlugin|/usr/lib/python2.6/dist-packages/PIL/PixarImagePlugin.py
-PngImagePlugin|/usr/lib/python2.6/dist-packages/PIL/PngImagePlugin.py
-PpmImagePlugin|/usr/lib/python2.6/dist-packages/PIL/PpmImagePlugin.py
-PsdImagePlugin|/usr/lib/python2.6/dist-packages/PIL/PsdImagePlugin.py
-PyKDE4.__init__|/usr/lib/pymodules/python2.6/PyKDE4/__init__.py
-PyKDE4.akonadi|/usr/lib/pymodules/python2.6/PyKDE4/akonadi.so
-PyKDE4.dnssd|/usr/lib/pymodules/python2.6/PyKDE4/dnssd.so
-PyKDE4.kdecore|/usr/lib/pymodules/python2.6/PyKDE4/kdecore.so
-PyKDE4.kdeui|/usr/lib/pymodules/python2.6/PyKDE4/kdeui.so
-PyKDE4.khtml|/usr/lib/pymodules/python2.6/PyKDE4/khtml.so
-PyKDE4.kio|/usr/lib/pymodules/python2.6/PyKDE4/kio.so
-PyKDE4.knewstuff|/usr/lib/pymodules/python2.6/PyKDE4/knewstuff.so
-PyKDE4.kparts|/usr/lib/pymodules/python2.6/PyKDE4/kparts.so
-PyKDE4.ktexteditor|/usr/lib/pymodules/python2.6/PyKDE4/ktexteditor.so
-PyKDE4.kutils|/usr/lib/pymodules/python2.6/PyKDE4/kutils.so
-PyKDE4.nepomuk|/usr/lib/pymodules/python2.6/PyKDE4/nepomuk.so
-PyKDE4.phonon|/usr/lib/pymodules/python2.6/PyKDE4/phonon.so
-PyKDE4.plasma|/usr/lib/pymodules/python2.6/PyKDE4/plasma.so
-PyKDE4.pykdeconfig|/usr/lib/pymodules/python2.6/PyKDE4/pykdeconfig.py
-PyKDE4.solid|/usr/lib/pymodules/python2.6/PyKDE4/solid.so
-PyKDE4.soprano|/usr/lib/pymodules/python2.6/PyKDE4/soprano.so
-PyQt4.Qt|/usr/lib/pymodules/python2.6/PyQt4/Qt.so
-PyQt4.QtCore|/usr/lib/pymodules/python2.6/PyQt4/QtCore.so
-PyQt4.QtDesigner|/usr/lib/pymodules/python2.6/PyQt4/QtDesigner.so
-PyQt4.QtGui|/usr/lib/pymodules/python2.6/PyQt4/QtGui.so
-PyQt4.QtHelp|/usr/lib/pymodules/python2.6/PyQt4/QtHelp.so
-PyQt4.QtNetwork|/usr/lib/pymodules/python2.6/PyQt4/QtNetwork.so
-PyQt4.QtScript|/usr/lib/pymodules/python2.6/PyQt4/QtScript.so
-PyQt4.QtScriptTools|/usr/lib/pymodules/python2.6/PyQt4/QtScriptTools.so
-PyQt4.QtSql|/usr/lib/pymodules/python2.6/PyQt4/QtSql.so
-PyQt4.QtSvg|/usr/lib/pymodules/python2.6/PyQt4/QtSvg.so
-PyQt4.QtTest|/usr/lib/pymodules/python2.6/PyQt4/QtTest.so
-PyQt4.QtWebKit|/usr/lib/pymodules/python2.6/PyQt4/QtWebKit.so
-PyQt4.QtXml|/usr/lib/pymodules/python2.6/PyQt4/QtXml.so
-PyQt4.QtXmlPatterns|/usr/lib/pymodules/python2.6/PyQt4/QtXmlPatterns.so
-PyQt4.__init__|/usr/lib/pymodules/python2.6/PyQt4/__init__.py
-PyQt4.pyqtconfig|/usr/lib/pymodules/python2.6/PyQt4/pyqtconfig.py
-PyQt4.uic.Compiler.__init__|/usr/lib/pymodules/python2.6/PyQt4/uic/Compiler/__init__.py
-PyQt4.uic.Compiler.compiler|/usr/lib/pymodules/python2.6/PyQt4/uic/Compiler/compiler.py
-PyQt4.uic.Compiler.indenter|/usr/lib/pymodules/python2.6/PyQt4/uic/Compiler/indenter.py
-PyQt4.uic.Compiler.misc|/usr/lib/pymodules/python2.6/PyQt4/uic/Compiler/misc.py
-PyQt4.uic.Compiler.proxy_type|/usr/lib/pymodules/python2.6/PyQt4/uic/Compiler/proxy_type.py
-PyQt4.uic.Compiler.qobjectcreator|/usr/lib/pymodules/python2.6/PyQt4/uic/Compiler/qobjectcreator.py
-PyQt4.uic.Compiler.qtproxies|/usr/lib/pymodules/python2.6/PyQt4/uic/Compiler/qtproxies.py
-PyQt4.uic.Loader.__init__|/usr/lib/pymodules/python2.6/PyQt4/uic/Loader/__init__.py
-PyQt4.uic.Loader.loader|/usr/lib/pymodules/python2.6/PyQt4/uic/Loader/loader.py
-PyQt4.uic.Loader.qobjectcreator|/usr/lib/pymodules/python2.6/PyQt4/uic/Loader/qobjectcreator.py
-PyQt4.uic.__init__|/usr/lib/pymodules/python2.6/PyQt4/uic/__init__.py
-PyQt4.uic.driver|/usr/lib/pymodules/python2.6/PyQt4/uic/driver.py
-PyQt4.uic.exceptions|/usr/lib/pymodules/python2.6/PyQt4/uic/exceptions.py
-PyQt4.uic.icon_cache|/usr/lib/pymodules/python2.6/PyQt4/uic/icon_cache.py
-PyQt4.uic.objcreator|/usr/lib/pymodules/python2.6/PyQt4/uic/objcreator.py
-PyQt4.uic.port_v2.__init__|/usr/lib/pymodules/python2.6/PyQt4/uic/port_v2/__init__.py
-PyQt4.uic.port_v2.ascii_upper|/usr/lib/pymodules/python2.6/PyQt4/uic/port_v2/ascii_upper.py
-PyQt4.uic.port_v2.encode_utf8|/usr/lib/pymodules/python2.6/PyQt4/uic/port_v2/encode_utf8.py
-PyQt4.uic.port_v2.invoke|/usr/lib/pymodules/python2.6/PyQt4/uic/port_v2/invoke.py
-PyQt4.uic.port_v2.load_plugin|/usr/lib/pymodules/python2.6/PyQt4/uic/port_v2/load_plugin.py
-PyQt4.uic.port_v2.proxy_base|/usr/lib/pymodules/python2.6/PyQt4/uic/port_v2/proxy_base.py
-PyQt4.uic.port_v2.string_io|/usr/lib/pymodules/python2.6/PyQt4/uic/port_v2/string_io.py
-PyQt4.uic.properties|/usr/lib/pymodules/python2.6/PyQt4/uic/properties.py
-PyQt4.uic.pykdeuic4|/usr/lib/pymodules/python2.6/PyQt4/uic/pykdeuic4.py
-PyQt4.uic.pyuic|/usr/lib/pymodules/python2.6/PyQt4/uic/pyuic.py
-PyQt4.uic.uiparser|/usr/lib/pymodules/python2.6/PyQt4/uic/uiparser.py
-Queue|/usr/lib/python2.6/Queue.py
-ScreenResolution.__init__|/usr/lib/python2.6/dist-packages/ScreenResolution/__init__.py
-ScreenResolution.ui|/usr/lib/python2.6/dist-packages/ScreenResolution/ui.py
-ScrolledText|/usr/lib/python2.6/lib-tk/ScrolledText.py
-SgiImagePlugin|/usr/lib/python2.6/dist-packages/PIL/SgiImagePlugin.py
-SimpleDialog|/usr/lib/python2.6/lib-tk/SimpleDialog.py
-SimpleHTTPServer|/usr/lib/python2.6/SimpleHTTPServer.py
-SimpleXMLRPCServer|/usr/lib/python2.6/SimpleXMLRPCServer.py
-SocketServer|/usr/lib/python2.6/SocketServer.py
-SpiderImagePlugin|/usr/lib/python2.6/dist-packages/PIL/SpiderImagePlugin.py
-StringIO|/usr/lib/python2.6/StringIO.py
-SunImagePlugin|/usr/lib/python2.6/dist-packages/PIL/SunImagePlugin.py
-TYPES|/usr/lib/python2.6/plat-linux2/TYPES.py
-TarIO|/usr/lib/python2.6/dist-packages/PIL/TarIO.py
-TgaImagePlugin|/usr/lib/python2.6/dist-packages/PIL/TgaImagePlugin.py
-TiffImagePlugin|/usr/lib/python2.6/dist-packages/PIL/TiffImagePlugin.py
-TiffTags|/usr/lib/python2.6/dist-packages/PIL/TiffTags.py
-Tix|/usr/lib/python2.6/lib-tk/Tix.py
-Tkconstants|/usr/lib/python2.6/lib-tk/Tkconstants.py
-Tkdnd|/usr/lib/python2.6/lib-tk/Tkdnd.py
-Tkinter|/usr/lib/python2.6/lib-tk/Tkinter.py
-UbuntuSystemService.__init__|/usr/lib/python2.6/dist-packages/UbuntuSystemService/__init__.py
-UbuntuSystemService.utils|/usr/lib/python2.6/dist-packages/UbuntuSystemService/utils.py
-UpdateManager.ChangelogViewer|/usr/lib/python2.6/dist-packages/UpdateManager/ChangelogViewer.py
-UpdateManager.Core.AlertWatcher|/usr/lib/python2.6/dist-packages/UpdateManager/Core/AlertWatcher.py
-UpdateManager.Core.DistUpgradeFetcherCore|/usr/lib/python2.6/dist-packages/UpdateManager/Core/DistUpgradeFetcherCore.py
-UpdateManager.Core.MetaRelease|/usr/lib/python2.6/dist-packages/UpdateManager/Core/MetaRelease.py
-UpdateManager.Core.MyCache|/usr/lib/python2.6/dist-packages/UpdateManager/Core/MyCache.py
-UpdateManager.Core.UpdateList|/usr/lib/python2.6/dist-packages/UpdateManager/Core/UpdateList.py
-UpdateManager.Core.__init__|/usr/lib/python2.6/dist-packages/UpdateManager/Core/__init__.py
-UpdateManager.Core.utils|/usr/lib/python2.6/dist-packages/UpdateManager/Core/utils.py
-UpdateManager.DistUpgradeFetcher|/usr/lib/python2.6/dist-packages/UpdateManager/DistUpgradeFetcher.py
-UpdateManager.GtkProgress|/usr/lib/python2.6/dist-packages/UpdateManager/GtkProgress.py
-UpdateManager.HelpViewer|/usr/lib/python2.6/dist-packages/UpdateManager/HelpViewer.py
-UpdateManager.MetaReleaseGObject|/usr/lib/python2.6/dist-packages/UpdateManager/MetaReleaseGObject.py
-UpdateManager.ReleaseNotesViewer|/usr/lib/python2.6/dist-packages/UpdateManager/ReleaseNotesViewer.py
-UpdateManager.SafeGConfClient|/usr/lib/python2.6/dist-packages/UpdateManager/SafeGConfClient.py
-UpdateManager.SimpleGtkbuilderApp|/usr/lib/python2.6/dist-packages/UpdateManager/SimpleGtkbuilderApp.py
-UpdateManager.UpdateManager|/usr/lib/python2.6/dist-packages/UpdateManager/UpdateManager.py
-UpdateManager.__init__|/usr/lib/python2.6/dist-packages/UpdateManager/__init__.py
-UpdateManager.backend.InstallBackendAptdaemon|/usr/lib/python2.6/dist-packages/UpdateManager/backend/InstallBackendAptdaemon.py
-UpdateManager.backend.InstallBackendSynaptic|/usr/lib/python2.6/dist-packages/UpdateManager/backend/InstallBackendSynaptic.py
-UpdateManager.backend.__init__|/usr/lib/python2.6/dist-packages/UpdateManager/backend/__init__.py
-UpdateManager.fdsend|/usr/lib/python2.6/dist-packages/UpdateManager/fdsend.so
-UserDict|/usr/lib/python2.6/UserDict.py
-UserList|/usr/lib/python2.6/UserList.py
-UserString|/usr/lib/python2.6/UserString.py
-WalImageFile|/usr/lib/python2.6/dist-packages/PIL/WalImageFile.py
-WmfImagePlugin|/usr/lib/python2.6/dist-packages/PIL/WmfImagePlugin.py
-XKit.__init__|/usr/lib/python2.6/dist-packages/XKit/__init__.py
-XKit.xorgparser|/usr/lib/python2.6/dist-packages/XKit/xorgparser.py
-XKit.xutils|/usr/lib/python2.6/dist-packages/XKit/xutils.py
-XVThumbImagePlugin|/usr/lib/python2.6/dist-packages/PIL/XVThumbImagePlugin.py
-XbmImagePlugin|/usr/lib/python2.6/dist-packages/PIL/XbmImagePlugin.py
-XpmImagePlugin|/usr/lib/python2.6/dist-packages/PIL/XpmImagePlugin.py
-_LWPCookieJar|/usr/lib/python2.6/_LWPCookieJar.py
-_MozillaCookieJar|/usr/lib/python2.6/_MozillaCookieJar.py
-__builtin__
-__future__|/usr/lib/python2.6/__future__.py
-__init__|/usr/lib/python2.6/dist-packages/PIL/__init__.py
-__main__
-__phello__.foo|/usr/lib/python2.6/__phello__.foo.py
-_abcoll|/usr/lib/python2.6/_abcoll.py
-_ast
-_bisect
-_bsddb|/usr/lib/python2.6/lib-dynload/_bsddb.so
-_bytesio|/usr/lib/python2.6/lib-dynload/_bytesio.so
-_codecs
-_codecs_cn|/usr/lib/python2.6/lib-dynload/_codecs_cn.so
-_codecs_hk|/usr/lib/python2.6/lib-dynload/_codecs_hk.so
-_codecs_iso2022|/usr/lib/python2.6/lib-dynload/_codecs_iso2022.so
-_codecs_jp|/usr/lib/python2.6/lib-dynload/_codecs_jp.so
-_codecs_kr|/usr/lib/python2.6/lib-dynload/_codecs_kr.so
-_codecs_tw|/usr/lib/python2.6/lib-dynload/_codecs_tw.so
-_collections
-_csv|/usr/lib/python2.6/lib-dynload/_csv.so
-_ctypes|/usr/lib/python2.6/lib-dynload/_ctypes.so
-_ctypes_test|/usr/lib/python2.6/lib-dynload/_ctypes_test.so
-_curses|/usr/lib/python2.6/lib-dynload/_curses.so
-_curses_panel|/usr/lib/python2.6/lib-dynload/_curses_panel.so
-_dbus_bindings|/usr/lib/pymodules/python2.6/_dbus_bindings.so
-_dbus_glib_bindings|/usr/lib/pymodules/python2.6/_dbus_glib_bindings.so
-_elementtree|/usr/lib/python2.6/lib-dynload/_elementtree.so
-_fileio|/usr/lib/python2.6/lib-dynload/_fileio.so
-_functools
-_hashlib
-_heapq|/usr/lib/python2.6/lib-dynload/_heapq.so
-_hotshot|/usr/lib/python2.6/lib-dynload/_hotshot.so
-_imaging|/usr/lib/python2.6/dist-packages/PIL/_imaging.so
-_imagingcms|/usr/lib/python2.6/dist-packages/PIL/_imagingcms.so
-_imagingft|/usr/lib/python2.6/dist-packages/PIL/_imagingft.so
-_imagingmath|/usr/lib/python2.6/dist-packages/PIL/_imagingmath.so
-_json|/usr/lib/python2.6/lib-dynload/_json.so
-_locale
-_lsprof|/usr/lib/python2.6/lib-dynload/_lsprof.so
-_md5
-_multibytecodec|/usr/lib/python2.6/lib-dynload/_multibytecodec.so
-_multiprocessing|/usr/lib/python2.6/lib-dynload/_multiprocessing.so
-_random
-_sha
-_sha256
-_sha512
-_snackmodule|/usr/lib/python2.6/dist-packages/_snackmodule.so
-_socket
-_sqlite3|/usr/lib/python2.6/lib-dynload/_sqlite3.so
-_sre
-_ssl
-_strptime|/usr/lib/python2.6/_strptime.py
-_struct
-_subprocess
-_symtable
-_testcapi|/usr/lib/python2.6/lib-dynload/_testcapi.so
-_threading_local|/usr/lib/python2.6/_threading_local.py
-_warnings
-_weakref
-_winreg
-_xapian|/usr/lib/python2.6/dist-packages/_xapian.so
-abc|/usr/lib/python2.6/abc.py
-aifc|/usr/lib/python2.6/aifc.py
-anydbm|/usr/lib/python2.6/anydbm.py
-appindicator.__init__|/usr/lib/python2.6/dist-packages/appindicator/__init__.py
-appindicator._appindicator|/usr/lib/python2.6/dist-packages/appindicator/_appindicator.so
-apport.REThread|/usr/lib/python2.6/dist-packages/apport/REThread.py
-apport.__init__|/usr/lib/python2.6/dist-packages/apport/__init__.py
-apport.chroot|/usr/lib/python2.6/dist-packages/apport/chroot.py
-apport.crashdb|/usr/lib/python2.6/dist-packages/apport/crashdb.py
-apport.crashdb_impl.__init__|/usr/lib/python2.6/dist-packages/apport/crashdb_impl/__init__.py
-apport.crashdb_impl.launchpad|/usr/lib/python2.6/dist-packages/apport/crashdb_impl/launchpad.py
-apport.crashdb_impl.memory|/usr/lib/python2.6/dist-packages/apport/crashdb_impl/memory.py
-apport.crashdb_impl.multipartpost_handler|/usr/lib/python2.6/dist-packages/apport/crashdb_impl/multipartpost_handler.py
-apport.fileutils|/usr/lib/python2.6/dist-packages/apport/fileutils.py
-apport.hookutils|/usr/lib/python2.6/dist-packages/apport/hookutils.py
-apport.packaging|/usr/lib/python2.6/dist-packages/apport/packaging.py
-apport.packaging_impl|/usr/lib/python2.6/dist-packages/apport/packaging_impl.py
-apport.report|/usr/lib/python2.6/dist-packages/apport/report.py
-apport.ui|/usr/lib/python2.6/dist-packages/apport/ui.py
-apport_python_hook|/usr/lib/python2.6/dist-packages/apport_python_hook.py
-apt.__init__|/usr/lib/python2.6/dist-packages/apt/__init__.py
-apt.cache|/usr/lib/python2.6/dist-packages/apt/cache.py
-apt.cdrom|/usr/lib/python2.6/dist-packages/apt/cdrom.py
-apt.debfile|/usr/lib/python2.6/dist-packages/apt/debfile.py
-apt.deprecation|/usr/lib/python2.6/dist-packages/apt/deprecation.py
-apt.package|/usr/lib/python2.6/dist-packages/apt/package.py
-apt.progress.__init__|/usr/lib/python2.6/dist-packages/apt/progress/__init__.py
-apt.progress.base|/usr/lib/python2.6/dist-packages/apt/progress/base.py
-apt.progress.gtk2|/usr/lib/python2.6/dist-packages/apt/progress/gtk2.py
-apt.progress.old|/usr/lib/python2.6/dist-packages/apt/progress/old.py
-apt.progress.text|/usr/lib/python2.6/dist-packages/apt/progress/text.py
-apt.utils|/usr/lib/python2.6/dist-packages/apt/utils.py
-apt_inst|/usr/lib/python2.6/dist-packages/apt_inst.so
-apt_pkg|/usr/lib/python2.6/dist-packages/apt_pkg.so
-aptdaemon.__init__|/usr/lib/python2.6/dist-packages/aptdaemon/__init__.py
-aptdaemon.client|/usr/lib/python2.6/dist-packages/aptdaemon/client.py
-aptdaemon.console|/usr/lib/python2.6/dist-packages/aptdaemon/console.py
-aptdaemon.core|/usr/lib/python2.6/dist-packages/aptdaemon/core.py
-aptdaemon.debconf|/usr/lib/python2.6/dist-packages/aptdaemon/debconf.py
-aptdaemon.defer|/usr/lib/python2.6/dist-packages/aptdaemon/defer.py
-aptdaemon.enums|/usr/lib/python2.6/dist-packages/aptdaemon/enums.py
-aptdaemon.errors|/usr/lib/python2.6/dist-packages/aptdaemon/errors.py
-aptdaemon.gtkwidgets|/usr/lib/python2.6/dist-packages/aptdaemon/gtkwidgets.py
-aptdaemon.lock|/usr/lib/python2.6/dist-packages/aptdaemon/lock.py
-aptdaemon.loop|/usr/lib/python2.6/dist-packages/aptdaemon/loop.py
-aptdaemon.policykit1|/usr/lib/python2.6/dist-packages/aptdaemon/policykit1.py
-aptdaemon.progress|/usr/lib/python2.6/dist-packages/aptdaemon/progress.py
-aptdaemon.worker|/usr/lib/python2.6/dist-packages/aptdaemon/worker.py
-aptsources.__init__|/usr/lib/python2.6/dist-packages/aptsources/__init__.py
-aptsources.distinfo|/usr/lib/python2.6/dist-packages/aptsources/distinfo.py
-aptsources.distro|/usr/lib/python2.6/dist-packages/aptsources/distro.py
-aptsources.sourceslist|/usr/lib/python2.6/dist-packages/aptsources/sourceslist.py
-array
-ast|/usr/lib/python2.6/ast.py
-asynchat|/usr/lib/python2.6/asynchat.py
-asyncore|/usr/lib/python2.6/asyncore.py
-atexit|/usr/lib/python2.6/atexit.py
-atk|/usr/lib/pymodules/python2.6/gtk-2.0/atk.so
-audiodev|/usr/lib/python2.6/audiodev.py
-audioop|/usr/lib/python2.6/lib-dynload/audioop.so
-avahi.ServiceTypeDatabase|/usr/lib/pymodules/python2.6/avahi/ServiceTypeDatabase.py
-avahi.__init__|/usr/lib/pymodules/python2.6/avahi/__init__.py
-axi.__init__|/usr/lib/pymodules/python2.6/axi/__init__.py
-axi.indexer|/usr/lib/pymodules/python2.6/axi/indexer.py
-base64|/usr/lib/python2.6/base64.py
-bdb|/usr/lib/python2.6/bdb.py
-binascii
-binhex|/usr/lib/python2.6/binhex.py
-bisect|/usr/lib/python2.6/bisect.py
-bonobo.__init__|/usr/lib/pymodules/python2.6/gtk-2.0/bonobo/__init__.py
-bonobo._bonobo|/usr/lib/pymodules/python2.6/gtk-2.0/bonobo/_bonobo.so
-bonobo.activation|/usr/lib/pymodules/python2.6/gtk-2.0/bonobo/activation.so
-bonobo.ui|/usr/lib/pymodules/python2.6/gtk-2.0/bonobo/ui.so
-bsddb.__init__|/usr/lib/python2.6/bsddb/__init__.py
-bsddb.db|/usr/lib/python2.6/bsddb/db.py
-bsddb.dbobj|/usr/lib/python2.6/bsddb/dbobj.py
-bsddb.dbrecio|/usr/lib/python2.6/bsddb/dbrecio.py
-bsddb.dbshelve|/usr/lib/python2.6/bsddb/dbshelve.py
-bsddb.dbtables|/usr/lib/python2.6/bsddb/dbtables.py
-bsddb.dbutils|/usr/lib/python2.6/bsddb/dbutils.py
-bz2|/usr/lib/python2.6/lib-dynload/bz2.so
-cPickle
-cProfile|/usr/lib/python2.6/cProfile.py
-cStringIO
-cairo.__init__|/usr/lib/pymodules/python2.6/cairo/__init__.py
-cairo._cairo|/usr/lib/pymodules/python2.6/cairo/_cairo.so
-calendar|/usr/lib/python2.6/calendar.py
-cdrom|/usr/lib/pymodules/python2.6/cdrom.so
-cgi|/usr/lib/python2.6/cgi.py
-cgitb|/usr/lib/python2.6/cgitb.py
-chardet.__init__|/usr/lib/pymodules/python2.6/chardet/__init__.py
-chardet.big5freq|/usr/lib/pymodules/python2.6/chardet/big5freq.py
-chardet.big5prober|/usr/lib/pymodules/python2.6/chardet/big5prober.py
-chardet.chardistribution|/usr/lib/pymodules/python2.6/chardet/chardistribution.py
-chardet.charsetgroupprober|/usr/lib/pymodules/python2.6/chardet/charsetgroupprober.py
-chardet.charsetprober|/usr/lib/pymodules/python2.6/chardet/charsetprober.py
-chardet.codingstatemachine|/usr/lib/pymodules/python2.6/chardet/codingstatemachine.py
-chardet.constants|/usr/lib/pymodules/python2.6/chardet/constants.py
-chardet.escprober|/usr/lib/pymodules/python2.6/chardet/escprober.py
-chardet.escsm|/usr/lib/pymodules/python2.6/chardet/escsm.py
-chardet.eucjpprober|/usr/lib/pymodules/python2.6/chardet/eucjpprober.py
-chardet.euckrfreq|/usr/lib/pymodules/python2.6/chardet/euckrfreq.py
-chardet.euckrprober|/usr/lib/pymodules/python2.6/chardet/euckrprober.py
-chardet.euctwfreq|/usr/lib/pymodules/python2.6/chardet/euctwfreq.py
-chardet.euctwprober|/usr/lib/pymodules/python2.6/chardet/euctwprober.py
-chardet.gb2312freq|/usr/lib/pymodules/python2.6/chardet/gb2312freq.py
-chardet.gb2312prober|/usr/lib/pymodules/python2.6/chardet/gb2312prober.py
-chardet.hebrewprober|/usr/lib/pymodules/python2.6/chardet/hebrewprober.py
-chardet.jisfreq|/usr/lib/pymodules/python2.6/chardet/jisfreq.py
-chardet.jpcntx|/usr/lib/pymodules/python2.6/chardet/jpcntx.py
-chardet.langbulgarianmodel|/usr/lib/pymodules/python2.6/chardet/langbulgarianmodel.py
-chardet.langcyrillicmodel|/usr/lib/pymodules/python2.6/chardet/langcyrillicmodel.py
-chardet.langgreekmodel|/usr/lib/pymodules/python2.6/chardet/langgreekmodel.py
-chardet.langhebrewmodel|/usr/lib/pymodules/python2.6/chardet/langhebrewmodel.py
-chardet.langhungarianmodel|/usr/lib/pymodules/python2.6/chardet/langhungarianmodel.py
-chardet.langthaimodel|/usr/lib/pymodules/python2.6/chardet/langthaimodel.py
-chardet.latin1prober|/usr/lib/pymodules/python2.6/chardet/latin1prober.py
-chardet.mbcharsetprober|/usr/lib/pymodules/python2.6/chardet/mbcharsetprober.py
-chardet.mbcsgroupprober|/usr/lib/pymodules/python2.6/chardet/mbcsgroupprober.py
-chardet.mbcssm|/usr/lib/pymodules/python2.6/chardet/mbcssm.py
-chardet.sbcharsetprober|/usr/lib/pymodules/python2.6/chardet/sbcharsetprober.py
-chardet.sbcsgroupprober|/usr/lib/pymodules/python2.6/chardet/sbcsgroupprober.py
-chardet.sjisprober|/usr/lib/pymodules/python2.6/chardet/sjisprober.py
-chardet.test|/usr/lib/pymodules/python2.6/chardet/test.py
-chardet.universaldetector|/usr/lib/pymodules/python2.6/chardet/universaldetector.py
-chardet.utf8prober|/usr/lib/pymodules/python2.6/chardet/utf8prober.py
-chunk|/usr/lib/python2.6/chunk.py
-cmath|/usr/lib/python2.6/lib-dynload/cmath.so
-cmd|/usr/lib/python2.6/cmd.py
-code|/usr/lib/python2.6/code.py
-codecs|/usr/lib/python2.6/codecs.py
-codeop|/usr/lib/python2.6/codeop.py
-collections|/usr/lib/python2.6/collections.py
-colorsys|/usr/lib/python2.6/colorsys.py
-commands|/usr/lib/python2.6/commands.py
-compileall|/usr/lib/python2.6/compileall.py
-compiler.__init__|/usr/lib/python2.6/compiler/__init__.py
-compiler.ast|/usr/lib/python2.6/compiler/ast.py
-compiler.consts|/usr/lib/python2.6/compiler/consts.py
-compiler.future|/usr/lib/python2.6/compiler/future.py
-compiler.misc|/usr/lib/python2.6/compiler/misc.py
-compiler.pyassem|/usr/lib/python2.6/compiler/pyassem.py
-compiler.pycodegen|/usr/lib/python2.6/compiler/pycodegen.py
-compiler.symbols|/usr/lib/python2.6/compiler/symbols.py
-compiler.syntax|/usr/lib/python2.6/compiler/syntax.py
-compiler.transformer|/usr/lib/python2.6/compiler/transformer.py
-compiler.visitor|/usr/lib/python2.6/compiler/visitor.py
-computerjanitor.__init__|/usr/lib/python2.6/dist-packages/computerjanitor/__init__.py
-computerjanitor.cruft|/usr/lib/python2.6/dist-packages/computerjanitor/cruft.py
-computerjanitor.cruft_tests|/usr/lib/python2.6/dist-packages/computerjanitor/cruft_tests.py
-computerjanitor.exc|/usr/lib/python2.6/dist-packages/computerjanitor/exc.py
-computerjanitor.exc_tests|/usr/lib/python2.6/dist-packages/computerjanitor/exc_tests.py
-computerjanitor.file_cruft|/usr/lib/python2.6/dist-packages/computerjanitor/file_cruft.py
-computerjanitor.file_cruft_tests|/usr/lib/python2.6/dist-packages/computerjanitor/file_cruft_tests.py
-computerjanitor.missing_package_cruft|/usr/lib/python2.6/dist-packages/computerjanitor/missing_package_cruft.py
-computerjanitor.missing_package_cruft_tests|/usr/lib/python2.6/dist-packages/computerjanitor/missing_package_cruft_tests.py
-computerjanitor.package_cruft|/usr/lib/python2.6/dist-packages/computerjanitor/package_cruft.py
-computerjanitor.package_cruft_tests|/usr/lib/python2.6/dist-packages/computerjanitor/package_cruft_tests.py
-computerjanitor.plugin|/usr/lib/python2.6/dist-packages/computerjanitor/plugin.py
-computerjanitor.plugin_tests|/usr/lib/python2.6/dist-packages/computerjanitor/plugin_tests.py
-configglue.__init__|/usr/lib/python2.6/dist-packages/configglue/__init__.py
-configglue.inischema.__init__|/usr/lib/python2.6/dist-packages/configglue/inischema/__init__.py
-configglue.inischema.attributed|/usr/lib/python2.6/dist-packages/configglue/inischema/attributed.py
-configglue.inischema.glue|/usr/lib/python2.6/dist-packages/configglue/inischema/glue.py
-configglue.inischema.parsers|/usr/lib/python2.6/dist-packages/configglue/inischema/parsers.py
-configglue.inischema.typed|/usr/lib/python2.6/dist-packages/configglue/inischema/typed.py
-configglue.pyschema.__init__|/usr/lib/python2.6/dist-packages/configglue/pyschema/__init__.py
-configglue.pyschema.options|/usr/lib/python2.6/dist-packages/configglue/pyschema/options.py
-configglue.pyschema.parser|/usr/lib/python2.6/dist-packages/configglue/pyschema/parser.py
-configglue.pyschema.schema|/usr/lib/python2.6/dist-packages/configglue/pyschema/schema.py
-contextlib|/usr/lib/python2.6/contextlib.py
-cookielib|/usr/lib/python2.6/cookielib.py
-copy|/usr/lib/python2.6/copy.py
-copy_reg|/usr/lib/python2.6/copy_reg.py
-couchdb.__init__|/usr/lib/pymodules/python2.6/couchdb/__init__.py
-couchdb.client|/usr/lib/pymodules/python2.6/couchdb/client.py
-couchdb.design|/usr/lib/pymodules/python2.6/couchdb/design.py
-couchdb.json|/usr/lib/pymodules/python2.6/couchdb/json.py
-couchdb.multipart|/usr/lib/pymodules/python2.6/couchdb/multipart.py
-couchdb.schema|/usr/lib/pymodules/python2.6/couchdb/schema.py
-couchdb.tools.__init__|/usr/lib/pymodules/python2.6/couchdb/tools/__init__.py
-couchdb.tools.dump|/usr/lib/pymodules/python2.6/couchdb/tools/dump.py
-couchdb.tools.load|/usr/lib/pymodules/python2.6/couchdb/tools/load.py
-couchdb.tools.replication_helper|/usr/lib/pymodules/python2.6/couchdb/tools/replication_helper.py
-couchdb.tools.replication_helper_test|/usr/lib/pymodules/python2.6/couchdb/tools/replication_helper_test.py
-couchdb.view|/usr/lib/pymodules/python2.6/couchdb/view.py
-crypt|/usr/lib/python2.6/lib-dynload/crypt.so
-csv|/usr/lib/python2.6/csv.py
-ctypes.__init__|/usr/lib/python2.6/ctypes/__init__.py
-ctypes._endian|/usr/lib/python2.6/ctypes/_endian.py
-ctypes.util|/usr/lib/python2.6/ctypes/util.py
-ctypes.wintypes|/usr/lib/python2.6/ctypes/wintypes.py
-cups|/usr/lib/pymodules/python2.6/cups.so
-cupsext|/usr/lib/pymodules/python2.6/cupsext.so
-cupshelpers.__init__|/usr/lib/pymodules/python2.6/cupshelpers/__init__.py
-cupshelpers.cupshelpers|/usr/lib/pymodules/python2.6/cupshelpers/cupshelpers.py
-cupshelpers.openprinting|/usr/lib/pymodules/python2.6/cupshelpers/openprinting.py
-cupshelpers.ppds|/usr/lib/pymodules/python2.6/cupshelpers/ppds.py
-curl.__init__|/usr/lib/pymodules/python2.6/curl/__init__.py
-curses.__init__|/usr/lib/python2.6/curses/__init__.py
-curses.ascii|/usr/lib/python2.6/curses/ascii.py
-curses.has_key|/usr/lib/python2.6/curses/has_key.py
-curses.panel|/usr/lib/python2.6/curses/panel.py
-curses.textpad|/usr/lib/python2.6/curses/textpad.py
-curses.wrapper|/usr/lib/python2.6/curses/wrapper.py
-datetime|/usr/lib/python2.6/lib-dynload/datetime.so
-dateutil.__init__|/usr/lib/pymodules/python2.6/dateutil/__init__.py
-dateutil.easter|/usr/lib/pymodules/python2.6/dateutil/easter.py
-dateutil.parser|/usr/lib/pymodules/python2.6/dateutil/parser.py
-dateutil.relativedelta|/usr/lib/pymodules/python2.6/dateutil/relativedelta.py
-dateutil.rrule|/usr/lib/pymodules/python2.6/dateutil/rrule.py
-dateutil.tz|/usr/lib/pymodules/python2.6/dateutil/tz.py
-dateutil.tzwin|/usr/lib/pymodules/python2.6/dateutil/tzwin.py
-dateutil.zoneinfo.__init__|/usr/lib/pymodules/python2.6/dateutil/zoneinfo/__init__.py
-dbhash|/usr/lib/python2.6/dbhash.py
-dbm|/usr/lib/python2.6/lib-dynload/dbm.so
-dbus.__init__|/usr/lib/pymodules/python2.6/dbus/__init__.py
-dbus._dbus|/usr/lib/pymodules/python2.6/dbus/_dbus.py
-dbus._expat_introspect_parser|/usr/lib/pymodules/python2.6/dbus/_expat_introspect_parser.py
-dbus._version|/usr/lib/pymodules/python2.6/dbus/_version.py
-dbus.bus|/usr/lib/pymodules/python2.6/dbus/bus.py
-dbus.connection|/usr/lib/pymodules/python2.6/dbus/connection.py
-dbus.dbus_bindings|/usr/lib/pymodules/python2.6/dbus/dbus_bindings.py
-dbus.decorators|/usr/lib/pymodules/python2.6/dbus/decorators.py
-dbus.exceptions|/usr/lib/pymodules/python2.6/dbus/exceptions.py
-dbus.glib|/usr/lib/pymodules/python2.6/dbus/glib.py
-dbus.gobject_service|/usr/lib/pymodules/python2.6/dbus/gobject_service.py
-dbus.lowlevel|/usr/lib/pymodules/python2.6/dbus/lowlevel.py
-dbus.mainloop.__init__|/usr/lib/pymodules/python2.6/dbus/mainloop/__init__.py
-dbus.mainloop.glib|/usr/lib/pymodules/python2.6/dbus/mainloop/glib.py
-dbus.mainloop.qt|/usr/lib/pymodules/python2.6/dbus/mainloop/qt.so
-dbus.proxies|/usr/lib/pymodules/python2.6/dbus/proxies.py
-dbus.server|/usr/lib/pymodules/python2.6/dbus/server.py
-dbus.service|/usr/lib/pymodules/python2.6/dbus/service.py
-dbus.types|/usr/lib/pymodules/python2.6/dbus/types.py
-dbus_bindings|/usr/lib/pymodules/python2.6/dbus_bindings.py
-deb822|/usr/lib/pymodules/python2.6/deb822.py
-debconf|/usr/lib/python2.6/dist-packages/debconf.py
-debian.__init__|/usr/lib/pymodules/python2.6/debian/__init__.py
-debian.arfile|/usr/lib/pymodules/python2.6/debian/arfile.py
-debian.changelog|/usr/lib/pymodules/python2.6/debian/changelog.py
-debian.deb822|/usr/lib/pymodules/python2.6/debian/deb822.py
-debian.debfile|/usr/lib/pymodules/python2.6/debian/debfile.py
-debian.debian_support|/usr/lib/pymodules/python2.6/debian/debian_support.py
-debian.debtags|/usr/lib/pymodules/python2.6/debian/debtags.py
-debian.deprecation|/usr/lib/pymodules/python2.6/debian/deprecation.py
-debian_bundle.__init__|/usr/lib/pymodules/python2.6/debian_bundle/__init__.py
-decimal|/usr/lib/python2.6/decimal.py
-desktopcouch.__init__|/usr/lib/python2.6/dist-packages/desktopcouch/__init__.py
-desktopcouch.bookmarks.__init__|/usr/lib/python2.6/dist-packages/desktopcouch/bookmarks/__init__.py
-desktopcouch.bookmarks.record|/usr/lib/python2.6/dist-packages/desktopcouch/bookmarks/record.py
-desktopcouch.contacts.__init__|/usr/lib/python2.6/dist-packages/desktopcouch/contacts/__init__.py
-desktopcouch.contacts.contactspicker|/usr/lib/python2.6/dist-packages/desktopcouch/contacts/contactspicker.py
-desktopcouch.contacts.record|/usr/lib/python2.6/dist-packages/desktopcouch/contacts/record.py
-desktopcouch.contacts.testing.__init__|/usr/lib/python2.6/dist-packages/desktopcouch/contacts/testing/__init__.py
-desktopcouch.contacts.testing.create|/usr/lib/python2.6/dist-packages/desktopcouch/contacts/testing/create.py
-desktopcouch.contacts.view|/usr/lib/python2.6/dist-packages/desktopcouch/contacts/view.py
-desktopcouch.local_files|/usr/lib/python2.6/dist-packages/desktopcouch/local_files.py
-desktopcouch.notes.__init__|/usr/lib/python2.6/dist-packages/desktopcouch/notes/__init__.py
-desktopcouch.notes.record|/usr/lib/python2.6/dist-packages/desktopcouch/notes/record.py
-desktopcouch.pair.__init__|/usr/lib/python2.6/dist-packages/desktopcouch/pair/__init__.py
-desktopcouch.pair.couchdb_pairing.__init__|/usr/lib/python2.6/dist-packages/desktopcouch/pair/couchdb_pairing/__init__.py
-desktopcouch.pair.couchdb_pairing.couchdb_io|/usr/lib/python2.6/dist-packages/desktopcouch/pair/couchdb_pairing/couchdb_io.py
-desktopcouch.pair.couchdb_pairing.dbus_io|/usr/lib/python2.6/dist-packages/desktopcouch/pair/couchdb_pairing/dbus_io.py
-desktopcouch.pair.couchdb_pairing.network_io|/usr/lib/python2.6/dist-packages/desktopcouch/pair/couchdb_pairing/network_io.py
-desktopcouch.pair.couchdb_pairing.ubuntuone_pairing|/usr/lib/python2.6/dist-packages/desktopcouch/pair/couchdb_pairing/ubuntuone_pairing.py
-desktopcouch.records.__init__|/usr/lib/python2.6/dist-packages/desktopcouch/records/__init__.py
-desktopcouch.records.couchgrid|/usr/lib/python2.6/dist-packages/desktopcouch/records/couchgrid.py
-desktopcouch.records.field_registry|/usr/lib/python2.6/dist-packages/desktopcouch/records/field_registry.py
-desktopcouch.records.record|/usr/lib/python2.6/dist-packages/desktopcouch/records/record.py
-desktopcouch.records.server|/usr/lib/python2.6/dist-packages/desktopcouch/records/server.py
-desktopcouch.records.server_base|/usr/lib/python2.6/dist-packages/desktopcouch/records/server_base.py
-desktopcouch.replication|/usr/lib/python2.6/dist-packages/desktopcouch/replication.py
-desktopcouch.replication_services.__init__|/usr/lib/python2.6/dist-packages/desktopcouch/replication_services/__init__.py
-desktopcouch.replication_services.example|/usr/lib/python2.6/dist-packages/desktopcouch/replication_services/example.py
-desktopcouch.replication_services.ubuntuone|/usr/lib/python2.6/dist-packages/desktopcouch/replication_services/ubuntuone.py
-desktopcouch.start_local_couchdb|/usr/lib/python2.6/dist-packages/desktopcouch/start_local_couchdb.py
-desktopcouch.stop_local_couchdb|/usr/lib/python2.6/dist-packages/desktopcouch/stop_local_couchdb.py
-desktopcouch.tasks.__init__|/usr/lib/python2.6/dist-packages/desktopcouch/tasks/__init__.py
-desktopcouch.tasks.record|/usr/lib/python2.6/dist-packages/desktopcouch/tasks/record.py
-difflib|/usr/lib/python2.6/difflib.py
-dircache|/usr/lib/python2.6/dircache.py
-dis|/usr/lib/python2.6/dis.py
-distutils.__init__|/usr/lib/python2.6/distutils/__init__.py
-distutils.archive_util|/usr/lib/python2.6/distutils/archive_util.py
-distutils.bcppcompiler|/usr/lib/python2.6/distutils/bcppcompiler.py
-distutils.ccompiler|/usr/lib/python2.6/distutils/ccompiler.py
-distutils.cmd|/usr/lib/python2.6/distutils/cmd.py
-distutils.command.__init__|/usr/lib/python2.6/distutils/command/__init__.py
-distutils.command.bdist|/usr/lib/python2.6/distutils/command/bdist.py
-distutils.command.bdist_dumb|/usr/lib/python2.6/distutils/command/bdist_dumb.py
-distutils.command.bdist_msi|/usr/lib/python2.6/distutils/command/bdist_msi.py
-distutils.command.bdist_rpm|/usr/lib/python2.6/distutils/command/bdist_rpm.py
-distutils.command.bdist_wininst|/usr/lib/python2.6/distutils/command/bdist_wininst.py
-distutils.command.build|/usr/lib/python2.6/distutils/command/build.py
-distutils.command.build_clib|/usr/lib/python2.6/distutils/command/build_clib.py
-distutils.command.build_ext|/usr/lib/python2.6/distutils/command/build_ext.py
-distutils.command.build_py|/usr/lib/python2.6/distutils/command/build_py.py
-distutils.command.build_scripts|/usr/lib/python2.6/distutils/command/build_scripts.py
-distutils.command.clean|/usr/lib/python2.6/distutils/command/clean.py
-distutils.command.config|/usr/lib/python2.6/distutils/command/config.py
-distutils.command.install|/usr/lib/python2.6/distutils/command/install.py
-distutils.command.install_data|/usr/lib/python2.6/distutils/command/install_data.py
-distutils.command.install_egg_info|/usr/lib/python2.6/distutils/command/install_egg_info.py
-distutils.command.install_headers|/usr/lib/python2.6/distutils/command/install_headers.py
-distutils.command.install_lib|/usr/lib/python2.6/distutils/command/install_lib.py
-distutils.command.install_scripts|/usr/lib/python2.6/distutils/command/install_scripts.py
-distutils.command.register|/usr/lib/python2.6/distutils/command/register.py
-distutils.command.sdist|/usr/lib/python2.6/distutils/command/sdist.py
-distutils.command.upload|/usr/lib/python2.6/distutils/command/upload.py
-distutils.config|/usr/lib/python2.6/distutils/config.py
-distutils.core|/usr/lib/python2.6/distutils/core.py
-distutils.cygwinccompiler|/usr/lib/python2.6/distutils/cygwinccompiler.py
-distutils.debug|/usr/lib/python2.6/distutils/debug.py
-distutils.dep_util|/usr/lib/python2.6/distutils/dep_util.py
-distutils.dir_util|/usr/lib/python2.6/distutils/dir_util.py
-distutils.dist|/usr/lib/python2.6/distutils/dist.py
-distutils.emxccompiler|/usr/lib/python2.6/distutils/emxccompiler.py
-distutils.errors|/usr/lib/python2.6/distutils/errors.py
-distutils.extension|/usr/lib/python2.6/distutils/extension.py
-distutils.fancy_getopt|/usr/lib/python2.6/distutils/fancy_getopt.py
-distutils.file_util|/usr/lib/python2.6/distutils/file_util.py
-distutils.filelist|/usr/lib/python2.6/distutils/filelist.py
-distutils.log|/usr/lib/python2.6/distutils/log.py
-distutils.msvc9compiler|/usr/lib/python2.6/distutils/msvc9compiler.py
-distutils.msvccompiler|/usr/lib/python2.6/distutils/msvccompiler.py
-distutils.mwerkscompiler|/usr/lib/python2.6/distutils/mwerkscompiler.py
-distutils.spawn|/usr/lib/python2.6/distutils/spawn.py
-distutils.sysconfig|/usr/lib/python2.6/distutils/sysconfig.py
-distutils.text_file|/usr/lib/python2.6/distutils/text_file.py
-distutils.unixccompiler|/usr/lib/python2.6/distutils/unixccompiler.py
-distutils.util|/usr/lib/python2.6/distutils/util.py
-distutils.version|/usr/lib/python2.6/distutils/version.py
-distutils.versionpredicate|/usr/lib/python2.6/distutils/versionpredicate.py
-dl|/usr/lib/python2.6/lib-dynload/dl.so
-docky.__init__|/usr/lib/pymodules/python2.6/docky/__init__.py
-docky.docky|/usr/lib/pymodules/python2.6/docky/docky.py
-doctest|/usr/lib/python2.6/doctest.py
-drv_libxml2|/usr/lib/pymodules/python2.6/drv_libxml2.py
-dsextras|/usr/lib/pymodules/python2.6/gtk-2.0/dsextras.py
-dumbdbm|/usr/lib/python2.6/dumbdbm.py
-dummy_thread|/usr/lib/python2.6/dummy_thread.py
-dummy_threading|/usr/lib/python2.6/dummy_threading.py
-email
-email.__init__|/usr/lib/python2.6/email/__init__.py
-email._parseaddr|/usr/lib/python2.6/email/_parseaddr.py
-email.base64mime|/usr/lib/python2.6/email/base64mime.py
-email.charset|/usr/lib/python2.6/email/charset.py
-email.encoders|/usr/lib/python2.6/email/encoders.py
-email.errors|/usr/lib/python2.6/email/errors.py
-email.feedparser|/usr/lib/python2.6/email/feedparser.py
-email.generator|/usr/lib/python2.6/email/generator.py
-email.header|/usr/lib/python2.6/email/header.py
-email.iterators|/usr/lib/python2.6/email/iterators.py
-email.message|/usr/lib/python2.6/email/message.py
-email.mime.__init__|/usr/lib/python2.6/email/mime/__init__.py
-email.mime.application|/usr/lib/python2.6/email/mime/application.py
-email.mime.audio|/usr/lib/python2.6/email/mime/audio.py
-email.mime.base|/usr/lib/python2.6/email/mime/base.py
-email.mime.image|/usr/lib/python2.6/email/mime/image.py
-email.mime.message|/usr/lib/python2.6/email/mime/message.py
-email.mime.multipart|/usr/lib/python2.6/email/mime/multipart.py
-email.mime.nonmultipart|/usr/lib/python2.6/email/mime/nonmultipart.py
-email.mime.text|/usr/lib/python2.6/email/mime/text.py
-email.parser|/usr/lib/python2.6/email/parser.py
-email.quoprimime|/usr/lib/python2.6/email/quoprimime.py
-email.utils|/usr/lib/python2.6/email/utils.py
-enchant.__init__|/usr/lib/pymodules/python2.6/enchant/__init__.py
-enchant._enchant|/usr/lib/pymodules/python2.6/enchant/_enchant.py
-enchant.checker.CmdLineChecker|/usr/lib/pymodules/python2.6/enchant/checker/CmdLineChecker.py
-enchant.checker.GtkSpellCheckerDialog|/usr/lib/pymodules/python2.6/enchant/checker/GtkSpellCheckerDialog.py
-enchant.checker.__init__|/usr/lib/pymodules/python2.6/enchant/checker/__init__.py
-enchant.checker.wxSpellCheckerDialog|/usr/lib/pymodules/python2.6/enchant/checker/wxSpellCheckerDialog.py
-enchant.pypwl|/usr/lib/pymodules/python2.6/enchant/pypwl.py
-enchant.tokenize.__init__|/usr/lib/pymodules/python2.6/enchant/tokenize/__init__.py
-enchant.tokenize.en|/usr/lib/pymodules/python2.6/enchant/tokenize/en.py
-enchant.utils|/usr/lib/pymodules/python2.6/enchant/utils.py
-encodings.__init__|/usr/lib/python2.6/encodings/__init__.py
-encodings.aliases|/usr/lib/python2.6/encodings/aliases.py
-encodings.ascii|/usr/lib/python2.6/encodings/ascii.py
-encodings.base64_codec|/usr/lib/python2.6/encodings/base64_codec.py
-encodings.big5|/usr/lib/python2.6/encodings/big5.py
-encodings.big5hkscs|/usr/lib/python2.6/encodings/big5hkscs.py
-encodings.bz2_codec|/usr/lib/python2.6/encodings/bz2_codec.py
-encodings.charmap|/usr/lib/python2.6/encodings/charmap.py
-encodings.cp037|/usr/lib/python2.6/encodings/cp037.py
-encodings.cp1006|/usr/lib/python2.6/encodings/cp1006.py
-encodings.cp1026|/usr/lib/python2.6/encodings/cp1026.py
-encodings.cp1140|/usr/lib/python2.6/encodings/cp1140.py
-encodings.cp1250|/usr/lib/python2.6/encodings/cp1250.py
-encodings.cp1251|/usr/lib/python2.6/encodings/cp1251.py
-encodings.cp1252|/usr/lib/python2.6/encodings/cp1252.py
-encodings.cp1253|/usr/lib/python2.6/encodings/cp1253.py
-encodings.cp1254|/usr/lib/python2.6/encodings/cp1254.py
-encodings.cp1255|/usr/lib/python2.6/encodings/cp1255.py
-encodings.cp1256|/usr/lib/python2.6/encodings/cp1256.py
-encodings.cp1257|/usr/lib/python2.6/encodings/cp1257.py
-encodings.cp1258|/usr/lib/python2.6/encodings/cp1258.py
-encodings.cp424|/usr/lib/python2.6/encodings/cp424.py
-encodings.cp437|/usr/lib/python2.6/encodings/cp437.py
-encodings.cp500|/usr/lib/python2.6/encodings/cp500.py
-encodings.cp737|/usr/lib/python2.6/encodings/cp737.py
-encodings.cp775|/usr/lib/python2.6/encodings/cp775.py
-encodings.cp850|/usr/lib/python2.6/encodings/cp850.py
-encodings.cp852|/usr/lib/python2.6/encodings/cp852.py
-encodings.cp855|/usr/lib/python2.6/encodings/cp855.py
-encodings.cp856|/usr/lib/python2.6/encodings/cp856.py
-encodings.cp857|/usr/lib/python2.6/encodings/cp857.py
-encodings.cp860|/usr/lib/python2.6/encodings/cp860.py
-encodings.cp861|/usr/lib/python2.6/encodings/cp861.py
-encodings.cp862|/usr/lib/python2.6/encodings/cp862.py
-encodings.cp863|/usr/lib/python2.6/encodings/cp863.py
-encodings.cp864|/usr/lib/python2.6/encodings/cp864.py
-encodings.cp865|/usr/lib/python2.6/encodings/cp865.py
-encodings.cp866|/usr/lib/python2.6/encodings/cp866.py
-encodings.cp869|/usr/lib/python2.6/encodings/cp869.py
-encodings.cp874|/usr/lib/python2.6/encodings/cp874.py
-encodings.cp875|/usr/lib/python2.6/encodings/cp875.py
-encodings.cp932|/usr/lib/python2.6/encodings/cp932.py
-encodings.cp949|/usr/lib/python2.6/encodings/cp949.py
-encodings.cp950|/usr/lib/python2.6/encodings/cp950.py
-encodings.euc_jis_2004|/usr/lib/python2.6/encodings/euc_jis_2004.py
-encodings.euc_jisx0213|/usr/lib/python2.6/encodings/euc_jisx0213.py
-encodings.euc_jp|/usr/lib/python2.6/encodings/euc_jp.py
-encodings.euc_kr|/usr/lib/python2.6/encodings/euc_kr.py
-encodings.gb18030|/usr/lib/python2.6/encodings/gb18030.py
-encodings.gb2312|/usr/lib/python2.6/encodings/gb2312.py
-encodings.gbk|/usr/lib/python2.6/encodings/gbk.py
-encodings.hex_codec|/usr/lib/python2.6/encodings/hex_codec.py
-encodings.hp_roman8|/usr/lib/python2.6/encodings/hp_roman8.py
-encodings.hz|/usr/lib/python2.6/encodings/hz.py
-encodings.idna|/usr/lib/python2.6/encodings/idna.py
-encodings.iso2022_jp|/usr/lib/python2.6/encodings/iso2022_jp.py
-encodings.iso2022_jp_1|/usr/lib/python2.6/encodings/iso2022_jp_1.py
-encodings.iso2022_jp_2|/usr/lib/python2.6/encodings/iso2022_jp_2.py
-encodings.iso2022_jp_2004|/usr/lib/python2.6/encodings/iso2022_jp_2004.py
-encodings.iso2022_jp_3|/usr/lib/python2.6/encodings/iso2022_jp_3.py
-encodings.iso2022_jp_ext|/usr/lib/python2.6/encodings/iso2022_jp_ext.py
-encodings.iso2022_kr|/usr/lib/python2.6/encodings/iso2022_kr.py
-encodings.iso8859_1|/usr/lib/python2.6/encodings/iso8859_1.py
-encodings.iso8859_10|/usr/lib/python2.6/encodings/iso8859_10.py
-encodings.iso8859_11|/usr/lib/python2.6/encodings/iso8859_11.py
-encodings.iso8859_13|/usr/lib/python2.6/encodings/iso8859_13.py
-encodings.iso8859_14|/usr/lib/python2.6/encodings/iso8859_14.py
-encodings.iso8859_15|/usr/lib/python2.6/encodings/iso8859_15.py
-encodings.iso8859_16|/usr/lib/python2.6/encodings/iso8859_16.py
-encodings.iso8859_2|/usr/lib/python2.6/encodings/iso8859_2.py
-encodings.iso8859_3|/usr/lib/python2.6/encodings/iso8859_3.py
-encodings.iso8859_4|/usr/lib/python2.6/encodings/iso8859_4.py
-encodings.iso8859_5|/usr/lib/python2.6/encodings/iso8859_5.py
-encodings.iso8859_6|/usr/lib/python2.6/encodings/iso8859_6.py
-encodings.iso8859_7|/usr/lib/python2.6/encodings/iso8859_7.py
-encodings.iso8859_8|/usr/lib/python2.6/encodings/iso8859_8.py
-encodings.iso8859_9|/usr/lib/python2.6/encodings/iso8859_9.py
-encodings.johab|/usr/lib/python2.6/encodings/johab.py
-encodings.koi8_r|/usr/lib/python2.6/encodings/koi8_r.py
-encodings.koi8_u|/usr/lib/python2.6/encodings/koi8_u.py
-encodings.latin_1|/usr/lib/python2.6/encodings/latin_1.py
-encodings.mac_arabic|/usr/lib/python2.6/encodings/mac_arabic.py
-encodings.mac_centeuro|/usr/lib/python2.6/encodings/mac_centeuro.py
-encodings.mac_croatian|/usr/lib/python2.6/encodings/mac_croatian.py
-encodings.mac_cyrillic|/usr/lib/python2.6/encodings/mac_cyrillic.py
-encodings.mac_farsi|/usr/lib/python2.6/encodings/mac_farsi.py
-encodings.mac_greek|/usr/lib/python2.6/encodings/mac_greek.py
-encodings.mac_iceland|/usr/lib/python2.6/encodings/mac_iceland.py
-encodings.mac_latin2|/usr/lib/python2.6/encodings/mac_latin2.py
-encodings.mac_roman|/usr/lib/python2.6/encodings/mac_roman.py
-encodings.mac_romanian|/usr/lib/python2.6/encodings/mac_romanian.py
-encodings.mac_turkish|/usr/lib/python2.6/encodings/mac_turkish.py
-encodings.mbcs|/usr/lib/python2.6/encodings/mbcs.py
-encodings.palmos|/usr/lib/python2.6/encodings/palmos.py
-encodings.ptcp154|/usr/lib/python2.6/encodings/ptcp154.py
-encodings.punycode|/usr/lib/python2.6/encodings/punycode.py
-encodings.quopri_codec|/usr/lib/python2.6/encodings/quopri_codec.py
-encodings.raw_unicode_escape|/usr/lib/python2.6/encodings/raw_unicode_escape.py
-encodings.rot_13|/usr/lib/python2.6/encodings/rot_13.py
-encodings.shift_jis|/usr/lib/python2.6/encodings/shift_jis.py
-encodings.shift_jis_2004|/usr/lib/python2.6/encodings/shift_jis_2004.py
-encodings.shift_jisx0213|/usr/lib/python2.6/encodings/shift_jisx0213.py
-encodings.string_escape|/usr/lib/python2.6/encodings/string_escape.py
-encodings.tis_620|/usr/lib/python2.6/encodings/tis_620.py
-encodings.undefined|/usr/lib/python2.6/encodings/undefined.py
-encodings.unicode_escape|/usr/lib/python2.6/encodings/unicode_escape.py
-encodings.unicode_internal|/usr/lib/python2.6/encodings/unicode_internal.py
-encodings.utf_16|/usr/lib/python2.6/encodings/utf_16.py
-encodings.utf_16_be|/usr/lib/python2.6/encodings/utf_16_be.py
-encodings.utf_16_le|/usr/lib/python2.6/encodings/utf_16_le.py
-encodings.utf_32|/usr/lib/python2.6/encodings/utf_32.py
-encodings.utf_32_be|/usr/lib/python2.6/encodings/utf_32_be.py
-encodings.utf_32_le|/usr/lib/python2.6/encodings/utf_32_le.py
-encodings.utf_7|/usr/lib/python2.6/encodings/utf_7.py
-encodings.utf_8|/usr/lib/python2.6/encodings/utf_8.py
-encodings.utf_8_sig|/usr/lib/python2.6/encodings/utf_8_sig.py
-encodings.uu_codec|/usr/lib/python2.6/encodings/uu_codec.py
-encodings.zlib_codec|/usr/lib/python2.6/encodings/zlib_codec.py
-errno
-evolution.__init__|/usr/lib/pymodules/python2.6/gtk-2.0/evolution/__init__.py
-evolution.ebook|/usr/lib/pymodules/python2.6/gtk-2.0/evolution/ebook.so
-evolution.ecal|/usr/lib/pymodules/python2.6/gtk-2.0/evolution/ecal.so
-exceptions
-fcntl
-fdpexpect|/usr/lib/python2.6/dist-packages/fdpexpect.py
-feedparser|/usr/lib/pymodules/python2.6/feedparser.py
-filecmp|/usr/lib/python2.6/filecmp.py
-fileinput|/usr/lib/python2.6/fileinput.py
-fnmatch|/usr/lib/python2.6/fnmatch.py
-formatter|/usr/lib/python2.6/formatter.py
-fpectl|/usr/lib/python2.6/lib-dynload/fpectl.so
-fpformat|/usr/lib/python2.6/fpformat.py
-fractions|/usr/lib/python2.6/fractions.py
-ftplib|/usr/lib/python2.6/ftplib.py
-functools|/usr/lib/python2.6/functools.py
-future_builtins|/usr/lib/python2.6/lib-dynload/future_builtins.so
-gc
-gconf|/usr/lib/pymodules/python2.6/gtk-2.0/gconf.so
-gdbm|/usr/lib/python2.6/lib-dynload/gdbm.so
-genericpath|/usr/lib/python2.6/genericpath.py
-getopt|/usr/lib/python2.6/getopt.py
-getpass|/usr/lib/python2.6/getpass.py
-gettext|/usr/lib/python2.6/gettext.py
-gi.__init__|/usr/lib/pymodules/python2.6/gtk-2.0/gi/__init__.py
-gi._gi|/usr/lib/pymodules/python2.6/gtk-2.0/gi/_gi.so
-gi._gi_cairo|/usr/lib/pymodules/python2.6/gtk-2.0/gi/_gi_cairo.so
-gi.importer|/usr/lib/pymodules/python2.6/gtk-2.0/gi/importer.py
-gi.module|/usr/lib/pymodules/python2.6/gtk-2.0/gi/module.py
-gi.overrides.GIMarshallingTests|/usr/lib/pymodules/python2.6/gtk-2.0/gi/overrides/GIMarshallingTests.py
-gi.overrides.Gdk|/usr/lib/pymodules/python2.6/gtk-2.0/gi/overrides/Gdk.py
-gi.overrides.Gtk|/usr/lib/pymodules/python2.6/gtk-2.0/gi/overrides/Gtk.py
-gi.overrides.__init__|/usr/lib/pymodules/python2.6/gtk-2.0/gi/overrides/__init__.py
-gi.overrides.keysyms|/usr/lib/pymodules/python2.6/gtk-2.0/gi/overrides/keysyms.py
-gi.repository.__init__|/usr/lib/pymodules/python2.6/gtk-2.0/gi/repository/__init__.py
-gi.types|/usr/lib/pymodules/python2.6/gtk-2.0/gi/types.py
-gio.__init__|/usr/lib/pymodules/python2.6/gtk-2.0/gio/__init__.py
-gio._gio|/usr/lib/pymodules/python2.6/gtk-2.0/gio/_gio.so
-gio.unix|/usr/lib/pymodules/python2.6/gtk-2.0/gio/unix.so
-glib.__init__|/usr/lib/pymodules/python2.6/gtk-2.0/glib/__init__.py
-glib._glib|/usr/lib/pymodules/python2.6/gtk-2.0/glib/_glib.so
-glib.option|/usr/lib/pymodules/python2.6/gtk-2.0/glib/option.py
-glob|/usr/lib/python2.6/glob.py
-gmenu|/usr/lib/pymodules/python2.6/gmenu.so
-gnome.__init__|/usr/lib/pymodules/python2.6/gtk-2.0/gnome/__init__.py
-gnome._gnome|/usr/lib/pymodules/python2.6/gtk-2.0/gnome/_gnome.so
-gnome.applet|/usr/lib/pymodules/python2.6/gtk-2.0/gnome/applet.py
-gnome.canvas|/usr/lib/pymodules/python2.6/gtk-2.0/gnome/canvas.py
-gnome.ui|/usr/lib/pymodules/python2.6/gtk-2.0/gnome/ui.so
-gnome.vfs|/usr/lib/pymodules/python2.6/gtk-2.0/gnome/vfs.py
-gnome_sudoku.__init__|/usr/lib/pymodules/python2.6/gnome_sudoku/__init__.py
-gnome_sudoku.colors|/usr/lib/pymodules/python2.6/gnome_sudoku/colors.py
-gnome_sudoku.dancer|/usr/lib/pymodules/python2.6/gnome_sudoku/dancer.py
-gnome_sudoku.defaults|/usr/lib/pymodules/python2.6/gnome_sudoku/defaults.py
-gnome_sudoku.dialog_swallower|/usr/lib/pymodules/python2.6/gnome_sudoku/dialog_swallower.py
-gnome_sudoku.game_selector|/usr/lib/pymodules/python2.6/gnome_sudoku/game_selector.py
-gnome_sudoku.gnome_sudoku|/usr/lib/pymodules/python2.6/gnome_sudoku/gnome_sudoku.py
-gnome_sudoku.gsudoku|/usr/lib/pymodules/python2.6/gnome_sudoku/gsudoku.py
-gnome_sudoku.gtk_goodies.Undo|/usr/lib/pymodules/python2.6/gnome_sudoku/gtk_goodies/Undo.py
-gnome_sudoku.gtk_goodies.__init__|/usr/lib/pymodules/python2.6/gnome_sudoku/gtk_goodies/__init__.py
-gnome_sudoku.gtk_goodies.dialog_extras|/usr/lib/pymodules/python2.6/gnome_sudoku/gtk_goodies/dialog_extras.py
-gnome_sudoku.gtk_goodies.gconf_wrapper|/usr/lib/pymodules/python2.6/gnome_sudoku/gtk_goodies/gconf_wrapper.py
-gnome_sudoku.main|/usr/lib/pymodules/python2.6/gnome_sudoku/main.py
-gnome_sudoku.number_box|/usr/lib/pymodules/python2.6/gnome_sudoku/number_box.py
-gnome_sudoku.pausable|/usr/lib/pymodules/python2.6/gnome_sudoku/pausable.py
-gnome_sudoku.printing|/usr/lib/pymodules/python2.6/gnome_sudoku/printing.py
-gnome_sudoku.saver|/usr/lib/pymodules/python2.6/gnome_sudoku/saver.py
-gnome_sudoku.simple_debug|/usr/lib/pymodules/python2.6/gnome_sudoku/simple_debug.py
-gnome_sudoku.sudoku|/usr/lib/pymodules/python2.6/gnome_sudoku/sudoku.py
-gnome_sudoku.sudoku_maker|/usr/lib/pymodules/python2.6/gnome_sudoku/sudoku_maker.py
-gnome_sudoku.sudoku_thumber|/usr/lib/pymodules/python2.6/gnome_sudoku/sudoku_thumber.py
-gnome_sudoku.timer|/usr/lib/pymodules/python2.6/gnome_sudoku/timer.py
-gnome_sudoku.tracker_info|/usr/lib/pymodules/python2.6/gnome_sudoku/tracker_info.py
-gnomeapplet|/usr/lib/pymodules/python2.6/gtk-2.0/gnomeapplet.so
-gnomecanvas|/usr/lib/pymodules/python2.6/gtk-2.0/gnomecanvas.so
-gnomekeyring|/usr/lib/pymodules/python2.6/gtk-2.0/gnomekeyring.so
-gnomevfs.__init__|/usr/lib/pymodules/python2.6/gtk-2.0/gnomevfs/__init__.py
-gnomevfs._gnomevfs|/usr/lib/pymodules/python2.6/gtk-2.0/gnomevfs/_gnomevfs.so
-gnomevfs.gnomevfsbonobo|/usr/lib/pymodules/python2.6/gtk-2.0/gnomevfs/gnomevfsbonobo.so
-gobject.__init__|/usr/lib/pymodules/python2.6/gtk-2.0/gobject/__init__.py
-gobject._gobject|/usr/lib/pymodules/python2.6/gtk-2.0/gobject/_gobject.so
-gobject.constants|/usr/lib/pymodules/python2.6/gtk-2.0/gobject/constants.py
-gobject.propertyhelper|/usr/lib/pymodules/python2.6/gtk-2.0/gobject/propertyhelper.py
-google.__init__|/usr/lib/pymodules/python2.6/google/__init__.py
-google.protobuf.__init__|/usr/lib/pymodules/python2.6/google/protobuf/__init__.py
-google.protobuf.descriptor|/usr/lib/pymodules/python2.6/google/protobuf/descriptor.py
-google.protobuf.descriptor_pb2|/usr/lib/pymodules/python2.6/google/protobuf/descriptor_pb2.py
-google.protobuf.internal.__init__|/usr/lib/pymodules/python2.6/google/protobuf/internal/__init__.py
-google.protobuf.internal.containers|/usr/lib/pymodules/python2.6/google/protobuf/internal/containers.py
-google.protobuf.internal.decoder|/usr/lib/pymodules/python2.6/google/protobuf/internal/decoder.py
-google.protobuf.internal.encoder|/usr/lib/pymodules/python2.6/google/protobuf/internal/encoder.py
-google.protobuf.internal.message_listener|/usr/lib/pymodules/python2.6/google/protobuf/internal/message_listener.py
-google.protobuf.internal.type_checkers|/usr/lib/pymodules/python2.6/google/protobuf/internal/type_checkers.py
-google.protobuf.internal.wire_format|/usr/lib/pymodules/python2.6/google/protobuf/internal/wire_format.py
-google.protobuf.message|/usr/lib/pymodules/python2.6/google/protobuf/message.py
-google.protobuf.reflection|/usr/lib/pymodules/python2.6/google/protobuf/reflection.py
-google.protobuf.service|/usr/lib/pymodules/python2.6/google/protobuf/service.py
-google.protobuf.service_reflection|/usr/lib/pymodules/python2.6/google/protobuf/service_reflection.py
-google.protobuf.text_format|/usr/lib/pymodules/python2.6/google/protobuf/text_format.py
-grp
-gst.__init__|/usr/lib/python2.6/dist-packages/gst-0.10/gst/__init__.py
-gst._gst|/usr/lib/python2.6/dist-packages/gst-0.10/gst/_gst.so
-gst.audio|/usr/lib/python2.6/dist-packages/gst-0.10/gst/audio.so
-gst.extend.__init__|/usr/lib/python2.6/dist-packages/gst-0.10/gst/extend/__init__.py
-gst.extend.discoverer|/usr/lib/python2.6/dist-packages/gst-0.10/gst/extend/discoverer.py
-gst.extend.jukebox|/usr/lib/python2.6/dist-packages/gst-0.10/gst/extend/jukebox.py
-gst.extend.leveller|/usr/lib/python2.6/dist-packages/gst-0.10/gst/extend/leveller.py
-gst.extend.pygobject|/usr/lib/python2.6/dist-packages/gst-0.10/gst/extend/pygobject.py
-gst.extend.sources|/usr/lib/python2.6/dist-packages/gst-0.10/gst/extend/sources.py
-gst.extend.utils|/usr/lib/python2.6/dist-packages/gst-0.10/gst/extend/utils.py
-gst.interfaces|/usr/lib/python2.6/dist-packages/gst-0.10/gst/interfaces.so
-gst.pbutils|/usr/lib/python2.6/dist-packages/gst-0.10/gst/pbutils.so
-gst.tag|/usr/lib/python2.6/dist-packages/gst-0.10/gst/tag.so
-gst.video|/usr/lib/python2.6/dist-packages/gst-0.10/gst/video.so
-gstoption|/usr/lib/python2.6/dist-packages/gstoption.so
-gtk.__init__|/usr/lib/pymodules/python2.6/gtk-2.0/gtk/__init__.py
-gtk._gtk|/usr/lib/pymodules/python2.6/gtk-2.0/gtk/_gtk.so
-gtk._lazyutils|/usr/lib/pymodules/python2.6/gtk-2.0/gtk/_lazyutils.py
-gtk.compat|/usr/lib/pymodules/python2.6/gtk-2.0/gtk/compat.py
-gtk.deprecation|/usr/lib/pymodules/python2.6/gtk-2.0/gtk/deprecation.py
-gtk.glade|/usr/lib/pymodules/python2.6/gtk-2.0/gtk/glade.so
-gtk.keysyms|/usr/lib/pymodules/python2.6/gtk-2.0/gtk/keysyms.py
-gtkmozembed|/usr/lib/pymodules/python2.6/gtk-2.0/gtkmozembed.so
-gtkspell|/usr/lib/pymodules/python2.6/gtk-2.0/gtkspell.so
-gtkunixprint|/usr/lib/pymodules/python2.6/gtk-2.0/gtkunixprint.so
-gwibber.__init__|/usr/lib/python2.6/dist-packages/gwibber/__init__.py
-gwibber.accounts|/usr/lib/python2.6/dist-packages/gwibber/accounts.py
-gwibber.actions|/usr/lib/python2.6/dist-packages/gwibber/actions.py
-gwibber.client|/usr/lib/python2.6/dist-packages/gwibber/client.py
-gwibber.error|/usr/lib/python2.6/dist-packages/gwibber/error.py
-gwibber.gwui|/usr/lib/python2.6/dist-packages/gwibber/gwui.py
-gwibber.lib.__init__|/usr/lib/python2.6/dist-packages/gwibber/lib/__init__.py
-gwibber.lib.gtk.__init__|/usr/lib/python2.6/dist-packages/gwibber/lib/gtk/__init__.py
-gwibber.lib.gtk.buzz|/usr/lib/python2.6/dist-packages/gwibber/lib/gtk/buzz.py
-gwibber.lib.gtk.digg|/usr/lib/python2.6/dist-packages/gwibber/lib/gtk/digg.py
-gwibber.lib.gtk.facebook|/usr/lib/python2.6/dist-packages/gwibber/lib/gtk/facebook.py
-gwibber.lib.gtk.flickr|/usr/lib/python2.6/dist-packages/gwibber/lib/gtk/flickr.py
-gwibber.lib.gtk.friendfeed|/usr/lib/python2.6/dist-packages/gwibber/lib/gtk/friendfeed.py
-gwibber.lib.gtk.identica|/usr/lib/python2.6/dist-packages/gwibber/lib/gtk/identica.py
-gwibber.lib.gtk.pingfm|/usr/lib/python2.6/dist-packages/gwibber/lib/gtk/pingfm.py
-gwibber.lib.gtk.qaiku|/usr/lib/python2.6/dist-packages/gwibber/lib/gtk/qaiku.py
-gwibber.lib.gtk.statusnet|/usr/lib/python2.6/dist-packages/gwibber/lib/gtk/statusnet.py
-gwibber.lib.gtk.twitter|/usr/lib/python2.6/dist-packages/gwibber/lib/gtk/twitter.py
-gwibber.lib.gtk.widgets|/usr/lib/python2.6/dist-packages/gwibber/lib/gtk/widgets.py
-gwibber.microblog.__init__|/usr/lib/python2.6/dist-packages/gwibber/microblog/__init__.py
-gwibber.microblog.brightkite|/usr/lib/python2.6/dist-packages/gwibber/microblog/brightkite.py
-gwibber.microblog.buzz|/usr/lib/python2.6/dist-packages/gwibber/microblog/buzz.py
-gwibber.microblog.can|/usr/lib/python2.6/dist-packages/gwibber/microblog/can.py
-gwibber.microblog.config|/usr/lib/python2.6/dist-packages/gwibber/microblog/config.py
-gwibber.microblog.digg|/usr/lib/python2.6/dist-packages/gwibber/microblog/digg.py
-gwibber.microblog.dispatcher|/usr/lib/python2.6/dist-packages/gwibber/microblog/dispatcher.py
-gwibber.microblog.facebook|/usr/lib/python2.6/dist-packages/gwibber/microblog/facebook.py
-gwibber.microblog.flickr|/usr/lib/python2.6/dist-packages/gwibber/microblog/flickr.py
-gwibber.microblog.friendfeed|/usr/lib/python2.6/dist-packages/gwibber/microblog/friendfeed.py
-gwibber.microblog.greader|/usr/lib/python2.6/dist-packages/gwibber/microblog/greader.py
-gwibber.microblog.gwp|/usr/lib/python2.6/dist-packages/gwibber/microblog/gwp.py
-gwibber.microblog.identica|/usr/lib/python2.6/dist-packages/gwibber/microblog/identica.py
-gwibber.microblog.jaiku|/usr/lib/python2.6/dist-packages/gwibber/microblog/jaiku.py
-gwibber.microblog.network|/usr/lib/python2.6/dist-packages/gwibber/microblog/network.py
-gwibber.microblog.opencollaboration|/usr/lib/python2.6/dist-packages/gwibber/microblog/opencollaboration.py
-gwibber.microblog.pingfm|/usr/lib/python2.6/dist-packages/gwibber/microblog/pingfm.py
-gwibber.microblog.qaiku|/usr/lib/python2.6/dist-packages/gwibber/microblog/qaiku.py
-gwibber.microblog.rss|/usr/lib/python2.6/dist-packages/gwibber/microblog/rss.py
-gwibber.microblog.statusnet|/usr/lib/python2.6/dist-packages/gwibber/microblog/statusnet.py
-gwibber.microblog.storage|/usr/lib/python2.6/dist-packages/gwibber/microblog/storage.py
-gwibber.microblog.swp|/usr/lib/python2.6/dist-packages/gwibber/microblog/swp.py
-gwibber.microblog.twitter|/usr/lib/python2.6/dist-packages/gwibber/microblog/twitter.py
-gwibber.microblog.urlshorter.__init__|/usr/lib/python2.6/dist-packages/gwibber/microblog/urlshorter/__init__.py
-gwibber.microblog.urlshorter.cligs|/usr/lib/python2.6/dist-packages/gwibber/microblog/urlshorter/cligs.py
-gwibber.microblog.urlshorter.isgd|/usr/lib/python2.6/dist-packages/gwibber/microblog/urlshorter/isgd.py
-gwibber.microblog.urlshorter.snipurlcom|/usr/lib/python2.6/dist-packages/gwibber/microblog/urlshorter/snipurlcom.py
-gwibber.microblog.urlshorter.tinyurlcom|/usr/lib/python2.6/dist-packages/gwibber/microblog/urlshorter/tinyurlcom.py
-gwibber.microblog.urlshorter.ur1ca|/usr/lib/python2.6/dist-packages/gwibber/microblog/urlshorter/ur1ca.py
-gwibber.microblog.urlshorter.zima|/usr/lib/python2.6/dist-packages/gwibber/microblog/urlshorter/zima.py
-gwibber.microblog.util.__init__|/usr/lib/python2.6/dist-packages/gwibber/microblog/util/__init__.py
-gwibber.microblog.util.const|/usr/lib/python2.6/dist-packages/gwibber/microblog/util/const.py
-gwibber.microblog.util.couchmigrate|/usr/lib/python2.6/dist-packages/gwibber/microblog/util/couchmigrate.py
-gwibber.microblog.util.custom|/usr/lib/python2.6/dist-packages/gwibber/microblog/util/custom.py
-gwibber.microblog.util.exceptions|/usr/lib/python2.6/dist-packages/gwibber/microblog/util/exceptions.py
-gwibber.microblog.util.facelib|/usr/lib/python2.6/dist-packages/gwibber/microblog/util/facelib.py
-gwibber.microblog.util.imagehandler|/usr/lib/python2.6/dist-packages/gwibber/microblog/util/imagehandler.py
-gwibber.microblog.util.keyring|/usr/lib/python2.6/dist-packages/gwibber/microblog/util/keyring.py
-gwibber.microblog.util.log|/usr/lib/python2.6/dist-packages/gwibber/microblog/util/log.py
-gwibber.microblog.util.resources|/usr/lib/python2.6/dist-packages/gwibber/microblog/util/resources.py
-gwibber.pidgin|/usr/lib/python2.6/dist-packages/gwibber/pidgin.py
-gwibber.preferences|/usr/lib/python2.6/dist-packages/gwibber/preferences.py
-gwibber.resources|/usr/lib/python2.6/dist-packages/gwibber/resources.py
-gwibber.util|/usr/lib/python2.6/dist-packages/gwibber/util.py
-gzip|/usr/lib/python2.6/gzip.py
-hashlib|/usr/lib/python2.6/hashlib.py
-heapq|/usr/lib/python2.6/heapq.py
-hmac|/usr/lib/python2.6/hmac.py
-hotshot.__init__|/usr/lib/python2.6/hotshot/__init__.py
-hotshot.log|/usr/lib/python2.6/hotshot/log.py
-hotshot.stats|/usr/lib/python2.6/hotshot/stats.py
-hotshot.stones|/usr/lib/python2.6/hotshot/stones.py
-hpmudext|/usr/lib/pymodules/python2.6/hpmudext.so
-htmlentitydefs|/usr/lib/python2.6/htmlentitydefs.py
-htmllib|/usr/lib/python2.6/htmllib.py
-httplib|/usr/lib/python2.6/httplib.py
-httplib2.__init__|/usr/lib/python2.6/dist-packages/httplib2/__init__.py
-httplib2.iri2uri|/usr/lib/python2.6/dist-packages/httplib2/iri2uri.py
-ibus.__init__|/usr/lib/pymodules/python2.6/ibus/__init__.py
-ibus._config|/usr/lib/pymodules/python2.6/ibus/_config.py
-ibus._gtk|/usr/lib/pymodules/python2.6/ibus/_gtk.py
-ibus.application|/usr/lib/pymodules/python2.6/ibus/application.py
-ibus.ascii|/usr/lib/pymodules/python2.6/ibus/ascii.py
-ibus.attribute|/usr/lib/pymodules/python2.6/ibus/attribute.py
-ibus.bus|/usr/lib/pymodules/python2.6/ibus/bus.py
-ibus.common|/usr/lib/pymodules/python2.6/ibus/common.py
-ibus.component|/usr/lib/pymodules/python2.6/ibus/component.py
-ibus.config|/usr/lib/pymodules/python2.6/ibus/config.py
-ibus.engine|/usr/lib/pymodules/python2.6/ibus/engine.py
-ibus.enginedesc|/usr/lib/pymodules/python2.6/ibus/enginedesc.py
-ibus.exception|/usr/lib/pymodules/python2.6/ibus/exception.py
-ibus.factory|/usr/lib/pymodules/python2.6/ibus/factory.py
-ibus.inputcontext|/usr/lib/pymodules/python2.6/ibus/inputcontext.py
-ibus.interface.__init__|/usr/lib/pymodules/python2.6/ibus/interface/__init__.py
-ibus.interface.iconfig|/usr/lib/pymodules/python2.6/ibus/interface/iconfig.py
-ibus.interface.iengine|/usr/lib/pymodules/python2.6/ibus/interface/iengine.py
-ibus.interface.ienginefactory|/usr/lib/pymodules/python2.6/ibus/interface/ienginefactory.py
-ibus.interface.iibus|/usr/lib/pymodules/python2.6/ibus/interface/iibus.py
-ibus.interface.iinputcontext|/usr/lib/pymodules/python2.6/ibus/interface/iinputcontext.py
-ibus.interface.inotifications|/usr/lib/pymodules/python2.6/ibus/interface/inotifications.py
-ibus.interface.ipanel|/usr/lib/pymodules/python2.6/ibus/interface/ipanel.py
-ibus.keysyms|/usr/lib/pymodules/python2.6/ibus/keysyms.py
-ibus.lang|/usr/lib/pymodules/python2.6/ibus/lang.py
-ibus.lookuptable|/usr/lib/pymodules/python2.6/ibus/lookuptable.py
-ibus.modifier|/usr/lib/pymodules/python2.6/ibus/modifier.py
-ibus.notifications|/usr/lib/pymodules/python2.6/ibus/notifications.py
-ibus.object|/usr/lib/pymodules/python2.6/ibus/object.py
-ibus.observedpath|/usr/lib/pymodules/python2.6/ibus/observedpath.py
-ibus.panel|/usr/lib/pymodules/python2.6/ibus/panel.py
-ibus.property|/usr/lib/pymodules/python2.6/ibus/property.py
-ibus.serializable|/usr/lib/pymodules/python2.6/ibus/serializable.py
-ibus.text|/usr/lib/pymodules/python2.6/ibus/text.py
-ibus.utility|/usr/lib/pymodules/python2.6/ibus/utility.py
-ihooks|/usr/lib/python2.6/ihooks.py
-imageop|/usr/lib/python2.6/lib-dynload/imageop.so
-imaplib|/usr/lib/python2.6/imaplib.py
-imghdr|/usr/lib/python2.6/imghdr.py
-imp
-imputil|/usr/lib/python2.6/imputil.py
-indicate.__init__|/usr/lib/pymodules/python2.6/indicate/__init__.py
-indicate._indicate|/usr/lib/pymodules/python2.6/indicate/_indicate.so
-iniparse.__init__|/usr/lib/pymodules/python2.6/iniparse/__init__.py
-iniparse.compat|/usr/lib/pymodules/python2.6/iniparse/compat.py
-iniparse.config|/usr/lib/pymodules/python2.6/iniparse/config.py
-iniparse.ini|/usr/lib/pymodules/python2.6/iniparse/ini.py
-inspect|/usr/lib/python2.6/inspect.py
-invest.__init__|/usr/lib/pymodules/python2.6/invest/__init__.py
-invest.about|/usr/lib/pymodules/python2.6/invest/about.py
-invest.applet|/usr/lib/pymodules/python2.6/invest/applet.py
-invest.chart|/usr/lib/pymodules/python2.6/invest/chart.py
-invest.defs|/usr/lib/pymodules/python2.6/invest/defs.py
-invest.networkmanager|/usr/lib/pymodules/python2.6/invest/networkmanager.py
-invest.preferences|/usr/lib/pymodules/python2.6/invest/preferences.py
-invest.quotes|/usr/lib/pymodules/python2.6/invest/quotes.py
-invest.widgets|/usr/lib/pymodules/python2.6/invest/widgets.py
-io|/usr/lib/python2.6/io.py
-itertools
-jockey.__init__|/usr/lib/python2.6/dist-packages/jockey/__init__.py
-jockey.backend|/usr/lib/python2.6/dist-packages/jockey/backend.py
-jockey.detection|/usr/lib/python2.6/dist-packages/jockey/detection.py
-jockey.handlers|/usr/lib/python2.6/dist-packages/jockey/handlers.py
-jockey.oslib|/usr/lib/python2.6/dist-packages/jockey/oslib.py
-jockey.ui|/usr/lib/python2.6/dist-packages/jockey/ui.py
-jockey.xorg_driver|/usr/lib/python2.6/dist-packages/jockey/xorg_driver.py
-json.__init__|/usr/lib/python2.6/json/__init__.py
-json.decoder|/usr/lib/python2.6/json/decoder.py
-json.encoder|/usr/lib/python2.6/json/encoder.py
-json.scanner|/usr/lib/python2.6/json/scanner.py
-json.tool|/usr/lib/python2.6/json/tool.py
-keyword|/usr/lib/python2.6/keyword.py
-launchpadlib.__init__|/usr/lib/pymodules/python2.6/launchpadlib/__init__.py
-launchpadlib.apps|/usr/lib/pymodules/python2.6/launchpadlib/apps.py
-launchpadlib.credentials|/usr/lib/pymodules/python2.6/launchpadlib/credentials.py
-launchpadlib.errors|/usr/lib/pymodules/python2.6/launchpadlib/errors.py
-launchpadlib.launchpad|/usr/lib/pymodules/python2.6/launchpadlib/launchpad.py
-launchpadlib.testing.__init__|/usr/lib/pymodules/python2.6/launchpadlib/testing/__init__.py
-launchpadlib.testing.helpers|/usr/lib/pymodules/python2.6/launchpadlib/testing/helpers.py
-launchpadlib.tests.__init__|/usr/lib/pymodules/python2.6/launchpadlib/tests/__init__.py
-launchpadlib.tests.test_launchpad|/usr/lib/pymodules/python2.6/launchpadlib/tests/test_launchpad.py
-launchpadlib.uris|/usr/lib/pymodules/python2.6/launchpadlib/uris.py
-lib2to3.__init__|/usr/lib/python2.6/lib2to3/__init__.py
-lib2to3.fixer_base|/usr/lib/python2.6/lib2to3/fixer_base.py
-lib2to3.fixer_util|/usr/lib/python2.6/lib2to3/fixer_util.py
-lib2to3.fixes.__init__|/usr/lib/python2.6/lib2to3/fixes/__init__.py
-lib2to3.fixes.fix_apply|/usr/lib/python2.6/lib2to3/fixes/fix_apply.py
-lib2to3.fixes.fix_basestring|/usr/lib/python2.6/lib2to3/fixes/fix_basestring.py
-lib2to3.fixes.fix_buffer|/usr/lib/python2.6/lib2to3/fixes/fix_buffer.py
-lib2to3.fixes.fix_callable|/usr/lib/python2.6/lib2to3/fixes/fix_callable.py
-lib2to3.fixes.fix_dict|/usr/lib/python2.6/lib2to3/fixes/fix_dict.py
-lib2to3.fixes.fix_except|/usr/lib/python2.6/lib2to3/fixes/fix_except.py
-lib2to3.fixes.fix_exec|/usr/lib/python2.6/lib2to3/fixes/fix_exec.py
-lib2to3.fixes.fix_execfile|/usr/lib/python2.6/lib2to3/fixes/fix_execfile.py
-lib2to3.fixes.fix_exitfunc|/usr/lib/python2.6/lib2to3/fixes/fix_exitfunc.py
-lib2to3.fixes.fix_filter|/usr/lib/python2.6/lib2to3/fixes/fix_filter.py
-lib2to3.fixes.fix_funcattrs|/usr/lib/python2.6/lib2to3/fixes/fix_funcattrs.py
-lib2to3.fixes.fix_future|/usr/lib/python2.6/lib2to3/fixes/fix_future.py
-lib2to3.fixes.fix_getcwdu|/usr/lib/python2.6/lib2to3/fixes/fix_getcwdu.py
-lib2to3.fixes.fix_has_key|/usr/lib/python2.6/lib2to3/fixes/fix_has_key.py
-lib2to3.fixes.fix_idioms|/usr/lib/python2.6/lib2to3/fixes/fix_idioms.py
-lib2to3.fixes.fix_import|/usr/lib/python2.6/lib2to3/fixes/fix_import.py
-lib2to3.fixes.fix_imports|/usr/lib/python2.6/lib2to3/fixes/fix_imports.py
-lib2to3.fixes.fix_imports2|/usr/lib/python2.6/lib2to3/fixes/fix_imports2.py
-lib2to3.fixes.fix_input|/usr/lib/python2.6/lib2to3/fixes/fix_input.py
-lib2to3.fixes.fix_intern|/usr/lib/python2.6/lib2to3/fixes/fix_intern.py
-lib2to3.fixes.fix_isinstance|/usr/lib/python2.6/lib2to3/fixes/fix_isinstance.py
-lib2to3.fixes.fix_itertools|/usr/lib/python2.6/lib2to3/fixes/fix_itertools.py
-lib2to3.fixes.fix_itertools_imports|/usr/lib/python2.6/lib2to3/fixes/fix_itertools_imports.py
-lib2to3.fixes.fix_long|/usr/lib/python2.6/lib2to3/fixes/fix_long.py
-lib2to3.fixes.fix_map|/usr/lib/python2.6/lib2to3/fixes/fix_map.py
-lib2to3.fixes.fix_metaclass|/usr/lib/python2.6/lib2to3/fixes/fix_metaclass.py
-lib2to3.fixes.fix_methodattrs|/usr/lib/python2.6/lib2to3/fixes/fix_methodattrs.py
-lib2to3.fixes.fix_ne|/usr/lib/python2.6/lib2to3/fixes/fix_ne.py
-lib2to3.fixes.fix_next|/usr/lib/python2.6/lib2to3/fixes/fix_next.py
-lib2to3.fixes.fix_nonzero|/usr/lib/python2.6/lib2to3/fixes/fix_nonzero.py
-lib2to3.fixes.fix_numliterals|/usr/lib/python2.6/lib2to3/fixes/fix_numliterals.py
-lib2to3.fixes.fix_operator|/usr/lib/python2.6/lib2to3/fixes/fix_operator.py
-lib2to3.fixes.fix_paren|/usr/lib/python2.6/lib2to3/fixes/fix_paren.py
-lib2to3.fixes.fix_print|/usr/lib/python2.6/lib2to3/fixes/fix_print.py
-lib2to3.fixes.fix_raise|/usr/lib/python2.6/lib2to3/fixes/fix_raise.py
-lib2to3.fixes.fix_raw_input|/usr/lib/python2.6/lib2to3/fixes/fix_raw_input.py
-lib2to3.fixes.fix_reduce|/usr/lib/python2.6/lib2to3/fixes/fix_reduce.py
-lib2to3.fixes.fix_renames|/usr/lib/python2.6/lib2to3/fixes/fix_renames.py
-lib2to3.fixes.fix_repr|/usr/lib/python2.6/lib2to3/fixes/fix_repr.py
-lib2to3.fixes.fix_set_literal|/usr/lib/python2.6/lib2to3/fixes/fix_set_literal.py
-lib2to3.fixes.fix_standarderror|/usr/lib/python2.6/lib2to3/fixes/fix_standarderror.py
-lib2to3.fixes.fix_sys_exc|/usr/lib/python2.6/lib2to3/fixes/fix_sys_exc.py
-lib2to3.fixes.fix_throw|/usr/lib/python2.6/lib2to3/fixes/fix_throw.py
-lib2to3.fixes.fix_tuple_params|/usr/lib/python2.6/lib2to3/fixes/fix_tuple_params.py
-lib2to3.fixes.fix_types|/usr/lib/python2.6/lib2to3/fixes/fix_types.py
-lib2to3.fixes.fix_unicode|/usr/lib/python2.6/lib2to3/fixes/fix_unicode.py
-lib2to3.fixes.fix_urllib|/usr/lib/python2.6/lib2to3/fixes/fix_urllib.py
-lib2to3.fixes.fix_ws_comma|/usr/lib/python2.6/lib2to3/fixes/fix_ws_comma.py
-lib2to3.fixes.fix_xrange|/usr/lib/python2.6/lib2to3/fixes/fix_xrange.py
-lib2to3.fixes.fix_xreadlines|/usr/lib/python2.6/lib2to3/fixes/fix_xreadlines.py
-lib2to3.fixes.fix_zip|/usr/lib/python2.6/lib2to3/fixes/fix_zip.py
-lib2to3.main|/usr/lib/python2.6/lib2to3/main.py
-lib2to3.patcomp|/usr/lib/python2.6/lib2to3/patcomp.py
-lib2to3.pgen2.__init__|/usr/lib/python2.6/lib2to3/pgen2/__init__.py
-lib2to3.pgen2.conv|/usr/lib/python2.6/lib2to3/pgen2/conv.py
-lib2to3.pgen2.driver|/usr/lib/python2.6/lib2to3/pgen2/driver.py
-lib2to3.pgen2.grammar|/usr/lib/python2.6/lib2to3/pgen2/grammar.py
-lib2to3.pgen2.literals|/usr/lib/python2.6/lib2to3/pgen2/literals.py
-lib2to3.pgen2.parse|/usr/lib/python2.6/lib2to3/pgen2/parse.py
-lib2to3.pgen2.pgen|/usr/lib/python2.6/lib2to3/pgen2/pgen.py
-lib2to3.pgen2.token|/usr/lib/python2.6/lib2to3/pgen2/token.py
-lib2to3.pgen2.tokenize|/usr/lib/python2.6/lib2to3/pgen2/tokenize.py
-lib2to3.pygram|/usr/lib/python2.6/lib2to3/pygram.py
-lib2to3.pytree|/usr/lib/python2.6/lib2to3/pytree.py
-lib2to3.refactor|/usr/lib/python2.6/lib2to3/refactor.py
-libproxy|/usr/lib/pymodules/python2.6/libproxy.py
-libxml2|/usr/lib/pymodules/python2.6/libxml2.py
-libxml2mod|/usr/lib/pymodules/python2.6/libxml2mod.so
-linecache|/usr/lib/python2.6/linecache.py
-linuxaudiodev|/usr/lib/python2.6/lib-dynload/linuxaudiodev.so
-locale|/usr/lib/python2.6/locale.py
-logging.__init__|/usr/lib/python2.6/logging/__init__.py
-logging.config|/usr/lib/python2.6/logging/config.py
-logging.handlers|/usr/lib/python2.6/logging/handlers.py
-lsb_release|/usr/lib/python2.6/dist-packages/lsb_release.py
-lxml.ElementInclude|/usr/lib/python2.6/dist-packages/lxml/ElementInclude.py
-lxml.__init__|/usr/lib/python2.6/dist-packages/lxml/__init__.py
-lxml._elementpath|/usr/lib/python2.6/dist-packages/lxml/_elementpath.py
-lxml.builder|/usr/lib/python2.6/dist-packages/lxml/builder.py
-lxml.cssselect|/usr/lib/python2.6/dist-packages/lxml/cssselect.py
-lxml.doctestcompare|/usr/lib/python2.6/dist-packages/lxml/doctestcompare.py
-lxml.etree|/usr/lib/python2.6/dist-packages/lxml/etree.so
-lxml.html.ElementSoup|/usr/lib/python2.6/dist-packages/lxml/html/ElementSoup.py
-lxml.html.__init__|/usr/lib/python2.6/dist-packages/lxml/html/__init__.py
-lxml.html._dictmixin|/usr/lib/python2.6/dist-packages/lxml/html/_dictmixin.py
-lxml.html._diffcommand|/usr/lib/python2.6/dist-packages/lxml/html/_diffcommand.py
-lxml.html._html5builder|/usr/lib/python2.6/dist-packages/lxml/html/_html5builder.py
-lxml.html._setmixin|/usr/lib/python2.6/dist-packages/lxml/html/_setmixin.py
-lxml.html.builder|/usr/lib/python2.6/dist-packages/lxml/html/builder.py
-lxml.html.clean|/usr/lib/python2.6/dist-packages/lxml/html/clean.py
-lxml.html.defs|/usr/lib/python2.6/dist-packages/lxml/html/defs.py
-lxml.html.diff|/usr/lib/python2.6/dist-packages/lxml/html/diff.py
-lxml.html.formfill|/usr/lib/python2.6/dist-packages/lxml/html/formfill.py
-lxml.html.html5parser|/usr/lib/python2.6/dist-packages/lxml/html/html5parser.py
-lxml.html.soupparser|/usr/lib/python2.6/dist-packages/lxml/html/soupparser.py
-lxml.html.usedoctest|/usr/lib/python2.6/dist-packages/lxml/html/usedoctest.py
-lxml.objectify|/usr/lib/python2.6/dist-packages/lxml/objectify.so
-lxml.pyclasslookup|/usr/lib/python2.6/dist-packages/lxml/pyclasslookup.py
-lxml.sax|/usr/lib/python2.6/dist-packages/lxml/sax.py
-lxml.usedoctest|/usr/lib/python2.6/dist-packages/lxml/usedoctest.py
-macpath|/usr/lib/python2.6/macpath.py
-macurl2path|/usr/lib/python2.6/macurl2path.py
-mailbox|/usr/lib/python2.6/mailbox.py
-mailcap|/usr/lib/python2.6/mailcap.py
-mako.__init__|/usr/lib/pymodules/python2.6/mako/__init__.py
-mako._ast_util|/usr/lib/pymodules/python2.6/mako/_ast_util.py
-mako.ast|/usr/lib/pymodules/python2.6/mako/ast.py
-mako.cache|/usr/lib/pymodules/python2.6/mako/cache.py
-mako.codegen|/usr/lib/pymodules/python2.6/mako/codegen.py
-mako.exceptions|/usr/lib/pymodules/python2.6/mako/exceptions.py
-mako.ext.__init__|/usr/lib/pymodules/python2.6/mako/ext/__init__.py
-mako.ext.autohandler|/usr/lib/pymodules/python2.6/mako/ext/autohandler.py
-mako.ext.babelplugin|/usr/lib/pymodules/python2.6/mako/ext/babelplugin.py
-mako.ext.preprocessors|/usr/lib/pymodules/python2.6/mako/ext/preprocessors.py
-mako.ext.pygmentplugin|/usr/lib/pymodules/python2.6/mako/ext/pygmentplugin.py
-mako.ext.turbogears|/usr/lib/pymodules/python2.6/mako/ext/turbogears.py
-mako.filters|/usr/lib/pymodules/python2.6/mako/filters.py
-mako.lexer|/usr/lib/pymodules/python2.6/mako/lexer.py
-mako.lookup|/usr/lib/pymodules/python2.6/mako/lookup.py
-mako.parsetree|/usr/lib/pymodules/python2.6/mako/parsetree.py
-mako.pygen|/usr/lib/pymodules/python2.6/mako/pygen.py
-mako.pyparser|/usr/lib/pymodules/python2.6/mako/pyparser.py
-mako.runtime|/usr/lib/pymodules/python2.6/mako/runtime.py
-mako.template|/usr/lib/pymodules/python2.6/mako/template.py
-mako.util|/usr/lib/pymodules/python2.6/mako/util.py
-markupbase|/usr/lib/python2.6/markupbase.py
-markupsafe.__init__|/usr/lib/python2.6/dist-packages/markupsafe/__init__.py
-markupsafe._constants|/usr/lib/python2.6/dist-packages/markupsafe/_constants.py
-markupsafe._native|/usr/lib/python2.6/dist-packages/markupsafe/_native.py
-markupsafe._speedups|/usr/lib/python2.6/dist-packages/markupsafe/_speedups.so
-markupsafe.tests|/usr/lib/python2.6/dist-packages/markupsafe/tests.py
-marshal
-math
-md5|/usr/lib/python2.6/md5.py
-mhlib|/usr/lib/python2.6/mhlib.py
-mimetools|/usr/lib/python2.6/mimetools.py
-mimetypes|/usr/lib/python2.6/mimetypes.py
-mimify|/usr/lib/python2.6/mimify.py
-mmap|/usr/lib/python2.6/lib-dynload/mmap.so
-mmkeys|/usr/lib/pymodules/python2.6/mmkeys.so
-modulefinder|/usr/lib/python2.6/modulefinder.py
-msvcrt
-multifile|/usr/lib/python2.6/multifile.py
-multiprocessing.__init__|/usr/lib/python2.6/multiprocessing/__init__.py
-multiprocessing.connection|/usr/lib/python2.6/multiprocessing/connection.py
-multiprocessing.dummy.__init__|/usr/lib/python2.6/multiprocessing/dummy/__init__.py
-multiprocessing.dummy.connection|/usr/lib/python2.6/multiprocessing/dummy/connection.py
-multiprocessing.forking|/usr/lib/python2.6/multiprocessing/forking.py
-multiprocessing.heap|/usr/lib/python2.6/multiprocessing/heap.py
-multiprocessing.managers|/usr/lib/python2.6/multiprocessing/managers.py
-multiprocessing.pool|/usr/lib/python2.6/multiprocessing/pool.py
-multiprocessing.process|/usr/lib/python2.6/multiprocessing/process.py
-multiprocessing.queues|/usr/lib/python2.6/multiprocessing/queues.py
-multiprocessing.reduction|/usr/lib/python2.6/multiprocessing/reduction.py
-multiprocessing.sharedctypes|/usr/lib/python2.6/multiprocessing/sharedctypes.py
-multiprocessing.synchronize|/usr/lib/python2.6/multiprocessing/synchronize.py
-multiprocessing.util|/usr/lib/python2.6/multiprocessing/util.py
-mutagen.__init__|/usr/lib/pymodules/python2.6/mutagen/__init__.py
-mutagen._constants|/usr/lib/pymodules/python2.6/mutagen/_constants.py
-mutagen._util|/usr/lib/pymodules/python2.6/mutagen/_util.py
-mutagen._vorbis|/usr/lib/pymodules/python2.6/mutagen/_vorbis.py
-mutagen.apev2|/usr/lib/pymodules/python2.6/mutagen/apev2.py
-mutagen.asf|/usr/lib/pymodules/python2.6/mutagen/asf.py
-mutagen.easyid3|/usr/lib/pymodules/python2.6/mutagen/easyid3.py
-mutagen.easymp4|/usr/lib/pymodules/python2.6/mutagen/easymp4.py
-mutagen.flac|/usr/lib/pymodules/python2.6/mutagen/flac.py
-mutagen.id3|/usr/lib/pymodules/python2.6/mutagen/id3.py
-mutagen.m4a|/usr/lib/pymodules/python2.6/mutagen/m4a.py
-mutagen.monkeysaudio|/usr/lib/pymodules/python2.6/mutagen/monkeysaudio.py
-mutagen.mp3|/usr/lib/pymodules/python2.6/mutagen/mp3.py
-mutagen.mp4|/usr/lib/pymodules/python2.6/mutagen/mp4.py
-mutagen.musepack|/usr/lib/pymodules/python2.6/mutagen/musepack.py
-mutagen.ogg|/usr/lib/pymodules/python2.6/mutagen/ogg.py
-mutagen.oggflac|/usr/lib/pymodules/python2.6/mutagen/oggflac.py
-mutagen.oggspeex|/usr/lib/pymodules/python2.6/mutagen/oggspeex.py
-mutagen.oggtheora|/usr/lib/pymodules/python2.6/mutagen/oggtheora.py
-mutagen.oggvorbis|/usr/lib/pymodules/python2.6/mutagen/oggvorbis.py
-mutagen.optimfrog|/usr/lib/pymodules/python2.6/mutagen/optimfrog.py
-mutagen.trueaudio|/usr/lib/pymodules/python2.6/mutagen/trueaudio.py
-mutagen.wavpack|/usr/lib/pymodules/python2.6/mutagen/wavpack.py
-mutex|/usr/lib/python2.6/mutex.py
-mx.DateTime.ARPA|/usr/lib/python2.6/dist-packages/mx/DateTime/ARPA.py
-mx.DateTime.DateTime|/usr/lib/python2.6/dist-packages/mx/DateTime/DateTime.py
-mx.DateTime.Feasts|/usr/lib/python2.6/dist-packages/mx/DateTime/Feasts.py
-mx.DateTime.ISO|/usr/lib/python2.6/dist-packages/mx/DateTime/ISO.py
-mx.DateTime.LazyModule|/usr/lib/python2.6/dist-packages/mx/DateTime/LazyModule.py
-mx.DateTime.Locale|/usr/lib/python2.6/dist-packages/mx/DateTime/Locale.py
-mx.DateTime.NIST|/usr/lib/python2.6/dist-packages/mx/DateTime/NIST.py
-mx.DateTime.ODMG|/usr/lib/python2.6/dist-packages/mx/DateTime/ODMG.py
-mx.DateTime.Parser|/usr/lib/python2.6/dist-packages/mx/DateTime/Parser.py
-mx.DateTime.Timezone|/usr/lib/python2.6/dist-packages/mx/DateTime/Timezone.py
-mx.DateTime.__init__|/usr/lib/python2.6/dist-packages/mx/DateTime/__init__.py
-mx.DateTime.mxDateTime.__init__|/usr/lib/python2.6/dist-packages/mx/DateTime/mxDateTime/__init__.py
-mx.DateTime.mxDateTime.mxDateTime|/usr/lib/python2.6/dist-packages/mx/DateTime/mxDateTime/mxDateTime.so
-mx.DateTime.mxDateTime.mxDateTime_Python|/usr/lib/python2.6/dist-packages/mx/DateTime/mxDateTime/mxDateTime_Python.py
-mx.DateTime.mxDateTime.test|/usr/lib/python2.6/dist-packages/mx/DateTime/mxDateTime/test.py
-mx.DateTime.mxDateTime.testcmp|/usr/lib/python2.6/dist-packages/mx/DateTime/mxDateTime/testcmp.py
-mx.DateTime.mxDateTime.testcoerce|/usr/lib/python2.6/dist-packages/mx/DateTime/mxDateTime/testcoerce.py
-mx.DateTime.mxDateTime.testcomdates|/usr/lib/python2.6/dist-packages/mx/DateTime/mxDateTime/testcomdates.py
-mx.DateTime.mxDateTime.testnow|/usr/lib/python2.6/dist-packages/mx/DateTime/mxDateTime/testnow.py
-mx.DateTime.mxDateTime.testpydatetime|/usr/lib/python2.6/dist-packages/mx/DateTime/mxDateTime/testpydatetime.py
-mx.DateTime.mxDateTime.testrichard|/usr/lib/python2.6/dist-packages/mx/DateTime/mxDateTime/testrichard.py
-mx.DateTime.mxDateTime.testroundoff|/usr/lib/python2.6/dist-packages/mx/DateTime/mxDateTime/testroundoff.py
-mx.DateTime.mxDateTime.teststrftime|/usr/lib/python2.6/dist-packages/mx/DateTime/mxDateTime/teststrftime.py
-mx.DateTime.mxDateTime.testsubclassing|/usr/lib/python2.6/dist-packages/mx/DateTime/mxDateTime/testsubclassing.py
-mx.DateTime.mxDateTime.testticks|/usr/lib/python2.6/dist-packages/mx/DateTime/mxDateTime/testticks.py
-mx.DateTime.timegm|/usr/lib/python2.6/dist-packages/mx/DateTime/timegm.py
-mx.Log|/usr/lib/python2.6/dist-packages/mx/Log.py
-mx.Misc.CSV|/usr/lib/python2.6/dist-packages/mx/Misc/CSV.py
-mx.Misc.Cache|/usr/lib/python2.6/dist-packages/mx/Misc/Cache.py
-mx.Misc.CommandLine|/usr/lib/python2.6/dist-packages/mx/Misc/CommandLine.py
-mx.Misc.ConfigFile|/usr/lib/python2.6/dist-packages/mx/Misc/ConfigFile.py
-mx.Misc.Cookie|/usr/lib/python2.6/dist-packages/mx/Misc/Cookie.py
-mx.Misc.ExitFunctions|/usr/lib/python2.6/dist-packages/mx/Misc/ExitFunctions.py
-mx.Misc.FileLock|/usr/lib/python2.6/dist-packages/mx/Misc/FileLock.py
-mx.Misc.LazyModule|/usr/lib/python2.6/dist-packages/mx/Misc/LazyModule.py
-mx.Misc.Namespace|/usr/lib/python2.6/dist-packages/mx/Misc/Namespace.py
-mx.Misc.OrderedMapping|/usr/lib/python2.6/dist-packages/mx/Misc/OrderedMapping.py
-mx.Misc.PackageTools|/usr/lib/python2.6/dist-packages/mx/Misc/PackageTools.py
-mx.Misc.__init__|/usr/lib/python2.6/dist-packages/mx/Misc/__init__.py
-mx.NewBuiltins|/usr/lib/python2.6/dist-packages/mx/NewBuiltins.py
-mx.Tools.NewBuiltins|/usr/lib/python2.6/dist-packages/mx/Tools/NewBuiltins.py
-mx.Tools.Tools|/usr/lib/python2.6/dist-packages/mx/Tools/Tools.py
-mx.Tools.__init__|/usr/lib/python2.6/dist-packages/mx/Tools/__init__.py
-mx.Tools.mxTools.__init__|/usr/lib/python2.6/dist-packages/mx/Tools/mxTools/__init__.py
-mx.Tools.mxTools.bench1|/usr/lib/python2.6/dist-packages/mx/Tools/mxTools/bench1.py
-mx.Tools.mxTools.bench2|/usr/lib/python2.6/dist-packages/mx/Tools/mxTools/bench2.py
-mx.Tools.mxTools.hack|/usr/lib/python2.6/dist-packages/mx/Tools/mxTools/hack.py
-mx.Tools.mxTools.mxTools|/usr/lib/python2.6/dist-packages/mx/Tools/mxTools/mxTools.so
-mx.Tools.mxTools.test|/usr/lib/python2.6/dist-packages/mx/Tools/mxTools/test.py
-mx.Tools.mxTools.test_safecall|/usr/lib/python2.6/dist-packages/mx/Tools/mxTools/test_safecall.py
-mx.__init__|/usr/lib/python2.6/dist-packages/mx/__init__.py
-netrc|/usr/lib/python2.6/netrc.py
-new|/usr/lib/python2.6/new.py
-nis|/usr/lib/python2.6/lib-dynload/nis.so
-nntplib|/usr/lib/python2.6/nntplib.py
-nt
-ntpath|/usr/lib/python2.6/ntpath.py
-nturl2path|/usr/lib/python2.6/nturl2path.py
-numbers|/usr/lib/python2.6/numbers.py
-numpy
-numpy.__config__|/usr/lib/python2.6/dist-packages/numpy/__config__.py
-numpy.__init__|/usr/lib/python2.6/dist-packages/numpy/__init__.py
-numpy._import_tools|/usr/lib/python2.6/dist-packages/numpy/_import_tools.py
-numpy.add_newdocs|/usr/lib/python2.6/dist-packages/numpy/add_newdocs.py
-numpy.core.__init__|/usr/lib/python2.6/dist-packages/numpy/core/__init__.py
-numpy.core._dotblas|/usr/lib/python2.6/dist-packages/numpy/core/_dotblas.so
-numpy.core._internal|/usr/lib/python2.6/dist-packages/numpy/core/_internal.py
-numpy.core._sort|/usr/lib/python2.6/dist-packages/numpy/core/_sort.so
-numpy.core.arrayprint|/usr/lib/python2.6/dist-packages/numpy/core/arrayprint.py
-numpy.core.defchararray|/usr/lib/python2.6/dist-packages/numpy/core/defchararray.py
-numpy.core.defmatrix|/usr/lib/python2.6/dist-packages/numpy/core/defmatrix.py
-numpy.core.fromnumeric|/usr/lib/python2.6/dist-packages/numpy/core/fromnumeric.py
-numpy.core.generate_numpy_api|/usr/lib/python2.6/dist-packages/numpy/core/generate_numpy_api.py
-numpy.core.info|/usr/lib/python2.6/dist-packages/numpy/core/info.py
-numpy.core.memmap|/usr/lib/python2.6/dist-packages/numpy/core/memmap.py
-numpy.core.multiarray|/usr/lib/python2.6/dist-packages/numpy/core/multiarray.so
-numpy.core.numeric|/usr/lib/python2.6/dist-packages/numpy/core/numeric.py
-numpy.core.numerictypes|/usr/lib/python2.6/dist-packages/numpy/core/numerictypes.py
-numpy.core.records|/usr/lib/python2.6/dist-packages/numpy/core/records.py
-numpy.core.scalarmath|/usr/lib/python2.6/dist-packages/numpy/core/scalarmath.so
-numpy.core.scons_support|/usr/lib/python2.6/dist-packages/numpy/core/scons_support.py
-numpy.core.setup|/usr/lib/python2.6/dist-packages/numpy/core/setup.py
-numpy.core.setup_common|/usr/lib/python2.6/dist-packages/numpy/core/setup_common.py
-numpy.core.setupscons|/usr/lib/python2.6/dist-packages/numpy/core/setupscons.py
-numpy.core.umath|/usr/lib/python2.6/dist-packages/numpy/core/umath.so
-numpy.core.umath_tests|/usr/lib/python2.6/dist-packages/numpy/core/umath_tests.so
-numpy.ctypeslib|/usr/lib/python2.6/dist-packages/numpy/ctypeslib.py
-numpy.distutils.__config__|/usr/lib/python2.6/dist-packages/numpy/distutils/__config__.py
-numpy.distutils.__init__|/usr/lib/python2.6/dist-packages/numpy/distutils/__init__.py
-numpy.distutils.__version__|/usr/lib/python2.6/dist-packages/numpy/distutils/__version__.py
-numpy.distutils.ccompiler|/usr/lib/python2.6/dist-packages/numpy/distutils/ccompiler.py
-numpy.distutils.command.__init__|/usr/lib/python2.6/dist-packages/numpy/distutils/command/__init__.py
-numpy.distutils.command.autodist|/usr/lib/python2.6/dist-packages/numpy/distutils/command/autodist.py
-numpy.distutils.command.bdist_rpm|/usr/lib/python2.6/dist-packages/numpy/distutils/command/bdist_rpm.py
-numpy.distutils.command.build|/usr/lib/python2.6/dist-packages/numpy/distutils/command/build.py
-numpy.distutils.command.build_clib|/usr/lib/python2.6/dist-packages/numpy/distutils/command/build_clib.py
-numpy.distutils.command.build_ext|/usr/lib/python2.6/dist-packages/numpy/distutils/command/build_ext.py
-numpy.distutils.command.build_py|/usr/lib/python2.6/dist-packages/numpy/distutils/command/build_py.py
-numpy.distutils.command.build_scripts|/usr/lib/python2.6/dist-packages/numpy/distutils/command/build_scripts.py
-numpy.distutils.command.build_src|/usr/lib/python2.6/dist-packages/numpy/distutils/command/build_src.py
-numpy.distutils.command.config|/usr/lib/python2.6/dist-packages/numpy/distutils/command/config.py
-numpy.distutils.command.config_compiler|/usr/lib/python2.6/dist-packages/numpy/distutils/command/config_compiler.py
-numpy.distutils.command.develop|/usr/lib/python2.6/dist-packages/numpy/distutils/command/develop.py
-numpy.distutils.command.egg_info|/usr/lib/python2.6/dist-packages/numpy/distutils/command/egg_info.py
-numpy.distutils.command.install|/usr/lib/python2.6/dist-packages/numpy/distutils/command/install.py
-numpy.distutils.command.install_data|/usr/lib/python2.6/dist-packages/numpy/distutils/command/install_data.py
-numpy.distutils.command.install_headers|/usr/lib/python2.6/dist-packages/numpy/distutils/command/install_headers.py
-numpy.distutils.command.scons|/usr/lib/python2.6/dist-packages/numpy/distutils/command/scons.py
-numpy.distutils.command.sdist|/usr/lib/python2.6/dist-packages/numpy/distutils/command/sdist.py
-numpy.distutils.conv_template|/usr/lib/python2.6/dist-packages/numpy/distutils/conv_template.py
-numpy.distutils.core|/usr/lib/python2.6/dist-packages/numpy/distutils/core.py
-numpy.distutils.cpuinfo|/usr/lib/python2.6/dist-packages/numpy/distutils/cpuinfo.py
-numpy.distutils.environment|/usr/lib/python2.6/dist-packages/numpy/distutils/environment.py
-numpy.distutils.exec_command|/usr/lib/python2.6/dist-packages/numpy/distutils/exec_command.py
-numpy.distutils.extension|/usr/lib/python2.6/dist-packages/numpy/distutils/extension.py
-numpy.distutils.fcompiler.__init__|/usr/lib/python2.6/dist-packages/numpy/distutils/fcompiler/__init__.py
-numpy.distutils.fcompiler.absoft|/usr/lib/python2.6/dist-packages/numpy/distutils/fcompiler/absoft.py
-numpy.distutils.fcompiler.compaq|/usr/lib/python2.6/dist-packages/numpy/distutils/fcompiler/compaq.py
-numpy.distutils.fcompiler.g95|/usr/lib/python2.6/dist-packages/numpy/distutils/fcompiler/g95.py
-numpy.distutils.fcompiler.gnu|/usr/lib/python2.6/dist-packages/numpy/distutils/fcompiler/gnu.py
-numpy.distutils.fcompiler.hpux|/usr/lib/python2.6/dist-packages/numpy/distutils/fcompiler/hpux.py
-numpy.distutils.fcompiler.ibm|/usr/lib/python2.6/dist-packages/numpy/distutils/fcompiler/ibm.py
-numpy.distutils.fcompiler.intel|/usr/lib/python2.6/dist-packages/numpy/distutils/fcompiler/intel.py
-numpy.distutils.fcompiler.lahey|/usr/lib/python2.6/dist-packages/numpy/distutils/fcompiler/lahey.py
-numpy.distutils.fcompiler.mips|/usr/lib/python2.6/dist-packages/numpy/distutils/fcompiler/mips.py
-numpy.distutils.fcompiler.nag|/usr/lib/python2.6/dist-packages/numpy/distutils/fcompiler/nag.py
-numpy.distutils.fcompiler.none|/usr/lib/python2.6/dist-packages/numpy/distutils/fcompiler/none.py
-numpy.distutils.fcompiler.pg|/usr/lib/python2.6/dist-packages/numpy/distutils/fcompiler/pg.py
-numpy.distutils.fcompiler.sun|/usr/lib/python2.6/dist-packages/numpy/distutils/fcompiler/sun.py
-numpy.distutils.fcompiler.vast|/usr/lib/python2.6/dist-packages/numpy/distutils/fcompiler/vast.py
-numpy.distutils.from_template|/usr/lib/python2.6/dist-packages/numpy/distutils/from_template.py
-numpy.distutils.info|/usr/lib/python2.6/dist-packages/numpy/distutils/info.py
-numpy.distutils.intelccompiler|/usr/lib/python2.6/dist-packages/numpy/distutils/intelccompiler.py
-numpy.distutils.interactive|/usr/lib/python2.6/dist-packages/numpy/distutils/interactive.py
-numpy.distutils.lib2def|/usr/lib/python2.6/dist-packages/numpy/distutils/lib2def.py
-numpy.distutils.line_endings|/usr/lib/python2.6/dist-packages/numpy/distutils/line_endings.py
-numpy.distutils.log|/usr/lib/python2.6/dist-packages/numpy/distutils/log.py
-numpy.distutils.mingw32ccompiler|/usr/lib/python2.6/dist-packages/numpy/distutils/mingw32ccompiler.py
-numpy.distutils.misc_util|/usr/lib/python2.6/dist-packages/numpy/distutils/misc_util.py
-numpy.distutils.numpy_distribution|/usr/lib/python2.6/dist-packages/numpy/distutils/numpy_distribution.py
-numpy.distutils.setup|/usr/lib/python2.6/dist-packages/numpy/distutils/setup.py
-numpy.distutils.setupscons|/usr/lib/python2.6/dist-packages/numpy/distutils/setupscons.py
-numpy.distutils.system_info|/usr/lib/python2.6/dist-packages/numpy/distutils/system_info.py
-numpy.distutils.unixccompiler|/usr/lib/python2.6/dist-packages/numpy/distutils/unixccompiler.py
-numpy.dual|/usr/lib/python2.6/dist-packages/numpy/dual.py
-numpy.f2py.__init__|/usr/lib/python2.6/dist-packages/numpy/f2py/__init__.py
-numpy.f2py.__version__|/usr/lib/python2.6/dist-packages/numpy/f2py/__version__.py
-numpy.f2py.auxfuncs|/usr/lib/python2.6/dist-packages/numpy/f2py/auxfuncs.py
-numpy.f2py.capi_maps|/usr/lib/python2.6/dist-packages/numpy/f2py/capi_maps.py
-numpy.f2py.cb_rules|/usr/lib/python2.6/dist-packages/numpy/f2py/cb_rules.py
-numpy.f2py.cfuncs|/usr/lib/python2.6/dist-packages/numpy/f2py/cfuncs.py
-numpy.f2py.common_rules|/usr/lib/python2.6/dist-packages/numpy/f2py/common_rules.py
-numpy.f2py.crackfortran|/usr/lib/python2.6/dist-packages/numpy/f2py/crackfortran.py
-numpy.f2py.diagnose|/usr/lib/python2.6/dist-packages/numpy/f2py/diagnose.py
-numpy.f2py.f2py2e|/usr/lib/python2.6/dist-packages/numpy/f2py/f2py2e.py
-numpy.f2py.f2py_testing|/usr/lib/python2.6/dist-packages/numpy/f2py/f2py_testing.py
-numpy.f2py.f90mod_rules|/usr/lib/python2.6/dist-packages/numpy/f2py/f90mod_rules.py
-numpy.f2py.func2subr|/usr/lib/python2.6/dist-packages/numpy/f2py/func2subr.py
-numpy.f2py.info|/usr/lib/python2.6/dist-packages/numpy/f2py/info.py
-numpy.f2py.rules|/usr/lib/python2.6/dist-packages/numpy/f2py/rules.py
-numpy.f2py.setup|/usr/lib/python2.6/dist-packages/numpy/f2py/setup.py
-numpy.f2py.setupscons|/usr/lib/python2.6/dist-packages/numpy/f2py/setupscons.py
-numpy.f2py.use_rules|/usr/lib/python2.6/dist-packages/numpy/f2py/use_rules.py
-numpy.fft.__init__|/usr/lib/python2.6/dist-packages/numpy/fft/__init__.py
-numpy.fft.fftpack|/usr/lib/python2.6/dist-packages/numpy/fft/fftpack.py
-numpy.fft.fftpack_lite|/usr/lib/python2.6/dist-packages/numpy/fft/fftpack_lite.so
-numpy.fft.helper|/usr/lib/python2.6/dist-packages/numpy/fft/helper.py
-numpy.fft.info|/usr/lib/python2.6/dist-packages/numpy/fft/info.py
-numpy.fft.setup|/usr/lib/python2.6/dist-packages/numpy/fft/setup.py
-numpy.fft.setupscons|/usr/lib/python2.6/dist-packages/numpy/fft/setupscons.py
-numpy.lib.__init__|/usr/lib/python2.6/dist-packages/numpy/lib/__init__.py
-numpy.lib._compiled_base|/usr/lib/python2.6/dist-packages/numpy/lib/_compiled_base.so
-numpy.lib._datasource|/usr/lib/python2.6/dist-packages/numpy/lib/_datasource.py
-numpy.lib._iotools|/usr/lib/python2.6/dist-packages/numpy/lib/_iotools.py
-numpy.lib.arraysetops|/usr/lib/python2.6/dist-packages/numpy/lib/arraysetops.py
-numpy.lib.arrayterator|/usr/lib/python2.6/dist-packages/numpy/lib/arrayterator.py
-numpy.lib.financial|/usr/lib/python2.6/dist-packages/numpy/lib/financial.py
-numpy.lib.format|/usr/lib/python2.6/dist-packages/numpy/lib/format.py
-numpy.lib.function_base|/usr/lib/python2.6/dist-packages/numpy/lib/function_base.py
-numpy.lib.getlimits|/usr/lib/python2.6/dist-packages/numpy/lib/getlimits.py
-numpy.lib.index_tricks|/usr/lib/python2.6/dist-packages/numpy/lib/index_tricks.py
-numpy.lib.info|/usr/lib/python2.6/dist-packages/numpy/lib/info.py
-numpy.lib.io|/usr/lib/python2.6/dist-packages/numpy/lib/io.py
-numpy.lib.machar|/usr/lib/python2.6/dist-packages/numpy/lib/machar.py
-numpy.lib.polynomial|/usr/lib/python2.6/dist-packages/numpy/lib/polynomial.py
-numpy.lib.recfunctions|/usr/lib/python2.6/dist-packages/numpy/lib/recfunctions.py
-numpy.lib.scimath|/usr/lib/python2.6/dist-packages/numpy/lib/scimath.py
-numpy.lib.setup|/usr/lib/python2.6/dist-packages/numpy/lib/setup.py
-numpy.lib.setupscons|/usr/lib/python2.6/dist-packages/numpy/lib/setupscons.py
-numpy.lib.shape_base|/usr/lib/python2.6/dist-packages/numpy/lib/shape_base.py
-numpy.lib.stride_tricks|/usr/lib/python2.6/dist-packages/numpy/lib/stride_tricks.py
-numpy.lib.twodim_base|/usr/lib/python2.6/dist-packages/numpy/lib/twodim_base.py
-numpy.lib.type_check|/usr/lib/python2.6/dist-packages/numpy/lib/type_check.py
-numpy.lib.ufunclike|/usr/lib/python2.6/dist-packages/numpy/lib/ufunclike.py
-numpy.lib.user_array|/usr/lib/python2.6/dist-packages/numpy/lib/user_array.py
-numpy.lib.utils|/usr/lib/python2.6/dist-packages/numpy/lib/utils.py
-numpy.linalg.__init__|/usr/lib/python2.6/dist-packages/numpy/linalg/__init__.py
-numpy.linalg.info|/usr/lib/python2.6/dist-packages/numpy/linalg/info.py
-numpy.linalg.lapack_lite|/usr/lib/python2.6/dist-packages/numpy/linalg/lapack_lite.so
-numpy.linalg.linalg|/usr/lib/python2.6/dist-packages/numpy/linalg/linalg.py
-numpy.linalg.setup|/usr/lib/python2.6/dist-packages/numpy/linalg/setup.py
-numpy.linalg.setupscons|/usr/lib/python2.6/dist-packages/numpy/linalg/setupscons.py
-numpy.ma.__init__|/usr/lib/python2.6/dist-packages/numpy/ma/__init__.py
-numpy.ma.bench|/usr/lib/python2.6/dist-packages/numpy/ma/bench.py
-numpy.ma.core|/usr/lib/python2.6/dist-packages/numpy/ma/core.py
-numpy.ma.extras|/usr/lib/python2.6/dist-packages/numpy/ma/extras.py
-numpy.ma.mrecords|/usr/lib/python2.6/dist-packages/numpy/ma/mrecords.py
-numpy.ma.setup|/usr/lib/python2.6/dist-packages/numpy/ma/setup.py
-numpy.ma.setupscons|/usr/lib/python2.6/dist-packages/numpy/ma/setupscons.py
-numpy.ma.testutils|/usr/lib/python2.6/dist-packages/numpy/ma/testutils.py
-numpy.ma.timer_comparison|/usr/lib/python2.6/dist-packages/numpy/ma/timer_comparison.py
-numpy.ma.version|/usr/lib/python2.6/dist-packages/numpy/ma/version.py
-numpy.matlib|/usr/lib/python2.6/dist-packages/numpy/matlib.py
-numpy.numarray.__init__|/usr/lib/python2.6/dist-packages/numpy/numarray/__init__.py
-numpy.numarray._capi|/usr/lib/python2.6/dist-packages/numpy/numarray/_capi.so
-numpy.numarray.alter_code1|/usr/lib/python2.6/dist-packages/numpy/numarray/alter_code1.py
-numpy.numarray.alter_code2|/usr/lib/python2.6/dist-packages/numpy/numarray/alter_code2.py
-numpy.numarray.compat|/usr/lib/python2.6/dist-packages/numpy/numarray/compat.py
-numpy.numarray.convolve|/usr/lib/python2.6/dist-packages/numpy/numarray/convolve.py
-numpy.numarray.fft|/usr/lib/python2.6/dist-packages/numpy/numarray/fft.py
-numpy.numarray.functions|/usr/lib/python2.6/dist-packages/numpy/numarray/functions.py
-numpy.numarray.image|/usr/lib/python2.6/dist-packages/numpy/numarray/image.py
-numpy.numarray.linear_algebra|/usr/lib/python2.6/dist-packages/numpy/numarray/linear_algebra.py
-numpy.numarray.ma|/usr/lib/python2.6/dist-packages/numpy/numarray/ma.py
-numpy.numarray.matrix|/usr/lib/python2.6/dist-packages/numpy/numarray/matrix.py
-numpy.numarray.mlab|/usr/lib/python2.6/dist-packages/numpy/numarray/mlab.py
-numpy.numarray.nd_image|/usr/lib/python2.6/dist-packages/numpy/numarray/nd_image.py
-numpy.numarray.numerictypes|/usr/lib/python2.6/dist-packages/numpy/numarray/numerictypes.py
-numpy.numarray.random_array|/usr/lib/python2.6/dist-packages/numpy/numarray/random_array.py
-numpy.numarray.session|/usr/lib/python2.6/dist-packages/numpy/numarray/session.py
-numpy.numarray.setup|/usr/lib/python2.6/dist-packages/numpy/numarray/setup.py
-numpy.numarray.setupscons|/usr/lib/python2.6/dist-packages/numpy/numarray/setupscons.py
-numpy.numarray.ufuncs|/usr/lib/python2.6/dist-packages/numpy/numarray/ufuncs.py
-numpy.numarray.util|/usr/lib/python2.6/dist-packages/numpy/numarray/util.py
-numpy.oldnumeric.__init__|/usr/lib/python2.6/dist-packages/numpy/oldnumeric/__init__.py
-numpy.oldnumeric.alter_code1|/usr/lib/python2.6/dist-packages/numpy/oldnumeric/alter_code1.py
-numpy.oldnumeric.alter_code2|/usr/lib/python2.6/dist-packages/numpy/oldnumeric/alter_code2.py
-numpy.oldnumeric.array_printer|/usr/lib/python2.6/dist-packages/numpy/oldnumeric/array_printer.py
-numpy.oldnumeric.arrayfns|/usr/lib/python2.6/dist-packages/numpy/oldnumeric/arrayfns.py
-numpy.oldnumeric.compat|/usr/lib/python2.6/dist-packages/numpy/oldnumeric/compat.py
-numpy.oldnumeric.fft|/usr/lib/python2.6/dist-packages/numpy/oldnumeric/fft.py
-numpy.oldnumeric.fix_default_axis|/usr/lib/python2.6/dist-packages/numpy/oldnumeric/fix_default_axis.py
-numpy.oldnumeric.functions|/usr/lib/python2.6/dist-packages/numpy/oldnumeric/functions.py
-numpy.oldnumeric.linear_algebra|/usr/lib/python2.6/dist-packages/numpy/oldnumeric/linear_algebra.py
-numpy.oldnumeric.ma|/usr/lib/python2.6/dist-packages/numpy/oldnumeric/ma.py
-numpy.oldnumeric.matrix|/usr/lib/python2.6/dist-packages/numpy/oldnumeric/matrix.py
-numpy.oldnumeric.misc|/usr/lib/python2.6/dist-packages/numpy/oldnumeric/misc.py
-numpy.oldnumeric.mlab|/usr/lib/python2.6/dist-packages/numpy/oldnumeric/mlab.py
-numpy.oldnumeric.precision|/usr/lib/python2.6/dist-packages/numpy/oldnumeric/precision.py
-numpy.oldnumeric.random_array|/usr/lib/python2.6/dist-packages/numpy/oldnumeric/random_array.py
-numpy.oldnumeric.rng|/usr/lib/python2.6/dist-packages/numpy/oldnumeric/rng.py
-numpy.oldnumeric.rng_stats|/usr/lib/python2.6/dist-packages/numpy/oldnumeric/rng_stats.py
-numpy.oldnumeric.setup|/usr/lib/python2.6/dist-packages/numpy/oldnumeric/setup.py
-numpy.oldnumeric.setupscons|/usr/lib/python2.6/dist-packages/numpy/oldnumeric/setupscons.py
-numpy.oldnumeric.typeconv|/usr/lib/python2.6/dist-packages/numpy/oldnumeric/typeconv.py
-numpy.oldnumeric.ufuncs|/usr/lib/python2.6/dist-packages/numpy/oldnumeric/ufuncs.py
-numpy.oldnumeric.user_array|/usr/lib/python2.6/dist-packages/numpy/oldnumeric/user_array.py
-numpy.random.__init__|/usr/lib/python2.6/dist-packages/numpy/random/__init__.py
-numpy.random.info|/usr/lib/python2.6/dist-packages/numpy/random/info.py
-numpy.random.mtrand|/usr/lib/python2.6/dist-packages/numpy/random/mtrand.so
-numpy.random.setup|/usr/lib/python2.6/dist-packages/numpy/random/setup.py
-numpy.random.setupscons|/usr/lib/python2.6/dist-packages/numpy/random/setupscons.py
-numpy.setup|/usr/lib/python2.6/dist-packages/numpy/setup.py
-numpy.setupscons|/usr/lib/python2.6/dist-packages/numpy/setupscons.py
-numpy.testing.__init__|/usr/lib/python2.6/dist-packages/numpy/testing/__init__.py
-numpy.testing.decorators|/usr/lib/python2.6/dist-packages/numpy/testing/decorators.py
-numpy.testing.noseclasses|/usr/lib/python2.6/dist-packages/numpy/testing/noseclasses.py
-numpy.testing.nosetester|/usr/lib/python2.6/dist-packages/numpy/testing/nosetester.py
-numpy.testing.nulltester|/usr/lib/python2.6/dist-packages/numpy/testing/nulltester.py
-numpy.testing.numpytest|/usr/lib/python2.6/dist-packages/numpy/testing/numpytest.py
-numpy.testing.setup|/usr/lib/python2.6/dist-packages/numpy/testing/setup.py
-numpy.testing.setupscons|/usr/lib/python2.6/dist-packages/numpy/testing/setupscons.py
-numpy.testing.utils|/usr/lib/python2.6/dist-packages/numpy/testing/utils.py
-numpy.version|/usr/lib/python2.6/dist-packages/numpy/version.py
-oauth.__init__|/usr/lib/python2.6/dist-packages/oauth/__init__.py
-oauth.oauth|/usr/lib/python2.6/dist-packages/oauth/oauth.py
-opcode|/usr/lib/python2.6/opcode.py
-operator
-optparse|/usr/lib/python2.6/optparse.py
-os|/usr/lib/python2.6/os.py
-os.path
-os2emxpath|/usr/lib/python2.6/os2emxpath.py
-ossaudiodev|/usr/lib/python2.6/lib-dynload/ossaudiodev.so
-pango|/usr/lib/pymodules/python2.6/gtk-2.0/pango.so
-pangocairo|/usr/lib/pymodules/python2.6/gtk-2.0/pangocairo.so
-parser|/usr/lib/python2.6/lib-dynload/parser.so
-pcardext|/usr/lib/pymodules/python2.6/pcardext.so
-pdb|/usr/lib/python2.6/pdb.py
-pexpect|/usr/lib/python2.6/dist-packages/pexpect.py
-pickle|/usr/lib/python2.6/pickle.py
-pickletools|/usr/lib/python2.6/pickletools.py
-pipes|/usr/lib/python2.6/pipes.py
-pkg_resources|/usr/lib/python2.6/dist-packages/pkg_resources.py
-pkgutil|/usr/lib/python2.6/pkgutil.py
-platform|/usr/lib/python2.6/platform.py
-plistlib|/usr/lib/python2.6/plistlib.py
-popen2|/usr/lib/python2.6/popen2.py
-poplib|/usr/lib/python2.6/poplib.py
-posix
-posixfile|/usr/lib/python2.6/posixfile.py
-posixpath|/usr/lib/python2.6/posixpath.py
-pprint|/usr/lib/python2.6/pprint.py
-problem_report|/usr/lib/python2.6/dist-packages/problem_report.py
-pty|/usr/lib/python2.6/pty.py
-pwd
-pxssh|/usr/lib/python2.6/dist-packages/pxssh.py
-py_compile|/usr/lib/python2.6/py_compile.py
-pyasn1.__init__|/usr/lib/pymodules/python2.6/pyasn1/__init__.py
-pyasn1.codec.__init__|/usr/lib/pymodules/python2.6/pyasn1/codec/__init__.py
-pyasn1.codec.ber.__init__|/usr/lib/pymodules/python2.6/pyasn1/codec/ber/__init__.py
-pyasn1.codec.ber.decoder|/usr/lib/pymodules/python2.6/pyasn1/codec/ber/decoder.py
-pyasn1.codec.ber.encoder|/usr/lib/pymodules/python2.6/pyasn1/codec/ber/encoder.py
-pyasn1.codec.ber.eoo|/usr/lib/pymodules/python2.6/pyasn1/codec/ber/eoo.py
-pyasn1.codec.cer.__init__|/usr/lib/pymodules/python2.6/pyasn1/codec/cer/__init__.py
-pyasn1.codec.cer.decoder|/usr/lib/pymodules/python2.6/pyasn1/codec/cer/decoder.py
-pyasn1.codec.cer.encoder|/usr/lib/pymodules/python2.6/pyasn1/codec/cer/encoder.py
-pyasn1.codec.der.__init__|/usr/lib/pymodules/python2.6/pyasn1/codec/der/__init__.py
-pyasn1.codec.der.decoder|/usr/lib/pymodules/python2.6/pyasn1/codec/der/decoder.py
-pyasn1.codec.der.encoder|/usr/lib/pymodules/python2.6/pyasn1/codec/der/encoder.py
-pyasn1.error|/usr/lib/pymodules/python2.6/pyasn1/error.py
-pyasn1.type.__init__|/usr/lib/pymodules/python2.6/pyasn1/type/__init__.py
-pyasn1.type.base|/usr/lib/pymodules/python2.6/pyasn1/type/base.py
-pyasn1.type.char|/usr/lib/pymodules/python2.6/pyasn1/type/char.py
-pyasn1.type.constraint|/usr/lib/pymodules/python2.6/pyasn1/type/constraint.py
-pyasn1.type.error|/usr/lib/pymodules/python2.6/pyasn1/type/error.py
-pyasn1.type.namedtype|/usr/lib/pymodules/python2.6/pyasn1/type/namedtype.py
-pyasn1.type.namedval|/usr/lib/pymodules/python2.6/pyasn1/type/namedval.py
-pyasn1.type.tag|/usr/lib/pymodules/python2.6/pyasn1/type/tag.py
-pyasn1.type.univ|/usr/lib/pymodules/python2.6/pyasn1/type/univ.py
-pyasn1.type.useful|/usr/lib/pymodules/python2.6/pyasn1/type/useful.py
-pyclbr|/usr/lib/python2.6/pyclbr.py
-pycurl|/usr/lib/pymodules/python2.6/pycurl.so
-pydoc|/usr/lib/python2.6/pydoc.py
-pydoc_topics|/usr/lib/python2.6/pydoc_topics.py
-pyexpat|/usr/lib/python2.6/lib-dynload/pyexpat.so
-pygst|/usr/lib/python2.6/dist-packages/pygst.py
-pygtk|/usr/lib/pymodules/python2.6/pygtk.py
-pyinotify|/usr/lib/pymodules/python2.6/pyinotify.py
-pynotify.__init__|/usr/lib/pymodules/python2.6/gtk-2.0/pynotify/__init__.py
-pynotify._pynotify|/usr/lib/pymodules/python2.6/gtk-2.0/pynotify/_pynotify.so
-quopri|/usr/lib/python2.6/quopri.py
-random|/usr/lib/python2.6/random.py
-re|/usr/lib/python2.6/re.py
-readline|/usr/lib/python2.6/lib-dynload/readline.so
-repr|/usr/lib/python2.6/repr.py
-resource|/usr/lib/python2.6/lib-dynload/resource.so
-rexec|/usr/lib/python2.6/rexec.py
-rfc822|/usr/lib/python2.6/rfc822.py
-rlcompleter|/usr/lib/python2.6/rlcompleter.py
-robotparser|/usr/lib/python2.6/robotparser.py
-rsvg|/usr/lib/pymodules/python2.6/gtk-2.0/rsvg.so
-runpy|/usr/lib/python2.6/runpy.py
-scanext|/usr/lib/pymodules/python2.6/scanext.so
-sched|/usr/lib/python2.6/sched.py
-screen|/usr/lib/python2.6/dist-packages/screen.py
-screenlets.Plugins|/usr/lib/pymodules/python2.6/screenlets/Plugins.py
-screenlets.__init__|/usr/lib/pymodules/python2.6/screenlets/__init__.py
-screenlets.backend|/usr/lib/pymodules/python2.6/screenlets/backend.py
-screenlets.drawing|/usr/lib/pymodules/python2.6/screenlets/drawing.py
-screenlets.install|/usr/lib/pymodules/python2.6/screenlets/install.py
-screenlets.menu|/usr/lib/pymodules/python2.6/screenlets/menu.py
-screenlets.options|/usr/lib/pymodules/python2.6/screenlets/options.py
-screenlets.plugins.Amarok|/usr/lib/pymodules/python2.6/screenlets/plugins/Amarok.py
-screenlets.plugins.AmazonCoverArtSearch|/usr/lib/pymodules/python2.6/screenlets/plugins/AmazonCoverArtSearch.py
-screenlets.plugins.Audacious|/usr/lib/pymodules/python2.6/screenlets/plugins/Audacious.py
-screenlets.plugins.Banshee|/usr/lib/pymodules/python2.6/screenlets/plugins/Banshee.py
-screenlets.plugins.BaseConverter|/usr/lib/pymodules/python2.6/screenlets/plugins/BaseConverter.py
-screenlets.plugins.Convert|/usr/lib/pymodules/python2.6/screenlets/plugins/Convert.py
-screenlets.plugins.CoverSearch|/usr/lib/pymodules/python2.6/screenlets/plugins/CoverSearch.py
-screenlets.plugins.Evolution|/usr/lib/pymodules/python2.6/screenlets/plugins/Evolution.py
-screenlets.plugins.Exaile|/usr/lib/pymodules/python2.6/screenlets/plugins/Exaile.py
-screenlets.plugins.Flickr|/usr/lib/pymodules/python2.6/screenlets/plugins/Flickr.py
-screenlets.plugins.GenericPlayer|/usr/lib/pymodules/python2.6/screenlets/plugins/GenericPlayer.py
-screenlets.plugins.Gstreamer|/usr/lib/pymodules/python2.6/screenlets/plugins/Gstreamer.py
-screenlets.plugins.Juk|/usr/lib/pymodules/python2.6/screenlets/plugins/Juk.py
-screenlets.plugins.Kaffeine|/usr/lib/pymodules/python2.6/screenlets/plugins/Kaffeine.py
-screenlets.plugins.LastFMProxy|/usr/lib/pymodules/python2.6/screenlets/plugins/LastFMProxy.py
-screenlets.plugins.LengthConverter|/usr/lib/pymodules/python2.6/screenlets/plugins/LengthConverter.py
-screenlets.plugins.Listen|/usr/lib/pymodules/python2.6/screenlets/plugins/Listen.py
-screenlets.plugins.Loader|/usr/lib/pymodules/python2.6/screenlets/plugins/Loader.py
-screenlets.plugins.Mail|/usr/lib/pymodules/python2.6/screenlets/plugins/Mail.py
-screenlets.plugins.Mplayer|/usr/lib/pymodules/python2.6/screenlets/plugins/Mplayer.py
-screenlets.plugins.Proxy|/usr/lib/pymodules/python2.6/screenlets/plugins/Proxy.py
-screenlets.plugins.Quodlibet|/usr/lib/pymodules/python2.6/screenlets/plugins/Quodlibet.py
-screenlets.plugins.Rhythmbox|/usr/lib/pymodules/python2.6/screenlets/plugins/Rhythmbox.py
-screenlets.plugins.SizeConverter|/usr/lib/pymodules/python2.6/screenlets/plugins/SizeConverter.py
-screenlets.plugins.Sonata|/usr/lib/pymodules/python2.6/screenlets/plugins/Sonata.py
-screenlets.plugins.Songbird|/usr/lib/pymodules/python2.6/screenlets/plugins/Songbird.py
-screenlets.plugins.TemperatureConverter|/usr/lib/pymodules/python2.6/screenlets/plugins/TemperatureConverter.py
-screenlets.plugins.__init__|/usr/lib/pymodules/python2.6/screenlets/plugins/__init__.py
-screenlets.plugins.iCal|/usr/lib/pymodules/python2.6/screenlets/plugins/iCal.py
-screenlets.plugins.keyring|/usr/lib/pymodules/python2.6/screenlets/plugins/keyring.py
-screenlets.plugins.mpdclient2|/usr/lib/pymodules/python2.6/screenlets/plugins/mpdclient2.py
-screenlets.sensors|/usr/lib/pymodules/python2.6/screenlets/sensors.py
-screenlets.services|/usr/lib/pymodules/python2.6/screenlets/services.py
-screenlets.session|/usr/lib/pymodules/python2.6/screenlets/session.py
-screenlets.utils|/usr/lib/pymodules/python2.6/screenlets/utils.py
-select
-serial.__init__|/usr/lib/python2.6/dist-packages/serial/__init__.py
-serial.serialjava|/usr/lib/python2.6/dist-packages/serial/serialjava.py
-serial.serialposix|/usr/lib/python2.6/dist-packages/serial/serialposix.py
-serial.serialutil|/usr/lib/python2.6/dist-packages/serial/serialutil.py
-serial.serialwin32|/usr/lib/python2.6/dist-packages/serial/serialwin32.py
-serial.sermsdos|/usr/lib/python2.6/dist-packages/serial/sermsdos.py
-sessioninstaller.__init__|/usr/lib/pymodules/python2.6/sessioninstaller/__init__.py
-sessioninstaller.backends.__init__|/usr/lib/pymodules/python2.6/sessioninstaller/backends/__init__.py
-sessioninstaller.backends.aptd|/usr/lib/pymodules/python2.6/sessioninstaller/backends/aptd.py
-sessioninstaller.backends.dummy|/usr/lib/pymodules/python2.6/sessioninstaller/backends/dummy.py
-sessioninstaller.backends.synaptic|/usr/lib/pymodules/python2.6/sessioninstaller/backends/synaptic.py
-sessioninstaller.core|/usr/lib/pymodules/python2.6/sessioninstaller/core.py
-sessioninstaller.errors|/usr/lib/pymodules/python2.6/sessioninstaller/errors.py
-sessioninstaller.gstinstaller|/usr/lib/pymodules/python2.6/sessioninstaller/gstinstaller.py
-sessioninstaller.utils|/usr/lib/pymodules/python2.6/sessioninstaller/utils.py
-sets|/usr/lib/python2.6/sets.py
-sgmllib|/usr/lib/python2.6/sgmllib.py
-sha|/usr/lib/python2.6/sha.py
-shelve|/usr/lib/python2.6/shelve.py
-shlex|/usr/lib/python2.6/shlex.py
-shutil|/usr/lib/python2.6/shutil.py
-signal
-simplejson.__init__|/usr/lib/pymodules/python2.6/simplejson/__init__.py
-simplejson._speedups|/usr/lib/pymodules/python2.6/simplejson/_speedups.so
-simplejson.decoder|/usr/lib/pymodules/python2.6/simplejson/decoder.py
-simplejson.encoder|/usr/lib/pymodules/python2.6/simplejson/encoder.py
-simplejson.ordered_dict|/usr/lib/pymodules/python2.6/simplejson/ordered_dict.py
-simplejson.scanner|/usr/lib/pymodules/python2.6/simplejson/scanner.py
-simplejson.tests.__init__|/usr/lib/pymodules/python2.6/simplejson/tests/__init__.py
-simplejson.tests.test_check_circular|/usr/lib/pymodules/python2.6/simplejson/tests/test_check_circular.py
-simplejson.tests.test_decimal|/usr/lib/pymodules/python2.6/simplejson/tests/test_decimal.py
-simplejson.tests.test_decode|/usr/lib/pymodules/python2.6/simplejson/tests/test_decode.py
-simplejson.tests.test_default|/usr/lib/pymodules/python2.6/simplejson/tests/test_default.py
-simplejson.tests.test_dump|/usr/lib/pymodules/python2.6/simplejson/tests/test_dump.py
-simplejson.tests.test_encode_basestring_ascii|/usr/lib/pymodules/python2.6/simplejson/tests/test_encode_basestring_ascii.py
-simplejson.tests.test_encode_for_html|/usr/lib/pymodules/python2.6/simplejson/tests/test_encode_for_html.py
-simplejson.tests.test_fail|/usr/lib/pymodules/python2.6/simplejson/tests/test_fail.py
-simplejson.tests.test_float|/usr/lib/pymodules/python2.6/simplejson/tests/test_float.py
-simplejson.tests.test_indent|/usr/lib/pymodules/python2.6/simplejson/tests/test_indent.py
-simplejson.tests.test_pass1|/usr/lib/pymodules/python2.6/simplejson/tests/test_pass1.py
-simplejson.tests.test_pass2|/usr/lib/pymodules/python2.6/simplejson/tests/test_pass2.py
-simplejson.tests.test_pass3|/usr/lib/pymodules/python2.6/simplejson/tests/test_pass3.py
-simplejson.tests.test_recursion|/usr/lib/pymodules/python2.6/simplejson/tests/test_recursion.py
-simplejson.tests.test_scanstring|/usr/lib/pymodules/python2.6/simplejson/tests/test_scanstring.py
-simplejson.tests.test_separators|/usr/lib/pymodules/python2.6/simplejson/tests/test_separators.py
-simplejson.tests.test_speedups|/usr/lib/pymodules/python2.6/simplejson/tests/test_speedups.py
-simplejson.tests.test_unicode|/usr/lib/pymodules/python2.6/simplejson/tests/test_unicode.py
-simplejson.tool|/usr/lib/pymodules/python2.6/simplejson/tool.py
-sip|/usr/lib/pymodules/python2.6/sip.so
-sipconfig|/usr/lib/pymodules/python2.6/sipconfig.py
-sipconfig_nd|/usr/lib/pymodules/python2.6/sipconfig_nd.py
-site|/usr/lib/python2.6/site.py
-sitecustomize|/usr/lib/python2.6/sitecustomize.py
-smbc|/usr/lib/pymodules/python2.6/smbc.so
-smtpd|/usr/lib/python2.6/smtpd.py
-smtplib|/usr/lib/python2.6/smtplib.py
-snack|/usr/lib/python2.6/dist-packages/snack.py
-sndhdr|/usr/lib/python2.6/sndhdr.py
-socket|/usr/lib/python2.6/socket.py
-softwareproperties.AptAuth|/usr/lib/python2.6/dist-packages/softwareproperties/AptAuth.py
-softwareproperties.CountryInformation|/usr/lib/python2.6/dist-packages/softwareproperties/CountryInformation.py
-softwareproperties.MirrorTest|/usr/lib/python2.6/dist-packages/softwareproperties/MirrorTest.py
-softwareproperties.SoftwareProperties|/usr/lib/python2.6/dist-packages/softwareproperties/SoftwareProperties.py
-softwareproperties.__init__|/usr/lib/python2.6/dist-packages/softwareproperties/__init__.py
-softwareproperties.distro|/usr/lib/python2.6/dist-packages/softwareproperties/distro.py
-softwareproperties.gtk.CdromProgress|/usr/lib/python2.6/dist-packages/softwareproperties/gtk/CdromProgress.py
-softwareproperties.gtk.DialogAdd|/usr/lib/python2.6/dist-packages/softwareproperties/gtk/DialogAdd.py
-softwareproperties.gtk.DialogAddSourcesList|/usr/lib/python2.6/dist-packages/softwareproperties/gtk/DialogAddSourcesList.py
-softwareproperties.gtk.DialogCacheOutdated|/usr/lib/python2.6/dist-packages/softwareproperties/gtk/DialogCacheOutdated.py
-softwareproperties.gtk.DialogEdit|/usr/lib/python2.6/dist-packages/softwareproperties/gtk/DialogEdit.py
-softwareproperties.gtk.DialogMirror|/usr/lib/python2.6/dist-packages/softwareproperties/gtk/DialogMirror.py
-softwareproperties.gtk.SimpleGtkbuilderApp|/usr/lib/python2.6/dist-packages/softwareproperties/gtk/SimpleGtkbuilderApp.py
-softwareproperties.gtk.SoftwarePropertiesGtk|/usr/lib/python2.6/dist-packages/softwareproperties/gtk/SoftwarePropertiesGtk.py
-softwareproperties.gtk.__init__|/usr/lib/python2.6/dist-packages/softwareproperties/gtk/__init__.py
-softwareproperties.gtk.dialogs|/usr/lib/python2.6/dist-packages/softwareproperties/gtk/dialogs.py
-softwareproperties.gtk.utils|/usr/lib/python2.6/dist-packages/softwareproperties/gtk/utils.py
-softwareproperties.ppa|/usr/lib/python2.6/dist-packages/softwareproperties/ppa.py
-spwd
-sqlite3.__init__|/usr/lib/python2.6/sqlite3/__init__.py
-sqlite3.dbapi2|/usr/lib/python2.6/sqlite3/dbapi2.py
-sqlite3.dump|/usr/lib/python2.6/sqlite3/dump.py
-sre|/usr/lib/python2.6/sre.py
-sre_compile|/usr/lib/python2.6/sre_compile.py
-sre_constants|/usr/lib/python2.6/sre_constants.py
-sre_parse|/usr/lib/python2.6/sre_parse.py
-ssl|/usr/lib/python2.6/ssl.py
-stat|/usr/lib/python2.6/stat.py
-statvfs|/usr/lib/python2.6/statvfs.py
-string|/usr/lib/python2.6/string.py
-stringold|/usr/lib/python2.6/stringold.py
-stringprep|/usr/lib/python2.6/stringprep.py
-strop
-struct|/usr/lib/python2.6/struct.py
-subprocess|/usr/lib/python2.6/subprocess.py
-sunau|/usr/lib/python2.6/sunau.py
-sunaudio|/usr/lib/python2.6/sunaudio.py
-symbol|/usr/lib/python2.6/symbol.py
-symtable|/usr/lib/python2.6/symtable.py
-sys
-syslog
-tabnanny|/usr/lib/python2.6/tabnanny.py
-tarfile|/usr/lib/python2.6/tarfile.py
-telnetlib|/usr/lib/python2.6/telnetlib.py
-tempfile|/usr/lib/python2.6/tempfile.py
-termios|/usr/lib/python2.6/lib-dynload/termios.so
-test.__init__|/usr/lib/python2.6/test/__init__.py
-test.pystone|/usr/lib/python2.6/test/pystone.py
-test.regrtest|/usr/lib/python2.6/test/regrtest.py
-test.test_support|/usr/lib/python2.6/test/test_support.py
-textwrap|/usr/lib/python2.6/textwrap.py
-this|/usr/lib/python2.6/this.py
-thread
-threading|/usr/lib/python2.6/threading.py
-tidy.__init__|/usr/lib/pymodules/python2.6/tidy/__init__.py
-tidy.error|/usr/lib/pymodules/python2.6/tidy/error.py
-tidy.lib|/usr/lib/pymodules/python2.6/tidy/lib.py
-tidy.test_tidy|/usr/lib/pymodules/python2.6/tidy/test_tidy.py
-time
-timeit|/usr/lib/python2.6/timeit.py
-tkColorChooser|/usr/lib/python2.6/lib-tk/tkColorChooser.py
-tkCommonDialog|/usr/lib/python2.6/lib-tk/tkCommonDialog.py
-tkFileDialog|/usr/lib/python2.6/lib-tk/tkFileDialog.py
-tkFont|/usr/lib/python2.6/lib-tk/tkFont.py
-tkMessageBox|/usr/lib/python2.6/lib-tk/tkMessageBox.py
-tkSimpleDialog|/usr/lib/python2.6/lib-tk/tkSimpleDialog.py
-toaiff|/usr/lib/python2.6/toaiff.py
-token|/usr/lib/python2.6/token.py
-tokenize|/usr/lib/python2.6/tokenize.py
-trace|/usr/lib/python2.6/trace.py
-traceback|/usr/lib/python2.6/traceback.py
-translate.__init__|/usr/lib/python2.6/dist-packages/translate/__init__.py
-translate.__version__|/usr/lib/python2.6/dist-packages/translate/__version__.py
-translate.convert.__init__|/usr/lib/python2.6/dist-packages/translate/convert/__init__.py
-translate.convert.accesskey|/usr/lib/python2.6/dist-packages/translate/convert/accesskey.py
-translate.convert.convert|/usr/lib/python2.6/dist-packages/translate/convert/convert.py
-translate.convert.csv2po|/usr/lib/python2.6/dist-packages/translate/convert/csv2po.py
-translate.convert.csv2tbx|/usr/lib/python2.6/dist-packages/translate/convert/csv2tbx.py
-translate.convert.dtd2po|/usr/lib/python2.6/dist-packages/translate/convert/dtd2po.py
-translate.convert.html2po|/usr/lib/python2.6/dist-packages/translate/convert/html2po.py
-translate.convert.ical2po|/usr/lib/python2.6/dist-packages/translate/convert/ical2po.py
-translate.convert.ini2po|/usr/lib/python2.6/dist-packages/translate/convert/ini2po.py
-translate.convert.moz2po|/usr/lib/python2.6/dist-packages/translate/convert/moz2po.py
-translate.convert.mozfunny2prop|/usr/lib/python2.6/dist-packages/translate/convert/mozfunny2prop.py
-translate.convert.odf2xliff|/usr/lib/python2.6/dist-packages/translate/convert/odf2xliff.py
-translate.convert.oo2po|/usr/lib/python2.6/dist-packages/translate/convert/oo2po.py
-translate.convert.oo2xliff|/usr/lib/python2.6/dist-packages/translate/convert/oo2xliff.py
-translate.convert.php2po|/usr/lib/python2.6/dist-packages/translate/convert/php2po.py
-translate.convert.po2csv|/usr/lib/python2.6/dist-packages/translate/convert/po2csv.py
-translate.convert.po2dtd|/usr/lib/python2.6/dist-packages/translate/convert/po2dtd.py
-translate.convert.po2html|/usr/lib/python2.6/dist-packages/translate/convert/po2html.py
-translate.convert.po2ical|/usr/lib/python2.6/dist-packages/translate/convert/po2ical.py
-translate.convert.po2ini|/usr/lib/python2.6/dist-packages/translate/convert/po2ini.py
-translate.convert.po2moz|/usr/lib/python2.6/dist-packages/translate/convert/po2moz.py
-translate.convert.po2oo|/usr/lib/python2.6/dist-packages/translate/convert/po2oo.py
-translate.convert.po2php|/usr/lib/python2.6/dist-packages/translate/convert/po2php.py
-translate.convert.po2prop|/usr/lib/python2.6/dist-packages/translate/convert/po2prop.py
-translate.convert.po2rc|/usr/lib/python2.6/dist-packages/translate/convert/po2rc.py
-translate.convert.po2sub|/usr/lib/python2.6/dist-packages/translate/convert/po2sub.py
-translate.convert.po2symb|/usr/lib/python2.6/dist-packages/translate/convert/po2symb.py
-translate.convert.po2tiki|/usr/lib/python2.6/dist-packages/translate/convert/po2tiki.py
-translate.convert.po2tmx|/usr/lib/python2.6/dist-packages/translate/convert/po2tmx.py
-translate.convert.po2ts|/usr/lib/python2.6/dist-packages/translate/convert/po2ts.py
-translate.convert.po2txt|/usr/lib/python2.6/dist-packages/translate/convert/po2txt.py
-translate.convert.po2web2py|/usr/lib/python2.6/dist-packages/translate/convert/po2web2py.py
-translate.convert.po2wordfast|/usr/lib/python2.6/dist-packages/translate/convert/po2wordfast.py
-translate.convert.po2xliff|/usr/lib/python2.6/dist-packages/translate/convert/po2xliff.py
-translate.convert.poreplace|/usr/lib/python2.6/dist-packages/translate/convert/poreplace.py
-translate.convert.pot2po|/usr/lib/python2.6/dist-packages/translate/convert/pot2po.py
-translate.convert.prop2mozfunny|/usr/lib/python2.6/dist-packages/translate/convert/prop2mozfunny.py
-translate.convert.prop2po|/usr/lib/python2.6/dist-packages/translate/convert/prop2po.py
-translate.convert.rc2po|/usr/lib/python2.6/dist-packages/translate/convert/rc2po.py
-translate.convert.sub2po|/usr/lib/python2.6/dist-packages/translate/convert/sub2po.py
-translate.convert.symb2po|/usr/lib/python2.6/dist-packages/translate/convert/symb2po.py
-translate.convert.test_accesskey|/usr/lib/python2.6/dist-packages/translate/convert/test_accesskey.py
-translate.convert.test_convert|/usr/lib/python2.6/dist-packages/translate/convert/test_convert.py
-translate.convert.test_csv2po|/usr/lib/python2.6/dist-packages/translate/convert/test_csv2po.py
-translate.convert.test_dtd2po|/usr/lib/python2.6/dist-packages/translate/convert/test_dtd2po.py
-translate.convert.test_html2po|/usr/lib/python2.6/dist-packages/translate/convert/test_html2po.py
-translate.convert.test_moz2po|/usr/lib/python2.6/dist-packages/translate/convert/test_moz2po.py
-translate.convert.test_mozfunny2prop|/usr/lib/python2.6/dist-packages/translate/convert/test_mozfunny2prop.py
-translate.convert.test_oo2po|/usr/lib/python2.6/dist-packages/translate/convert/test_oo2po.py
-translate.convert.test_oo2xliff|/usr/lib/python2.6/dist-packages/translate/convert/test_oo2xliff.py
-translate.convert.test_php2po|/usr/lib/python2.6/dist-packages/translate/convert/test_php2po.py
-translate.convert.test_po2csv|/usr/lib/python2.6/dist-packages/translate/convert/test_po2csv.py
-translate.convert.test_po2dtd|/usr/lib/python2.6/dist-packages/translate/convert/test_po2dtd.py
-translate.convert.test_po2html|/usr/lib/python2.6/dist-packages/translate/convert/test_po2html.py
-translate.convert.test_po2moz|/usr/lib/python2.6/dist-packages/translate/convert/test_po2moz.py
-translate.convert.test_po2oo|/usr/lib/python2.6/dist-packages/translate/convert/test_po2oo.py
-translate.convert.test_po2php|/usr/lib/python2.6/dist-packages/translate/convert/test_po2php.py
-translate.convert.test_po2prop|/usr/lib/python2.6/dist-packages/translate/convert/test_po2prop.py
-translate.convert.test_po2tiki|/usr/lib/python2.6/dist-packages/translate/convert/test_po2tiki.py
-translate.convert.test_po2tmx|/usr/lib/python2.6/dist-packages/translate/convert/test_po2tmx.py
-translate.convert.test_po2ts|/usr/lib/python2.6/dist-packages/translate/convert/test_po2ts.py
-translate.convert.test_po2txt|/usr/lib/python2.6/dist-packages/translate/convert/test_po2txt.py
-translate.convert.test_po2xliff|/usr/lib/python2.6/dist-packages/translate/convert/test_po2xliff.py
-translate.convert.test_pot2po|/usr/lib/python2.6/dist-packages/translate/convert/test_pot2po.py
-translate.convert.test_prop2mozfunny|/usr/lib/python2.6/dist-packages/translate/convert/test_prop2mozfunny.py
-translate.convert.test_prop2po|/usr/lib/python2.6/dist-packages/translate/convert/test_prop2po.py
-translate.convert.test_tiki2po|/usr/lib/python2.6/dist-packages/translate/convert/test_tiki2po.py
-translate.convert.test_ts2po|/usr/lib/python2.6/dist-packages/translate/convert/test_ts2po.py
-translate.convert.test_txt2po|/usr/lib/python2.6/dist-packages/translate/convert/test_txt2po.py
-translate.convert.test_xliff2po|/usr/lib/python2.6/dist-packages/translate/convert/test_xliff2po.py
-translate.convert.tiki2po|/usr/lib/python2.6/dist-packages/translate/convert/tiki2po.py
-translate.convert.ts2po|/usr/lib/python2.6/dist-packages/translate/convert/ts2po.py
-translate.convert.txt2po|/usr/lib/python2.6/dist-packages/translate/convert/txt2po.py
-translate.convert.web2py2po|/usr/lib/python2.6/dist-packages/translate/convert/web2py2po.py
-translate.convert.xliff2odf|/usr/lib/python2.6/dist-packages/translate/convert/xliff2odf.py
-translate.convert.xliff2oo|/usr/lib/python2.6/dist-packages/translate/convert/xliff2oo.py
-translate.convert.xliff2po|/usr/lib/python2.6/dist-packages/translate/convert/xliff2po.py
-translate.filters.__init__|/usr/lib/python2.6/dist-packages/translate/filters/__init__.py
-translate.filters.autocorrect|/usr/lib/python2.6/dist-packages/translate/filters/autocorrect.py
-translate.filters.checks|/usr/lib/python2.6/dist-packages/translate/filters/checks.py
-translate.filters.decoration|/usr/lib/python2.6/dist-packages/translate/filters/decoration.py
-translate.filters.helpers|/usr/lib/python2.6/dist-packages/translate/filters/helpers.py
-translate.filters.pofilter|/usr/lib/python2.6/dist-packages/translate/filters/pofilter.py
-translate.filters.prefilters|/usr/lib/python2.6/dist-packages/translate/filters/prefilters.py
-translate.filters.spelling|/usr/lib/python2.6/dist-packages/translate/filters/spelling.py
-translate.filters.test_autocorrect|/usr/lib/python2.6/dist-packages/translate/filters/test_autocorrect.py
-translate.filters.test_checks|/usr/lib/python2.6/dist-packages/translate/filters/test_checks.py
-translate.filters.test_decoration|/usr/lib/python2.6/dist-packages/translate/filters/test_decoration.py
-translate.filters.test_pofilter|/usr/lib/python2.6/dist-packages/translate/filters/test_pofilter.py
-translate.filters.test_prefilters|/usr/lib/python2.6/dist-packages/translate/filters/test_prefilters.py
-translate.i18n|/usr/lib/python2.6/dist-packages/translate/i18n.py
-translate.lang.__init__|/usr/lib/python2.6/dist-packages/translate/lang/__init__.py
-translate.lang.af|/usr/lib/python2.6/dist-packages/translate/lang/af.py
-translate.lang.am|/usr/lib/python2.6/dist-packages/translate/lang/am.py
-translate.lang.ar|/usr/lib/python2.6/dist-packages/translate/lang/ar.py
-translate.lang.bn|/usr/lib/python2.6/dist-packages/translate/lang/bn.py
-translate.lang.code_or|/usr/lib/python2.6/dist-packages/translate/lang/code_or.py
-translate.lang.common|/usr/lib/python2.6/dist-packages/translate/lang/common.py
-translate.lang.data|/usr/lib/python2.6/dist-packages/translate/lang/data.py
-translate.lang.de|/usr/lib/python2.6/dist-packages/translate/lang/de.py
-translate.lang.el|/usr/lib/python2.6/dist-packages/translate/lang/el.py
-translate.lang.es|/usr/lib/python2.6/dist-packages/translate/lang/es.py
-translate.lang.fa|/usr/lib/python2.6/dist-packages/translate/lang/fa.py
-translate.lang.factory|/usr/lib/python2.6/dist-packages/translate/lang/factory.py
-translate.lang.fi|/usr/lib/python2.6/dist-packages/translate/lang/fi.py
-translate.lang.fr|/usr/lib/python2.6/dist-packages/translate/lang/fr.py
-translate.lang.he|/usr/lib/python2.6/dist-packages/translate/lang/he.py
-translate.lang.hy|/usr/lib/python2.6/dist-packages/translate/lang/hy.py
-translate.lang.identify|/usr/lib/python2.6/dist-packages/translate/lang/identify.py
-translate.lang.ja|/usr/lib/python2.6/dist-packages/translate/lang/ja.py
-translate.lang.km|/usr/lib/python2.6/dist-packages/translate/lang/km.py
-translate.lang.kn|/usr/lib/python2.6/dist-packages/translate/lang/kn.py
-translate.lang.ko|/usr/lib/python2.6/dist-packages/translate/lang/ko.py
-translate.lang.ml|/usr/lib/python2.6/dist-packages/translate/lang/ml.py
-translate.lang.ne|/usr/lib/python2.6/dist-packages/translate/lang/ne.py
-translate.lang.ngram|/usr/lib/python2.6/dist-packages/translate/lang/ngram.py
-translate.lang.pa|/usr/lib/python2.6/dist-packages/translate/lang/pa.py
-translate.lang.poedit|/usr/lib/python2.6/dist-packages/translate/lang/poedit.py
-translate.lang.si|/usr/lib/python2.6/dist-packages/translate/lang/si.py
-translate.lang.st|/usr/lib/python2.6/dist-packages/translate/lang/st.py
-translate.lang.sv|/usr/lib/python2.6/dist-packages/translate/lang/sv.py
-translate.lang.te|/usr/lib/python2.6/dist-packages/translate/lang/te.py
-translate.lang.team|/usr/lib/python2.6/dist-packages/translate/lang/team.py
-translate.lang.test_af|/usr/lib/python2.6/dist-packages/translate/lang/test_af.py
-translate.lang.test_am|/usr/lib/python2.6/dist-packages/translate/lang/test_am.py
-translate.lang.test_ar|/usr/lib/python2.6/dist-packages/translate/lang/test_ar.py
-translate.lang.test_common|/usr/lib/python2.6/dist-packages/translate/lang/test_common.py
-translate.lang.test_data|/usr/lib/python2.6/dist-packages/translate/lang/test_data.py
-translate.lang.test_el|/usr/lib/python2.6/dist-packages/translate/lang/test_el.py
-translate.lang.test_es|/usr/lib/python2.6/dist-packages/translate/lang/test_es.py
-translate.lang.test_factory|/usr/lib/python2.6/dist-packages/translate/lang/test_factory.py
-translate.lang.test_fr|/usr/lib/python2.6/dist-packages/translate/lang/test_fr.py
-translate.lang.test_hy|/usr/lib/python2.6/dist-packages/translate/lang/test_hy.py
-translate.lang.test_identify|/usr/lib/python2.6/dist-packages/translate/lang/test_identify.py
-translate.lang.test_km|/usr/lib/python2.6/dist-packages/translate/lang/test_km.py
-translate.lang.test_ko|/usr/lib/python2.6/dist-packages/translate/lang/test_ko.py
-translate.lang.test_ne|/usr/lib/python2.6/dist-packages/translate/lang/test_ne.py
-translate.lang.test_or|/usr/lib/python2.6/dist-packages/translate/lang/test_or.py
-translate.lang.test_poedit|/usr/lib/python2.6/dist-packages/translate/lang/test_poedit.py
-translate.lang.test_team|/usr/lib/python2.6/dist-packages/translate/lang/test_team.py
-translate.lang.test_th|/usr/lib/python2.6/dist-packages/translate/lang/test_th.py
-translate.lang.test_vi|/usr/lib/python2.6/dist-packages/translate/lang/test_vi.py
-translate.lang.test_zh|/usr/lib/python2.6/dist-packages/translate/lang/test_zh.py
-translate.lang.th|/usr/lib/python2.6/dist-packages/translate/lang/th.py
-translate.lang.ur|/usr/lib/python2.6/dist-packages/translate/lang/ur.py
-translate.lang.vi|/usr/lib/python2.6/dist-packages/translate/lang/vi.py
-translate.lang.zh|/usr/lib/python2.6/dist-packages/translate/lang/zh.py
-translate.misc.__init__|/usr/lib/python2.6/dist-packages/translate/misc/__init__.py
-translate.misc.autoencode|/usr/lib/python2.6/dist-packages/translate/misc/autoencode.py
-translate.misc.context|/usr/lib/python2.6/dist-packages/translate/misc/context.py
-translate.misc.contextlib|/usr/lib/python2.6/dist-packages/translate/misc/contextlib.py
-translate.misc.dictutils|/usr/lib/python2.6/dist-packages/translate/misc/dictutils.py
-translate.misc.file_discovery|/usr/lib/python2.6/dist-packages/translate/misc/file_discovery.py
-translate.misc.hash|/usr/lib/python2.6/dist-packages/translate/misc/hash.py
-translate.misc.ini|/usr/lib/python2.6/dist-packages/translate/misc/ini.py
-translate.misc.lru|/usr/lib/python2.6/dist-packages/translate/misc/lru.py
-translate.misc.multistring|/usr/lib/python2.6/dist-packages/translate/misc/multistring.py
-translate.misc.optrecurse|/usr/lib/python2.6/dist-packages/translate/misc/optrecurse.py
-translate.misc.ourdom|/usr/lib/python2.6/dist-packages/translate/misc/ourdom.py
-translate.misc.progressbar|/usr/lib/python2.6/dist-packages/translate/misc/progressbar.py
-translate.misc.quote|/usr/lib/python2.6/dist-packages/translate/misc/quote.py
-translate.misc.selector|/usr/lib/python2.6/dist-packages/translate/misc/selector.py
-translate.misc.sparse|/usr/lib/python2.6/dist-packages/translate/misc/sparse.py
-translate.misc.stdiotell|/usr/lib/python2.6/dist-packages/translate/misc/stdiotell.py
-translate.misc.test_autoencode|/usr/lib/python2.6/dist-packages/translate/misc/test_autoencode.py
-translate.misc.test_dictutils|/usr/lib/python2.6/dist-packages/translate/misc/test_dictutils.py
-translate.misc.test_multistring|/usr/lib/python2.6/dist-packages/translate/misc/test_multistring.py
-translate.misc.test_optrecurse|/usr/lib/python2.6/dist-packages/translate/misc/test_optrecurse.py
-translate.misc.test_quote|/usr/lib/python2.6/dist-packages/translate/misc/test_quote.py
-translate.misc.test_zipfileext|/usr/lib/python2.6/dist-packages/translate/misc/test_zipfileext.py
-translate.misc.textwrap|/usr/lib/python2.6/dist-packages/translate/misc/textwrap.py
-translate.misc.typecheck.__init__|/usr/lib/python2.6/dist-packages/translate/misc/typecheck/__init__.py
-translate.misc.typecheck.doctest_support|/usr/lib/python2.6/dist-packages/translate/misc/typecheck/doctest_support.py
-translate.misc.typecheck.mixins|/usr/lib/python2.6/dist-packages/translate/misc/typecheck/mixins.py
-translate.misc.typecheck.sets|/usr/lib/python2.6/dist-packages/translate/misc/typecheck/sets.py
-translate.misc.typecheck.typeclasses|/usr/lib/python2.6/dist-packages/translate/misc/typecheck/typeclasses.py
-translate.misc.wStringIO|/usr/lib/python2.6/dist-packages/translate/misc/wStringIO.py
-translate.misc.wsgi|/usr/lib/python2.6/dist-packages/translate/misc/wsgi.py
-translate.misc.xml_helpers|/usr/lib/python2.6/dist-packages/translate/misc/xml_helpers.py
-translate.misc.xmlwrapper|/usr/lib/python2.6/dist-packages/translate/misc/xmlwrapper.py
-translate.misc.zipfileext|/usr/lib/python2.6/dist-packages/translate/misc/zipfileext.py
-translate.search.__init__|/usr/lib/python2.6/dist-packages/translate/search/__init__.py
-translate.search.indexing.CommonIndexer|/usr/lib/python2.6/dist-packages/translate/search/indexing/CommonIndexer.py
-translate.search.indexing.PyLuceneIndexer|/usr/lib/python2.6/dist-packages/translate/search/indexing/PyLuceneIndexer.py
-translate.search.indexing.PyLuceneIndexer1|/usr/lib/python2.6/dist-packages/translate/search/indexing/PyLuceneIndexer1.py
-translate.search.indexing.XapianIndexer|/usr/lib/python2.6/dist-packages/translate/search/indexing/XapianIndexer.py
-translate.search.indexing.__init__|/usr/lib/python2.6/dist-packages/translate/search/indexing/__init__.py
-translate.search.indexing.test_indexers|/usr/lib/python2.6/dist-packages/translate/search/indexing/test_indexers.py
-translate.search.lshtein|/usr/lib/python2.6/dist-packages/translate/search/lshtein.py
-translate.search.match|/usr/lib/python2.6/dist-packages/translate/search/match.py
-translate.search.segment|/usr/lib/python2.6/dist-packages/translate/search/segment.py
-translate.search.terminology|/usr/lib/python2.6/dist-packages/translate/search/terminology.py
-translate.search.test_lshtein|/usr/lib/python2.6/dist-packages/translate/search/test_lshtein.py
-translate.search.test_match|/usr/lib/python2.6/dist-packages/translate/search/test_match.py
-translate.search.test_terminology|/usr/lib/python2.6/dist-packages/translate/search/test_terminology.py
-translate.services.__init__|/usr/lib/python2.6/dist-packages/translate/services/__init__.py
-translate.services.lookupclient|/usr/lib/python2.6/dist-packages/translate/services/lookupclient.py
-translate.services.lookupservice|/usr/lib/python2.6/dist-packages/translate/services/lookupservice.py
-translate.services.tmserver|/usr/lib/python2.6/dist-packages/translate/services/tmserver.py
-translate.storage.__init__|/usr/lib/python2.6/dist-packages/translate/storage/__init__.py
-translate.storage.base|/usr/lib/python2.6/dist-packages/translate/storage/base.py
-translate.storage.benchmark|/usr/lib/python2.6/dist-packages/translate/storage/benchmark.py
-translate.storage.cpo|/usr/lib/python2.6/dist-packages/translate/storage/cpo.py
-translate.storage.csvl10n|/usr/lib/python2.6/dist-packages/translate/storage/csvl10n.py
-translate.storage.directory|/usr/lib/python2.6/dist-packages/translate/storage/directory.py
-translate.storage.dtd|/usr/lib/python2.6/dist-packages/translate/storage/dtd.py
-translate.storage.factory|/usr/lib/python2.6/dist-packages/translate/storage/factory.py
-translate.storage.fpo|/usr/lib/python2.6/dist-packages/translate/storage/fpo.py
-translate.storage.html|/usr/lib/python2.6/dist-packages/translate/storage/html.py
-translate.storage.ical|/usr/lib/python2.6/dist-packages/translate/storage/ical.py
-translate.storage.ini|/usr/lib/python2.6/dist-packages/translate/storage/ini.py
-translate.storage.lisa|/usr/lib/python2.6/dist-packages/translate/storage/lisa.py
-translate.storage.mo|/usr/lib/python2.6/dist-packages/translate/storage/mo.py
-translate.storage.odf_io|/usr/lib/python2.6/dist-packages/translate/storage/odf_io.py
-translate.storage.odf_shared|/usr/lib/python2.6/dist-packages/translate/storage/odf_shared.py
-translate.storage.omegat|/usr/lib/python2.6/dist-packages/translate/storage/omegat.py
-translate.storage.oo|/usr/lib/python2.6/dist-packages/translate/storage/oo.py
-translate.storage.php|/usr/lib/python2.6/dist-packages/translate/storage/php.py
-translate.storage.placeables.__init__|/usr/lib/python2.6/dist-packages/translate/storage/placeables/__init__.py
-translate.storage.placeables.base|/usr/lib/python2.6/dist-packages/translate/storage/placeables/base.py
-translate.storage.placeables.general|/usr/lib/python2.6/dist-packages/translate/storage/placeables/general.py
-translate.storage.placeables.interfaces|/usr/lib/python2.6/dist-packages/translate/storage/placeables/interfaces.py
-translate.storage.placeables.lisa|/usr/lib/python2.6/dist-packages/translate/storage/placeables/lisa.py
-translate.storage.placeables.parse|/usr/lib/python2.6/dist-packages/translate/storage/placeables/parse.py
-translate.storage.placeables.strelem|/usr/lib/python2.6/dist-packages/translate/storage/placeables/strelem.py
-translate.storage.placeables.terminology|/usr/lib/python2.6/dist-packages/translate/storage/placeables/terminology.py
-translate.storage.placeables.test_base|/usr/lib/python2.6/dist-packages/translate/storage/placeables/test_base.py
-translate.storage.placeables.test_general|/usr/lib/python2.6/dist-packages/translate/storage/placeables/test_general.py
-translate.storage.placeables.test_lisa|/usr/lib/python2.6/dist-packages/translate/storage/placeables/test_lisa.py
-translate.storage.placeables.test_terminology|/usr/lib/python2.6/dist-packages/translate/storage/placeables/test_terminology.py
-translate.storage.placeables.xliff|/usr/lib/python2.6/dist-packages/translate/storage/placeables/xliff.py
-translate.storage.po|/usr/lib/python2.6/dist-packages/translate/storage/po.py
-translate.storage.pocommon|/usr/lib/python2.6/dist-packages/translate/storage/pocommon.py
-translate.storage.poheader|/usr/lib/python2.6/dist-packages/translate/storage/poheader.py
-translate.storage.poparser|/usr/lib/python2.6/dist-packages/translate/storage/poparser.py
-translate.storage.poxliff|/usr/lib/python2.6/dist-packages/translate/storage/poxliff.py
-translate.storage.properties|/usr/lib/python2.6/dist-packages/translate/storage/properties.py
-translate.storage.pypo|/usr/lib/python2.6/dist-packages/translate/storage/pypo.py
-translate.storage.qm|/usr/lib/python2.6/dist-packages/translate/storage/qm.py
-translate.storage.qph|/usr/lib/python2.6/dist-packages/translate/storage/qph.py
-translate.storage.rc|/usr/lib/python2.6/dist-packages/translate/storage/rc.py
-translate.storage.statistics|/usr/lib/python2.6/dist-packages/translate/storage/statistics.py
-translate.storage.statsdb|/usr/lib/python2.6/dist-packages/translate/storage/statsdb.py
-translate.storage.subtitles|/usr/lib/python2.6/dist-packages/translate/storage/subtitles.py
-translate.storage.symbian|/usr/lib/python2.6/dist-packages/translate/storage/symbian.py
-translate.storage.tbx|/usr/lib/python2.6/dist-packages/translate/storage/tbx.py
-translate.storage.test_base|/usr/lib/python2.6/dist-packages/translate/storage/test_base.py
-translate.storage.test_cpo|/usr/lib/python2.6/dist-packages/translate/storage/test_cpo.py
-translate.storage.test_csvl10n|/usr/lib/python2.6/dist-packages/translate/storage/test_csvl10n.py
-translate.storage.test_directory|/usr/lib/python2.6/dist-packages/translate/storage/test_directory.py
-translate.storage.test_dtd|/usr/lib/python2.6/dist-packages/translate/storage/test_dtd.py
-translate.storage.test_factory|/usr/lib/python2.6/dist-packages/translate/storage/test_factory.py
-translate.storage.test_mo|/usr/lib/python2.6/dist-packages/translate/storage/test_mo.py
-translate.storage.test_monolingual|/usr/lib/python2.6/dist-packages/translate/storage/test_monolingual.py
-translate.storage.test_omegat|/usr/lib/python2.6/dist-packages/translate/storage/test_omegat.py
-translate.storage.test_oo|/usr/lib/python2.6/dist-packages/translate/storage/test_oo.py
-translate.storage.test_php|/usr/lib/python2.6/dist-packages/translate/storage/test_php.py
-translate.storage.test_po|/usr/lib/python2.6/dist-packages/translate/storage/test_po.py
-translate.storage.test_poheader|/usr/lib/python2.6/dist-packages/translate/storage/test_poheader.py
-translate.storage.test_poxliff|/usr/lib/python2.6/dist-packages/translate/storage/test_poxliff.py
-translate.storage.test_properties|/usr/lib/python2.6/dist-packages/translate/storage/test_properties.py
-translate.storage.test_pypo|/usr/lib/python2.6/dist-packages/translate/storage/test_pypo.py
-translate.storage.test_qm|/usr/lib/python2.6/dist-packages/translate/storage/test_qm.py
-translate.storage.test_qph|/usr/lib/python2.6/dist-packages/translate/storage/test_qph.py
-translate.storage.test_rc|/usr/lib/python2.6/dist-packages/translate/storage/test_rc.py
-translate.storage.test_statsdb|/usr/lib/python2.6/dist-packages/translate/storage/test_statsdb.py
-translate.storage.test_tbx|/usr/lib/python2.6/dist-packages/translate/storage/test_tbx.py
-translate.storage.test_tiki|/usr/lib/python2.6/dist-packages/translate/storage/test_tiki.py
-translate.storage.test_tmx|/usr/lib/python2.6/dist-packages/translate/storage/test_tmx.py
-translate.storage.test_ts|/usr/lib/python2.6/dist-packages/translate/storage/test_ts.py
-translate.storage.test_ts2|/usr/lib/python2.6/dist-packages/translate/storage/test_ts2.py
-translate.storage.test_txt|/usr/lib/python2.6/dist-packages/translate/storage/test_txt.py
-translate.storage.test_wordfast|/usr/lib/python2.6/dist-packages/translate/storage/test_wordfast.py
-translate.storage.test_xliff|/usr/lib/python2.6/dist-packages/translate/storage/test_xliff.py
-translate.storage.test_zip|/usr/lib/python2.6/dist-packages/translate/storage/test_zip.py
-translate.storage.test_zipfile|/usr/lib/python2.6/dist-packages/translate/storage/test_zipfile.py
-translate.storage.tiki|/usr/lib/python2.6/dist-packages/translate/storage/tiki.py
-translate.storage.tmdb|/usr/lib/python2.6/dist-packages/translate/storage/tmdb.py
-translate.storage.tmx|/usr/lib/python2.6/dist-packages/translate/storage/tmx.py
-translate.storage.ts|/usr/lib/python2.6/dist-packages/translate/storage/ts.py
-translate.storage.ts2|/usr/lib/python2.6/dist-packages/translate/storage/ts2.py
-translate.storage.txt|/usr/lib/python2.6/dist-packages/translate/storage/txt.py
-translate.storage.versioncontrol.__init__|/usr/lib/python2.6/dist-packages/translate/storage/versioncontrol/__init__.py
-translate.storage.versioncontrol.bzr|/usr/lib/python2.6/dist-packages/translate/storage/versioncontrol/bzr.py
-translate.storage.versioncontrol.cvs|/usr/lib/python2.6/dist-packages/translate/storage/versioncontrol/cvs.py
-translate.storage.versioncontrol.darcs|/usr/lib/python2.6/dist-packages/translate/storage/versioncontrol/darcs.py
-translate.storage.versioncontrol.git|/usr/lib/python2.6/dist-packages/translate/storage/versioncontrol/git.py
-translate.storage.versioncontrol.hg|/usr/lib/python2.6/dist-packages/translate/storage/versioncontrol/hg.py
-translate.storage.versioncontrol.svn|/usr/lib/python2.6/dist-packages/translate/storage/versioncontrol/svn.py
-translate.storage.wordfast|/usr/lib/python2.6/dist-packages/translate/storage/wordfast.py
-translate.storage.xliff|/usr/lib/python2.6/dist-packages/translate/storage/xliff.py
-translate.storage.xml_extract.__init__|/usr/lib/python2.6/dist-packages/translate/storage/xml_extract/__init__.py
-translate.storage.xml_extract.extract|/usr/lib/python2.6/dist-packages/translate/storage/xml_extract/extract.py
-translate.storage.xml_extract.generate|/usr/lib/python2.6/dist-packages/translate/storage/xml_extract/generate.py
-translate.storage.xml_extract.misc|/usr/lib/python2.6/dist-packages/translate/storage/xml_extract/misc.py
-translate.storage.xml_extract.test_misc|/usr/lib/python2.6/dist-packages/translate/storage/xml_extract/test_misc.py
-translate.storage.xml_extract.test_unit_tree|/usr/lib/python2.6/dist-packages/translate/storage/xml_extract/test_unit_tree.py
-translate.storage.xml_extract.test_xpath_breadcrumb|/usr/lib/python2.6/dist-packages/translate/storage/xml_extract/test_xpath_breadcrumb.py
-translate.storage.xml_extract.unit_tree|/usr/lib/python2.6/dist-packages/translate/storage/xml_extract/unit_tree.py
-translate.storage.xml_extract.xpath_breadcrumb|/usr/lib/python2.6/dist-packages/translate/storage/xml_extract/xpath_breadcrumb.py
-translate.storage.xml_name|/usr/lib/python2.6/dist-packages/translate/storage/xml_name.py
-translate.storage.xpi|/usr/lib/python2.6/dist-packages/translate/storage/xpi.py
-translate.storage.zip|/usr/lib/python2.6/dist-packages/translate/storage/zip.py
-translate.tools.__init__|/usr/lib/python2.6/dist-packages/translate/tools/__init__.py
-translate.tools.build_tmdb|/usr/lib/python2.6/dist-packages/translate/tools/build_tmdb.py
-translate.tools.phppo2pypo|/usr/lib/python2.6/dist-packages/translate/tools/phppo2pypo.py
-translate.tools.poclean|/usr/lib/python2.6/dist-packages/translate/tools/poclean.py
-translate.tools.pocompile|/usr/lib/python2.6/dist-packages/translate/tools/pocompile.py
-translate.tools.poconflicts|/usr/lib/python2.6/dist-packages/translate/tools/poconflicts.py
-translate.tools.pocount|/usr/lib/python2.6/dist-packages/translate/tools/pocount.py
-translate.tools.podebug|/usr/lib/python2.6/dist-packages/translate/tools/podebug.py
-translate.tools.pogrep|/usr/lib/python2.6/dist-packages/translate/tools/pogrep.py
-translate.tools.pomerge|/usr/lib/python2.6/dist-packages/translate/tools/pomerge.py
-translate.tools.porestructure|/usr/lib/python2.6/dist-packages/translate/tools/porestructure.py
-translate.tools.posegment|/usr/lib/python2.6/dist-packages/translate/tools/posegment.py
-translate.tools.poswap|/usr/lib/python2.6/dist-packages/translate/tools/poswap.py
-translate.tools.poterminology|/usr/lib/python2.6/dist-packages/translate/tools/poterminology.py
-translate.tools.pretranslate|/usr/lib/python2.6/dist-packages/translate/tools/pretranslate.py
-translate.tools.pydiff|/usr/lib/python2.6/dist-packages/translate/tools/pydiff.py
-translate.tools.pypo2phppo|/usr/lib/python2.6/dist-packages/translate/tools/pypo2phppo.py
-translate.tools.test_phppo2pypo|/usr/lib/python2.6/dist-packages/translate/tools/test_phppo2pypo.py
-translate.tools.test_pocount|/usr/lib/python2.6/dist-packages/translate/tools/test_pocount.py
-translate.tools.test_podebug|/usr/lib/python2.6/dist-packages/translate/tools/test_podebug.py
-translate.tools.test_pogrep|/usr/lib/python2.6/dist-packages/translate/tools/test_pogrep.py
-translate.tools.test_pomerge|/usr/lib/python2.6/dist-packages/translate/tools/test_pomerge.py
-translate.tools.test_pretranslate|/usr/lib/python2.6/dist-packages/translate/tools/test_pretranslate.py
-translate.tools.test_pypo2phppo|/usr/lib/python2.6/dist-packages/translate/tools/test_pypo2phppo.py
-tty|/usr/lib/python2.6/tty.py
-turtle|/usr/lib/python2.6/lib-tk/turtle.py
-twisted.__init__|/usr/lib/python2.6/dist-packages/twisted/__init__.py
-twisted._version|/usr/lib/python2.6/dist-packages/twisted/_version.py
-twisted.application.__init__|/usr/lib/python2.6/dist-packages/twisted/application/__init__.py
-twisted.application.app|/usr/lib/python2.6/dist-packages/twisted/application/app.py
-twisted.application.internet|/usr/lib/python2.6/dist-packages/twisted/application/internet.py
-twisted.application.reactors|/usr/lib/python2.6/dist-packages/twisted/application/reactors.py
-twisted.application.service|/usr/lib/python2.6/dist-packages/twisted/application/service.py
-twisted.application.strports|/usr/lib/python2.6/dist-packages/twisted/application/strports.py
-twisted.conch.__init__|/usr/lib/python2.6/dist-packages/twisted/conch/__init__.py
-twisted.conch._version|/usr/lib/python2.6/dist-packages/twisted/conch/_version.py
-twisted.conch.avatar|/usr/lib/python2.6/dist-packages/twisted/conch/avatar.py
-twisted.conch.checkers|/usr/lib/python2.6/dist-packages/twisted/conch/checkers.py
-twisted.conch.client.__init__|/usr/lib/python2.6/dist-packages/twisted/conch/client/__init__.py
-twisted.conch.client.agent|/usr/lib/python2.6/dist-packages/twisted/conch/client/agent.py
-twisted.conch.client.connect|/usr/lib/python2.6/dist-packages/twisted/conch/client/connect.py
-twisted.conch.client.default|/usr/lib/python2.6/dist-packages/twisted/conch/client/default.py
-twisted.conch.client.direct|/usr/lib/python2.6/dist-packages/twisted/conch/client/direct.py
-twisted.conch.client.knownhosts|/usr/lib/python2.6/dist-packages/twisted/conch/client/knownhosts.py
-twisted.conch.client.options|/usr/lib/python2.6/dist-packages/twisted/conch/client/options.py
-twisted.conch.error|/usr/lib/python2.6/dist-packages/twisted/conch/error.py
-twisted.conch.insults.__init__|/usr/lib/python2.6/dist-packages/twisted/conch/insults/__init__.py
-twisted.conch.insults.client|/usr/lib/python2.6/dist-packages/twisted/conch/insults/client.py
-twisted.conch.insults.colors|/usr/lib/python2.6/dist-packages/twisted/conch/insults/colors.py
-twisted.conch.insults.helper|/usr/lib/python2.6/dist-packages/twisted/conch/insults/helper.py
-twisted.conch.insults.insults|/usr/lib/python2.6/dist-packages/twisted/conch/insults/insults.py
-twisted.conch.insults.text|/usr/lib/python2.6/dist-packages/twisted/conch/insults/text.py
-twisted.conch.insults.window|/usr/lib/python2.6/dist-packages/twisted/conch/insults/window.py
-twisted.conch.interfaces|/usr/lib/python2.6/dist-packages/twisted/conch/interfaces.py
-twisted.conch.ls|/usr/lib/python2.6/dist-packages/twisted/conch/ls.py
-twisted.conch.manhole|/usr/lib/python2.6/dist-packages/twisted/conch/manhole.py
-twisted.conch.manhole_ssh|/usr/lib/python2.6/dist-packages/twisted/conch/manhole_ssh.py
-twisted.conch.manhole_tap|/usr/lib/python2.6/dist-packages/twisted/conch/manhole_tap.py
-twisted.conch.mixin|/usr/lib/python2.6/dist-packages/twisted/conch/mixin.py
-twisted.conch.openssh_compat.__init__|/usr/lib/python2.6/dist-packages/twisted/conch/openssh_compat/__init__.py
-twisted.conch.openssh_compat.factory|/usr/lib/python2.6/dist-packages/twisted/conch/openssh_compat/factory.py
-twisted.conch.openssh_compat.primes|/usr/lib/python2.6/dist-packages/twisted/conch/openssh_compat/primes.py
-twisted.conch.recvline|/usr/lib/python2.6/dist-packages/twisted/conch/recvline.py
-twisted.conch.scripts.__init__|/usr/lib/python2.6/dist-packages/twisted/conch/scripts/__init__.py
-twisted.conch.scripts.cftp|/usr/lib/python2.6/dist-packages/twisted/conch/scripts/cftp.py
-twisted.conch.scripts.ckeygen|/usr/lib/python2.6/dist-packages/twisted/conch/scripts/ckeygen.py
-twisted.conch.scripts.conch|/usr/lib/python2.6/dist-packages/twisted/conch/scripts/conch.py
-twisted.conch.scripts.tkconch|/usr/lib/python2.6/dist-packages/twisted/conch/scripts/tkconch.py
-twisted.conch.ssh.__init__|/usr/lib/python2.6/dist-packages/twisted/conch/ssh/__init__.py
-twisted.conch.ssh.agent|/usr/lib/python2.6/dist-packages/twisted/conch/ssh/agent.py
-twisted.conch.ssh.channel|/usr/lib/python2.6/dist-packages/twisted/conch/ssh/channel.py
-twisted.conch.ssh.common|/usr/lib/python2.6/dist-packages/twisted/conch/ssh/common.py
-twisted.conch.ssh.connection|/usr/lib/python2.6/dist-packages/twisted/conch/ssh/connection.py
-twisted.conch.ssh.factory|/usr/lib/python2.6/dist-packages/twisted/conch/ssh/factory.py
-twisted.conch.ssh.filetransfer|/usr/lib/python2.6/dist-packages/twisted/conch/ssh/filetransfer.py
-twisted.conch.ssh.forwarding|/usr/lib/python2.6/dist-packages/twisted/conch/ssh/forwarding.py
-twisted.conch.ssh.keys|/usr/lib/python2.6/dist-packages/twisted/conch/ssh/keys.py
-twisted.conch.ssh.service|/usr/lib/python2.6/dist-packages/twisted/conch/ssh/service.py
-twisted.conch.ssh.session|/usr/lib/python2.6/dist-packages/twisted/conch/ssh/session.py
-twisted.conch.ssh.sexpy|/usr/lib/python2.6/dist-packages/twisted/conch/ssh/sexpy.py
-twisted.conch.ssh.transport|/usr/lib/python2.6/dist-packages/twisted/conch/ssh/transport.py
-twisted.conch.ssh.userauth|/usr/lib/python2.6/dist-packages/twisted/conch/ssh/userauth.py
-twisted.conch.stdio|/usr/lib/python2.6/dist-packages/twisted/conch/stdio.py
-twisted.conch.tap|/usr/lib/python2.6/dist-packages/twisted/conch/tap.py
-twisted.conch.telnet|/usr/lib/python2.6/dist-packages/twisted/conch/telnet.py
-twisted.conch.test.__init__|/usr/lib/python2.6/dist-packages/twisted/conch/test/__init__.py
-twisted.conch.test.keydata|/usr/lib/python2.6/dist-packages/twisted/conch/test/keydata.py
-twisted.conch.test.test_agent|/usr/lib/python2.6/dist-packages/twisted/conch/test/test_agent.py
-twisted.conch.test.test_cftp|/usr/lib/python2.6/dist-packages/twisted/conch/test/test_cftp.py
-twisted.conch.test.test_channel|/usr/lib/python2.6/dist-packages/twisted/conch/test/test_channel.py
-twisted.conch.test.test_checkers|/usr/lib/python2.6/dist-packages/twisted/conch/test/test_checkers.py
-twisted.conch.test.test_ckeygen|/usr/lib/python2.6/dist-packages/twisted/conch/test/test_ckeygen.py
-twisted.conch.test.test_conch|/usr/lib/python2.6/dist-packages/twisted/conch/test/test_conch.py
-twisted.conch.test.test_connection|/usr/lib/python2.6/dist-packages/twisted/conch/test/test_connection.py
-twisted.conch.test.test_default|/usr/lib/python2.6/dist-packages/twisted/conch/test/test_default.py
-twisted.conch.test.test_filetransfer|/usr/lib/python2.6/dist-packages/twisted/conch/test/test_filetransfer.py
-twisted.conch.test.test_helper|/usr/lib/python2.6/dist-packages/twisted/conch/test/test_helper.py
-twisted.conch.test.test_insults|/usr/lib/python2.6/dist-packages/twisted/conch/test/test_insults.py
-twisted.conch.test.test_keys|/usr/lib/python2.6/dist-packages/twisted/conch/test/test_keys.py
-twisted.conch.test.test_knownhosts|/usr/lib/python2.6/dist-packages/twisted/conch/test/test_knownhosts.py
-twisted.conch.test.test_manhole|/usr/lib/python2.6/dist-packages/twisted/conch/test/test_manhole.py
-twisted.conch.test.test_mixin|/usr/lib/python2.6/dist-packages/twisted/conch/test/test_mixin.py
-twisted.conch.test.test_openssh_compat|/usr/lib/python2.6/dist-packages/twisted/conch/test/test_openssh_compat.py
-twisted.conch.test.test_recvline|/usr/lib/python2.6/dist-packages/twisted/conch/test/test_recvline.py
-twisted.conch.test.test_session|/usr/lib/python2.6/dist-packages/twisted/conch/test/test_session.py
-twisted.conch.test.test_ssh|/usr/lib/python2.6/dist-packages/twisted/conch/test/test_ssh.py
-twisted.conch.test.test_tap|/usr/lib/python2.6/dist-packages/twisted/conch/test/test_tap.py
-twisted.conch.test.test_telnet|/usr/lib/python2.6/dist-packages/twisted/conch/test/test_telnet.py
-twisted.conch.test.test_text|/usr/lib/python2.6/dist-packages/twisted/conch/test/test_text.py
-twisted.conch.test.test_transport|/usr/lib/python2.6/dist-packages/twisted/conch/test/test_transport.py
-twisted.conch.test.test_userauth|/usr/lib/python2.6/dist-packages/twisted/conch/test/test_userauth.py
-twisted.conch.test.test_window|/usr/lib/python2.6/dist-packages/twisted/conch/test/test_window.py
-twisted.conch.ttymodes|/usr/lib/python2.6/dist-packages/twisted/conch/ttymodes.py
-twisted.conch.ui.__init__|/usr/lib/python2.6/dist-packages/twisted/conch/ui/__init__.py
-twisted.conch.ui.ansi|/usr/lib/python2.6/dist-packages/twisted/conch/ui/ansi.py
-twisted.conch.ui.tkvt100|/usr/lib/python2.6/dist-packages/twisted/conch/ui/tkvt100.py
-twisted.conch.unix|/usr/lib/python2.6/dist-packages/twisted/conch/unix.py
-twisted.copyright|/usr/lib/python2.6/dist-packages/twisted/copyright.py
-twisted.cred.__init__|/usr/lib/python2.6/dist-packages/twisted/cred/__init__.py
-twisted.cred._digest|/usr/lib/python2.6/dist-packages/twisted/cred/_digest.py
-twisted.cred.checkers|/usr/lib/python2.6/dist-packages/twisted/cred/checkers.py
-twisted.cred.credentials|/usr/lib/python2.6/dist-packages/twisted/cred/credentials.py
-twisted.cred.error|/usr/lib/python2.6/dist-packages/twisted/cred/error.py
-twisted.cred.pamauth|/usr/lib/python2.6/dist-packages/twisted/cred/pamauth.py
-twisted.cred.portal|/usr/lib/python2.6/dist-packages/twisted/cred/portal.py
-twisted.cred.strcred|/usr/lib/python2.6/dist-packages/twisted/cred/strcred.py
-twisted.cred.util|/usr/lib/python2.6/dist-packages/twisted/cred/util.py
-twisted.enterprise.__init__|/usr/lib/python2.6/dist-packages/twisted/enterprise/__init__.py
-twisted.enterprise.adbapi|/usr/lib/python2.6/dist-packages/twisted/enterprise/adbapi.py
-twisted.enterprise.reflector|/usr/lib/python2.6/dist-packages/twisted/enterprise/reflector.py
-twisted.enterprise.row|/usr/lib/python2.6/dist-packages/twisted/enterprise/row.py
-twisted.enterprise.sqlreflector|/usr/lib/python2.6/dist-packages/twisted/enterprise/sqlreflector.py
-twisted.enterprise.util|/usr/lib/python2.6/dist-packages/twisted/enterprise/util.py
-twisted.internet.__init__|/usr/lib/python2.6/dist-packages/twisted/internet/__init__.py
-twisted.internet._baseprocess|/usr/lib/python2.6/dist-packages/twisted/internet/_baseprocess.py
-twisted.internet._dumbwin32proc|/usr/lib/python2.6/dist-packages/twisted/internet/_dumbwin32proc.py
-twisted.internet._pollingfile|/usr/lib/python2.6/dist-packages/twisted/internet/_pollingfile.py
-twisted.internet._posixserialport|/usr/lib/python2.6/dist-packages/twisted/internet/_posixserialport.py
-twisted.internet._posixstdio|/usr/lib/python2.6/dist-packages/twisted/internet/_posixstdio.py
-twisted.internet._sigchld|/usr/lib/python2.6/dist-packages/twisted/internet/_sigchld.so
-twisted.internet._signals|/usr/lib/python2.6/dist-packages/twisted/internet/_signals.py
-twisted.internet._sslverify|/usr/lib/python2.6/dist-packages/twisted/internet/_sslverify.py
-twisted.internet._threadedselect|/usr/lib/python2.6/dist-packages/twisted/internet/_threadedselect.py
-twisted.internet._win32serialport|/usr/lib/python2.6/dist-packages/twisted/internet/_win32serialport.py
-twisted.internet._win32stdio|/usr/lib/python2.6/dist-packages/twisted/internet/_win32stdio.py
-twisted.internet.abstract|/usr/lib/python2.6/dist-packages/twisted/internet/abstract.py
-twisted.internet.address|/usr/lib/python2.6/dist-packages/twisted/internet/address.py
-twisted.internet.base|/usr/lib/python2.6/dist-packages/twisted/internet/base.py
-twisted.internet.cfreactor|/usr/lib/python2.6/dist-packages/twisted/internet/cfreactor.py
-twisted.internet.default|/usr/lib/python2.6/dist-packages/twisted/internet/default.py
-twisted.internet.defer|/usr/lib/python2.6/dist-packages/twisted/internet/defer.py
-twisted.internet.endpoints|/usr/lib/python2.6/dist-packages/twisted/internet/endpoints.py
-twisted.internet.epollreactor|/usr/lib/python2.6/dist-packages/twisted/internet/epollreactor.py
-twisted.internet.error|/usr/lib/python2.6/dist-packages/twisted/internet/error.py
-twisted.internet.fdesc|/usr/lib/python2.6/dist-packages/twisted/internet/fdesc.py
-twisted.internet.glib2reactor|/usr/lib/python2.6/dist-packages/twisted/internet/glib2reactor.py
-twisted.internet.gtk2reactor|/usr/lib/python2.6/dist-packages/twisted/internet/gtk2reactor.py
-twisted.internet.gtkreactor|/usr/lib/python2.6/dist-packages/twisted/internet/gtkreactor.py
-twisted.internet.inotify|/usr/lib/python2.6/dist-packages/twisted/internet/inotify.py
-twisted.internet.interfaces|/usr/lib/python2.6/dist-packages/twisted/internet/interfaces.py
-twisted.internet.iocpreactor.__init__|/usr/lib/python2.6/dist-packages/twisted/internet/iocpreactor/__init__.py
-twisted.internet.iocpreactor.abstract|/usr/lib/python2.6/dist-packages/twisted/internet/iocpreactor/abstract.py
-twisted.internet.iocpreactor.const|/usr/lib/python2.6/dist-packages/twisted/internet/iocpreactor/const.py
-twisted.internet.iocpreactor.interfaces|/usr/lib/python2.6/dist-packages/twisted/internet/iocpreactor/interfaces.py
-twisted.internet.iocpreactor.reactor|/usr/lib/python2.6/dist-packages/twisted/internet/iocpreactor/reactor.py
-twisted.internet.iocpreactor.setup|/usr/lib/python2.6/dist-packages/twisted/internet/iocpreactor/setup.py
-twisted.internet.iocpreactor.tcp|/usr/lib/python2.6/dist-packages/twisted/internet/iocpreactor/tcp.py
-twisted.internet.iocpreactor.udp|/usr/lib/python2.6/dist-packages/twisted/internet/iocpreactor/udp.py
-twisted.internet.kqreactor|/usr/lib/python2.6/dist-packages/twisted/internet/kqreactor.py
-twisted.internet.main|/usr/lib/python2.6/dist-packages/twisted/internet/main.py
-twisted.internet.pollreactor|/usr/lib/python2.6/dist-packages/twisted/internet/pollreactor.py
-twisted.internet.posixbase|/usr/lib/python2.6/dist-packages/twisted/internet/posixbase.py
-twisted.internet.process|/usr/lib/python2.6/dist-packages/twisted/internet/process.py
-twisted.internet.protocol|/usr/lib/python2.6/dist-packages/twisted/internet/protocol.py
-twisted.internet.pyuisupport|/usr/lib/python2.6/dist-packages/twisted/internet/pyuisupport.py
-twisted.internet.qtreactor|/usr/lib/python2.6/dist-packages/twisted/internet/qtreactor.py
-twisted.internet.reactor|/usr/lib/python2.6/dist-packages/twisted/internet/reactor.py
-twisted.internet.selectreactor|/usr/lib/python2.6/dist-packages/twisted/internet/selectreactor.py
-twisted.internet.serialport|/usr/lib/python2.6/dist-packages/twisted/internet/serialport.py
-twisted.internet.ssl|/usr/lib/python2.6/dist-packages/twisted/internet/ssl.py
-twisted.internet.stdio|/usr/lib/python2.6/dist-packages/twisted/internet/stdio.py
-twisted.internet.task|/usr/lib/python2.6/dist-packages/twisted/internet/task.py
-twisted.internet.tcp|/usr/lib/python2.6/dist-packages/twisted/internet/tcp.py
-twisted.internet.test.__init__|/usr/lib/python2.6/dist-packages/twisted/internet/test/__init__.py
-twisted.internet.test.inlinecb_tests|/usr/lib/python2.6/dist-packages/twisted/internet/test/inlinecb_tests.py
-twisted.internet.test.process_helper|/usr/lib/python2.6/dist-packages/twisted/internet/test/process_helper.py
-twisted.internet.test.reactormixins|/usr/lib/python2.6/dist-packages/twisted/internet/test/reactormixins.py
-twisted.internet.test.test_address|/usr/lib/python2.6/dist-packages/twisted/internet/test/test_address.py
-twisted.internet.test.test_base|/usr/lib/python2.6/dist-packages/twisted/internet/test/test_base.py
-twisted.internet.test.test_baseprocess|/usr/lib/python2.6/dist-packages/twisted/internet/test/test_baseprocess.py
-twisted.internet.test.test_core|/usr/lib/python2.6/dist-packages/twisted/internet/test/test_core.py
-twisted.internet.test.test_endpoints|/usr/lib/python2.6/dist-packages/twisted/internet/test/test_endpoints.py
-twisted.internet.test.test_fdset|/usr/lib/python2.6/dist-packages/twisted/internet/test/test_fdset.py
-twisted.internet.test.test_gtkreactor|/usr/lib/python2.6/dist-packages/twisted/internet/test/test_gtkreactor.py
-twisted.internet.test.test_inlinecb|/usr/lib/python2.6/dist-packages/twisted/internet/test/test_inlinecb.py
-twisted.internet.test.test_inotify|/usr/lib/python2.6/dist-packages/twisted/internet/test/test_inotify.py
-twisted.internet.test.test_iocp|/usr/lib/python2.6/dist-packages/twisted/internet/test/test_iocp.py
-twisted.internet.test.test_pollingfile|/usr/lib/python2.6/dist-packages/twisted/internet/test/test_pollingfile.py
-twisted.internet.test.test_posixbase|/usr/lib/python2.6/dist-packages/twisted/internet/test/test_posixbase.py
-twisted.internet.test.test_process|/usr/lib/python2.6/dist-packages/twisted/internet/test/test_process.py
-twisted.internet.test.test_protocol|/usr/lib/python2.6/dist-packages/twisted/internet/test/test_protocol.py
-twisted.internet.test.test_qtreactor|/usr/lib/python2.6/dist-packages/twisted/internet/test/test_qtreactor.py
-twisted.internet.test.test_sigchld|/usr/lib/python2.6/dist-packages/twisted/internet/test/test_sigchld.py
-twisted.internet.test.test_tcp|/usr/lib/python2.6/dist-packages/twisted/internet/test/test_tcp.py
-twisted.internet.test.test_threads|/usr/lib/python2.6/dist-packages/twisted/internet/test/test_threads.py
-twisted.internet.test.test_time|/usr/lib/python2.6/dist-packages/twisted/internet/test/test_time.py
-twisted.internet.test.test_tls|/usr/lib/python2.6/dist-packages/twisted/internet/test/test_tls.py
-twisted.internet.test.test_unix|/usr/lib/python2.6/dist-packages/twisted/internet/test/test_unix.py
-twisted.internet.threads|/usr/lib/python2.6/dist-packages/twisted/internet/threads.py
-twisted.internet.tksupport|/usr/lib/python2.6/dist-packages/twisted/internet/tksupport.py
-twisted.internet.udp|/usr/lib/python2.6/dist-packages/twisted/internet/udp.py
-twisted.internet.unix|/usr/lib/python2.6/dist-packages/twisted/internet/unix.py
-twisted.internet.utils|/usr/lib/python2.6/dist-packages/twisted/internet/utils.py
-twisted.internet.win32eventreactor|/usr/lib/python2.6/dist-packages/twisted/internet/win32eventreactor.py
-twisted.internet.wxreactor|/usr/lib/python2.6/dist-packages/twisted/internet/wxreactor.py
-twisted.internet.wxsupport|/usr/lib/python2.6/dist-packages/twisted/internet/wxsupport.py
-twisted.lore.__init__|/usr/lib/python2.6/dist-packages/twisted/lore/__init__.py
-twisted.lore._version|/usr/lib/python2.6/dist-packages/twisted/lore/_version.py
-twisted.lore.default|/usr/lib/python2.6/dist-packages/twisted/lore/default.py
-twisted.lore.docbook|/usr/lib/python2.6/dist-packages/twisted/lore/docbook.py
-twisted.lore.htmlbook|/usr/lib/python2.6/dist-packages/twisted/lore/htmlbook.py
-twisted.lore.indexer|/usr/lib/python2.6/dist-packages/twisted/lore/indexer.py
-twisted.lore.latex|/usr/lib/python2.6/dist-packages/twisted/lore/latex.py
-twisted.lore.lint|/usr/lib/python2.6/dist-packages/twisted/lore/lint.py
-twisted.lore.lmath|/usr/lib/python2.6/dist-packages/twisted/lore/lmath.py
-twisted.lore.man2lore|/usr/lib/python2.6/dist-packages/twisted/lore/man2lore.py
-twisted.lore.numberer|/usr/lib/python2.6/dist-packages/twisted/lore/numberer.py
-twisted.lore.process|/usr/lib/python2.6/dist-packages/twisted/lore/process.py
-twisted.lore.scripts.__init__|/usr/lib/python2.6/dist-packages/twisted/lore/scripts/__init__.py
-twisted.lore.scripts.lore|/usr/lib/python2.6/dist-packages/twisted/lore/scripts/lore.py
-twisted.lore.slides|/usr/lib/python2.6/dist-packages/twisted/lore/slides.py
-twisted.lore.test.__init__|/usr/lib/python2.6/dist-packages/twisted/lore/test/__init__.py
-twisted.lore.test.test_docbook|/usr/lib/python2.6/dist-packages/twisted/lore/test/test_docbook.py
-twisted.lore.test.test_latex|/usr/lib/python2.6/dist-packages/twisted/lore/test/test_latex.py
-twisted.lore.test.test_lint|/usr/lib/python2.6/dist-packages/twisted/lore/test/test_lint.py
-twisted.lore.test.test_lmath|/usr/lib/python2.6/dist-packages/twisted/lore/test/test_lmath.py
-twisted.lore.test.test_lore|/usr/lib/python2.6/dist-packages/twisted/lore/test/test_lore.py
-twisted.lore.test.test_man2lore|/usr/lib/python2.6/dist-packages/twisted/lore/test/test_man2lore.py
-twisted.lore.test.test_slides|/usr/lib/python2.6/dist-packages/twisted/lore/test/test_slides.py
-twisted.lore.texi|/usr/lib/python2.6/dist-packages/twisted/lore/texi.py
-twisted.lore.tree|/usr/lib/python2.6/dist-packages/twisted/lore/tree.py
-twisted.mail.__init__|/usr/lib/python2.6/dist-packages/twisted/mail/__init__.py
-twisted.mail._version|/usr/lib/python2.6/dist-packages/twisted/mail/_version.py
-twisted.mail.alias|/usr/lib/python2.6/dist-packages/twisted/mail/alias.py
-twisted.mail.bounce|/usr/lib/python2.6/dist-packages/twisted/mail/bounce.py
-twisted.mail.imap4|/usr/lib/python2.6/dist-packages/twisted/mail/imap4.py
-twisted.mail.mail|/usr/lib/python2.6/dist-packages/twisted/mail/mail.py
-twisted.mail.maildir|/usr/lib/python2.6/dist-packages/twisted/mail/maildir.py
-twisted.mail.pb|/usr/lib/python2.6/dist-packages/twisted/mail/pb.py
-twisted.mail.pop3|/usr/lib/python2.6/dist-packages/twisted/mail/pop3.py
-twisted.mail.pop3client|/usr/lib/python2.6/dist-packages/twisted/mail/pop3client.py
-twisted.mail.protocols|/usr/lib/python2.6/dist-packages/twisted/mail/protocols.py
-twisted.mail.relay|/usr/lib/python2.6/dist-packages/twisted/mail/relay.py
-twisted.mail.relaymanager|/usr/lib/python2.6/dist-packages/twisted/mail/relaymanager.py
-twisted.mail.scripts.__init__|/usr/lib/python2.6/dist-packages/twisted/mail/scripts/__init__.py
-twisted.mail.scripts.mailmail|/usr/lib/python2.6/dist-packages/twisted/mail/scripts/mailmail.py
-twisted.mail.smtp|/usr/lib/python2.6/dist-packages/twisted/mail/smtp.py
-twisted.mail.tap|/usr/lib/python2.6/dist-packages/twisted/mail/tap.py
-twisted.mail.test.__init__|/usr/lib/python2.6/dist-packages/twisted/mail/test/__init__.py
-twisted.mail.test.pop3testserver|/usr/lib/python2.6/dist-packages/twisted/mail/test/pop3testserver.py
-twisted.mail.test.test_bounce|/usr/lib/python2.6/dist-packages/twisted/mail/test/test_bounce.py
-twisted.mail.test.test_imap|/usr/lib/python2.6/dist-packages/twisted/mail/test/test_imap.py
-twisted.mail.test.test_mail|/usr/lib/python2.6/dist-packages/twisted/mail/test/test_mail.py
-twisted.mail.test.test_mailmail|/usr/lib/python2.6/dist-packages/twisted/mail/test/test_mailmail.py
-twisted.mail.test.test_options|/usr/lib/python2.6/dist-packages/twisted/mail/test/test_options.py
-twisted.mail.test.test_pop3|/usr/lib/python2.6/dist-packages/twisted/mail/test/test_pop3.py
-twisted.mail.test.test_pop3client|/usr/lib/python2.6/dist-packages/twisted/mail/test/test_pop3client.py
-twisted.mail.test.test_smtp|/usr/lib/python2.6/dist-packages/twisted/mail/test/test_smtp.py
-twisted.manhole.__init__|/usr/lib/python2.6/dist-packages/twisted/manhole/__init__.py
-twisted.manhole._inspectro|/usr/lib/python2.6/dist-packages/twisted/manhole/_inspectro.py
-twisted.manhole.explorer|/usr/lib/python2.6/dist-packages/twisted/manhole/explorer.py
-twisted.manhole.gladereactor|/usr/lib/python2.6/dist-packages/twisted/manhole/gladereactor.py
-twisted.manhole.service|/usr/lib/python2.6/dist-packages/twisted/manhole/service.py
-twisted.manhole.telnet|/usr/lib/python2.6/dist-packages/twisted/manhole/telnet.py
-twisted.manhole.ui.__init__|/usr/lib/python2.6/dist-packages/twisted/manhole/ui/__init__.py
-twisted.manhole.ui.gtk2manhole|/usr/lib/python2.6/dist-packages/twisted/manhole/ui/gtk2manhole.py
-twisted.manhole.ui.test.__init__|/usr/lib/python2.6/dist-packages/twisted/manhole/ui/test/__init__.py
-twisted.manhole.ui.test.test_gtk2manhole|/usr/lib/python2.6/dist-packages/twisted/manhole/ui/test/test_gtk2manhole.py
-twisted.names.__init__|/usr/lib/python2.6/dist-packages/twisted/names/__init__.py
-twisted.names._version|/usr/lib/python2.6/dist-packages/twisted/names/_version.py
-twisted.names.authority|/usr/lib/python2.6/dist-packages/twisted/names/authority.py
-twisted.names.cache|/usr/lib/python2.6/dist-packages/twisted/names/cache.py
-twisted.names.client|/usr/lib/python2.6/dist-packages/twisted/names/client.py
-twisted.names.common|/usr/lib/python2.6/dist-packages/twisted/names/common.py
-twisted.names.dns|/usr/lib/python2.6/dist-packages/twisted/names/dns.py
-twisted.names.error|/usr/lib/python2.6/dist-packages/twisted/names/error.py
-twisted.names.hosts|/usr/lib/python2.6/dist-packages/twisted/names/hosts.py
-twisted.names.resolve|/usr/lib/python2.6/dist-packages/twisted/names/resolve.py
-twisted.names.root|/usr/lib/python2.6/dist-packages/twisted/names/root.py
-twisted.names.secondary|/usr/lib/python2.6/dist-packages/twisted/names/secondary.py
-twisted.names.server|/usr/lib/python2.6/dist-packages/twisted/names/server.py
-twisted.names.srvconnect|/usr/lib/python2.6/dist-packages/twisted/names/srvconnect.py
-twisted.names.tap|/usr/lib/python2.6/dist-packages/twisted/names/tap.py
-twisted.names.test.__init__|/usr/lib/python2.6/dist-packages/twisted/names/test/__init__.py
-twisted.names.test.test_cache|/usr/lib/python2.6/dist-packages/twisted/names/test/test_cache.py
-twisted.names.test.test_client|/usr/lib/python2.6/dist-packages/twisted/names/test/test_client.py
-twisted.names.test.test_common|/usr/lib/python2.6/dist-packages/twisted/names/test/test_common.py
-twisted.names.test.test_dns|/usr/lib/python2.6/dist-packages/twisted/names/test/test_dns.py
-twisted.names.test.test_names|/usr/lib/python2.6/dist-packages/twisted/names/test/test_names.py
-twisted.names.test.test_rootresolve|/usr/lib/python2.6/dist-packages/twisted/names/test/test_rootresolve.py
-twisted.names.test.test_srvconnect|/usr/lib/python2.6/dist-packages/twisted/names/test/test_srvconnect.py
-twisted.news.__init__|/usr/lib/python2.6/dist-packages/twisted/news/__init__.py
-twisted.news._version|/usr/lib/python2.6/dist-packages/twisted/news/_version.py
-twisted.news.database|/usr/lib/python2.6/dist-packages/twisted/news/database.py
-twisted.news.news|/usr/lib/python2.6/dist-packages/twisted/news/news.py
-twisted.news.nntp|/usr/lib/python2.6/dist-packages/twisted/news/nntp.py
-twisted.news.tap|/usr/lib/python2.6/dist-packages/twisted/news/tap.py
-twisted.news.test.__init__|/usr/lib/python2.6/dist-packages/twisted/news/test/__init__.py
-twisted.news.test.test_news|/usr/lib/python2.6/dist-packages/twisted/news/test/test_news.py
-twisted.news.test.test_nntp|/usr/lib/python2.6/dist-packages/twisted/news/test/test_nntp.py
-twisted.persisted.__init__|/usr/lib/python2.6/dist-packages/twisted/persisted/__init__.py
-twisted.persisted.aot|/usr/lib/python2.6/dist-packages/twisted/persisted/aot.py
-twisted.persisted.crefutil|/usr/lib/python2.6/dist-packages/twisted/persisted/crefutil.py
-twisted.persisted.dirdbm|/usr/lib/python2.6/dist-packages/twisted/persisted/dirdbm.py
-twisted.persisted.journal.__init__|/usr/lib/python2.6/dist-packages/twisted/persisted/journal/__init__.py
-twisted.persisted.journal.base|/usr/lib/python2.6/dist-packages/twisted/persisted/journal/base.py
-twisted.persisted.journal.picklelog|/usr/lib/python2.6/dist-packages/twisted/persisted/journal/picklelog.py
-twisted.persisted.journal.rowjournal|/usr/lib/python2.6/dist-packages/twisted/persisted/journal/rowjournal.py
-twisted.persisted.sob|/usr/lib/python2.6/dist-packages/twisted/persisted/sob.py
-twisted.persisted.styles|/usr/lib/python2.6/dist-packages/twisted/persisted/styles.py
-twisted.plugin|/usr/lib/python2.6/dist-packages/twisted/plugin.py
-twisted.plugins.__init__|/usr/lib/python2.6/dist-packages/twisted/plugins/__init__.py
-twisted.plugins.cred_anonymous|/usr/lib/python2.6/dist-packages/twisted/plugins/cred_anonymous.py
-twisted.plugins.cred_file|/usr/lib/python2.6/dist-packages/twisted/plugins/cred_file.py
-twisted.plugins.cred_memory|/usr/lib/python2.6/dist-packages/twisted/plugins/cred_memory.py
-twisted.plugins.cred_unix|/usr/lib/python2.6/dist-packages/twisted/plugins/cred_unix.py
-twisted.plugins.twisted_conch|/usr/lib/python2.6/dist-packages/twisted/plugins/twisted_conch.py
-twisted.plugins.twisted_ftp|/usr/lib/python2.6/dist-packages/twisted/plugins/twisted_ftp.py
-twisted.plugins.twisted_inet|/usr/lib/python2.6/dist-packages/twisted/plugins/twisted_inet.py
-twisted.plugins.twisted_lore|/usr/lib/python2.6/dist-packages/twisted/plugins/twisted_lore.py
-twisted.plugins.twisted_mail|/usr/lib/python2.6/dist-packages/twisted/plugins/twisted_mail.py
-twisted.plugins.twisted_manhole|/usr/lib/python2.6/dist-packages/twisted/plugins/twisted_manhole.py
-twisted.plugins.twisted_names|/usr/lib/python2.6/dist-packages/twisted/plugins/twisted_names.py
-twisted.plugins.twisted_news|/usr/lib/python2.6/dist-packages/twisted/plugins/twisted_news.py
-twisted.plugins.twisted_portforward|/usr/lib/python2.6/dist-packages/twisted/plugins/twisted_portforward.py
-twisted.plugins.twisted_qtstub|/usr/lib/python2.6/dist-packages/twisted/plugins/twisted_qtstub.py
-twisted.plugins.twisted_reactors|/usr/lib/python2.6/dist-packages/twisted/plugins/twisted_reactors.py
-twisted.plugins.twisted_runner|/usr/lib/python2.6/dist-packages/twisted/plugins/twisted_runner.py
-twisted.plugins.twisted_socks|/usr/lib/python2.6/dist-packages/twisted/plugins/twisted_socks.py
-twisted.plugins.twisted_telnet|/usr/lib/python2.6/dist-packages/twisted/plugins/twisted_telnet.py
-twisted.plugins.twisted_trial|/usr/lib/python2.6/dist-packages/twisted/plugins/twisted_trial.py
-twisted.plugins.twisted_web|/usr/lib/python2.6/dist-packages/twisted/plugins/twisted_web.py
-twisted.plugins.twisted_words|/usr/lib/python2.6/dist-packages/twisted/plugins/twisted_words.py
-twisted.protocols.__init__|/usr/lib/python2.6/dist-packages/twisted/protocols/__init__.py
-twisted.protocols._c_urlarg|/usr/lib/python2.6/dist-packages/twisted/protocols/_c_urlarg.so
-twisted.protocols.amp|/usr/lib/python2.6/dist-packages/twisted/protocols/amp.py
-twisted.protocols.basic|/usr/lib/python2.6/dist-packages/twisted/protocols/basic.py
-twisted.protocols.dict|/usr/lib/python2.6/dist-packages/twisted/protocols/dict.py
-twisted.protocols.finger|/usr/lib/python2.6/dist-packages/twisted/protocols/finger.py
-twisted.protocols.ftp|/usr/lib/python2.6/dist-packages/twisted/protocols/ftp.py
-twisted.protocols.gps.__init__|/usr/lib/python2.6/dist-packages/twisted/protocols/gps/__init__.py
-twisted.protocols.gps.nmea|/usr/lib/python2.6/dist-packages/twisted/protocols/gps/nmea.py
-twisted.protocols.gps.rockwell|/usr/lib/python2.6/dist-packages/twisted/protocols/gps/rockwell.py
-twisted.protocols.htb|/usr/lib/python2.6/dist-packages/twisted/protocols/htb.py
-twisted.protocols.ident|/usr/lib/python2.6/dist-packages/twisted/protocols/ident.py
-twisted.protocols.loopback|/usr/lib/python2.6/dist-packages/twisted/protocols/loopback.py
-twisted.protocols.memcache|/usr/lib/python2.6/dist-packages/twisted/protocols/memcache.py
-twisted.protocols.mice.__init__|/usr/lib/python2.6/dist-packages/twisted/protocols/mice/__init__.py
-twisted.protocols.mice.mouseman|/usr/lib/python2.6/dist-packages/twisted/protocols/mice/mouseman.py
-twisted.protocols.pcp|/usr/lib/python2.6/dist-packages/twisted/protocols/pcp.py
-twisted.protocols.policies|/usr/lib/python2.6/dist-packages/twisted/protocols/policies.py
-twisted.protocols.portforward|/usr/lib/python2.6/dist-packages/twisted/protocols/portforward.py
-twisted.protocols.postfix|/usr/lib/python2.6/dist-packages/twisted/protocols/postfix.py
-twisted.protocols.shoutcast|/usr/lib/python2.6/dist-packages/twisted/protocols/shoutcast.py
-twisted.protocols.sip|/usr/lib/python2.6/dist-packages/twisted/protocols/sip.py
-twisted.protocols.socks|/usr/lib/python2.6/dist-packages/twisted/protocols/socks.py
-twisted.protocols.stateful|/usr/lib/python2.6/dist-packages/twisted/protocols/stateful.py
-twisted.protocols.telnet|/usr/lib/python2.6/dist-packages/twisted/protocols/telnet.py
-twisted.protocols.test.__init__|/usr/lib/python2.6/dist-packages/twisted/protocols/test/__init__.py
-twisted.protocols.test.test_tls|/usr/lib/python2.6/dist-packages/twisted/protocols/test/test_tls.py
-twisted.protocols.tls|/usr/lib/python2.6/dist-packages/twisted/protocols/tls.py
-twisted.protocols.wire|/usr/lib/python2.6/dist-packages/twisted/protocols/wire.py
-twisted.python.__init__|/usr/lib/python2.6/dist-packages/twisted/python/__init__.py
-twisted.python._epoll|/usr/lib/python2.6/dist-packages/twisted/python/_epoll.so
-twisted.python._initgroups|/usr/lib/python2.6/dist-packages/twisted/python/_initgroups.so
-twisted.python._inotify|/usr/lib/python2.6/dist-packages/twisted/python/_inotify.py
-twisted.python._release|/usr/lib/python2.6/dist-packages/twisted/python/_release.py
-twisted.python.compat|/usr/lib/python2.6/dist-packages/twisted/python/compat.py
-twisted.python.components|/usr/lib/python2.6/dist-packages/twisted/python/components.py
-twisted.python.context|/usr/lib/python2.6/dist-packages/twisted/python/context.py
-twisted.python.deprecate|/usr/lib/python2.6/dist-packages/twisted/python/deprecate.py
-twisted.python.dispatch|/usr/lib/python2.6/dist-packages/twisted/python/dispatch.py
-twisted.python.dist|/usr/lib/python2.6/dist-packages/twisted/python/dist.py
-twisted.python.dxprofile|/usr/lib/python2.6/dist-packages/twisted/python/dxprofile.py
-twisted.python.failure|/usr/lib/python2.6/dist-packages/twisted/python/failure.py
-twisted.python.fakepwd|/usr/lib/python2.6/dist-packages/twisted/python/fakepwd.py
-twisted.python.filepath|/usr/lib/python2.6/dist-packages/twisted/python/filepath.py
-twisted.python.finalize|/usr/lib/python2.6/dist-packages/twisted/python/finalize.py
-twisted.python.formmethod|/usr/lib/python2.6/dist-packages/twisted/python/formmethod.py
-twisted.python.hashlib|/usr/lib/python2.6/dist-packages/twisted/python/hashlib.py
-twisted.python.hook|/usr/lib/python2.6/dist-packages/twisted/python/hook.py
-twisted.python.htmlizer|/usr/lib/python2.6/dist-packages/twisted/python/htmlizer.py
-twisted.python.lockfile|/usr/lib/python2.6/dist-packages/twisted/python/lockfile.py
-twisted.python.log|/usr/lib/python2.6/dist-packages/twisted/python/log.py
-twisted.python.logfile|/usr/lib/python2.6/dist-packages/twisted/python/logfile.py
-twisted.python.modules|/usr/lib/python2.6/dist-packages/twisted/python/modules.py
-twisted.python.monkey|/usr/lib/python2.6/dist-packages/twisted/python/monkey.py
-twisted.python.otp|/usr/lib/python2.6/dist-packages/twisted/python/otp.py
-twisted.python.procutils|/usr/lib/python2.6/dist-packages/twisted/python/procutils.py
-twisted.python.randbytes|/usr/lib/python2.6/dist-packages/twisted/python/randbytes.py
-twisted.python.rebuild|/usr/lib/python2.6/dist-packages/twisted/python/rebuild.py
-twisted.python.reflect|/usr/lib/python2.6/dist-packages/twisted/python/reflect.py
-twisted.python.release|/usr/lib/python2.6/dist-packages/twisted/python/release.py
-twisted.python.roots|/usr/lib/python2.6/dist-packages/twisted/python/roots.py
-twisted.python.runtime|/usr/lib/python2.6/dist-packages/twisted/python/runtime.py
-twisted.python.shortcut|/usr/lib/python2.6/dist-packages/twisted/python/shortcut.py
-twisted.python.syslog|/usr/lib/python2.6/dist-packages/twisted/python/syslog.py
-twisted.python.test.__init__|/usr/lib/python2.6/dist-packages/twisted/python/test/__init__.py
-twisted.python.test.deprecatedattributes|/usr/lib/python2.6/dist-packages/twisted/python/test/deprecatedattributes.py
-twisted.python.test.test_components|/usr/lib/python2.6/dist-packages/twisted/python/test/test_components.py
-twisted.python.test.test_deprecate|/usr/lib/python2.6/dist-packages/twisted/python/test/test_deprecate.py
-twisted.python.test.test_dist|/usr/lib/python2.6/dist-packages/twisted/python/test/test_dist.py
-twisted.python.test.test_fakepwd|/usr/lib/python2.6/dist-packages/twisted/python/test/test_fakepwd.py
-twisted.python.test.test_hashlib|/usr/lib/python2.6/dist-packages/twisted/python/test/test_hashlib.py
-twisted.python.test.test_htmlizer|/usr/lib/python2.6/dist-packages/twisted/python/test/test_htmlizer.py
-twisted.python.test.test_inotify|/usr/lib/python2.6/dist-packages/twisted/python/test/test_inotify.py
-twisted.python.test.test_release|/usr/lib/python2.6/dist-packages/twisted/python/test/test_release.py
-twisted.python.test.test_runtime|/usr/lib/python2.6/dist-packages/twisted/python/test/test_runtime.py
-twisted.python.test.test_syslog|/usr/lib/python2.6/dist-packages/twisted/python/test/test_syslog.py
-twisted.python.test.test_util|/usr/lib/python2.6/dist-packages/twisted/python/test/test_util.py
-twisted.python.test.test_versions|/usr/lib/python2.6/dist-packages/twisted/python/test/test_versions.py
-twisted.python.test.test_win32|/usr/lib/python2.6/dist-packages/twisted/python/test/test_win32.py
-twisted.python.test.test_zipstream|/usr/lib/python2.6/dist-packages/twisted/python/test/test_zipstream.py
-twisted.python.text|/usr/lib/python2.6/dist-packages/twisted/python/text.py
-twisted.python.threadable|/usr/lib/python2.6/dist-packages/twisted/python/threadable.py
-twisted.python.threadpool|/usr/lib/python2.6/dist-packages/twisted/python/threadpool.py
-twisted.python.timeoutqueue|/usr/lib/python2.6/dist-packages/twisted/python/timeoutqueue.py
-twisted.python.urlpath|/usr/lib/python2.6/dist-packages/twisted/python/urlpath.py
-twisted.python.usage|/usr/lib/python2.6/dist-packages/twisted/python/usage.py
-twisted.python.util|/usr/lib/python2.6/dist-packages/twisted/python/util.py
-twisted.python.versions|/usr/lib/python2.6/dist-packages/twisted/python/versions.py
-twisted.python.win32|/usr/lib/python2.6/dist-packages/twisted/python/win32.py
-twisted.python.zippath|/usr/lib/python2.6/dist-packages/twisted/python/zippath.py
-twisted.python.zipstream|/usr/lib/python2.6/dist-packages/twisted/python/zipstream.py
-twisted.python.zshcomp|/usr/lib/python2.6/dist-packages/twisted/python/zshcomp.py
-twisted.runner.__init__|/usr/lib/python2.6/dist-packages/twisted/runner/__init__.py
-twisted.runner._version|/usr/lib/python2.6/dist-packages/twisted/runner/_version.py
-twisted.runner.inetd|/usr/lib/python2.6/dist-packages/twisted/runner/inetd.py
-twisted.runner.inetdconf|/usr/lib/python2.6/dist-packages/twisted/runner/inetdconf.py
-twisted.runner.inetdtap|/usr/lib/python2.6/dist-packages/twisted/runner/inetdtap.py
-twisted.runner.portmap|/usr/lib/python2.6/dist-packages/twisted/runner/portmap.so
-twisted.runner.procmon|/usr/lib/python2.6/dist-packages/twisted/runner/procmon.py
-twisted.runner.procmontap|/usr/lib/python2.6/dist-packages/twisted/runner/procmontap.py
-twisted.runner.procutils|/usr/lib/python2.6/dist-packages/twisted/runner/procutils.py
-twisted.runner.test.__init__|/usr/lib/python2.6/dist-packages/twisted/runner/test/__init__.py
-twisted.runner.test.test_procmon|/usr/lib/python2.6/dist-packages/twisted/runner/test/test_procmon.py
-twisted.runner.test.test_procmontap|/usr/lib/python2.6/dist-packages/twisted/runner/test/test_procmontap.py
-twisted.scripts.__init__|/usr/lib/python2.6/dist-packages/twisted/scripts/__init__.py
-twisted.scripts._twistd_unix|/usr/lib/python2.6/dist-packages/twisted/scripts/_twistd_unix.py
-twisted.scripts._twistw|/usr/lib/python2.6/dist-packages/twisted/scripts/_twistw.py
-twisted.scripts.htmlizer|/usr/lib/python2.6/dist-packages/twisted/scripts/htmlizer.py
-twisted.scripts.manhole|/usr/lib/python2.6/dist-packages/twisted/scripts/manhole.py
-twisted.scripts.mktap|/usr/lib/python2.6/dist-packages/twisted/scripts/mktap.py
-twisted.scripts.tap2deb|/usr/lib/python2.6/dist-packages/twisted/scripts/tap2deb.py
-twisted.scripts.tap2rpm|/usr/lib/python2.6/dist-packages/twisted/scripts/tap2rpm.py
-twisted.scripts.tapconvert|/usr/lib/python2.6/dist-packages/twisted/scripts/tapconvert.py
-twisted.scripts.test.__init__|/usr/lib/python2.6/dist-packages/twisted/scripts/test/__init__.py
-twisted.scripts.test.test_mktap|/usr/lib/python2.6/dist-packages/twisted/scripts/test/test_mktap.py
-twisted.scripts.test.test_tap2rpm|/usr/lib/python2.6/dist-packages/twisted/scripts/test/test_tap2rpm.py
-twisted.scripts.tkunzip|/usr/lib/python2.6/dist-packages/twisted/scripts/tkunzip.py
-twisted.scripts.trial|/usr/lib/python2.6/dist-packages/twisted/scripts/trial.py
-twisted.scripts.twistd|/usr/lib/python2.6/dist-packages/twisted/scripts/twistd.py
-twisted.spread.__init__|/usr/lib/python2.6/dist-packages/twisted/spread/__init__.py
-twisted.spread.banana|/usr/lib/python2.6/dist-packages/twisted/spread/banana.py
-twisted.spread.flavors|/usr/lib/python2.6/dist-packages/twisted/spread/flavors.py
-twisted.spread.interfaces|/usr/lib/python2.6/dist-packages/twisted/spread/interfaces.py
-twisted.spread.jelly|/usr/lib/python2.6/dist-packages/twisted/spread/jelly.py
-twisted.spread.pb|/usr/lib/python2.6/dist-packages/twisted/spread/pb.py
-twisted.spread.publish|/usr/lib/python2.6/dist-packages/twisted/spread/publish.py
-twisted.spread.refpath|/usr/lib/python2.6/dist-packages/twisted/spread/refpath.py
-twisted.spread.ui.__init__|/usr/lib/python2.6/dist-packages/twisted/spread/ui/__init__.py
-twisted.spread.ui.gtk2util|/usr/lib/python2.6/dist-packages/twisted/spread/ui/gtk2util.py
-twisted.spread.ui.tktree|/usr/lib/python2.6/dist-packages/twisted/spread/ui/tktree.py
-twisted.spread.ui.tkutil|/usr/lib/python2.6/dist-packages/twisted/spread/ui/tkutil.py
-twisted.spread.util|/usr/lib/python2.6/dist-packages/twisted/spread/util.py
-twisted.tap.__init__|/usr/lib/python2.6/dist-packages/twisted/tap/__init__.py
-twisted.tap.ftp|/usr/lib/python2.6/dist-packages/twisted/tap/ftp.py
-twisted.tap.manhole|/usr/lib/python2.6/dist-packages/twisted/tap/manhole.py
-twisted.tap.portforward|/usr/lib/python2.6/dist-packages/twisted/tap/portforward.py
-twisted.tap.socks|/usr/lib/python2.6/dist-packages/twisted/tap/socks.py
-twisted.tap.telnet|/usr/lib/python2.6/dist-packages/twisted/tap/telnet.py
-twisted.test.__init__|/usr/lib/python2.6/dist-packages/twisted/test/__init__.py
-twisted.test.crash_test_dummy|/usr/lib/python2.6/dist-packages/twisted/test/crash_test_dummy.py
-twisted.test.generator_failure_tests|/usr/lib/python2.6/dist-packages/twisted/test/generator_failure_tests.py
-twisted.test.iosim|/usr/lib/python2.6/dist-packages/twisted/test/iosim.py
-twisted.test.mock_win32process|/usr/lib/python2.6/dist-packages/twisted/test/mock_win32process.py
-twisted.test.myrebuilder1|/usr/lib/python2.6/dist-packages/twisted/test/myrebuilder1.py
-twisted.test.myrebuilder2|/usr/lib/python2.6/dist-packages/twisted/test/myrebuilder2.py
-twisted.test.plugin_basic|/usr/lib/python2.6/dist-packages/twisted/test/plugin_basic.py
-twisted.test.plugin_extra1|/usr/lib/python2.6/dist-packages/twisted/test/plugin_extra1.py
-twisted.test.plugin_extra2|/usr/lib/python2.6/dist-packages/twisted/test/plugin_extra2.py
-twisted.test.process_cmdline|/usr/lib/python2.6/dist-packages/twisted/test/process_cmdline.py
-twisted.test.process_echoer|/usr/lib/python2.6/dist-packages/twisted/test/process_echoer.py
-twisted.test.process_fds|/usr/lib/python2.6/dist-packages/twisted/test/process_fds.py
-twisted.test.process_linger|/usr/lib/python2.6/dist-packages/twisted/test/process_linger.py
-twisted.test.process_reader|/usr/lib/python2.6/dist-packages/twisted/test/process_reader.py
-twisted.test.process_signal|/usr/lib/python2.6/dist-packages/twisted/test/process_signal.py
-twisted.test.process_stdinreader|/usr/lib/python2.6/dist-packages/twisted/test/process_stdinreader.py
-twisted.test.process_tester|/usr/lib/python2.6/dist-packages/twisted/test/process_tester.py
-twisted.test.process_tty|/usr/lib/python2.6/dist-packages/twisted/test/process_tty.py
-twisted.test.process_twisted|/usr/lib/python2.6/dist-packages/twisted/test/process_twisted.py
-twisted.test.proto_helpers|/usr/lib/python2.6/dist-packages/twisted/test/proto_helpers.py
-twisted.test.raiser|/usr/lib/python2.6/dist-packages/twisted/test/raiser.so
-twisted.test.reflect_helper_IE|/usr/lib/python2.6/dist-packages/twisted/test/reflect_helper_IE.py
-twisted.test.reflect_helper_VE|/usr/lib/python2.6/dist-packages/twisted/test/reflect_helper_VE.py
-twisted.test.reflect_helper_ZDE|/usr/lib/python2.6/dist-packages/twisted/test/reflect_helper_ZDE.py
-twisted.test.ssl_helpers|/usr/lib/python2.6/dist-packages/twisted/test/ssl_helpers.py
-twisted.test.stdio_test_consumer|/usr/lib/python2.6/dist-packages/twisted/test/stdio_test_consumer.py
-twisted.test.stdio_test_halfclose|/usr/lib/python2.6/dist-packages/twisted/test/stdio_test_halfclose.py
-twisted.test.stdio_test_hostpeer|/usr/lib/python2.6/dist-packages/twisted/test/stdio_test_hostpeer.py
-twisted.test.stdio_test_lastwrite|/usr/lib/python2.6/dist-packages/twisted/test/stdio_test_lastwrite.py
-twisted.test.stdio_test_loseconn|/usr/lib/python2.6/dist-packages/twisted/test/stdio_test_loseconn.py
-twisted.test.stdio_test_producer|/usr/lib/python2.6/dist-packages/twisted/test/stdio_test_producer.py
-twisted.test.stdio_test_write|/usr/lib/python2.6/dist-packages/twisted/test/stdio_test_write.py
-twisted.test.stdio_test_writeseq|/usr/lib/python2.6/dist-packages/twisted/test/stdio_test_writeseq.py
-twisted.test.test_abstract|/usr/lib/python2.6/dist-packages/twisted/test/test_abstract.py
-twisted.test.test_adbapi|/usr/lib/python2.6/dist-packages/twisted/test/test_adbapi.py
-twisted.test.test_amp|/usr/lib/python2.6/dist-packages/twisted/test/test_amp.py
-twisted.test.test_application|/usr/lib/python2.6/dist-packages/twisted/test/test_application.py
-twisted.test.test_banana|/usr/lib/python2.6/dist-packages/twisted/test/test_banana.py
-twisted.test.test_compat|/usr/lib/python2.6/dist-packages/twisted/test/test_compat.py
-twisted.test.test_context|/usr/lib/python2.6/dist-packages/twisted/test/test_context.py
-twisted.test.test_cooperator|/usr/lib/python2.6/dist-packages/twisted/test/test_cooperator.py
-twisted.test.test_defer|/usr/lib/python2.6/dist-packages/twisted/test/test_defer.py
-twisted.test.test_defgen|/usr/lib/python2.6/dist-packages/twisted/test/test_defgen.py
-twisted.test.test_dict|/usr/lib/python2.6/dist-packages/twisted/test/test_dict.py
-twisted.test.test_digestauth|/usr/lib/python2.6/dist-packages/twisted/test/test_digestauth.py
-twisted.test.test_dirdbm|/usr/lib/python2.6/dist-packages/twisted/test/test_dirdbm.py
-twisted.test.test_doc|/usr/lib/python2.6/dist-packages/twisted/test/test_doc.py
-twisted.test.test_enterprise|/usr/lib/python2.6/dist-packages/twisted/test/test_enterprise.py
-twisted.test.test_epoll|/usr/lib/python2.6/dist-packages/twisted/test/test_epoll.py
-twisted.test.test_error|/usr/lib/python2.6/dist-packages/twisted/test/test_error.py
-twisted.test.test_explorer|/usr/lib/python2.6/dist-packages/twisted/test/test_explorer.py
-twisted.test.test_extensions|/usr/lib/python2.6/dist-packages/twisted/test/test_extensions.py
-twisted.test.test_factories|/usr/lib/python2.6/dist-packages/twisted/test/test_factories.py
-twisted.test.test_failure|/usr/lib/python2.6/dist-packages/twisted/test/test_failure.py
-twisted.test.test_fdesc|/usr/lib/python2.6/dist-packages/twisted/test/test_fdesc.py
-twisted.test.test_finger|/usr/lib/python2.6/dist-packages/twisted/test/test_finger.py
-twisted.test.test_formmethod|/usr/lib/python2.6/dist-packages/twisted/test/test_formmethod.py
-twisted.test.test_ftp|/usr/lib/python2.6/dist-packages/twisted/test/test_ftp.py
-twisted.test.test_hook|/usr/lib/python2.6/dist-packages/twisted/test/test_hook.py
-twisted.test.test_htb|/usr/lib/python2.6/dist-packages/twisted/test/test_htb.py
-twisted.test.test_ident|/usr/lib/python2.6/dist-packages/twisted/test/test_ident.py
-twisted.test.test_import|/usr/lib/python2.6/dist-packages/twisted/test/test_import.py
-twisted.test.test_internet|/usr/lib/python2.6/dist-packages/twisted/test/test_internet.py
-twisted.test.test_iutils|/usr/lib/python2.6/dist-packages/twisted/test/test_iutils.py
-twisted.test.test_jelly|/usr/lib/python2.6/dist-packages/twisted/test/test_jelly.py
-twisted.test.test_journal|/usr/lib/python2.6/dist-packages/twisted/test/test_journal.py
-twisted.test.test_lockfile|/usr/lib/python2.6/dist-packages/twisted/test/test_lockfile.py
-twisted.test.test_log|/usr/lib/python2.6/dist-packages/twisted/test/test_log.py
-twisted.test.test_logfile|/usr/lib/python2.6/dist-packages/twisted/test/test_logfile.py
-twisted.test.test_loopback|/usr/lib/python2.6/dist-packages/twisted/test/test_loopback.py
-twisted.test.test_manhole|/usr/lib/python2.6/dist-packages/twisted/test/test_manhole.py
-twisted.test.test_memcache|/usr/lib/python2.6/dist-packages/twisted/test/test_memcache.py
-twisted.test.test_modules|/usr/lib/python2.6/dist-packages/twisted/test/test_modules.py
-twisted.test.test_monkey|/usr/lib/python2.6/dist-packages/twisted/test/test_monkey.py
-twisted.test.test_newcred|/usr/lib/python2.6/dist-packages/twisted/test/test_newcred.py
-twisted.test.test_nmea|/usr/lib/python2.6/dist-packages/twisted/test/test_nmea.py
-twisted.test.test_paths|/usr/lib/python2.6/dist-packages/twisted/test/test_paths.py
-twisted.test.test_pb|/usr/lib/python2.6/dist-packages/twisted/test/test_pb.py
-twisted.test.test_pbfailure|/usr/lib/python2.6/dist-packages/twisted/test/test_pbfailure.py
-twisted.test.test_pcp|/usr/lib/python2.6/dist-packages/twisted/test/test_pcp.py
-twisted.test.test_persisted|/usr/lib/python2.6/dist-packages/twisted/test/test_persisted.py
-twisted.test.test_plugin|/usr/lib/python2.6/dist-packages/twisted/test/test_plugin.py
-twisted.test.test_policies|/usr/lib/python2.6/dist-packages/twisted/test/test_policies.py
-twisted.test.test_postfix|/usr/lib/python2.6/dist-packages/twisted/test/test_postfix.py
-twisted.test.test_process|/usr/lib/python2.6/dist-packages/twisted/test/test_process.py
-twisted.test.test_protocols|/usr/lib/python2.6/dist-packages/twisted/test/test_protocols.py
-twisted.test.test_randbytes|/usr/lib/python2.6/dist-packages/twisted/test/test_randbytes.py
-twisted.test.test_rebuild|/usr/lib/python2.6/dist-packages/twisted/test/test_rebuild.py
-twisted.test.test_reflect|/usr/lib/python2.6/dist-packages/twisted/test/test_reflect.py
-twisted.test.test_reflector|/usr/lib/python2.6/dist-packages/twisted/test/test_reflector.py
-twisted.test.test_roots|/usr/lib/python2.6/dist-packages/twisted/test/test_roots.py
-twisted.test.test_shortcut|/usr/lib/python2.6/dist-packages/twisted/test/test_shortcut.py
-twisted.test.test_sip|/usr/lib/python2.6/dist-packages/twisted/test/test_sip.py
-twisted.test.test_sob|/usr/lib/python2.6/dist-packages/twisted/test/test_sob.py
-twisted.test.test_socks|/usr/lib/python2.6/dist-packages/twisted/test/test_socks.py
-twisted.test.test_ssl|/usr/lib/python2.6/dist-packages/twisted/test/test_ssl.py
-twisted.test.test_sslverify|/usr/lib/python2.6/dist-packages/twisted/test/test_sslverify.py
-twisted.test.test_stateful|/usr/lib/python2.6/dist-packages/twisted/test/test_stateful.py
-twisted.test.test_stdio|/usr/lib/python2.6/dist-packages/twisted/test/test_stdio.py
-twisted.test.test_strcred|/usr/lib/python2.6/dist-packages/twisted/test/test_strcred.py
-twisted.test.test_strerror|/usr/lib/python2.6/dist-packages/twisted/test/test_strerror.py
-twisted.test.test_stringtransport|/usr/lib/python2.6/dist-packages/twisted/test/test_stringtransport.py
-twisted.test.test_strports|/usr/lib/python2.6/dist-packages/twisted/test/test_strports.py
-twisted.test.test_task|/usr/lib/python2.6/dist-packages/twisted/test/test_task.py
-twisted.test.test_tcp|/usr/lib/python2.6/dist-packages/twisted/test/test_tcp.py
-twisted.test.test_tcp_internals|/usr/lib/python2.6/dist-packages/twisted/test/test_tcp_internals.py
-twisted.test.test_text|/usr/lib/python2.6/dist-packages/twisted/test/test_text.py
-twisted.test.test_threadable|/usr/lib/python2.6/dist-packages/twisted/test/test_threadable.py
-twisted.test.test_threadpool|/usr/lib/python2.6/dist-packages/twisted/test/test_threadpool.py
-twisted.test.test_threads|/usr/lib/python2.6/dist-packages/twisted/test/test_threads.py
-twisted.test.test_timehelpers|/usr/lib/python2.6/dist-packages/twisted/test/test_timehelpers.py
-twisted.test.test_timeoutqueue|/usr/lib/python2.6/dist-packages/twisted/test/test_timeoutqueue.py
-twisted.test.test_tpfile|/usr/lib/python2.6/dist-packages/twisted/test/test_tpfile.py
-twisted.test.test_twistd|/usr/lib/python2.6/dist-packages/twisted/test/test_twistd.py
-twisted.test.test_udp|/usr/lib/python2.6/dist-packages/twisted/test/test_udp.py
-twisted.test.test_unix|/usr/lib/python2.6/dist-packages/twisted/test/test_unix.py
-twisted.test.test_usage|/usr/lib/python2.6/dist-packages/twisted/test/test_usage.py
-twisted.test.test_zshcomp|/usr/lib/python2.6/dist-packages/twisted/test/test_zshcomp.py
-twisted.test.testutils|/usr/lib/python2.6/dist-packages/twisted/test/testutils.py
-twisted.test.time_helpers|/usr/lib/python2.6/dist-packages/twisted/test/time_helpers.py
-twisted.trial.__init__|/usr/lib/python2.6/dist-packages/twisted/trial/__init__.py
-twisted.trial.itrial|/usr/lib/python2.6/dist-packages/twisted/trial/itrial.py
-twisted.trial.reporter|/usr/lib/python2.6/dist-packages/twisted/trial/reporter.py
-twisted.trial.runner|/usr/lib/python2.6/dist-packages/twisted/trial/runner.py
-twisted.trial.test.__init__|/usr/lib/python2.6/dist-packages/twisted/trial/test/__init__.py
-twisted.trial.test.detests|/usr/lib/python2.6/dist-packages/twisted/trial/test/detests.py
-twisted.trial.test.erroneous|/usr/lib/python2.6/dist-packages/twisted/trial/test/erroneous.py
-twisted.trial.test.mockcustomsuite|/usr/lib/python2.6/dist-packages/twisted/trial/test/mockcustomsuite.py
-twisted.trial.test.mockcustomsuite2|/usr/lib/python2.6/dist-packages/twisted/trial/test/mockcustomsuite2.py
-twisted.trial.test.mockcustomsuite3|/usr/lib/python2.6/dist-packages/twisted/trial/test/mockcustomsuite3.py
-twisted.trial.test.mockdoctest|/usr/lib/python2.6/dist-packages/twisted/trial/test/mockdoctest.py
-twisted.trial.test.moduleself|/usr/lib/python2.6/dist-packages/twisted/trial/test/moduleself.py
-twisted.trial.test.moduletest|/usr/lib/python2.6/dist-packages/twisted/trial/test/moduletest.py
-twisted.trial.test.novars|/usr/lib/python2.6/dist-packages/twisted/trial/test/novars.py
-twisted.trial.test.packages|/usr/lib/python2.6/dist-packages/twisted/trial/test/packages.py
-twisted.trial.test.sample|/usr/lib/python2.6/dist-packages/twisted/trial/test/sample.py
-twisted.trial.test.scripttest|/usr/lib/python2.6/dist-packages/twisted/trial/test/scripttest.py
-twisted.trial.test.suppression|/usr/lib/python2.6/dist-packages/twisted/trial/test/suppression.py
-twisted.trial.test.test_assertions|/usr/lib/python2.6/dist-packages/twisted/trial/test/test_assertions.py
-twisted.trial.test.test_deferred|/usr/lib/python2.6/dist-packages/twisted/trial/test/test_deferred.py
-twisted.trial.test.test_doctest|/usr/lib/python2.6/dist-packages/twisted/trial/test/test_doctest.py
-twisted.trial.test.test_keyboard|/usr/lib/python2.6/dist-packages/twisted/trial/test/test_keyboard.py
-twisted.trial.test.test_loader|/usr/lib/python2.6/dist-packages/twisted/trial/test/test_loader.py
-twisted.trial.test.test_log|/usr/lib/python2.6/dist-packages/twisted/trial/test/test_log.py
-twisted.trial.test.test_output|/usr/lib/python2.6/dist-packages/twisted/trial/test/test_output.py
-twisted.trial.test.test_plugins|/usr/lib/python2.6/dist-packages/twisted/trial/test/test_plugins.py
-twisted.trial.test.test_pyunitcompat|/usr/lib/python2.6/dist-packages/twisted/trial/test/test_pyunitcompat.py
-twisted.trial.test.test_reporter|/usr/lib/python2.6/dist-packages/twisted/trial/test/test_reporter.py
-twisted.trial.test.test_runner|/usr/lib/python2.6/dist-packages/twisted/trial/test/test_runner.py
-twisted.trial.test.test_script|/usr/lib/python2.6/dist-packages/twisted/trial/test/test_script.py
-twisted.trial.test.test_test_visitor|/usr/lib/python2.6/dist-packages/twisted/trial/test/test_test_visitor.py
-twisted.trial.test.test_testcase|/usr/lib/python2.6/dist-packages/twisted/trial/test/test_testcase.py
-twisted.trial.test.test_tests|/usr/lib/python2.6/dist-packages/twisted/trial/test/test_tests.py
-twisted.trial.test.test_util|/usr/lib/python2.6/dist-packages/twisted/trial/test/test_util.py
-twisted.trial.test.test_warning|/usr/lib/python2.6/dist-packages/twisted/trial/test/test_warning.py
-twisted.trial.test.weird|/usr/lib/python2.6/dist-packages/twisted/trial/test/weird.py
-twisted.trial.unittest|/usr/lib/python2.6/dist-packages/twisted/trial/unittest.py
-twisted.trial.util|/usr/lib/python2.6/dist-packages/twisted/trial/util.py
-twisted.web.__init__|/usr/lib/python2.6/dist-packages/twisted/web/__init__.py
-twisted.web._auth.__init__|/usr/lib/python2.6/dist-packages/twisted/web/_auth/__init__.py
-twisted.web._auth.basic|/usr/lib/python2.6/dist-packages/twisted/web/_auth/basic.py
-twisted.web._auth.digest|/usr/lib/python2.6/dist-packages/twisted/web/_auth/digest.py
-twisted.web._auth.wrapper|/usr/lib/python2.6/dist-packages/twisted/web/_auth/wrapper.py
-twisted.web._newclient|/usr/lib/python2.6/dist-packages/twisted/web/_newclient.py
-twisted.web._version|/usr/lib/python2.6/dist-packages/twisted/web/_version.py
-twisted.web.client|/usr/lib/python2.6/dist-packages/twisted/web/client.py
-twisted.web.demo|/usr/lib/python2.6/dist-packages/twisted/web/demo.py
-twisted.web.distrib|/usr/lib/python2.6/dist-packages/twisted/web/distrib.py
-twisted.web.domhelpers|/usr/lib/python2.6/dist-packages/twisted/web/domhelpers.py
-twisted.web.error|/usr/lib/python2.6/dist-packages/twisted/web/error.py
-twisted.web.google|/usr/lib/python2.6/dist-packages/twisted/web/google.py
-twisted.web.guard|/usr/lib/python2.6/dist-packages/twisted/web/guard.py
-twisted.web.html|/usr/lib/python2.6/dist-packages/twisted/web/html.py
-twisted.web.http|/usr/lib/python2.6/dist-packages/twisted/web/http.py
-twisted.web.http_headers|/usr/lib/python2.6/dist-packages/twisted/web/http_headers.py
-twisted.web.iweb|/usr/lib/python2.6/dist-packages/twisted/web/iweb.py
-twisted.web.microdom|/usr/lib/python2.6/dist-packages/twisted/web/microdom.py
-twisted.web.proxy|/usr/lib/python2.6/dist-packages/twisted/web/proxy.py
-twisted.web.resource|/usr/lib/python2.6/dist-packages/twisted/web/resource.py
-twisted.web.rewrite|/usr/lib/python2.6/dist-packages/twisted/web/rewrite.py
-twisted.web.script|/usr/lib/python2.6/dist-packages/twisted/web/script.py
-twisted.web.server|/usr/lib/python2.6/dist-packages/twisted/web/server.py
-twisted.web.soap|/usr/lib/python2.6/dist-packages/twisted/web/soap.py
-twisted.web.static|/usr/lib/python2.6/dist-packages/twisted/web/static.py
-twisted.web.sux|/usr/lib/python2.6/dist-packages/twisted/web/sux.py
-twisted.web.tap|/usr/lib/python2.6/dist-packages/twisted/web/tap.py
-twisted.web.test.__init__|/usr/lib/python2.6/dist-packages/twisted/web/test/__init__.py
-twisted.web.test._util|/usr/lib/python2.6/dist-packages/twisted/web/test/_util.py
-twisted.web.test.test_cgi|/usr/lib/python2.6/dist-packages/twisted/web/test/test_cgi.py
-twisted.web.test.test_distrib|/usr/lib/python2.6/dist-packages/twisted/web/test/test_distrib.py
-twisted.web.test.test_domhelpers|/usr/lib/python2.6/dist-packages/twisted/web/test/test_domhelpers.py
-twisted.web.test.test_error|/usr/lib/python2.6/dist-packages/twisted/web/test/test_error.py
-twisted.web.test.test_http|/usr/lib/python2.6/dist-packages/twisted/web/test/test_http.py
-twisted.web.test.test_http_headers|/usr/lib/python2.6/dist-packages/twisted/web/test/test_http_headers.py
-twisted.web.test.test_httpauth|/usr/lib/python2.6/dist-packages/twisted/web/test/test_httpauth.py
-twisted.web.test.test_newclient|/usr/lib/python2.6/dist-packages/twisted/web/test/test_newclient.py
-twisted.web.test.test_proxy|/usr/lib/python2.6/dist-packages/twisted/web/test/test_proxy.py
-twisted.web.test.test_resource|/usr/lib/python2.6/dist-packages/twisted/web/test/test_resource.py
-twisted.web.test.test_script|/usr/lib/python2.6/dist-packages/twisted/web/test/test_script.py
-twisted.web.test.test_soap|/usr/lib/python2.6/dist-packages/twisted/web/test/test_soap.py
-twisted.web.test.test_static|/usr/lib/python2.6/dist-packages/twisted/web/test/test_static.py
-twisted.web.test.test_tap|/usr/lib/python2.6/dist-packages/twisted/web/test/test_tap.py
-twisted.web.test.test_util|/usr/lib/python2.6/dist-packages/twisted/web/test/test_util.py
-twisted.web.test.test_vhost|/usr/lib/python2.6/dist-packages/twisted/web/test/test_vhost.py
-twisted.web.test.test_web|/usr/lib/python2.6/dist-packages/twisted/web/test/test_web.py
-twisted.web.test.test_webclient|/usr/lib/python2.6/dist-packages/twisted/web/test/test_webclient.py
-twisted.web.test.test_wsgi|/usr/lib/python2.6/dist-packages/twisted/web/test/test_wsgi.py
-twisted.web.test.test_xml|/usr/lib/python2.6/dist-packages/twisted/web/test/test_xml.py
-twisted.web.test.test_xmlrpc|/usr/lib/python2.6/dist-packages/twisted/web/test/test_xmlrpc.py
-twisted.web.trp|/usr/lib/python2.6/dist-packages/twisted/web/trp.py
-twisted.web.twcgi|/usr/lib/python2.6/dist-packages/twisted/web/twcgi.py
-twisted.web.util|/usr/lib/python2.6/dist-packages/twisted/web/util.py
-twisted.web.vhost|/usr/lib/python2.6/dist-packages/twisted/web/vhost.py
-twisted.web.wsgi|/usr/lib/python2.6/dist-packages/twisted/web/wsgi.py
-twisted.web.xmlrpc|/usr/lib/python2.6/dist-packages/twisted/web/xmlrpc.py
-twisted.words.__init__|/usr/lib/python2.6/dist-packages/twisted/words/__init__.py
-twisted.words._version|/usr/lib/python2.6/dist-packages/twisted/words/_version.py
-twisted.words.ewords|/usr/lib/python2.6/dist-packages/twisted/words/ewords.py
-twisted.words.im.__init__|/usr/lib/python2.6/dist-packages/twisted/words/im/__init__.py
-twisted.words.im.baseaccount|/usr/lib/python2.6/dist-packages/twisted/words/im/baseaccount.py
-twisted.words.im.basechat|/usr/lib/python2.6/dist-packages/twisted/words/im/basechat.py
-twisted.words.im.basesupport|/usr/lib/python2.6/dist-packages/twisted/words/im/basesupport.py
-twisted.words.im.interfaces|/usr/lib/python2.6/dist-packages/twisted/words/im/interfaces.py
-twisted.words.im.ircsupport|/usr/lib/python2.6/dist-packages/twisted/words/im/ircsupport.py
-twisted.words.im.locals|/usr/lib/python2.6/dist-packages/twisted/words/im/locals.py
-twisted.words.im.pbsupport|/usr/lib/python2.6/dist-packages/twisted/words/im/pbsupport.py
-twisted.words.im.proxyui|/usr/lib/python2.6/dist-packages/twisted/words/im/proxyui.py
-twisted.words.im.tap|/usr/lib/python2.6/dist-packages/twisted/words/im/tap.py
-twisted.words.im.tocsupport|/usr/lib/python2.6/dist-packages/twisted/words/im/tocsupport.py
-twisted.words.iwords|/usr/lib/python2.6/dist-packages/twisted/words/iwords.py
-twisted.words.protocols.__init__|/usr/lib/python2.6/dist-packages/twisted/words/protocols/__init__.py
-twisted.words.protocols.irc|/usr/lib/python2.6/dist-packages/twisted/words/protocols/irc.py
-twisted.words.protocols.jabber.__init__|/usr/lib/python2.6/dist-packages/twisted/words/protocols/jabber/__init__.py
-twisted.words.protocols.jabber.client|/usr/lib/python2.6/dist-packages/twisted/words/protocols/jabber/client.py
-twisted.words.protocols.jabber.component|/usr/lib/python2.6/dist-packages/twisted/words/protocols/jabber/component.py
-twisted.words.protocols.jabber.error|/usr/lib/python2.6/dist-packages/twisted/words/protocols/jabber/error.py
-twisted.words.protocols.jabber.ijabber|/usr/lib/python2.6/dist-packages/twisted/words/protocols/jabber/ijabber.py
-twisted.words.protocols.jabber.jid|/usr/lib/python2.6/dist-packages/twisted/words/protocols/jabber/jid.py
-twisted.words.protocols.jabber.jstrports|/usr/lib/python2.6/dist-packages/twisted/words/protocols/jabber/jstrports.py
-twisted.words.protocols.jabber.sasl|/usr/lib/python2.6/dist-packages/twisted/words/protocols/jabber/sasl.py
-twisted.words.protocols.jabber.sasl_mechanisms|/usr/lib/python2.6/dist-packages/twisted/words/protocols/jabber/sasl_mechanisms.py
-twisted.words.protocols.jabber.xmlstream|/usr/lib/python2.6/dist-packages/twisted/words/protocols/jabber/xmlstream.py
-twisted.words.protocols.jabber.xmpp_stringprep|/usr/lib/python2.6/dist-packages/twisted/words/protocols/jabber/xmpp_stringprep.py
-twisted.words.protocols.msn|/usr/lib/python2.6/dist-packages/twisted/words/protocols/msn.py
-twisted.words.protocols.oscar|/usr/lib/python2.6/dist-packages/twisted/words/protocols/oscar.py
-twisted.words.protocols.toc|/usr/lib/python2.6/dist-packages/twisted/words/protocols/toc.py
-twisted.words.service|/usr/lib/python2.6/dist-packages/twisted/words/service.py
-twisted.words.tap|/usr/lib/python2.6/dist-packages/twisted/words/tap.py
-twisted.words.test.__init__|/usr/lib/python2.6/dist-packages/twisted/words/test/__init__.py
-twisted.words.test.test_basechat|/usr/lib/python2.6/dist-packages/twisted/words/test/test_basechat.py
-twisted.words.test.test_basesupport|/usr/lib/python2.6/dist-packages/twisted/words/test/test_basesupport.py
-twisted.words.test.test_domish|/usr/lib/python2.6/dist-packages/twisted/words/test/test_domish.py
-twisted.words.test.test_irc|/usr/lib/python2.6/dist-packages/twisted/words/test/test_irc.py
-twisted.words.test.test_irc_service|/usr/lib/python2.6/dist-packages/twisted/words/test/test_irc_service.py
-twisted.words.test.test_jabberclient|/usr/lib/python2.6/dist-packages/twisted/words/test/test_jabberclient.py
-twisted.words.test.test_jabbercomponent|/usr/lib/python2.6/dist-packages/twisted/words/test/test_jabbercomponent.py
-twisted.words.test.test_jabbererror|/usr/lib/python2.6/dist-packages/twisted/words/test/test_jabbererror.py
-twisted.words.test.test_jabberjid|/usr/lib/python2.6/dist-packages/twisted/words/test/test_jabberjid.py
-twisted.words.test.test_jabbersasl|/usr/lib/python2.6/dist-packages/twisted/words/test/test_jabbersasl.py
-twisted.words.test.test_jabbersaslmechanisms|/usr/lib/python2.6/dist-packages/twisted/words/test/test_jabbersaslmechanisms.py
-twisted.words.test.test_jabberxmlstream|/usr/lib/python2.6/dist-packages/twisted/words/test/test_jabberxmlstream.py
-twisted.words.test.test_jabberxmppstringprep|/usr/lib/python2.6/dist-packages/twisted/words/test/test_jabberxmppstringprep.py
-twisted.words.test.test_msn|/usr/lib/python2.6/dist-packages/twisted/words/test/test_msn.py
-twisted.words.test.test_oscar|/usr/lib/python2.6/dist-packages/twisted/words/test/test_oscar.py
-twisted.words.test.test_service|/usr/lib/python2.6/dist-packages/twisted/words/test/test_service.py
-twisted.words.test.test_tap|/usr/lib/python2.6/dist-packages/twisted/words/test/test_tap.py
-twisted.words.test.test_toc|/usr/lib/python2.6/dist-packages/twisted/words/test/test_toc.py
-twisted.words.test.test_xishutil|/usr/lib/python2.6/dist-packages/twisted/words/test/test_xishutil.py
-twisted.words.test.test_xmlstream|/usr/lib/python2.6/dist-packages/twisted/words/test/test_xmlstream.py
-twisted.words.test.test_xmpproutertap|/usr/lib/python2.6/dist-packages/twisted/words/test/test_xmpproutertap.py
-twisted.words.test.test_xpath|/usr/lib/python2.6/dist-packages/twisted/words/test/test_xpath.py
-twisted.words.toctap|/usr/lib/python2.6/dist-packages/twisted/words/toctap.py
-twisted.words.xish.__init__|/usr/lib/python2.6/dist-packages/twisted/words/xish/__init__.py
-twisted.words.xish.domish|/usr/lib/python2.6/dist-packages/twisted/words/xish/domish.py
-twisted.words.xish.utility|/usr/lib/python2.6/dist-packages/twisted/words/xish/utility.py
-twisted.words.xish.xmlstream|/usr/lib/python2.6/dist-packages/twisted/words/xish/xmlstream.py
-twisted.words.xish.xpath|/usr/lib/python2.6/dist-packages/twisted/words/xish/xpath.py
-twisted.words.xish.xpathparser|/usr/lib/python2.6/dist-packages/twisted/words/xish/xpathparser.py
-twisted.words.xmpproutertap|/usr/lib/python2.6/dist-packages/twisted/words/xmpproutertap.py
-types|/usr/lib/python2.6/types.py
-ubuntu_sso.__init__|/usr/lib/pymodules/python2.6/ubuntu_sso/__init__.py
-ubuntu_sso.auth|/usr/lib/pymodules/python2.6/ubuntu_sso/auth.py
-ubuntu_sso.gui|/usr/lib/pymodules/python2.6/ubuntu_sso/gui.py
-ubuntu_sso.keyring|/usr/lib/pymodules/python2.6/ubuntu_sso/keyring.py
-ubuntu_sso.logger|/usr/lib/pymodules/python2.6/ubuntu_sso/logger.py
-ubuntu_sso.main|/usr/lib/pymodules/python2.6/ubuntu_sso/main.py
-ubuntu_sso.networkstate|/usr/lib/pymodules/python2.6/ubuntu_sso/networkstate.py
-ubuntuone.__init__|/usr/lib/pymodules/python2.6/ubuntuone/__init__.py
-ubuntuone.api.__init__|/usr/lib/pymodules/python2.6/ubuntuone/api/__init__.py
-ubuntuone.api.restclient|/usr/lib/pymodules/python2.6/ubuntuone/api/restclient.py
-ubuntuone.clientdefs|/usr/lib/pymodules/python2.6/ubuntuone/clientdefs.py
-ubuntuone.logger|/usr/lib/pymodules/python2.6/ubuntuone/logger.py
-ubuntuone.storageprotocol.__init__|/usr/lib/pymodules/python2.6/ubuntuone/storageprotocol/__init__.py
-ubuntuone.storageprotocol.client|/usr/lib/pymodules/python2.6/ubuntuone/storageprotocol/client.py
-ubuntuone.storageprotocol.content_hash|/usr/lib/pymodules/python2.6/ubuntuone/storageprotocol/content_hash.py
-ubuntuone.storageprotocol.context|/usr/lib/pymodules/python2.6/ubuntuone/storageprotocol/context.py
-ubuntuone.storageprotocol.delta|/usr/lib/pymodules/python2.6/ubuntuone/storageprotocol/delta.py
-ubuntuone.storageprotocol.dircontent|/usr/lib/pymodules/python2.6/ubuntuone/storageprotocol/dircontent.py
-ubuntuone.storageprotocol.dircontent_pb2|/usr/lib/pymodules/python2.6/ubuntuone/storageprotocol/dircontent_pb2.py
-ubuntuone.storageprotocol.errors|/usr/lib/pymodules/python2.6/ubuntuone/storageprotocol/errors.py
-ubuntuone.storageprotocol.protocol_pb2|/usr/lib/pymodules/python2.6/ubuntuone/storageprotocol/protocol_pb2.py
-ubuntuone.storageprotocol.proxy_tunnel|/usr/lib/pymodules/python2.6/ubuntuone/storageprotocol/proxy_tunnel.py
-ubuntuone.storageprotocol.request|/usr/lib/pymodules/python2.6/ubuntuone/storageprotocol/request.py
-ubuntuone.storageprotocol.sharersp|/usr/lib/pymodules/python2.6/ubuntuone/storageprotocol/sharersp.py
-ubuntuone.storageprotocol.validators|/usr/lib/pymodules/python2.6/ubuntuone/storageprotocol/validators.py
-ubuntuone.storageprotocol.volumes|/usr/lib/pymodules/python2.6/ubuntuone/storageprotocol/volumes.py
-ubuntuone.syncdaemon.__init__|/usr/lib/pymodules/python2.6/ubuntuone/syncdaemon/__init__.py
-ubuntuone.syncdaemon.action_queue|/usr/lib/pymodules/python2.6/ubuntuone/syncdaemon/action_queue.py
-ubuntuone.syncdaemon.config|/usr/lib/pymodules/python2.6/ubuntuone/syncdaemon/config.py
-ubuntuone.syncdaemon.dbus_interface|/usr/lib/pymodules/python2.6/ubuntuone/syncdaemon/dbus_interface.py
-ubuntuone.syncdaemon.event_queue|/usr/lib/pymodules/python2.6/ubuntuone/syncdaemon/event_queue.py
-ubuntuone.syncdaemon.events_nanny|/usr/lib/pymodules/python2.6/ubuntuone/syncdaemon/events_nanny.py
-ubuntuone.syncdaemon.file_shelf|/usr/lib/pymodules/python2.6/ubuntuone/syncdaemon/file_shelf.py
-ubuntuone.syncdaemon.filesystem_manager|/usr/lib/pymodules/python2.6/ubuntuone/syncdaemon/filesystem_manager.py
-ubuntuone.syncdaemon.fsm.__init__|/usr/lib/pymodules/python2.6/ubuntuone/syncdaemon/fsm/__init__.py
-ubuntuone.syncdaemon.fsm.fsm|/usr/lib/pymodules/python2.6/ubuntuone/syncdaemon/fsm/fsm.py
-ubuntuone.syncdaemon.fsm.fsm_draw|/usr/lib/pymodules/python2.6/ubuntuone/syncdaemon/fsm/fsm_draw.py
-ubuntuone.syncdaemon.fsm.fsm_parser|/usr/lib/pymodules/python2.6/ubuntuone/syncdaemon/fsm/fsm_parser.py
-ubuntuone.syncdaemon.hash_queue|/usr/lib/pymodules/python2.6/ubuntuone/syncdaemon/hash_queue.py
-ubuntuone.syncdaemon.interfaces|/usr/lib/pymodules/python2.6/ubuntuone/syncdaemon/interfaces.py
-ubuntuone.syncdaemon.local_rescan|/usr/lib/pymodules/python2.6/ubuntuone/syncdaemon/local_rescan.py
-ubuntuone.syncdaemon.logger|/usr/lib/pymodules/python2.6/ubuntuone/syncdaemon/logger.py
-ubuntuone.syncdaemon.main|/usr/lib/pymodules/python2.6/ubuntuone/syncdaemon/main.py
-ubuntuone.syncdaemon.marker|/usr/lib/pymodules/python2.6/ubuntuone/syncdaemon/marker.py
-ubuntuone.syncdaemon.sdreactor|/usr/lib/pymodules/python2.6/ubuntuone/syncdaemon/sdreactor.py
-ubuntuone.syncdaemon.states|/usr/lib/pymodules/python2.6/ubuntuone/syncdaemon/states.py
-ubuntuone.syncdaemon.sync|/usr/lib/pymodules/python2.6/ubuntuone/syncdaemon/sync.py
-ubuntuone.syncdaemon.tools|/usr/lib/pymodules/python2.6/ubuntuone/syncdaemon/tools.py
-ubuntuone.syncdaemon.u1fsfsm|/usr/lib/pymodules/python2.6/ubuntuone/syncdaemon/u1fsfsm.py
-ubuntuone.syncdaemon.volume_manager|/usr/lib/pymodules/python2.6/ubuntuone/syncdaemon/volume_manager.py
-ufw.__init__|/usr/lib/python2.6/dist-packages/ufw/__init__.py
-ufw.applications|/usr/lib/python2.6/dist-packages/ufw/applications.py
-ufw.backend|/usr/lib/python2.6/dist-packages/ufw/backend.py
-ufw.backend_iptables|/usr/lib/python2.6/dist-packages/ufw/backend_iptables.py
-ufw.common|/usr/lib/python2.6/dist-packages/ufw/common.py
-ufw.frontend|/usr/lib/python2.6/dist-packages/ufw/frontend.py
-ufw.parser|/usr/lib/python2.6/dist-packages/ufw/parser.py
-ufw.util|/usr/lib/python2.6/dist-packages/ufw/util.py
-unicodedata
-unittest|/usr/lib/python2.6/unittest.py
-urllib|/usr/lib/python2.6/urllib.py
-urllib2|/usr/lib/python2.6/urllib2.py
-urlparse|/usr/lib/python2.6/urlparse.py
-usbcreator.__init__|/usr/lib/pymodules/python2.6/usbcreator/__init__.py
-usbcreator.backends.__init__|/usr/lib/pymodules/python2.6/usbcreator/backends/__init__.py
-usbcreator.backends.base.__init__|/usr/lib/pymodules/python2.6/usbcreator/backends/base/__init__.py
-usbcreator.backends.base.backend|/usr/lib/pymodules/python2.6/usbcreator/backends/base/backend.py
-usbcreator.backends.udisks.__init__|/usr/lib/pymodules/python2.6/usbcreator/backends/udisks/__init__.py
-usbcreator.backends.udisks.backend|/usr/lib/pymodules/python2.6/usbcreator/backends/udisks/backend.py
-usbcreator.frontends.__init__|/usr/lib/pymodules/python2.6/usbcreator/frontends/__init__.py
-usbcreator.frontends.base.__init__|/usr/lib/pymodules/python2.6/usbcreator/frontends/base/__init__.py
-usbcreator.frontends.base.frontend|/usr/lib/pymodules/python2.6/usbcreator/frontends/base/frontend.py
-usbcreator.frontends.gtk.__init__|/usr/lib/pymodules/python2.6/usbcreator/frontends/gtk/__init__.py
-usbcreator.frontends.gtk.frontend|/usr/lib/pymodules/python2.6/usbcreator/frontends/gtk/frontend.py
-usbcreator.install|/usr/lib/pymodules/python2.6/usbcreator/install.py
-usbcreator.misc|/usr/lib/pymodules/python2.6/usbcreator/misc.py
-usbcreator.remtimest|/usr/lib/pymodules/python2.6/usbcreator/remtimest.py
-user|/usr/lib/python2.6/user.py
-uu|/usr/lib/python2.6/uu.py
-uuid|/usr/lib/python2.6/uuid.py
-virtkey|/usr/lib/python2.6/dist-packages/virtkey.so
-vobject.__init__|/usr/lib/pymodules/python2.6/vobject/__init__.py
-vobject.base|/usr/lib/pymodules/python2.6/vobject/base.py
-vobject.behavior|/usr/lib/pymodules/python2.6/vobject/behavior.py
-vobject.change_tz|/usr/lib/pymodules/python2.6/vobject/change_tz.py
-vobject.hcalendar|/usr/lib/pymodules/python2.6/vobject/hcalendar.py
-vobject.icalendar|/usr/lib/pymodules/python2.6/vobject/icalendar.py
-vobject.ics_diff|/usr/lib/pymodules/python2.6/vobject/ics_diff.py
-vobject.vcard|/usr/lib/pymodules/python2.6/vobject/vcard.py
-vobject.win32tz|/usr/lib/pymodules/python2.6/vobject/win32tz.py
-vtemodule|/usr/lib/pymodules/python2.6/gtk-2.0/vtemodule.so
-wadllib.__init__|/usr/lib/pymodules/python2.6/wadllib/__init__.py
-wadllib.application|/usr/lib/pymodules/python2.6/wadllib/application.py
-wadllib.iso_strptime|/usr/lib/pymodules/python2.6/wadllib/iso_strptime.py
-wadllib.tests.__init__|/usr/lib/pymodules/python2.6/wadllib/tests/__init__.py
-wadllib.tests.test_docs|/usr/lib/pymodules/python2.6/wadllib/tests/test_docs.py
-warnings|/usr/lib/python2.6/warnings.py
-wave|/usr/lib/python2.6/wave.py
-weakref|/usr/lib/python2.6/weakref.py
-webbrowser|/usr/lib/python2.6/webbrowser.py
-webkit.__init__|/usr/lib/pymodules/python2.6/webkit/__init__.py
-webkit.webkit|/usr/lib/pymodules/python2.6/webkit/webkit.so
-whichdb|/usr/lib/python2.6/whichdb.py
-wnck|/usr/lib/pymodules/python2.6/gtk-2.0/wnck.so
-wsgiref.__init__|/usr/lib/python2.6/wsgiref/__init__.py
-wsgiref.handlers|/usr/lib/python2.6/wsgiref/handlers.py
-wsgiref.headers|/usr/lib/python2.6/wsgiref/headers.py
-wsgiref.simple_server|/usr/lib/python2.6/wsgiref/simple_server.py
-wsgiref.util|/usr/lib/python2.6/wsgiref/util.py
-wsgiref.validate|/usr/lib/python2.6/wsgiref/validate.py
-wx
-wxPython
-xapian|/usr/lib/python2.6/dist-packages/xapian.py
-xdg.BaseDirectory|/usr/lib/pymodules/python2.6/xdg/BaseDirectory.py
-xdg.Config|/usr/lib/pymodules/python2.6/xdg/Config.py
-xdg.DesktopEntry|/usr/lib/pymodules/python2.6/xdg/DesktopEntry.py
-xdg.Exceptions|/usr/lib/pymodules/python2.6/xdg/Exceptions.py
-xdg.IconTheme|/usr/lib/pymodules/python2.6/xdg/IconTheme.py
-xdg.IniFile|/usr/lib/pymodules/python2.6/xdg/IniFile.py
-xdg.Locale|/usr/lib/pymodules/python2.6/xdg/Locale.py
-xdg.Menu|/usr/lib/pymodules/python2.6/xdg/Menu.py
-xdg.MenuEditor|/usr/lib/pymodules/python2.6/xdg/MenuEditor.py
-xdg.Mime|/usr/lib/pymodules/python2.6/xdg/Mime.py
-xdg.RecentFiles|/usr/lib/pymodules/python2.6/xdg/RecentFiles.py
-xdg.__init__|/usr/lib/pymodules/python2.6/xdg/__init__.py
-xdrlib|/usr/lib/python2.6/xdrlib.py
-xml.__init__|/usr/lib/python2.6/xml/__init__.py
-xml.dom.NodeFilter|/usr/lib/python2.6/xml/dom/NodeFilter.py
-xml.dom.__init__|/usr/lib/python2.6/xml/dom/__init__.py
-xml.dom.domreg|/usr/lib/python2.6/xml/dom/domreg.py
-xml.dom.expatbuilder|/usr/lib/python2.6/xml/dom/expatbuilder.py
-xml.dom.minicompat|/usr/lib/python2.6/xml/dom/minicompat.py
-xml.dom.minidom|/usr/lib/python2.6/xml/dom/minidom.py
-xml.dom.pulldom|/usr/lib/python2.6/xml/dom/pulldom.py
-xml.dom.xmlbuilder|/usr/lib/python2.6/xml/dom/xmlbuilder.py
-xml.etree.ElementInclude|/usr/lib/python2.6/xml/etree/ElementInclude.py
-xml.etree.ElementPath|/usr/lib/python2.6/xml/etree/ElementPath.py
-xml.etree.ElementTree|/usr/lib/python2.6/xml/etree/ElementTree.py
-xml.etree.__init__|/usr/lib/python2.6/xml/etree/__init__.py
-xml.etree.cElementTree|/usr/lib/python2.6/xml/etree/cElementTree.py
-xml.parsers.__init__|/usr/lib/python2.6/xml/parsers/__init__.py
-xml.parsers.expat|/usr/lib/python2.6/xml/parsers/expat.py
-xml.sax.__init__|/usr/lib/python2.6/xml/sax/__init__.py
-xml.sax._exceptions|/usr/lib/python2.6/xml/sax/_exceptions.py
-xml.sax.expatreader|/usr/lib/python2.6/xml/sax/expatreader.py
-xml.sax.handler|/usr/lib/python2.6/xml/sax/handler.py
-xml.sax.saxutils|/usr/lib/python2.6/xml/sax/saxutils.py
-xml.sax.xmlreader|/usr/lib/python2.6/xml/sax/xmlreader.py
-xml2po.__init__|/usr/lib/pymodules/python2.6/xml2po/__init__.py
-xml2po.modes.__init__|/usr/lib/pymodules/python2.6/xml2po/modes/__init__.py
-xml2po.modes.basic|/usr/lib/pymodules/python2.6/xml2po/modes/basic.py
-xml2po.modes.docbook|/usr/lib/pymodules/python2.6/xml2po/modes/docbook.py
-xml2po.modes.gs|/usr/lib/pymodules/python2.6/xml2po/modes/gs.py
-xml2po.modes.mallard|/usr/lib/pymodules/python2.6/xml2po/modes/mallard.py
-xml2po.modes.ubuntu|/usr/lib/pymodules/python2.6/xml2po/modes/ubuntu.py
-xml2po.modes.xhtml|/usr/lib/pymodules/python2.6/xml2po/modes/xhtml.py
-xmllib|/usr/lib/python2.6/xmllib.py
-xmlrpclib|/usr/lib/python2.6/xmlrpclib.py
-xxsubtype
-zipfile|/usr/lib/python2.6/zipfile.py
-zipimport
-zlib
-zope.__init__|/usr/lib/python2.6/dist-packages/zope/__init__.py
-zope.interface.__init__|/usr/lib/python2.6/dist-packages/zope/interface/__init__.py
-zope.interface._flatten|/usr/lib/python2.6/dist-packages/zope/interface/_flatten.py
-zope.interface._zope_interface_coptimizations|/usr/lib/python2.6/dist-packages/zope/interface/_zope_interface_coptimizations.so
-zope.interface.adapter|/usr/lib/python2.6/dist-packages/zope/interface/adapter.py
-zope.interface.advice|/usr/lib/python2.6/dist-packages/zope/interface/advice.py
-zope.interface.common.__init__|/usr/lib/python2.6/dist-packages/zope/interface/common/__init__.py
-zope.interface.common.idatetime|/usr/lib/python2.6/dist-packages/zope/interface/common/idatetime.py
-zope.interface.common.interfaces|/usr/lib/python2.6/dist-packages/zope/interface/common/interfaces.py
-zope.interface.common.mapping|/usr/lib/python2.6/dist-packages/zope/interface/common/mapping.py
-zope.interface.common.sequence|/usr/lib/python2.6/dist-packages/zope/interface/common/sequence.py
-zope.interface.common.tests.__init__|/usr/lib/python2.6/dist-packages/zope/interface/common/tests/__init__.py
-zope.interface.common.tests.basemapping|/usr/lib/python2.6/dist-packages/zope/interface/common/tests/basemapping.py
-zope.interface.common.tests.test_idatetime|/usr/lib/python2.6/dist-packages/zope/interface/common/tests/test_idatetime.py
-zope.interface.common.tests.test_import_interfaces|/usr/lib/python2.6/dist-packages/zope/interface/common/tests/test_import_interfaces.py
-zope.interface.declarations|/usr/lib/python2.6/dist-packages/zope/interface/declarations.py
-zope.interface.document|/usr/lib/python2.6/dist-packages/zope/interface/document.py
-zope.interface.exceptions|/usr/lib/python2.6/dist-packages/zope/interface/exceptions.py
-zope.interface.interface|/usr/lib/python2.6/dist-packages/zope/interface/interface.py
-zope.interface.interfaces|/usr/lib/python2.6/dist-packages/zope/interface/interfaces.py
-zope.interface.ro|/usr/lib/python2.6/dist-packages/zope/interface/ro.py
-zope.interface.tests.__init__|/usr/lib/python2.6/dist-packages/zope/interface/tests/__init__.py
-zope.interface.tests.dummy|/usr/lib/python2.6/dist-packages/zope/interface/tests/dummy.py
-zope.interface.tests.ifoo|/usr/lib/python2.6/dist-packages/zope/interface/tests/ifoo.py
-zope.interface.tests.m1|/usr/lib/python2.6/dist-packages/zope/interface/tests/m1.py
-zope.interface.tests.m2|/usr/lib/python2.6/dist-packages/zope/interface/tests/m2.py
-zope.interface.tests.odd|/usr/lib/python2.6/dist-packages/zope/interface/tests/odd.py
-zope.interface.tests.test_adapter|/usr/lib/python2.6/dist-packages/zope/interface/tests/test_adapter.py
-zope.interface.tests.test_advice|/usr/lib/python2.6/dist-packages/zope/interface/tests/test_advice.py
-zope.interface.tests.test_declarations|/usr/lib/python2.6/dist-packages/zope/interface/tests/test_declarations.py
-zope.interface.tests.test_document|/usr/lib/python2.6/dist-packages/zope/interface/tests/test_document.py
-zope.interface.tests.test_element|/usr/lib/python2.6/dist-packages/zope/interface/tests/test_element.py
-zope.interface.tests.test_interface|/usr/lib/python2.6/dist-packages/zope/interface/tests/test_interface.py
-zope.interface.tests.test_odd_declarations|/usr/lib/python2.6/dist-packages/zope/interface/tests/test_odd_declarations.py
-zope.interface.tests.test_sorting|/usr/lib/python2.6/dist-packages/zope/interface/tests/test_sorting.py
-zope.interface.tests.test_verify|/usr/lib/python2.6/dist-packages/zope/interface/tests/test_verify.py
-zope.interface.tests.unitfixtures|/usr/lib/python2.6/dist-packages/zope/interface/tests/unitfixtures.py
-zope.interface.verify|/usr/lib/python2.6/dist-packages/zope/interface/verify.py
diff --git a/Src/.metadata/.plugins/org.python.pydev/v1_4fkkw82y758w8n00pmr7xyd93/pythonpath b/Src/.metadata/.plugins/org.python.pydev/v1_4fkkw82y758w8n00pmr7xyd93/pythonpath
deleted file mode 100644
index 8d73c07..0000000
--- a/Src/.metadata/.plugins/org.python.pydev/v1_4fkkw82y758w8n00pmr7xyd93/pythonpath
+++ /dev/null
@@ -1,12 +0,0 @@
-/usr/lib/pymodules/python2.6
-/usr/lib/pymodules/python2.6/gtk-2.0
-/usr/lib/python2.6
-/usr/lib/python2.6/dist-packages
-/usr/lib/python2.6/dist-packages/PIL
-/usr/lib/python2.6/dist-packages/gst-0.10
-/usr/lib/python2.6/dist-packages/gtk-2.0
-/usr/lib/python2.6/lib-dynload
-/usr/lib/python2.6/lib-old
-/usr/lib/python2.6/lib-tk
-/usr/lib/python2.6/plat-linux2
-/usr/local/lib/python2.6/dist-packages \ No newline at end of file
diff --git a/Src/.metadata/version.ini b/Src/.metadata/version.ini
deleted file mode 100644
index c51ff74..0000000
--- a/Src/.metadata/version.ini
+++ /dev/null
@@ -1 +0,0 @@
-org.eclipse.core.runtime=1 \ No newline at end of file
diff --git a/Src/PyCatcher/.project b/Src/PyCatcher/.project
deleted file mode 100644
index e2975d0..0000000
--- a/Src/PyCatcher/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>PyCatcher</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.python.pydev.PyDevBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.python.pydev.pythonNature</nature>
- </natures>
-</projectDescription>
diff --git a/Src/PyCatcher/.pydevproject b/Src/PyCatcher/.pydevproject
deleted file mode 100644
index 5662323..0000000
--- a/Src/PyCatcher/.pydevproject
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?eclipse-pydev version="1.0"?>
-
-<pydev_project>
-<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">Default</pydev_property>
-<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 2.7</pydev_property>
-<pydev_pathproperty name="org.python.pydev.PROJECT_SOURCE_PATH">
-<path>/PyCatcher/src</path>
-</pydev_pathproperty>
-</pydev_project>
diff --git a/Src/PyCatcher/GUI/mainWindow.glade b/Src/PyCatcher/GUI/mainWindow.glade
deleted file mode 100644
index 1b7da70..0000000
--- a/Src/PyCatcher/GUI/mainWindow.glade
+++ /dev/null
@@ -1,293 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<glade-interface>
- <!-- interface-requires gtk+ 2.24 -->
- <!-- interface-naming-policy project-wide -->
- <widget class="GtkWindow" id="main_window">
- <property name="can_focus">False</property>
- <property name="title" translatable="yes">IMSI Catcher Detector</property>
- <property name="default_width">1024</property>
- <property name="default_height">700</property>
- <signal name="destroy" handler="on_main_window_destroy" swapped="no"/>
- <child>
- <widget class="GtkVBox" id="vbox1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <widget class="GtkToolbar" id="main_toolbar">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="toolbar_style">both</property>
- <child>
- <widget class="GtkToggleToolButton" id="firmware_toggle">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_action_appearance">False</property>
- <property name="label" translatable="yes">Toggle Firmware</property>
- <property name="use_underline">True</property>
- <property name="icon_name">modem</property>
- <signal name="toggled" handler="on_firmware_toggle_toggled" swapped="no"/>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="homogeneous">True</property>
- </packing>
- </child>
- <child>
- <widget class="GtkToggleToolButton" id="scan_toggle">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_action_appearance">False</property>
- <property name="label" translatable="yes">Toggle Scanning</property>
- <property name="use_underline">True</property>
- <property name="icon_name">network-wireless</property>
- <signal name="toggled" handler="on_scan_toggle_toggled" swapped="no"/>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="homogeneous">True</property>
- </packing>
- </child>
- <child>
- <widget class="GtkToolButton" id="open_file">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_action_appearance">False</property>
- <property name="label" translatable="yes">Open File</property>
- <property name="use_underline">True</property>
- <property name="icon_name">document-open</property>
- <signal name="clicked" handler="on_open_file_clicked" swapped="no"/>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="homogeneous">True</property>
- </packing>
- </child>
- <child>
- <widget class="GtkToolButton" id="save_project">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_action_appearance">False</property>
- <property name="label" translatable="yes">Save Project</property>
- <property name="use_underline">True</property>
- <property name="icon_name">document-save</property>
- <signal name="clicked" handler="on_save_project_clicked" swapped="no"/>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="homogeneous">True</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <widget class="GtkHBox" id="hbox1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <widget class="GtkVBox" id="vbox4">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <placeholder/>
- </child>
- <child>
- <widget class="GtkToolbar" id="graph_control">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <widget class="GtkToolButton" id="graph_zoom_in">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_action_appearance">False</property>
- <property name="label" translatable="yes">Zoom In</property>
- <property name="use_underline">True</property>
- <property name="icon_name">zoom-in</property>
- <signal name="clicked" handler="on_graph_zoom_in_clicked" swapped="no"/>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="homogeneous">True</property>
- </packing>
- </child>
- <child>
- <widget class="GtkToolButton" id="graph_zoom_out">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_action_appearance">False</property>
- <property name="label" translatable="yes">Zoom Out</property>
- <property name="use_underline">True</property>
- <property name="icon_name">zoom-out</property>
- <signal name="clicked" handler="on_graph_zoom_out_clicked" swapped="no"/>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="homogeneous">True</property>
- </packing>
- </child>
- <child>
- <widget class="GtkToolButton" id="graph_fit">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_action_appearance">False</property>
- <property name="label" translatable="yes">Fit To Screen</property>
- <property name="use_underline">True</property>
- <property name="icon_name">zoom-best-fit</property>
- <signal name="clicked" handler="on_graph_fit_clicked" swapped="no"/>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="homogeneous">True</property>
- </packing>
- </child>
- <child>
- <widget class="GtkToolButton" id="graph_zoom_default">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_action_appearance">False</property>
- <property name="label" translatable="yes">100%</property>
- <property name="use_underline">True</property>
- <property name="icon_name">zoom-original</property>
- <signal name="clicked" handler="on_graph_zoom_default_clicked" swapped="no"/>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="homogeneous">True</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <widget class="GtkVSeparator" id="vseparator1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <widget class="GtkVBox" id="vbox2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <widget class="GtkScrolledWindow" id="scrolledwindow2">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="hscrollbar_policy">never</property>
- <property name="vscrollbar_policy">automatic</property>
- <child>
- <widget class="GtkTreeView" id="bs_table">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <widget class="GtkHSeparator" id="hseparator1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <widget class="GtkScrolledWindow" id="scrolledwindow1">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="hscrollbar_policy">automatic</property>
- <child>
- <widget class="GtkTextView" id="log_output">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="editable">False</property>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <widget class="GtkStatusbar" id="statusbar">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">2</property>
- <child>
- <widget class="GtkLabel" id="status_firmware">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Firmware: Not Loaded</property>
- </widget>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="status_scanner">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Scanner: Not scanning</property>
- </widget>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
-</glade-interface>
diff --git a/Src/PyCatcher/src/driverConnector.py b/Src/PyCatcher/src/driverConnector.py
deleted file mode 100644
index 6ae998b..0000000
--- a/Src/PyCatcher/src/driverConnector.py
+++ /dev/null
@@ -1,70 +0,0 @@
-from pyCatcherModel import BaseStationInformation
-import subprocess
-import threading
-import re
-from pyCatcherSettings import Commands
-import sys
-import time
-import gtk #@UnresolvedImport
-
-class DriverConnector:
- def __init__ (self):
- self._scan_thread_break = False
- self._firmware_thread_break = False
- self._firmware_waiting_callback = None
- self._firmware_loaded_callback = None
- self._test_thread = None
-
- def start_scanning (self):
- self._scan_thread_break = False
- threading.Thread(target= self._do_scan).start()
-
- def start_firmware(self, firmware_waiting_callback, firmware_loaded_callback):
- self._firmware_thread_break = False
- self._firmware_waiting_callback = firmware_waiting_callback
- self._firmware_loaded_callback = firmware_loaded_callback
- testThread = FirmwareThread(self._firmware_waiting_callback, self._firmware_loaded_callback, self._firmware_thread_break)
- testThread.start()
-
- def stop_scanning (self):
- self._scan_thread_break = True
-
- def stop_firmware(self):
- self._firmware_thread_break = True
-
-class FirmwareThread(threading.Thread):
- def __init__(self, firmware_waiting_callback, firmware_loaded_callback, thread_break):
- gtk.gdk.threads_init()
- threading.Thread.__init__(self)
- self._firmware_waiting_callback = firmware_waiting_callback
- self._firmware_loaded_callback = firmware_loaded_callback
- self._thread_break = thread_break
-
- def run(self):
- loader_process_object = subprocess.Popen(Commands['osmocon_command'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
- time.sleep(3)
- self._firmware_waiting_callback()
- while not self._thread_break:
- line = loader_process_object.stdout.readline()
- #if line:
- # print line
- if (line.strip() == 'Finishing download phase'):
- self._firmware_loaded_callback()
- #time.sleep(0.5)
- loader_process_object.kill()
-
-class ScanThread(threading.Thread):
- def __init__(self, thread_break):
- gtk.gdk.threads_init()
- threading.Thread.__init__(self)
- self._thread_break = thread_break
-
- def run(self):
- scan_command = Commands['scan_command']
- scan_process = subprocess.Popen(scan_command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
- while not self._scan_thread_break:
- base_station_info = BaseStationInformation()
- base_station_info.parse_file(scan_process.stdout)
- self._bs_found_callback(base_station_info)
- scan_process.kill()
- \ No newline at end of file
diff --git a/Src/PyCatcher/src/main.py b/Src/PyCatcher/src/main.py
deleted file mode 100644
index 0bbda10..0000000
--- a/Src/PyCatcher/src/main.py
+++ /dev/null
@@ -1,7 +0,0 @@
-from pyCatcherController import PyCatcherController
-
-def main ():
- controller = PyCatcherController()
-
-if __name__ == '__main__':
- main() \ No newline at end of file
diff --git a/Src/PyCatcher/src/pyCatcherController.py b/Src/PyCatcher/src/pyCatcherController.py
deleted file mode 100644
index a55bd5e..0000000
--- a/Src/PyCatcher/src/pyCatcherController.py
+++ /dev/null
@@ -1,51 +0,0 @@
-import sys
-import pygtk
-import gtk #@UnresolvedImport
-import gtk.glade #@UnresolvedImport
-from driverConnector import DriverConnector
-from pyCatcherModel import BaseStationInformation, BaseStationInformationList
-from pyCatcherView import PyCatcherGUI
-from pyCatcherController import DriverConnector
-
-class PyCatcherController:
- def __init__(self):
-
- self.bs_tree_list_data = gtk.ListStore(str,str,str,str)
-
- self._gui = PyCatcherGUI(self)
- self._driver_connector = DriverConnector()
-
- self._gui.log_line("GUI initialized")
-
- gtk.main()
-
- def log_message(self, message):
- self._gui.log_line(message)
-
- def start_scan(self):
- self._gui.log_line("start scan")
-
- def stop_scan(self):
- self._gui.log_line("stop scan")
-
- def start_firmware(self):
- self._gui.log_line("start firmware")
- self._driver_connector.start_firmware(self._firmware_waiting_callback, self._firmware_done_callback)
-
- def stop_firmware(self):
- self._gui.log_line("stop firmware")
- print 'stop firmwares'
- self._driver_connector.stop_firmware()
-
- def _found_base_station_callback(self):
- self._gui.log_line("found base station")
-
- def _firmware_waiting_callback(self):
- self._gui.log_line("firmware waiting for device")
- self._gui.show_info('Switch on the phone now.', 'Firmware')
-
-
- def _firmware_done_callback(self):
- self._gui.log_line("firmware loaded, ready for scanning")
- self._gui.show_info('Firmware load completed', 'Firmware')
- \ No newline at end of file
diff --git a/Src/PyCatcher/src/pyCatcherModel.py b/Src/PyCatcher/src/pyCatcherModel.py
deleted file mode 100644
index 6473dc7..0000000
--- a/Src/PyCatcher/src/pyCatcherModel.py
+++ /dev/null
@@ -1,39 +0,0 @@
-import datetime
-
-class BaseStationInformation:
- def __init__ (self):
- self.arcfn = 0
- self.bsic = 0
- self.rxlev = 0
- self.s1 = []
- self.s2 = []
- self.s2bis = []
- self.s2ter = []
- self.s3 = []
- self.s4 = []
- self.neighbours = []
-
- def parse_file(self, fileobject):
- self.arcfn = fileobject.readline()
- self.bsic = fileobject.readline()
- self.rxlev = fileobject.readline()
- self.s1 = fileobject.readline().split(' ')
- self.s2 = fileobject.readline().split(' ')
- self.s2bis = fileobject.readline().split(' ')
- self.s2ter = fileobject.readline().split(' ')
- self.s3 = fileobject.readline().split(' ')
- self.s4 = fileobject.readline().split(' ')
- return self
-
- def get_tree_data(self):
- return [self.bsic, self.arcfn, self.rxlev, datetime.datetime.now().strftime("%H:%M:%S")]
-
-class BaseStationInformationList:
- def __init__(self):
- self.base_station_list = []
-
- def add_station(self):
- pass
-
- def get_dot_code(self):
- pass \ No newline at end of file
diff --git a/Src/PyCatcher/src/pyCatcherView.py b/Src/PyCatcher/src/pyCatcherView.py
deleted file mode 100644
index 8f0ee6b..0000000
--- a/Src/PyCatcher/src/pyCatcherView.py
+++ /dev/null
@@ -1,131 +0,0 @@
-import sys
-import locale
-import pygtk
-import gtk #@UnresolvedImport
-import gtk.glade #@UnresolvedImport
-from pyCatcherModel import BaseStationInformation
-from xdot import DotWidget
-import datetime
-import time
-
-class PyCatcherGUI:
-
- def __init__(self, catcher_controller):
- encoding = locale.getlocale()[1]
- self._utf8conv = lambda x : unicode(x, encoding).encode('utf8')
-
- self._scan_toggled_on = False
- self._firmware_toggled_on = False
-
- self._catcher_controller = catcher_controller
-
- self._w_tree = gtk.glade.XML("../GUI/mainWindow.glade")
-
- self._bs_tree_view = self._w_tree.get_widget("bs_table")
- self._add_column("Provider", 0)
- self._add_column("Frequency", 1)
- self._add_column("Strength",2)
- self._add_column("Last seen", 3)
- self._bs_tree_view.set_model(self._catcher_controller.bs_tree_list_data)
-
- self._horizontal_container = self._w_tree.get_widget("vbox4")
- self._dot_widget = DotWidget()
- self._horizontal_container.pack_start_defaults(self._dot_widget)
- self._dot_widget.show()
-
- self._main_window = self._w_tree.get_widget("main_window")
- signals = {"on_main_window_destroy": gtk.main_quit,
- "on_scan_toggle_toggled": self._on_toggle_scan,
- "on_firmware_toggle_toggled": self._on_toggle_firmware,
- "on_graph_zoom_in_clicked": self._dot_widget.on_zoom_in,
- "on_graph_zoom_out_clicked": self._dot_widget.on_zoom_out,
- "on_graph_fit_clicked": self._dot_widget.on_zoom_fit,
- "on_graph_zoom_default_clicked": self._dot_widget.on_zoom_100,
- "on_save_project_clicked": self._on_save_project,
- "on_open_file_clicked": self._on_open_file
- }
- self._w_tree.signal_autoconnect(signals)
-
- log_view = self._w_tree.get_widget("log_output")
- self._log_buffer = log_view.get_buffer()
- self._log_buffer.insert(self._log_buffer.get_end_iter(),self._utf8conv("-- Log execution on " + datetime.datetime.now().strftime("%A, %d. %B %Y %I:%M %p") + " --\n\n"))
-
- self._main_window.show()
-
-
- def _add_column(self, name, index):
- column = gtk.TreeViewColumn(name, gtk.CellRendererText(), text=index)
- column.set_resizable(True)
- column.set_sort_column_id(index)
- self._bs_tree_view.append_column(column)
-
- def _on_toggle_scan(self, widget):
- if(not self._scan_toggled_on):
- self._catcher_controller.start_scan()
- self._scan_toggled_on = True
- else:
- self._catcher_controller.stop_scan()
- self._scan_toggled_on = False
-
- def _on_toggle_firmware(self, widget):
- if(not self._firmware_toggled_on):
- self._catcher_controller.start_firmware()
- self._firmware_toggled_on = True
- else:
- self._catcher_controller.stop_firmware()
- self._firmware_toggled_on = False
-
- def _on_open_file(self, widget):
- chooser = gtk.FileChooserDialog(title="Open dot File",
- action=gtk.FILE_CHOOSER_ACTION_OPEN,
- buttons=(gtk.STOCK_CANCEL,
- gtk.RESPONSE_CANCEL,
- gtk.STOCK_OPEN,
- gtk.RESPONSE_OK))
- chooser.set_default_response(gtk.RESPONSE_OK)
- filter = gtk.FileFilter()
- filter.set_name("Graphviz dot files")
- filter.add_pattern("*.dot")
- chooser.add_filter(filter)
- filter = gtk.FileFilter()
- filter.set_name("All files")
- filter.add_pattern("*")
- chooser.add_filter(filter)
- if chooser.run() == gtk.RESPONSE_OK:
- filename = chooser.get_filename()
- chooser.destroy()
- self.load_dot_from_file(filename)
- else:
- chooser.destroy()
-
- def load_dot_from_file(self, filename):
- try:
- fp = file(filename, 'rt')
- self.load_dot(fp.read(), filename)
- fp.close()
- except IOError, ex:
- self.show_info(ex)
-
- def load_dot(self, dotcode, filename="<stdin>"):
- if self._dot_widget.set_dotcode(dotcode, filename):
- self._dot_widget.zoom_to_fit()
-
- def _on_save_project(self, widget):
- pass
-
- def show_info(self, message, title='PyCatcher', time_to_sleep=3, type='INFO'):
- gtk_type = {'INFO' : gtk.MESSAGE_INFO,
- 'ERROR': gtk.MESSAGE_ERROR}
-
- dlg = gtk.MessageDialog(type=gtk.MESSAGE_INFO,
- message_format=str(message)
- )
-
- dlg.set_title(title)
- #dlg.run()
- dlg.show()
- time.sleep(time_to_sleep)
- dlg.destroy()
-
- def log_line(self, line):
- self._log_buffer.insert(self._log_buffer.get_end_iter(),self._utf8conv(datetime.datetime.now().strftime("%I:%M:%S %p")+ ": " + line + "\n")) \ No newline at end of file
diff --git a/Src/PyCatcher/src/xdot.py b/Src/PyCatcher/src/xdot.py
deleted file mode 100644
index f816528..0000000
--- a/Src/PyCatcher/src/xdot.py
+++ /dev/null
@@ -1,2212 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2008 Jose Fonseca
-#
-# This program is free software: you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as published
-# by the Free Software Foundation, either version 3 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 Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-#
-
-'''Visualize dot graphs via the xdot format.'''
-
-__author__ = "Jose Fonseca"
-
-__version__ = "0.4"
-
-
-import os
-import sys
-import subprocess
-import math
-import colorsys
-import time
-import re
-
-import gobject
-import gtk
-import gtk.gdk
-import gtk.keysyms
-import cairo
-import pango
-import pangocairo
-
-
-# See http://www.graphviz.org/pub/scm/graphviz-cairo/plugin/cairo/gvrender_cairo.c
-
-# For pygtk inspiration and guidance see:
-# - http://mirageiv.berlios.de/
-# - http://comix.sourceforge.net/
-
-
-class Pen:
- """Store pen attributes."""
-
- def __init__(self):
- # set default attributes
- self.color = (0.0, 0.0, 0.0, 1.0)
- self.fillcolor = (0.0, 0.0, 0.0, 1.0)
- self.linewidth = 1.0
- self.fontsize = 14.0
- self.fontname = "Times-Roman"
- self.dash = ()
-
- def copy(self):
- """Create a copy of this pen."""
- pen = Pen()
- pen.__dict__ = self.__dict__.copy()
- return pen
-
- def highlighted(self):
- pen = self.copy()
- pen.color = (1, 0, 0, 1)
- pen.fillcolor = (1, .8, .8, 1)
- return pen
-
-
-class Shape:
- """Abstract base class for all the drawing shapes."""
-
- def __init__(self):
- pass
-
- def draw(self, cr, highlight=False):
- """Draw this shape with the given cairo context"""
- raise NotImplementedError
-
- def select_pen(self, highlight):
- if highlight:
- if not hasattr(self, 'highlight_pen'):
- self.highlight_pen = self.pen.highlighted()
- return self.highlight_pen
- else:
- return self.pen
-
-
-class TextShape(Shape):
-
- #fontmap = pangocairo.CairoFontMap()
- #fontmap.set_resolution(72)
- #context = fontmap.create_context()
-
- LEFT, CENTER, RIGHT = -1, 0, 1
-
- def __init__(self, pen, x, y, j, w, t):
- Shape.__init__(self)
- self.pen = pen.copy()
- self.x = x
- self.y = y
- self.j = j
- self.w = w
- self.t = t
-
- def draw(self, cr, highlight=False):
-
- try:
- layout = self.layout
- except AttributeError:
- layout = cr.create_layout()
-
- # set font options
- # see http://lists.freedesktop.org/archives/cairo/2007-February/009688.html
- context = layout.get_context()
- fo = cairo.FontOptions()
- fo.set_antialias(cairo.ANTIALIAS_DEFAULT)
- fo.set_hint_style(cairo.HINT_STYLE_NONE)
- fo.set_hint_metrics(cairo.HINT_METRICS_OFF)
- try:
- pangocairo.context_set_font_options(context, fo)
- except TypeError:
- # XXX: Some broken pangocairo bindings show the error
- # 'TypeError: font_options must be a cairo.FontOptions or None'
- pass
-
- # set font
- font = pango.FontDescription()
- font.set_family(self.pen.fontname)
- font.set_absolute_size(self.pen.fontsize*pango.SCALE)
- layout.set_font_description(font)
-
- # set text
- layout.set_text(self.t)
-
- # cache it
- self.layout = layout
- else:
- cr.update_layout(layout)
-
- descent = 2 # XXX get descender from font metrics
-
- width, height = layout.get_size()
- width = float(width)/pango.SCALE
- height = float(height)/pango.SCALE
- # we know the width that dot thinks this text should have
- # we do not necessarily have a font with the same metrics
- # scale it so that the text fits inside its box
- if width > self.w:
- f = self.w / width
- width = self.w # equivalent to width *= f
- height *= f
- descent *= f
- else:
- f = 1.0
-
- if self.j == self.LEFT:
- x = self.x
- elif self.j == self.CENTER:
- x = self.x - 0.5*width
- elif self.j == self.RIGHT:
- x = self.x - width
- else:
- assert 0
-
- y = self.y - height + descent
-
- cr.move_to(x, y)
-
- cr.save()
- cr.scale(f, f)
- cr.set_source_rgba(*self.select_pen(highlight).color)
- cr.show_layout(layout)
- cr.restore()
-
- if 0: # DEBUG
- # show where dot thinks the text should appear
- cr.set_source_rgba(1, 0, 0, .9)
- if self.j == self.LEFT:
- x = self.x
- elif self.j == self.CENTER:
- x = self.x - 0.5*self.w
- elif self.j == self.RIGHT:
- x = self.x - self.w
- cr.move_to(x, self.y)
- cr.line_to(x+self.w, self.y)
- cr.stroke()
-
-
-class ImageShape(Shape):
-
- def __init__(self, pen, x0, y0, w, h, path):
- Shape.__init__(self)
- self.pen = pen.copy()
- self.x0 = x0
- self.y0 = y0
- self.w = w
- self.h = h
- self.path = path
-
- def draw(self, cr, highlight=False):
- cr2 = gtk.gdk.CairoContext(cr)
- pixbuf = gtk.gdk.pixbuf_new_from_file(self.path)
- sx = float(self.w)/float(pixbuf.get_width())
- sy = float(self.h)/float(pixbuf.get_height())
- cr.save()
- cr.translate(self.x0, self.y0 - self.h)
- cr.scale(sx, sy)
- cr2.set_source_pixbuf(pixbuf, 0, 0)
- cr2.paint()
- cr.restore()
-
-
-class EllipseShape(Shape):
-
- def __init__(self, pen, x0, y0, w, h, filled=False):
- Shape.__init__(self)
- self.pen = pen.copy()
- self.x0 = x0
- self.y0 = y0
- self.w = w
- self.h = h
- self.filled = filled
-
- def draw(self, cr, highlight=False):
- cr.save()
- cr.translate(self.x0, self.y0)
- cr.scale(self.w, self.h)
- cr.move_to(1.0, 0.0)
- cr.arc(0.0, 0.0, 1.0, 0, 2.0*math.pi)
- cr.restore()
- pen = self.select_pen(highlight)
- if self.filled:
- cr.set_source_rgba(*pen.fillcolor)
- cr.fill()
- else:
- cr.set_dash(pen.dash)
- cr.set_line_width(pen.linewidth)
- cr.set_source_rgba(*pen.color)
- cr.stroke()
-
-
-class PolygonShape(Shape):
-
- def __init__(self, pen, points, filled=False):
- Shape.__init__(self)
- self.pen = pen.copy()
- self.points = points
- self.filled = filled
-
- def draw(self, cr, highlight=False):
- x0, y0 = self.points[-1]
- cr.move_to(x0, y0)
- for x, y in self.points:
- cr.line_to(x, y)
- cr.close_path()
- pen = self.select_pen(highlight)
- if self.filled:
- cr.set_source_rgba(*pen.fillcolor)
- cr.fill_preserve()
- cr.fill()
- else:
- cr.set_dash(pen.dash)
- cr.set_line_width(pen.linewidth)
- cr.set_source_rgba(*pen.color)
- cr.stroke()
-
-
-class LineShape(Shape):
-
- def __init__(self, pen, points):
- Shape.__init__(self)
- self.pen = pen.copy()
- self.points = points
-
- def draw(self, cr, highlight=False):
- x0, y0 = self.points[0]
- cr.move_to(x0, y0)
- for x1, y1 in self.points[1:]:
- cr.line_to(x1, y1)
- pen = self.select_pen(highlight)
- cr.set_dash(pen.dash)
- cr.set_line_width(pen.linewidth)
- cr.set_source_rgba(*pen.color)
- cr.stroke()
-
-
-class BezierShape(Shape):
-
- def __init__(self, pen, points, filled=False):
- Shape.__init__(self)
- self.pen = pen.copy()
- self.points = points
- self.filled = filled
-
- def draw(self, cr, highlight=False):
- x0, y0 = self.points[0]
- cr.move_to(x0, y0)
- for i in xrange(1, len(self.points), 3):
- x1, y1 = self.points[i]
- x2, y2 = self.points[i + 1]
- x3, y3 = self.points[i + 2]
- cr.curve_to(x1, y1, x2, y2, x3, y3)
- pen = self.select_pen(highlight)
- if self.filled:
- cr.set_source_rgba(*pen.fillcolor)
- cr.fill_preserve()
- cr.fill()
- else:
- cr.set_dash(pen.dash)
- cr.set_line_width(pen.linewidth)
- cr.set_source_rgba(*pen.color)
- cr.stroke()
-
-
-class CompoundShape(Shape):
-
- def __init__(self, shapes):
- Shape.__init__(self)
- self.shapes = shapes
-
- def draw(self, cr, highlight=False):
- for shape in self.shapes:
- shape.draw(cr, highlight=highlight)
-
-
-class Url(object):
-
- def __init__(self, item, url, highlight=None):
- self.item = item
- self.url = url
- if highlight is None:
- highlight = set([item])
- self.highlight = highlight
-
-
-class Jump(object):
-
- def __init__(self, item, x, y, highlight=None):
- self.item = item
- self.x = x
- self.y = y
- if highlight is None:
- highlight = set([item])
- self.highlight = highlight
-
-
-class Element(CompoundShape):
- """Base class for graph nodes and edges."""
-
- def __init__(self, shapes):
- CompoundShape.__init__(self, shapes)
-
- def get_url(self, x, y):
- return None
-
- def get_jump(self, x, y):
- return None
-
-
-class Node(Element):
-
- def __init__(self, x, y, w, h, shapes, url):
- Element.__init__(self, shapes)
-
- self.x = x
- self.y = y
-
- self.x1 = x - 0.5*w
- self.y1 = y - 0.5*h
- self.x2 = x + 0.5*w
- self.y2 = y + 0.5*h
-
- self.url = url
-
- def is_inside(self, x, y):
- return self.x1 <= x and x <= self.x2 and self.y1 <= y and y <= self.y2
-
- def get_url(self, x, y):
- if self.url is None:
- return None
- #print (x, y), (self.x1, self.y1), "-", (self.x2, self.y2)
- if self.is_inside(x, y):
- return Url(self, self.url)
- return None
-
- def get_jump(self, x, y):
- if self.is_inside(x, y):
- return Jump(self, self.x, self.y)
- return None
-
-
-def square_distance(x1, y1, x2, y2):
- deltax = x2 - x1
- deltay = y2 - y1
- return deltax*deltax + deltay*deltay
-
-
-class Edge(Element):
-
- def __init__(self, src, dst, points, shapes):
- Element.__init__(self, shapes)
- self.src = src
- self.dst = dst
- self.points = points
-
- RADIUS = 10
-
- def get_jump(self, x, y):
- if square_distance(x, y, *self.points[0]) <= self.RADIUS*self.RADIUS:
- return Jump(self, self.dst.x, self.dst.y, highlight=set([self, self.dst]))
- if square_distance(x, y, *self.points[-1]) <= self.RADIUS*self.RADIUS:
- return Jump(self, self.src.x, self.src.y, highlight=set([self, self.src]))
- return None
-
-
-class Graph(Shape):
-
- def __init__(self, width=1, height=1, shapes=(), nodes=(), edges=()):
- Shape.__init__(self)
-
- self.width = width
- self.height = height
- self.shapes = shapes
- self.nodes = nodes
- self.edges = edges
-
- def get_size(self):
- return self.width, self.height
-
- def draw(self, cr, highlight_items=None):
- if highlight_items is None:
- highlight_items = ()
- cr.set_source_rgba(0.0, 0.0, 0.0, 1.0)
-
- cr.set_line_cap(cairo.LINE_CAP_BUTT)
- cr.set_line_join(cairo.LINE_JOIN_MITER)
-
- for shape in self.shapes:
- shape.draw(cr)
- for edge in self.edges:
- edge.draw(cr, highlight=(edge in highlight_items))
- for node in self.nodes:
- node.draw(cr, highlight=(node in highlight_items))
-
- def get_url(self, x, y):
- for node in self.nodes:
- url = node.get_url(x, y)
- if url is not None:
- return url
- return None
-
- def get_jump(self, x, y):
- for edge in self.edges:
- jump = edge.get_jump(x, y)
- if jump is not None:
- return jump
- for node in self.nodes:
- jump = node.get_jump(x, y)
- if jump is not None:
- return jump
- return None
-
-
-class XDotAttrParser:
- """Parser for xdot drawing attributes.
- See also:
- - http://www.graphviz.org/doc/info/output.html#d:xdot
- """
-
- def __init__(self, parser, buf):
- self.parser = parser
- self.buf = self.unescape(buf)
- self.pos = 0
-
- self.pen = Pen()
- self.shapes = []
-
- def __nonzero__(self):
- return self.pos < len(self.buf)
-
- def unescape(self, buf):
- buf = buf.replace('\\"', '"')
- buf = buf.replace('\\n', '\n')
- return buf
-
- def read_code(self):
- pos = self.buf.find(" ", self.pos)
- res = self.buf[self.pos:pos]
- self.pos = pos + 1
- while self.pos < len(self.buf) and self.buf[self.pos].isspace():
- self.pos += 1
- return res
-
- def read_number(self):
- return int(self.read_code())
-
- def read_float(self):
- return float(self.read_code())
-
- def read_point(self):
- x = self.read_number()
- y = self.read_number()
- return self.transform(x, y)
-
- def read_text(self):
- num = self.read_number()
- pos = self.buf.find("-", self.pos) + 1
- self.pos = pos + num
- res = self.buf[pos:self.pos]
- while self.pos < len(self.buf) and self.buf[self.pos].isspace():
- self.pos += 1
- return res
-
- def read_polygon(self):
- n = self.read_number()
- p = []
- for i in range(n):
- x, y = self.read_point()
- p.append((x, y))
- return p
-
- def read_color(self):
- # See http://www.graphviz.org/doc/info/attrs.html#k:color
- c = self.read_text()
- c1 = c[:1]
- if c1 == '#':
- hex2float = lambda h: float(int(h, 16)/255.0)
- r = hex2float(c[1:3])
- g = hex2float(c[3:5])
- b = hex2float(c[5:7])
- try:
- a = hex2float(c[7:9])
- except (IndexError, ValueError):
- a = 1.0
- return r, g, b, a
- elif c1.isdigit() or c1 == ".":
- # "H,S,V" or "H S V" or "H, S, V" or any other variation
- h, s, v = map(float, c.replace(",", " ").split())
- r, g, b = colorsys.hsv_to_rgb(h, s, v)
- a = 1.0
- return r, g, b, a
- else:
- return self.lookup_color(c)
-
- def lookup_color(self, c):
- try:
- color = gtk.gdk.color_parse(c)
- except ValueError:
- pass
- else:
- s = 1.0/65535.0
- r = color.red*s
- g = color.green*s
- b = color.blue*s
- a = 1.0
- return r, g, b, a
-
- try:
- dummy, scheme, index = c.split('/')
- r, g, b = brewer_colors[scheme][int(index)]
- except (ValueError, KeyError):
- pass
- else:
- s = 1.0/255.0
- r = r*s
- g = g*s
- b = b*s
- a = 1.0
- return r, g, b, a
-
- sys.stderr.write("unknown color '%s'\n" % c)
- return None
-
- def parse(self):
- s = self
-
- while s:
- op = s.read_code()
- if op == "c":
- color = s.read_color()
- if color is not None:
- self.handle_color(color, filled=False)
- elif op == "C":
- color = s.read_color()
- if color is not None:
- self.handle_color(color, filled=True)
- elif op == "S":
- # http://www.graphviz.org/doc/info/attrs.html#k:style
- style = s.read_text()
- if style.startswith("setlinewidth("):
- lw = style.split("(")[1].split(")")[0]
- lw = float(lw)
- self.handle_linewidth(lw)
- elif style in ("solid", "dashed", "dotted"):
- self.handle_linestyle(style)
- elif op == "F":
- size = s.read_float()
- name = s.read_text()
- self.handle_font(size, name)
- elif op == "T":
- x, y = s.read_point()
- j = s.read_number()
- w = s.read_number()
- t = s.read_text()
- self.handle_text(x, y, j, w, t)
- elif op == "E":
- x0, y0 = s.read_point()
- w = s.read_number()
- h = s.read_number()
- self.handle_ellipse(x0, y0, w, h, filled=True)
- elif op == "e":
- x0, y0 = s.read_point()
- w = s.read_number()
- h = s.read_number()
- self.handle_ellipse(x0, y0, w, h, filled=False)
- elif op == "L":
- points = self.read_polygon()
- self.handle_line(points)
- elif op == "B":
- points = self.read_polygon()
- self.handle_bezier(points, filled=False)
- elif op == "b":
- points = self.read_polygon()
- self.handle_bezier(points, filled=True)
- elif op == "P":
- points = self.read_polygon()
- self.handle_polygon(points, filled=True)
- elif op == "p":
- points = self.read_polygon()
- self.handle_polygon(points, filled=False)
- elif op == "I":
- x0, y0 = s.read_point()
- w = s.read_number()
- h = s.read_number()
- path = s.read_text()
- self.handle_image(x0, y0, w, h, path)
- else:
- sys.stderr.write("unknown xdot opcode '%s'\n" % op)
- break
-
- return self.shapes
-
- def transform(self, x, y):
- return self.parser.transform(x, y)
-
- def handle_color(self, color, filled=False):
- if filled:
- self.pen.fillcolor = color
- else:
- self.pen.color = color
-
- def handle_linewidth(self, linewidth):
- self.pen.linewidth = linewidth
-
- def handle_linestyle(self, style):
- if style == "solid":
- self.pen.dash = ()
- elif style == "dashed":
- self.pen.dash = (6, ) # 6pt on, 6pt off
- elif style == "dotted":
- self.pen.dash = (2, 4) # 2pt on, 4pt off
-
- def handle_font(self, size, name):
- self.pen.fontsize = size
- self.pen.fontname = name
-
- def handle_text(self, x, y, j, w, t):
- self.shapes.append(TextShape(self.pen, x, y, j, w, t))
-
- def handle_ellipse(self, x0, y0, w, h, filled=False):
- if filled:
- # xdot uses this to mean "draw a filled shape with an outline"
- self.shapes.append(EllipseShape(self.pen, x0, y0, w, h, filled=True))
- self.shapes.append(EllipseShape(self.pen, x0, y0, w, h))
-
- def handle_image(self, x0, y0, w, h, path):
- self.shapes.append(ImageShape(self.pen, x0, y0, w, h, path))
-
- def handle_line(self, points):
- self.shapes.append(LineShape(self.pen, points))
-
- def handle_bezier(self, points, filled=False):
- if filled:
- # xdot uses this to mean "draw a filled shape with an outline"
- self.shapes.append(BezierShape(self.pen, points, filled=True))
- self.shapes.append(BezierShape(self.pen, points))
-
- def handle_polygon(self, points, filled=False):
- if filled:
- # xdot uses this to mean "draw a filled shape with an outline"
- self.shapes.append(PolygonShape(self.pen, points, filled=True))
- self.shapes.append(PolygonShape(self.pen, points))
-
-
-EOF = -1
-SKIP = -2
-
-
-class ParseError(Exception):
-
- def __init__(self, msg=None, filename=None, line=None, col=None):
- self.msg = msg
- self.filename = filename
- self.line = line
- self.col = col
-
- def __str__(self):
- return ':'.join([str(part) for part in (self.filename, self.line, self.col, self.msg) if part != None])
-
-
-class Scanner:
- """Stateless scanner."""
-
- # should be overriden by derived classes
- tokens = []
- symbols = {}
- literals = {}
- ignorecase = False
-
- def __init__(self):
- flags = re.DOTALL
- if self.ignorecase:
- flags |= re.IGNORECASE
- self.tokens_re = re.compile(
- '|'.join(['(' + regexp + ')' for type, regexp, test_lit in self.tokens]),
- flags
- )
-
- def next(self, buf, pos):
- if pos >= len(buf):
- return EOF, '', pos
- mo = self.tokens_re.match(buf, pos)
- if mo:
- text = mo.group()
- type, regexp, test_lit = self.tokens[mo.lastindex - 1]
- pos = mo.end()
- if test_lit:
- type = self.literals.get(text, type)
- return type, text, pos
- else:
- c = buf[pos]
- return self.symbols.get(c, None), c, pos + 1
-
-
-class Token:
-
- def __init__(self, type, text, line, col):
- self.type = type
- self.text = text
- self.line = line
- self.col = col
-
-
-class Lexer:
-
- # should be overriden by derived classes
- scanner = None
- tabsize = 8
-
- newline_re = re.compile(r'\r\n?|\n')
-
- def __init__(self, buf = None, pos = 0, filename = None, fp = None):
- if fp is not None:
- try:
- fileno = fp.fileno()
- length = os.path.getsize(fp.name)
- import mmap
- except:
- # read whole file into memory
- buf = fp.read()
- pos = 0
- else:
- # map the whole file into memory
- if length:
- # length must not be zero
- buf = mmap.mmap(fileno, length, access = mmap.ACCESS_READ)
- pos = os.lseek(fileno, 0, 1)
- else:
- buf = ''
- pos = 0
-
- if filename is None:
- try:
- filename = fp.name
- except AttributeError:
- filename = None
-
- self.buf = buf
- self.pos = pos
- self.line = 1
- self.col = 1
- self.filename = filename
-
- def next(self):
- while True:
- # save state
- pos = self.pos
- line = self.line
- col = self.col
-
- type, text, endpos = self.scanner.next(self.buf, pos)
- assert pos + len(text) == endpos
- self.consume(text)
- type, text = self.filter(type, text)
- self.pos = endpos
-
- if type == SKIP:
- continue
- elif type is None:
- msg = 'unexpected char '
- if text >= ' ' and text <= '~':
- msg += "'%s'" % text
- else:
- msg += "0x%X" % ord(text)
- raise ParseError(msg, self.filename, line, col)
- else:
- break
- return Token(type = type, text = text, line = line, col = col)
-
- def consume(self, text):
- # update line number
- pos = 0
- for mo in self.newline_re.finditer(text, pos):
- self.line += 1
- self.col = 1
- pos = mo.end()
-
- # update column number
- while True:
- tabpos = text.find('\t', pos)
- if tabpos == -1:
- break
- self.col += tabpos - pos
- self.col = ((self.col - 1)//self.tabsize + 1)*self.tabsize + 1
- pos = tabpos + 1
- self.col += len(text) - pos
-
-
-class Parser:
-
- def __init__(self, lexer):
- self.lexer = lexer
- self.lookahead = self.lexer.next()
-
- def match(self, type):
- if self.lookahead.type != type:
- raise ParseError(
- msg = 'unexpected token %r' % self.lookahead.text,
- filename = self.lexer.filename,
- line = self.lookahead.line,
- col = self.lookahead.col)
-
- def skip(self, type):
- while self.lookahead.type != type:
- self.consume()
-
- def consume(self):
- token = self.lookahead
- self.lookahead = self.lexer.next()
- return token
-
-
-ID = 0
-STR_ID = 1
-HTML_ID = 2
-EDGE_OP = 3
-
-LSQUARE = 4
-RSQUARE = 5
-LCURLY = 6
-RCURLY = 7
-COMMA = 8
-COLON = 9
-SEMI = 10
-EQUAL = 11
-PLUS = 12
-
-STRICT = 13
-GRAPH = 14
-DIGRAPH = 15
-NODE = 16
-EDGE = 17
-SUBGRAPH = 18
-
-
-class DotScanner(Scanner):
-
- # token regular expression table
- tokens = [
- # whitespace and comments
- (SKIP,
- r'[ \t\f\r\n\v]+|'
- r'//[^\r\n]*|'
- r'/\*.*?\*/|'
- r'#[^\r\n]*',
- False),
-
- # Alphanumeric IDs
- (ID, r'[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*', True),
-
- # Numeric IDs
- (ID, r'-?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)', False),
-
- # String IDs
- (STR_ID, r'"[^"\\]*(?:\\.[^"\\]*)*"', False),
-
- # HTML IDs
- (HTML_ID, r'<[^<>]*(?:<[^<>]*>[^<>]*)*>', False),
-
- # Edge operators
- (EDGE_OP, r'-[>-]', False),
- ]
-
- # symbol table
- symbols = {
- '[': LSQUARE,
- ']': RSQUARE,
- '{': LCURLY,
- '}': RCURLY,
- ',': COMMA,
- ':': COLON,
- ';': SEMI,
- '=': EQUAL,
- '+': PLUS,
- }
-
- # literal table
- literals = {
- 'strict': STRICT,
- 'graph': GRAPH,
- 'digraph': DIGRAPH,
- 'node': NODE,
- 'edge': EDGE,
- 'subgraph': SUBGRAPH,
- }
-
- ignorecase = True
-
-
-class DotLexer(Lexer):
-
- scanner = DotScanner()
-
- def filter(self, type, text):
- # TODO: handle charset
- if type == STR_ID:
- text = text[1:-1]
-
- # line continuations
- text = text.replace('\\\r\n', '')
- text = text.replace('\\\r', '')
- text = text.replace('\\\n', '')
-
- text = text.replace('\\r', '\r')
- text = text.replace('\\n', '\n')
- text = text.replace('\\t', '\t')
- text = text.replace('\\', '')
-
- type = ID
-
- elif type == HTML_ID:
- text = text[1:-1]
- type = ID
-
- return type, text
-
-
-class DotParser(Parser):
-
- def __init__(self, lexer):
- Parser.__init__(self, lexer)
- self.graph_attrs = {}
- self.node_attrs = {}
- self.edge_attrs = {}
-
- def parse(self):
- self.parse_graph()
- self.match(EOF)
-
- def parse_graph(self):
- if self.lookahead.type == STRICT:
- self.consume()
- self.skip(LCURLY)
- self.consume()
- while self.lookahead.type != RCURLY:
- self.parse_stmt()
- self.consume()
-
- def parse_subgraph(self):
- id = None
- if self.lookahead.type == SUBGRAPH:
- self.consume()
- if self.lookahead.type == ID:
- id = self.lookahead.text
- self.consume()
- if self.lookahead.type == LCURLY:
- self.consume()
- while self.lookahead.type != RCURLY:
- self.parse_stmt()
- self.consume()
- return id
-
- def parse_stmt(self):
- if self.lookahead.type == GRAPH:
- self.consume()
- attrs = self.parse_attrs()
- self.graph_attrs.update(attrs)
- self.handle_graph(attrs)
- elif self.lookahead.type == NODE:
- self.consume()
- self.node_attrs.update(self.parse_attrs())
- elif self.lookahead.type == EDGE:
- self.consume()
- self.edge_attrs.update(self.parse_attrs())
- elif self.lookahead.type in (SUBGRAPH, LCURLY):
- self.parse_subgraph()
- else:
- id = self.parse_node_id()
- if self.lookahead.type == EDGE_OP:
- self.consume()
- node_ids = [id, self.parse_node_id()]
- while self.lookahead.type == EDGE_OP:
- node_ids.append(self.parse_node_id())
- attrs = self.parse_attrs()
- for i in range(0, len(node_ids) - 1):
- self.handle_edge(node_ids[i], node_ids[i + 1], attrs)
- elif self.lookahead.type == EQUAL:
- self.consume()
- self.parse_id()
- else:
- attrs = self.parse_attrs()
- self.handle_node(id, attrs)
- if self.lookahead.type == SEMI:
- self.consume()
-
- def parse_attrs(self):
- attrs = {}
- while self.lookahead.type == LSQUARE:
- self.consume()
- while self.lookahead.type != RSQUARE:
- name, value = self.parse_attr()
- attrs[name] = value
- if self.lookahead.type == COMMA:
- self.consume()
- self.consume()
- return attrs
-
- def parse_attr(self):
- name = self.parse_id()
- if self.lookahead.type == EQUAL:
- self.consume()
- value = self.parse_id()
- else:
- value = 'true'
- return name, value
-
- def parse_node_id(self):
- node_id = self.parse_id()
- if self.lookahead.type == COLON:
- self.consume()
- port = self.parse_id()
- if self.lookahead.type == COLON:
- self.consume()
- compass_pt = self.parse_id()
- else:
- compass_pt = None
- else:
- port = None
- compass_pt = None
- # XXX: we don't really care about port and compass point values when parsing xdot
- return node_id
-
- def parse_id(self):
- self.match(ID)
- id = self.lookahead.text
- self.consume()
- return id
-
- def handle_graph(self, attrs):
- pass
-
- def handle_node(self, id, attrs):
- pass
-
- def handle_edge(self, src_id, dst_id, attrs):
- pass
-
-
-class XDotParser(DotParser):
-
- def __init__(self, xdotcode):
- lexer = DotLexer(buf = xdotcode)
- DotParser.__init__(self, lexer)
-
- self.nodes = []
- self.edges = []
- self.shapes = []
- self.node_by_name = {}
- self.top_graph = True
-
- def handle_graph(self, attrs):
- if self.top_graph:
- try:
- bb = attrs['bb']
- except KeyError:
- return
-
- if not bb:
- return
-
- xmin, ymin, xmax, ymax = map(float, bb.split(","))
-
- self.xoffset = -xmin
- self.yoffset = -ymax
- self.xscale = 1.0
- self.yscale = -1.0
- # FIXME: scale from points to pixels
-
- self.width = max(xmax - xmin, 1)
- self.height = max(ymax - ymin, 1)
-
- self.top_graph = False
-
- for attr in ("_draw_", "_ldraw_", "_hdraw_", "_tdraw_", "_hldraw_", "_tldraw_"):
- if attr in attrs:
- parser = XDotAttrParser(self, attrs[attr])
- self.shapes.extend(parser.parse())
-
- def handle_node(self, id, attrs):
- try:
- pos = attrs['pos']
- except KeyError:
- return
-
- x, y = self.parse_node_pos(pos)
- w = float(attrs.get('width', 0))*72
- h = float(attrs.get('height', 0))*72
- shapes = []
- for attr in ("_draw_", "_ldraw_"):
- if attr in attrs:
- parser = XDotAttrParser(self, attrs[attr])
- shapes.extend(parser.parse())
- url = attrs.get('URL', None)
- node = Node(x, y, w, h, shapes, url)
- self.node_by_name[id] = node
- if shapes:
- self.nodes.append(node)
-
- def handle_edge(self, src_id, dst_id, attrs):
- try:
- pos = attrs['pos']
- except KeyError:
- return
-
- points = self.parse_edge_pos(pos)
- shapes = []
- for attr in ("_draw_", "_ldraw_", "_hdraw_", "_tdraw_", "_hldraw_", "_tldraw_"):
- if attr in attrs:
- parser = XDotAttrParser(self, attrs[attr])
- shapes.extend(parser.parse())
- if shapes:
- src = self.node_by_name[src_id]
- dst = self.node_by_name[dst_id]
- self.edges.append(Edge(src, dst, points, shapes))
-
- def parse(self):
- DotParser.parse(self)
-
- return Graph(self.width, self.height, self.shapes, self.nodes, self.edges)
-
- def parse_node_pos(self, pos):
- x, y = pos.split(",")
- return self.transform(float(x), float(y))
-
- def parse_edge_pos(self, pos):
- points = []
- for entry in pos.split(' '):
- fields = entry.split(',')
- try:
- x, y = fields
- except ValueError:
- # TODO: handle start/end points
- continue
- else:
- points.append(self.transform(float(x), float(y)))
- return points
-
- def transform(self, x, y):
- # XXX: this is not the right place for this code
- x = (x + self.xoffset)*self.xscale
- y = (y + self.yoffset)*self.yscale
- return x, y
-
-
-class Animation(object):
-
- step = 0.03 # seconds
-
- def __init__(self, dot_widget):
- self.dot_widget = dot_widget
- self.timeout_id = None
-
- def start(self):
- self.timeout_id = gobject.timeout_add(int(self.step * 1000), self.tick)
-
- def stop(self):
- self.dot_widget.animation = NoAnimation(self.dot_widget)
- if self.timeout_id is not None:
- gobject.source_remove(self.timeout_id)
- self.timeout_id = None
-
- def tick(self):
- self.stop()
-
-
-class NoAnimation(Animation):
-
- def start(self):
- pass
-
- def stop(self):
- pass
-
-
-class LinearAnimation(Animation):
-
- duration = 0.6
-
- def start(self):
- self.started = time.time()
- Animation.start(self)
-
- def tick(self):
- t = (time.time() - self.started) / self.duration
- self.animate(max(0, min(t, 1)))
- return (t < 1)
-
- def animate(self, t):
- pass
-
-
-class MoveToAnimation(LinearAnimation):
-
- def __init__(self, dot_widget, target_x, target_y):
- Animation.__init__(self, dot_widget)
- self.source_x = dot_widget.x
- self.source_y = dot_widget.y
- self.target_x = target_x
- self.target_y = target_y
-
- def animate(self, t):
- sx, sy = self.source_x, self.source_y
- tx, ty = self.target_x, self.target_y
- self.dot_widget.x = tx * t + sx * (1-t)
- self.dot_widget.y = ty * t + sy * (1-t)
- self.dot_widget.queue_draw()
-
-
-class ZoomToAnimation(MoveToAnimation):
-
- def __init__(self, dot_widget, target_x, target_y):
- MoveToAnimation.__init__(self, dot_widget, target_x, target_y)
- self.source_zoom = dot_widget.zoom_ratio
- self.target_zoom = self.source_zoom
- self.extra_zoom = 0
-
- middle_zoom = 0.5 * (self.source_zoom + self.target_zoom)
-
- distance = math.hypot(self.source_x - self.target_x,
- self.source_y - self.target_y)
- rect = self.dot_widget.get_allocation()
- visible = min(rect.width, rect.height) / self.dot_widget.zoom_ratio
- visible *= 0.9
- if distance > 0:
- desired_middle_zoom = visible / distance
- self.extra_zoom = min(0, 4 * (desired_middle_zoom - middle_zoom))
-
- def animate(self, t):
- a, b, c = self.source_zoom, self.extra_zoom, self.target_zoom
- self.dot_widget.zoom_ratio = c*t + b*t*(1-t) + a*(1-t)
- self.dot_widget.zoom_to_fit_on_resize = False
- MoveToAnimation.animate(self, t)
-
-
-class DragAction(object):
-
- def __init__(self, dot_widget):
- self.dot_widget = dot_widget
-
- def on_button_press(self, event):
- self.startmousex = self.prevmousex = event.x
- self.startmousey = self.prevmousey = event.y
- self.start()
-
- def on_motion_notify(self, event):
- if event.is_hint:
- x, y, state = event.window.get_pointer()
- else:
- x, y, state = event.x, event.y, event.state
- deltax = self.prevmousex - x
- deltay = self.prevmousey - y
- self.drag(deltax, deltay)
- self.prevmousex = x
- self.prevmousey = y
-
- def on_button_release(self, event):
- self.stopmousex = event.x
- self.stopmousey = event.y
- self.stop()
-
- def draw(self, cr):
- pass
-
- def start(self):
- pass
-
- def drag(self, deltax, deltay):
- pass
-
- def stop(self):
- pass
-
- def abort(self):
- pass
-
-
-class NullAction(DragAction):
-
- def on_motion_notify(self, event):
- if event.is_hint:
- x, y, state = event.window.get_pointer()
- else:
- x, y, state = event.x, event.y, event.state
- dot_widget = self.dot_widget
- item = dot_widget.get_url(x, y)
- if item is None:
- item = dot_widget.get_jump(x, y)
- if item is not None:
- dot_widget.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.HAND2))
- dot_widget.set_highlight(item.highlight)
- else:
- dot_widget.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.ARROW))
- dot_widget.set_highlight(None)
-
-
-class PanAction(DragAction):
-
- def start(self):
- self.dot_widget.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.FLEUR))
-
- def drag(self, deltax, deltay):
- self.dot_widget.x += deltax / self.dot_widget.zoom_ratio
- self.dot_widget.y += deltay / self.dot_widget.zoom_ratio
- self.dot_widget.queue_draw()
-
- def stop(self):
- self.dot_widget.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.ARROW))
-
- abort = stop
-
-
-class ZoomAction(DragAction):
-
- def drag(self, deltax, deltay):
- self.dot_widget.zoom_ratio *= 1.005 ** (deltax + deltay)
- self.dot_widget.zoom_to_fit_on_resize = False
- self.dot_widget.queue_draw()
-
- def stop(self):
- self.dot_widget.queue_draw()
-
-
-class ZoomAreaAction(DragAction):
-
- def drag(self, deltax, deltay):
- self.dot_widget.queue_draw()
-
- def draw(self, cr):
- cr.save()
- cr.set_source_rgba(.5, .5, 1.0, 0.25)
- cr.rectangle(self.startmousex, self.startmousey,
- self.prevmousex - self.startmousex,
- self.prevmousey - self.startmousey)
- cr.fill()
- cr.set_source_rgba(.5, .5, 1.0, 1.0)
- cr.set_line_width(1)
- cr.rectangle(self.startmousex - .5, self.startmousey - .5,
- self.prevmousex - self.startmousex + 1,
- self.prevmousey - self.startmousey + 1)
- cr.stroke()
- cr.restore()
-
- def stop(self):
- x1, y1 = self.dot_widget.window2graph(self.startmousex,
- self.startmousey)
- x2, y2 = self.dot_widget.window2graph(self.stopmousex,
- self.stopmousey)
- self.dot_widget.zoom_to_area(x1, y1, x2, y2)
-
- def abort(self):
- self.dot_widget.queue_draw()
-
-
-class DotWidget(gtk.DrawingArea):
- """PyGTK widget that draws dot graphs."""
-
- __gsignals__ = {
- 'expose-event': 'override',
- 'clicked' : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_STRING, gtk.gdk.Event))
- }
-
- filter = 'dot'
-
- def __init__(self):
- gtk.DrawingArea.__init__(self)
-
- self.graph = Graph()
- self.openfilename = None
-
- self.set_flags(gtk.CAN_FOCUS)
-
- self.add_events(gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK)
- self.connect("button-press-event", self.on_area_button_press)
- self.connect("button-release-event", self.on_area_button_release)
- self.add_events(gtk.gdk.POINTER_MOTION_MASK | gtk.gdk.POINTER_MOTION_HINT_MASK | gtk.gdk.BUTTON_RELEASE_MASK)
- self.connect("motion-notify-event", self.on_area_motion_notify)
- self.connect("scroll-event", self.on_area_scroll_event)
- self.connect("size-allocate", self.on_area_size_allocate)
-
- self.connect('key-press-event', self.on_key_press_event)
-
- self.x, self.y = 0.0, 0.0
- self.zoom_ratio = 1.0
- self.zoom_to_fit_on_resize = False
- self.animation = NoAnimation(self)
- self.drag_action = NullAction(self)
- self.presstime = None
- self.highlight = None
-
- def set_filter(self, filter):
- self.filter = filter
-
- def run_filter(self, dotcode):
- if not self.filter:
- return dotcode
- p = subprocess.Popen(
- [self.filter, '-Txdot'],
- stdin=subprocess.PIPE,
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE,
- shell=False,
- universal_newlines=True
- )
- xdotcode, error = p.communicate(dotcode)
- sys.stderr.write(error)
- if p.returncode != 0:
- dialog = gtk.MessageDialog(type=gtk.MESSAGE_ERROR,
- message_format=error,
- buttons=gtk.BUTTONS_OK)
- dialog.set_title('Dot Viewer')
- dialog.run()
- dialog.destroy()
- return None
- return xdotcode
-
- def set_dotcode(self, dotcode, filename='<stdin>'):
- if isinstance(dotcode, unicode):
- dotcode = dotcode.encode('utf8')
- xdotcode = self.run_filter(dotcode)
- if xdotcode is None:
- return False
- try:
- self.set_xdotcode(xdotcode)
- except ParseError, ex:
- dialog = gtk.MessageDialog(type=gtk.MESSAGE_ERROR,
- message_format=str(ex),
- buttons=gtk.BUTTONS_OK)
- dialog.set_title('Dot Viewer')
- dialog.run()
- dialog.destroy()
- return False
- else:
- self.openfilename = filename
- return True
-
- def set_xdotcode(self, xdotcode):
- #print xdotcode
- parser = XDotParser(xdotcode)
- self.graph = parser.parse()
- self.zoom_image(self.zoom_ratio, center=True)
-
- def reload(self):
- if self.openfilename is not None:
- try:
- fp = file(self.openfilename, 'rt')
- self.set_dotcode(fp.read(), self.openfilename)
- fp.close()
- except IOError:
- pass
-
- def do_expose_event(self, event):
- cr = self.window.cairo_create()
-
- # set a clip region for the expose event
- cr.rectangle(
- event.area.x, event.area.y,
- event.area.width, event.area.height
- )
- cr.clip()
-
- cr.set_source_rgba(1.0, 1.0, 1.0, 1.0)
- cr.paint()
-
- cr.save()
- rect = self.get_allocation()
- cr.translate(0.5*rect.width, 0.5*rect.height)
- cr.scale(self.zoom_ratio, self.zoom_ratio)
- cr.translate(-self.x, -self.y)
-
- self.graph.draw(cr, highlight_items=self.highlight)
- cr.restore()
-
- self.drag_action.draw(cr)
-
- return False
-
- def get_current_pos(self):
- return self.x, self.y
-
- def set_current_pos(self, x, y):
- self.x = x
- self.y = y
- self.queue_draw()
-
- def set_highlight(self, items):
- if self.highlight != items:
- self.highlight = items
- self.queue_draw()
-
- def zoom_image(self, zoom_ratio, center=False, pos=None):
- if center:
- self.x = self.graph.width/2
- self.y = self.graph.height/2
- elif pos is not None:
- rect = self.get_allocation()
- x, y = pos
- x -= 0.5*rect.width
- y -= 0.5*rect.height
- self.x += x / self.zoom_ratio - x / zoom_ratio
- self.y += y / self.zoom_ratio - y / zoom_ratio
- self.zoom_ratio = zoom_ratio
- self.zoom_to_fit_on_resize = False
- self.queue_draw()
-
- def zoom_to_area(self, x1, y1, x2, y2):
- rect = self.get_allocation()
- width = abs(x1 - x2)
- height = abs(y1 - y2)
- self.zoom_ratio = min(
- float(rect.width)/float(width),
- float(rect.height)/float(height)
- )
- self.zoom_to_fit_on_resize = False
- self.x = (x1 + x2) / 2
- self.y = (y1 + y2) / 2
- self.queue_draw()
-
- def zoom_to_fit(self):
- rect = self.get_allocation()
- rect.x += self.ZOOM_TO_FIT_MARGIN
- rect.y += self.ZOOM_TO_FIT_MARGIN
- rect.width -= 2 * self.ZOOM_TO_FIT_MARGIN
- rect.height -= 2 * self.ZOOM_TO_FIT_MARGIN
- zoom_ratio = min(
- float(rect.width)/float(self.graph.width),
- float(rect.height)/float(self.graph.height)
- )
- self.zoom_image(zoom_ratio, center=True)
- self.zoom_to_fit_on_resize = True
-
- ZOOM_INCREMENT = 1.25
- ZOOM_TO_FIT_MARGIN = 12
-
- def on_zoom_in(self, action):
- self.zoom_image(self.zoom_ratio * self.ZOOM_INCREMENT)
-
- def on_zoom_out(self, action):
- self.zoom_image(self.zoom_ratio / self.ZOOM_INCREMENT)
-
- def on_zoom_fit(self, action):
- self.zoom_to_fit()
-
- def on_zoom_100(self, action):
- self.zoom_image(1.0)
-
- POS_INCREMENT = 100
-
- def on_key_press_event(self, widget, event):
- if event.keyval == gtk.keysyms.Left:
- self.x -= self.POS_INCREMENT/self.zoom_ratio
- self.queue_draw()
- return True
- if event.keyval == gtk.keysyms.Right:
- self.x += self.POS_INCREMENT/self.zoom_ratio
- self.queue_draw()
- return True
- if event.keyval == gtk.keysyms.Up:
- self.y -= self.POS_INCREMENT/self.zoom_ratio
- self.queue_draw()
- return True
- if event.keyval == gtk.keysyms.Down:
- self.y += self.POS_INCREMENT/self.zoom_ratio
- self.queue_draw()
- return True
- if event.keyval in (gtk.keysyms.Page_Up,
- gtk.keysyms.plus,
- gtk.keysyms.equal,
- gtk.keysyms.KP_Add):
- self.zoom_image(self.zoom_ratio * self.ZOOM_INCREMENT)
- self.queue_draw()
- return True
- if event.keyval in (gtk.keysyms.Page_Down,
- gtk.keysyms.minus,
- gtk.keysyms.KP_Subtract):
- self.zoom_image(self.zoom_ratio / self.ZOOM_INCREMENT)
- self.queue_draw()
- return True
- if event.keyval == gtk.keysyms.Escape:
- self.drag_action.abort()
- self.drag_action = NullAction(self)
- return True
- if event.keyval == gtk.keysyms.r:
- self.reload()
- return True
- if event.keyval == gtk.keysyms.q:
- gtk.main_quit()
- return True
- return False
-
- def get_drag_action(self, event):
- state = event.state
- if event.button in (1, 2): # left or middle button
- if state & gtk.gdk.CONTROL_MASK:
- return ZoomAction
- elif state & gtk.gdk.SHIFT_MASK:
- return ZoomAreaAction
- else:
- return PanAction
- return NullAction
-
- def on_area_button_press(self, area, event):
- self.animation.stop()
- self.drag_action.abort()
- action_type = self.get_drag_action(event)
- self.drag_action = action_type(self)
- self.drag_action.on_button_press(event)
- self.presstime = time.time()
- self.pressx = event.x
- self.pressy = event.y
- return False
-
- def is_click(self, event, click_fuzz=4, click_timeout=1.0):
- assert event.type == gtk.gdk.BUTTON_RELEASE
- if self.presstime is None:
- # got a button release without seeing the press?
- return False
- # XXX instead of doing this complicated logic, shouldn't we listen
- # for gtk's clicked event instead?
- deltax = self.pressx - event.x
- deltay = self.pressy - event.y
- return (time.time() < self.presstime + click_timeout
- and math.hypot(deltax, deltay) < click_fuzz)
-
- def on_area_button_release(self, area, event):
- self.drag_action.on_button_release(event)
- self.drag_action = NullAction(self)
- if event.button == 1 and self.is_click(event):
- x, y = int(event.x), int(event.y)
- url = self.get_url(x, y)
- if url is not None:
- self.emit('clicked', unicode(url.url), event)
- else:
- jump = self.get_jump(x, y)
- if jump is not None:
- self.animate_to(jump.x, jump.y)
-
- return True
- if event.button == 1 or event.button == 2:
- return True
- return False
-
- def on_area_scroll_event(self, area, event):
- if event.direction == gtk.gdk.SCROLL_UP:
- self.zoom_image(self.zoom_ratio * self.ZOOM_INCREMENT,
- pos=(event.x, event.y))
- return True
- if event.direction == gtk.gdk.SCROLL_DOWN:
- self.zoom_image(self.zoom_ratio / self.ZOOM_INCREMENT,
- pos=(event.x, event.y))
- return True
- return False
-
- def on_area_motion_notify(self, area, event):
- self.drag_action.on_motion_notify(event)
- return True
-
- def on_area_size_allocate(self, area, allocation):
- if self.zoom_to_fit_on_resize:
- self.zoom_to_fit()
-
- def animate_to(self, x, y):
- self.animation = ZoomToAnimation(self, x, y)
- self.animation.start()
-
- def window2graph(self, x, y):
- rect = self.get_allocation()
- x -= 0.5*rect.width
- y -= 0.5*rect.height
- x /= self.zoom_ratio
- y /= self.zoom_ratio
- x += self.x
- y += self.y
- return x, y
-
- def get_url(self, x, y):
- x, y = self.window2graph(x, y)
- return self.graph.get_url(x, y)
-
- def get_jump(self, x, y):
- x, y = self.window2graph(x, y)
- return self.graph.get_jump(x, y)
-
-
-class DotWindow(gtk.Window):
-
- ui = '''
- <ui>
- <toolbar name="ToolBar">
- <toolitem action="Open"/>
- <toolitem action="Reload"/>
- <separator/>
- <toolitem action="ZoomIn"/>
- <toolitem action="ZoomOut"/>
- <toolitem action="ZoomFit"/>
- <toolitem action="Zoom100"/>
- </toolbar>
- </ui>
- '''
-
- def __init__(self):
- gtk.Window.__init__(self)
-
- self.graph = Graph()
-
- window = self
-
- window.set_title('Dot Viewer')
- window.set_default_size(512, 512)
- vbox = gtk.VBox()
- window.add(vbox)
-
- self.widget = DotWidget()
-
- # Create a UIManager instance
- uimanager = self.uimanager = gtk.UIManager()
-
- # Add the accelerator group to the toplevel window
- accelgroup = uimanager.get_accel_group()
- window.add_accel_group(accelgroup)
-
- # Create an ActionGroup
- actiongroup = gtk.ActionGroup('Actions')
- self.actiongroup = actiongroup
-
- # Create actions
- actiongroup.add_actions((
- ('Open', gtk.STOCK_OPEN, None, None, None, self.on_open),
- ('Reload', gtk.STOCK_REFRESH, None, None, None, self.on_reload),
- ('ZoomIn', gtk.STOCK_ZOOM_IN, None, None, None, self.widget.on_zoom_in),
- ('ZoomOut', gtk.STOCK_ZOOM_OUT, None, None, None, self.widget.on_zoom_out),
- ('ZoomFit', gtk.STOCK_ZOOM_FIT, None, None, None, self.widget.on_zoom_fit),
- ('Zoom100', gtk.STOCK_ZOOM_100, None, None, None, self.widget.on_zoom_100),
- ))
-
- # Add the actiongroup to the uimanager
- uimanager.insert_action_group(actiongroup, 0)
-
- # Add a UI descrption
- uimanager.add_ui_from_string(self.ui)
-
- # Create a Toolbar
- toolbar = uimanager.get_widget('/ToolBar')
- vbox.pack_start(toolbar, False)
-
- vbox.pack_start(self.widget)
-
- self.set_focus(self.widget)
-
- self.show_all()
-
- def update(self, filename):
- import os
- if not hasattr(self, "last_mtime"):
- self.last_mtime = None
-
- current_mtime = os.stat(filename).st_mtime
- if current_mtime != self.last_mtime:
- self.last_mtime = current_mtime
- self.open_file(filename)
-
- return True
-
- def set_filter(self, filter):
- self.widget.set_filter(filter)
-
- def set_dotcode(self, dotcode, filename='<stdin>'):
- if self.widget.set_dotcode(dotcode, filename):
- self.set_title(os.path.basename(filename) + ' - Dot Viewer')
- self.widget.zoom_to_fit()
-
- def set_xdotcode(self, xdotcode, filename='<stdin>'):
- if self.widget.set_xdotcode(xdotcode):
- self.set_title(os.path.basename(filename) + ' - Dot Viewer')
- self.widget.zoom_to_fit()
-
- def open_file(self, filename):
- try:
- fp = file(filename, 'rt')
- self.set_dotcode(fp.read(), filename)
- fp.close()
- except IOError, ex:
- dlg = gtk.MessageDialog(type=gtk.MESSAGE_ERROR,
- message_format=str(ex),
- buttons=gtk.BUTTONS_OK)
- dlg.set_title('Dot Viewer')
- dlg.run()
- dlg.destroy()
-
- def on_open(self, action):
- chooser = gtk.FileChooserDialog(title="Open dot File",
- action=gtk.FILE_CHOOSER_ACTION_OPEN,
- buttons=(gtk.STOCK_CANCEL,
- gtk.RESPONSE_CANCEL,
- gtk.STOCK_OPEN,
- gtk.RESPONSE_OK))
- chooser.set_default_response(gtk.RESPONSE_OK)
- filter = gtk.FileFilter()
- filter.set_name("Graphviz dot files")
- filter.add_pattern("*.dot")
- chooser.add_filter(filter)
- filter = gtk.FileFilter()
- filter.set_name("All files")
- filter.add_pattern("*")
- chooser.add_filter(filter)
- if chooser.run() == gtk.RESPONSE_OK:
- filename = chooser.get_filename()
- chooser.destroy()
- self.open_file(filename)
- else:
- chooser.destroy()
-
- def on_reload(self, action):
- self.widget.reload()
-
-
-def main():
- import optparse
-
- parser = optparse.OptionParser(
- usage='\n\t%prog [file]',
- version='%%prog %s' % __version__)
- parser.add_option(
- '-f', '--filter',
- type='choice', choices=('dot', 'neato', 'twopi', 'circo', 'fdp'),
- dest='filter', default='dot',
- help='graphviz filter: dot, neato, twopi, circo, or fdp [default: %default]')
- parser.add_option(
- '-n', '--no-filter',
- action='store_const', const=None, dest='filter',
- help='assume input is already filtered into xdot format (use e.g. dot -Txdot)')
-
- (options, args) = parser.parse_args(sys.argv[1:])
- if len(args) > 1:
- parser.error('incorrect number of arguments')
-
- win = DotWindow()
- win.connect('destroy', gtk.main_quit)
- win.set_filter(options.filter)
- if len(args) >= 1:
- if args[0] == '-':
- win.set_dotcode(sys.stdin.read())
- else:
- win.open_file(args[0])
- gobject.timeout_add(1000, win.update, args[0])
- gtk.main()
-
-
-# Apache-Style Software License for ColorBrewer software and ColorBrewer Color
-# Schemes, Version 1.1
-#
-# Copyright (c) 2002 Cynthia Brewer, Mark Harrower, and The Pennsylvania State
-# University. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# 1. Redistributions as source code must retain the above copyright notice,
-# this list of conditions and the following disclaimer.
-#
-# 2. The end-user documentation included with the redistribution, if any,
-# must include the following acknowledgment:
-#
-# This product includes color specifications and designs developed by
-# Cynthia Brewer (http://colorbrewer.org/).
-#
-# Alternately, this acknowledgment may appear in the software itself, if and
-# wherever such third-party acknowledgments normally appear.
-#
-# 3. The name "ColorBrewer" must not be used to endorse or promote products
-# derived from this software without prior written permission. For written
-# permission, please contact Cynthia Brewer at cbrewer@psu.edu.
-#
-# 4. Products derived from this software may not be called "ColorBrewer",
-# nor may "ColorBrewer" appear in their name, without prior written
-# permission of Cynthia Brewer.
-#
-# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES,
-# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CYNTHIA
-# BREWER, MARK HARROWER, OR THE PENNSYLVANIA STATE UNIVERSITY BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-brewer_colors = {
- 'accent3': [(127, 201, 127), (190, 174, 212), (253, 192, 134)],
- 'accent4': [(127, 201, 127), (190, 174, 212), (253, 192, 134), (255, 255, 153)],
- 'accent5': [(127, 201, 127), (190, 174, 212), (253, 192, 134), (255, 255, 153), (56, 108, 176)],
- 'accent6': [(127, 201, 127), (190, 174, 212), (253, 192, 134), (255, 255, 153), (56, 108, 176), (240, 2, 127)],
- 'accent7': [(127, 201, 127), (190, 174, 212), (253, 192, 134), (255, 255, 153), (56, 108, 176), (240, 2, 127), (191, 91, 23)],
- 'accent8': [(127, 201, 127), (190, 174, 212), (253, 192, 134), (255, 255, 153), (56, 108, 176), (240, 2, 127), (191, 91, 23), (102, 102, 102)],
- 'blues3': [(222, 235, 247), (158, 202, 225), (49, 130, 189)],
- 'blues4': [(239, 243, 255), (189, 215, 231), (107, 174, 214), (33, 113, 181)],
- 'blues5': [(239, 243, 255), (189, 215, 231), (107, 174, 214), (49, 130, 189), (8, 81, 156)],
- 'blues6': [(239, 243, 255), (198, 219, 239), (158, 202, 225), (107, 174, 214), (49, 130, 189), (8, 81, 156)],
- 'blues7': [(239, 243, 255), (198, 219, 239), (158, 202, 225), (107, 174, 214), (66, 146, 198), (33, 113, 181), (8, 69, 148)],
- 'blues8': [(247, 251, 255), (222, 235, 247), (198, 219, 239), (158, 202, 225), (107, 174, 214), (66, 146, 198), (33, 113, 181), (8, 69, 148)],
- 'blues9': [(247, 251, 255), (222, 235, 247), (198, 219, 239), (158, 202, 225), (107, 174, 214), (66, 146, 198), (33, 113, 181), (8, 81, 156), (8, 48, 107)],
- 'brbg10': [(84, 48, 5), (0, 60, 48), (140, 81, 10), (191, 129, 45), (223, 194, 125), (246, 232, 195), (199, 234, 229), (128, 205, 193), (53, 151, 143), (1, 102, 94)],
- 'brbg11': [(84, 48, 5), (1, 102, 94), (0, 60, 48), (140, 81, 10), (191, 129, 45), (223, 194, 125), (246, 232, 195), (245, 245, 245), (199, 234, 229), (128, 205, 193), (53, 151, 143)],
- 'brbg3': [(216, 179, 101), (245, 245, 245), (90, 180, 172)],
- 'brbg4': [(166, 97, 26), (223, 194, 125), (128, 205, 193), (1, 133, 113)],
- 'brbg5': [(166, 97, 26), (223, 194, 125), (245, 245, 245), (128, 205, 193), (1, 133, 113)],
- 'brbg6': [(140, 81, 10), (216, 179, 101), (246, 232, 195), (199, 234, 229), (90, 180, 172), (1, 102, 94)],
- 'brbg7': [(140, 81, 10), (216, 179, 101), (246, 232, 195), (245, 245, 245), (199, 234, 229), (90, 180, 172), (1, 102, 94)],
- 'brbg8': [(140, 81, 10), (191, 129, 45), (223, 194, 125), (246, 232, 195), (199, 234, 229), (128, 205, 193), (53, 151, 143), (1, 102, 94)],
- 'brbg9': [(140, 81, 10), (191, 129, 45), (223, 194, 125), (246, 232, 195), (245, 245, 245), (199, 234, 229), (128, 205, 193), (53, 151, 143), (1, 102, 94)],
- 'bugn3': [(229, 245, 249), (153, 216, 201), (44, 162, 95)],
- 'bugn4': [(237, 248, 251), (178, 226, 226), (102, 194, 164), (35, 139, 69)],
- 'bugn5': [(237, 248, 251), (178, 226, 226), (102, 194, 164), (44, 162, 95), (0, 109, 44)],
- 'bugn6': [(237, 248, 251), (204, 236, 230), (153, 216, 201), (102, 194, 164), (44, 162, 95), (0, 109, 44)],
- 'bugn7': [(237, 248, 251), (204, 236, 230), (153, 216, 201), (102, 194, 164), (65, 174, 118), (35, 139, 69), (0, 88, 36)],
- 'bugn8': [(247, 252, 253), (229, 245, 249), (204, 236, 230), (153, 216, 201), (102, 194, 164), (65, 174, 118), (35, 139, 69), (0, 88, 36)],
- 'bugn9': [(247, 252, 253), (229, 245, 249), (204, 236, 230), (153, 216, 201), (102, 194, 164), (65, 174, 118), (35, 139, 69), (0, 109, 44), (0, 68, 27)],
- 'bupu3': [(224, 236, 244), (158, 188, 218), (136, 86, 167)],
- 'bupu4': [(237, 248, 251), (179, 205, 227), (140, 150, 198), (136, 65, 157)],
- 'bupu5': [(237, 248, 251), (179, 205, 227), (140, 150, 198), (136, 86, 167), (129, 15, 124)],
- 'bupu6': [(237, 248, 251), (191, 211, 230), (158, 188, 218), (140, 150, 198), (136, 86, 167), (129, 15, 124)],
- 'bupu7': [(237, 248, 251), (191, 211, 230), (158, 188, 218), (140, 150, 198), (140, 107, 177), (136, 65, 157), (110, 1, 107)],
- 'bupu8': [(247, 252, 253), (224, 236, 244), (191, 211, 230), (158, 188, 218), (140, 150, 198), (140, 107, 177), (136, 65, 157), (110, 1, 107)],
- 'bupu9': [(247, 252, 253), (224, 236, 244), (191, 211, 230), (158, 188, 218), (140, 150, 198), (140, 107, 177), (136, 65, 157), (129, 15, 124), (77, 0, 75)],
- 'dark23': [(27, 158, 119), (217, 95, 2), (117, 112, 179)],
- 'dark24': [(27, 158, 119), (217, 95, 2), (117, 112, 179), (231, 41, 138)],
- 'dark25': [(27, 158, 119), (217, 95, 2), (117, 112, 179), (231, 41, 138), (102, 166, 30)],
- 'dark26': [(27, 158, 119), (217, 95, 2), (117, 112, 179), (231, 41, 138), (102, 166, 30), (230, 171, 2)],
- 'dark27': [(27, 158, 119), (217, 95, 2), (117, 112, 179), (231, 41, 138), (102, 166, 30), (230, 171, 2), (166, 118, 29)],
- 'dark28': [(27, 158, 119), (217, 95, 2), (117, 112, 179), (231, 41, 138), (102, 166, 30), (230, 171, 2), (166, 118, 29), (102, 102, 102)],
- 'gnbu3': [(224, 243, 219), (168, 221, 181), (67, 162, 202)],
- 'gnbu4': [(240, 249, 232), (186, 228, 188), (123, 204, 196), (43, 140, 190)],
- 'gnbu5': [(240, 249, 232), (186, 228, 188), (123, 204, 196), (67, 162, 202), (8, 104, 172)],
- 'gnbu6': [(240, 249, 232), (204, 235, 197), (168, 221, 181), (123, 204, 196), (67, 162, 202), (8, 104, 172)],
- 'gnbu7': [(240, 249, 232), (204, 235, 197), (168, 221, 181), (123, 204, 196), (78, 179, 211), (43, 140, 190), (8, 88, 158)],
- 'gnbu8': [(247, 252, 240), (224, 243, 219), (204, 235, 197), (168, 221, 181), (123, 204, 196), (78, 179, 211), (43, 140, 190), (8, 88, 158)],
- 'gnbu9': [(247, 252, 240), (224, 243, 219), (204, 235, 197), (168, 221, 181), (123, 204, 196), (78, 179, 211), (43, 140, 190), (8, 104, 172), (8, 64, 129)],
- 'greens3': [(229, 245, 224), (161, 217, 155), (49, 163, 84)],
- 'greens4': [(237, 248, 233), (186, 228, 179), (116, 196, 118), (35, 139, 69)],
- 'greens5': [(237, 248, 233), (186, 228, 179), (116, 196, 118), (49, 163, 84), (0, 109, 44)],
- 'greens6': [(237, 248, 233), (199, 233, 192), (161, 217, 155), (116, 196, 118), (49, 163, 84), (0, 109, 44)],
- 'greens7': [(237, 248, 233), (199, 233, 192), (161, 217, 155), (116, 196, 118), (65, 171, 93), (35, 139, 69), (0, 90, 50)],
- 'greens8': [(247, 252, 245), (229, 245, 224), (199, 233, 192), (161, 217, 155), (116, 196, 118), (65, 171, 93), (35, 139, 69), (0, 90, 50)],
- 'greens9': [(247, 252, 245), (229, 245, 224), (199, 233, 192), (161, 217, 155), (116, 196, 118), (65, 171, 93), (35, 139, 69), (0, 109, 44), (0, 68, 27)],
- 'greys3': [(240, 240, 240), (189, 189, 189), (99, 99, 99)],
- 'greys4': [(247, 247, 247), (204, 204, 204), (150, 150, 150), (82, 82, 82)],
- 'greys5': [(247, 247, 247), (204, 204, 204), (150, 150, 150), (99, 99, 99), (37, 37, 37)],
- 'greys6': [(247, 247, 247), (217, 217, 217), (189, 189, 189), (150, 150, 150), (99, 99, 99), (37, 37, 37)],
- 'greys7': [(247, 247, 247), (217, 217, 217), (189, 189, 189), (150, 150, 150), (115, 115, 115), (82, 82, 82), (37, 37, 37)],
- 'greys8': [(255, 255, 255), (240, 240, 240), (217, 217, 217), (189, 189, 189), (150, 150, 150), (115, 115, 115), (82, 82, 82), (37, 37, 37)],
- 'greys9': [(255, 255, 255), (240, 240, 240), (217, 217, 217), (189, 189, 189), (150, 150, 150), (115, 115, 115), (82, 82, 82), (37, 37, 37), (0, 0, 0)],
- 'oranges3': [(254, 230, 206), (253, 174, 107), (230, 85, 13)],
- 'oranges4': [(254, 237, 222), (253, 190, 133), (253, 141, 60), (217, 71, 1)],
- 'oranges5': [(254, 237, 222), (253, 190, 133), (253, 141, 60), (230, 85, 13), (166, 54, 3)],
- 'oranges6': [(254, 237, 222), (253, 208, 162), (253, 174, 107), (253, 141, 60), (230, 85, 13), (166, 54, 3)],
- 'oranges7': [(254, 237, 222), (253, 208, 162), (253, 174, 107), (253, 141, 60), (241, 105, 19), (217, 72, 1), (140, 45, 4)],
- 'oranges8': [(255, 245, 235), (254, 230, 206), (253, 208, 162), (253, 174, 107), (253, 141, 60), (241, 105, 19), (217, 72, 1), (140, 45, 4)],
- 'oranges9': [(255, 245, 235), (254, 230, 206), (253, 208, 162), (253, 174, 107), (253, 141, 60), (241, 105, 19), (217, 72, 1), (166, 54, 3), (127, 39, 4)],
- 'orrd3': [(254, 232, 200), (253, 187, 132), (227, 74, 51)],
- 'orrd4': [(254, 240, 217), (253, 204, 138), (252, 141, 89), (215, 48, 31)],
- 'orrd5': [(254, 240, 217), (253, 204, 138), (252, 141, 89), (227, 74, 51), (179, 0, 0)],
- 'orrd6': [(254, 240, 217), (253, 212, 158), (253, 187, 132), (252, 141, 89), (227, 74, 51), (179, 0, 0)],
- 'orrd7': [(254, 240, 217), (253, 212, 158), (253, 187, 132), (252, 141, 89), (239, 101, 72), (215, 48, 31), (153, 0, 0)],
- 'orrd8': [(255, 247, 236), (254, 232, 200), (253, 212, 158), (253, 187, 132), (252, 141, 89), (239, 101, 72), (215, 48, 31), (153, 0, 0)],
- 'orrd9': [(255, 247, 236), (254, 232, 200), (253, 212, 158), (253, 187, 132), (252, 141, 89), (239, 101, 72), (215, 48, 31), (179, 0, 0), (127, 0, 0)],
- 'paired10': [(166, 206, 227), (106, 61, 154), (31, 120, 180), (178, 223, 138), (51, 160, 44), (251, 154, 153), (227, 26, 28), (253, 191, 111), (255, 127, 0), (202, 178, 214)],
- 'paired11': [(166, 206, 227), (106, 61, 154), (255, 255, 153), (31, 120, 180), (178, 223, 138), (51, 160, 44), (251, 154, 153), (227, 26, 28), (253, 191, 111), (255, 127, 0), (202, 178, 214)],
- 'paired12': [(166, 206, 227), (106, 61, 154), (255, 255, 153), (177, 89, 40), (31, 120, 180), (178, 223, 138), (51, 160, 44), (251, 154, 153), (227, 26, 28), (253, 191, 111), (255, 127, 0), (202, 178, 214)],
- 'paired3': [(166, 206, 227), (31, 120, 180), (178, 223, 138)],
- 'paired4': [(166, 206, 227), (31, 120, 180), (178, 223, 138), (51, 160, 44)],
- 'paired5': [(166, 206, 227), (31, 120, 180), (178, 223, 138), (51, 160, 44), (251, 154, 153)],
- 'paired6': [(166, 206, 227), (31, 120, 180), (178, 223, 138), (51, 160, 44), (251, 154, 153), (227, 26, 28)],
- 'paired7': [(166, 206, 227), (31, 120, 180), (178, 223, 138), (51, 160, 44), (251, 154, 153), (227, 26, 28), (253, 191, 111)],
- 'paired8': [(166, 206, 227), (31, 120, 180), (178, 223, 138), (51, 160, 44), (251, 154, 153), (227, 26, 28), (253, 191, 111), (255, 127, 0)],
- 'paired9': [(166, 206, 227), (31, 120, 180), (178, 223, 138), (51, 160, 44), (251, 154, 153), (227, 26, 28), (253, 191, 111), (255, 127, 0), (202, 178, 214)],
- 'pastel13': [(251, 180, 174), (179, 205, 227), (204, 235, 197)],
- 'pastel14': [(251, 180, 174), (179, 205, 227), (204, 235, 197), (222, 203, 228)],
- 'pastel15': [(251, 180, 174), (179, 205, 227), (204, 235, 197), (222, 203, 228), (254, 217, 166)],
- 'pastel16': [(251, 180, 174), (179, 205, 227), (204, 235, 197), (222, 203, 228), (254, 217, 166), (255, 255, 204)],
- 'pastel17': [(251, 180, 174), (179, 205, 227), (204, 235, 197), (222, 203, 228), (254, 217, 166), (255, 255, 204), (229, 216, 189)],
- 'pastel18': [(251, 180, 174), (179, 205, 227), (204, 235, 197), (222, 203, 228), (254, 217, 166), (255, 255, 204), (229, 216, 189), (253, 218, 236)],
- 'pastel19': [(251, 180, 174), (179, 205, 227), (204, 235, 197), (222, 203, 228), (254, 217, 166), (255, 255, 204), (229, 216, 189), (253, 218, 236), (242, 242, 242)],
- 'pastel23': [(179, 226, 205), (253, 205, 172), (203, 213, 232)],
- 'pastel24': [(179, 226, 205), (253, 205, 172), (203, 213, 232), (244, 202, 228)],
- 'pastel25': [(179, 226, 205), (253, 205, 172), (203, 213, 232), (244, 202, 228), (230, 245, 201)],
- 'pastel26': [(179, 226, 205), (253, 205, 172), (203, 213, 232), (244, 202, 228), (230, 245, 201), (255, 242, 174)],
- 'pastel27': [(179, 226, 205), (253, 205, 172), (203, 213, 232), (244, 202, 228), (230, 245, 201), (255, 242, 174), (241, 226, 204)],
- 'pastel28': [(179, 226, 205), (253, 205, 172), (203, 213, 232), (244, 202, 228), (230, 245, 201), (255, 242, 174), (241, 226, 204), (204, 204, 204)],
- 'piyg10': [(142, 1, 82), (39, 100, 25), (197, 27, 125), (222, 119, 174), (241, 182, 218), (253, 224, 239), (230, 245, 208), (184, 225, 134), (127, 188, 65), (77, 146, 33)],
- 'piyg11': [(142, 1, 82), (77, 146, 33), (39, 100, 25), (197, 27, 125), (222, 119, 174), (241, 182, 218), (253, 224, 239), (247, 247, 247), (230, 245, 208), (184, 225, 134), (127, 188, 65)],
- 'piyg3': [(233, 163, 201), (247, 247, 247), (161, 215, 106)],
- 'piyg4': [(208, 28, 139), (241, 182, 218), (184, 225, 134), (77, 172, 38)],
- 'piyg5': [(208, 28, 139), (241, 182, 218), (247, 247, 247), (184, 225, 134), (77, 172, 38)],
- 'piyg6': [(197, 27, 125), (233, 163, 201), (253, 224, 239), (230, 245, 208), (161, 215, 106), (77, 146, 33)],
- 'piyg7': [(197, 27, 125), (233, 163, 201), (253, 224, 239), (247, 247, 247), (230, 245, 208), (161, 215, 106), (77, 146, 33)],
- 'piyg8': [(197, 27, 125), (222, 119, 174), (241, 182, 218), (253, 224, 239), (230, 245, 208), (184, 225, 134), (127, 188, 65), (77, 146, 33)],
- 'piyg9': [(197, 27, 125), (222, 119, 174), (241, 182, 218), (253, 224, 239), (247, 247, 247), (230, 245, 208), (184, 225, 134), (127, 188, 65), (77, 146, 33)],
- 'prgn10': [(64, 0, 75), (0, 68, 27), (118, 42, 131), (153, 112, 171), (194, 165, 207), (231, 212, 232), (217, 240, 211), (166, 219, 160), (90, 174, 97), (27, 120, 55)],
- 'prgn11': [(64, 0, 75), (27, 120, 55), (0, 68, 27), (118, 42, 131), (153, 112, 171), (194, 165, 207), (231, 212, 232), (247, 247, 247), (217, 240, 211), (166, 219, 160), (90, 174, 97)],
- 'prgn3': [(175, 141, 195), (247, 247, 247), (127, 191, 123)],
- 'prgn4': [(123, 50, 148), (194, 165, 207), (166, 219, 160), (0, 136, 55)],
- 'prgn5': [(123, 50, 148), (194, 165, 207), (247, 247, 247), (166, 219, 160), (0, 136, 55)],
- 'prgn6': [(118, 42, 131), (175, 141, 195), (231, 212, 232), (217, 240, 211), (127, 191, 123), (27, 120, 55)],
- 'prgn7': [(118, 42, 131), (175, 141, 195), (231, 212, 232), (247, 247, 247), (217, 240, 211), (127, 191, 123), (27, 120, 55)],
- 'prgn8': [(118, 42, 131), (153, 112, 171), (194, 165, 207), (231, 212, 232), (217, 240, 211), (166, 219, 160), (90, 174, 97), (27, 120, 55)],
- 'prgn9': [(118, 42, 131), (153, 112, 171), (194, 165, 207), (231, 212, 232), (247, 247, 247), (217, 240, 211), (166, 219, 160), (90, 174, 97), (27, 120, 55)],
- 'pubu3': [(236, 231, 242), (166, 189, 219), (43, 140, 190)],
- 'pubu4': [(241, 238, 246), (189, 201, 225), (116, 169, 207), (5, 112, 176)],
- 'pubu5': [(241, 238, 246), (189, 201, 225), (116, 169, 207), (43, 140, 190), (4, 90, 141)],
- 'pubu6': [(241, 238, 246), (208, 209, 230), (166, 189, 219), (116, 169, 207), (43, 140, 190), (4, 90, 141)],
- 'pubu7': [(241, 238, 246), (208, 209, 230), (166, 189, 219), (116, 169, 207), (54, 144, 192), (5, 112, 176), (3, 78, 123)],
- 'pubu8': [(255, 247, 251), (236, 231, 242), (208, 209, 230), (166, 189, 219), (116, 169, 207), (54, 144, 192), (5, 112, 176), (3, 78, 123)],
- 'pubu9': [(255, 247, 251), (236, 231, 242), (208, 209, 230), (166, 189, 219), (116, 169, 207), (54, 144, 192), (5, 112, 176), (4, 90, 141), (2, 56, 88)],
- 'pubugn3': [(236, 226, 240), (166, 189, 219), (28, 144, 153)],
- 'pubugn4': [(246, 239, 247), (189, 201, 225), (103, 169, 207), (2, 129, 138)],
- 'pubugn5': [(246, 239, 247), (189, 201, 225), (103, 169, 207), (28, 144, 153), (1, 108, 89)],
- 'pubugn6': [(246, 239, 247), (208, 209, 230), (166, 189, 219), (103, 169, 207), (28, 144, 153), (1, 108, 89)],
- 'pubugn7': [(246, 239, 247), (208, 209, 230), (166, 189, 219), (103, 169, 207), (54, 144, 192), (2, 129, 138), (1, 100, 80)],
- 'pubugn8': [(255, 247, 251), (236, 226, 240), (208, 209, 230), (166, 189, 219), (103, 169, 207), (54, 144, 192), (2, 129, 138), (1, 100, 80)],
- 'pubugn9': [(255, 247, 251), (236, 226, 240), (208, 209, 230), (166, 189, 219), (103, 169, 207), (54, 144, 192), (2, 129, 138), (1, 108, 89), (1, 70, 54)],
- 'puor10': [(127, 59, 8), (45, 0, 75), (179, 88, 6), (224, 130, 20), (253, 184, 99), (254, 224, 182), (216, 218, 235), (178, 171, 210), (128, 115, 172), (84, 39, 136)],
- 'puor11': [(127, 59, 8), (84, 39, 136), (45, 0, 75), (179, 88, 6), (224, 130, 20), (253, 184, 99), (254, 224, 182), (247, 247, 247), (216, 218, 235), (178, 171, 210), (128, 115, 172)],
- 'puor3': [(241, 163, 64), (247, 247, 247), (153, 142, 195)],
- 'puor4': [(230, 97, 1), (253, 184, 99), (178, 171, 210), (94, 60, 153)],
- 'puor5': [(230, 97, 1), (253, 184, 99), (247, 247, 247), (178, 171, 210), (94, 60, 153)],
- 'puor6': [(179, 88, 6), (241, 163, 64), (254, 224, 182), (216, 218, 235), (153, 142, 195), (84, 39, 136)],
- 'puor7': [(179, 88, 6), (241, 163, 64), (254, 224, 182), (247, 247, 247), (216, 218, 235), (153, 142, 195), (84, 39, 136)],
- 'puor8': [(179, 88, 6), (224, 130, 20), (253, 184, 99), (254, 224, 182), (216, 218, 235), (178, 171, 210), (128, 115, 172), (84, 39, 136)],
- 'puor9': [(179, 88, 6), (224, 130, 20), (253, 184, 99), (254, 224, 182), (247, 247, 247), (216, 218, 235), (178, 171, 210), (128, 115, 172), (84, 39, 136)],
- 'purd3': [(231, 225, 239), (201, 148, 199), (221, 28, 119)],
- 'purd4': [(241, 238, 246), (215, 181, 216), (223, 101, 176), (206, 18, 86)],
- 'purd5': [(241, 238, 246), (215, 181, 216), (223, 101, 176), (221, 28, 119), (152, 0, 67)],
- 'purd6': [(241, 238, 246), (212, 185, 218), (201, 148, 199), (223, 101, 176), (221, 28, 119), (152, 0, 67)],
- 'purd7': [(241, 238, 246), (212, 185, 218), (201, 148, 199), (223, 101, 176), (231, 41, 138), (206, 18, 86), (145, 0, 63)],
- 'purd8': [(247, 244, 249), (231, 225, 239), (212, 185, 218), (201, 148, 199), (223, 101, 176), (231, 41, 138), (206, 18, 86), (145, 0, 63)],
- 'purd9': [(247, 244, 249), (231, 225, 239), (212, 185, 218), (201, 148, 199), (223, 101, 176), (231, 41, 138), (206, 18, 86), (152, 0, 67), (103, 0, 31)],
- 'purples3': [(239, 237, 245), (188, 189, 220), (117, 107, 177)],
- 'purples4': [(242, 240, 247), (203, 201, 226), (158, 154, 200), (106, 81, 163)],
- 'purples5': [(242, 240, 247), (203, 201, 226), (158, 154, 200), (117, 107, 177), (84, 39, 143)],
- 'purples6': [(242, 240, 247), (218, 218, 235), (188, 189, 220), (158, 154, 200), (117, 107, 177), (84, 39, 143)],
- 'purples7': [(242, 240, 247), (218, 218, 235), (188, 189, 220), (158, 154, 200), (128, 125, 186), (106, 81, 163), (74, 20, 134)],
- 'purples8': [(252, 251, 253), (239, 237, 245), (218, 218, 235), (188, 189, 220), (158, 154, 200), (128, 125, 186), (106, 81, 163), (74, 20, 134)],
- 'purples9': [(252, 251, 253), (239, 237, 245), (218, 218, 235), (188, 189, 220), (158, 154, 200), (128, 125, 186), (106, 81, 163), (84, 39, 143), (63, 0, 125)],
- 'rdbu10': [(103, 0, 31), (5, 48, 97), (178, 24, 43), (214, 96, 77), (244, 165, 130), (253, 219, 199), (209, 229, 240), (146, 197, 222), (67, 147, 195), (33, 102, 172)],
- 'rdbu11': [(103, 0, 31), (33, 102, 172), (5, 48, 97), (178, 24, 43), (214, 96, 77), (244, 165, 130), (253, 219, 199), (247, 247, 247), (209, 229, 240), (146, 197, 222), (67, 147, 195)],
- 'rdbu3': [(239, 138, 98), (247, 247, 247), (103, 169, 207)],
- 'rdbu4': [(202, 0, 32), (244, 165, 130), (146, 197, 222), (5, 113, 176)],
- 'rdbu5': [(202, 0, 32), (244, 165, 130), (247, 247, 247), (146, 197, 222), (5, 113, 176)],
- 'rdbu6': [(178, 24, 43), (239, 138, 98), (253, 219, 199), (209, 229, 240), (103, 169, 207), (33, 102, 172)],
- 'rdbu7': [(178, 24, 43), (239, 138, 98), (253, 219, 199), (247, 247, 247), (209, 229, 240), (103, 169, 207), (33, 102, 172)],
- 'rdbu8': [(178, 24, 43), (214, 96, 77), (244, 165, 130), (253, 219, 199), (209, 229, 240), (146, 197, 222), (67, 147, 195), (33, 102, 172)],
- 'rdbu9': [(178, 24, 43), (214, 96, 77), (244, 165, 130), (253, 219, 199), (247, 247, 247), (209, 229, 240), (146, 197, 222), (67, 147, 195), (33, 102, 172)],
- 'rdgy10': [(103, 0, 31), (26, 26, 26), (178, 24, 43), (214, 96, 77), (244, 165, 130), (253, 219, 199), (224, 224, 224), (186, 186, 186), (135, 135, 135), (77, 77, 77)],
- 'rdgy11': [(103, 0, 31), (77, 77, 77), (26, 26, 26), (178, 24, 43), (214, 96, 77), (244, 165, 130), (253, 219, 199), (255, 255, 255), (224, 224, 224), (186, 186, 186), (135, 135, 135)],
- 'rdgy3': [(239, 138, 98), (255, 255, 255), (153, 153, 153)],
- 'rdgy4': [(202, 0, 32), (244, 165, 130), (186, 186, 186), (64, 64, 64)],
- 'rdgy5': [(202, 0, 32), (244, 165, 130), (255, 255, 255), (186, 186, 186), (64, 64, 64)],
- 'rdgy6': [(178, 24, 43), (239, 138, 98), (253, 219, 199), (224, 224, 224), (153, 153, 153), (77, 77, 77)],
- 'rdgy7': [(178, 24, 43), (239, 138, 98), (253, 219, 199), (255, 255, 255), (224, 224, 224), (153, 153, 153), (77, 77, 77)],
- 'rdgy8': [(178, 24, 43), (214, 96, 77), (244, 165, 130), (253, 219, 199), (224, 224, 224), (186, 186, 186), (135, 135, 135), (77, 77, 77)],
- 'rdgy9': [(178, 24, 43), (214, 96, 77), (244, 165, 130), (253, 219, 199), (255, 255, 255), (224, 224, 224), (186, 186, 186), (135, 135, 135), (77, 77, 77)],
- 'rdpu3': [(253, 224, 221), (250, 159, 181), (197, 27, 138)],
- 'rdpu4': [(254, 235, 226), (251, 180, 185), (247, 104, 161), (174, 1, 126)],
- 'rdpu5': [(254, 235, 226), (251, 180, 185), (247, 104, 161), (197, 27, 138), (122, 1, 119)],
- 'rdpu6': [(254, 235, 226), (252, 197, 192), (250, 159, 181), (247, 104, 161), (197, 27, 138), (122, 1, 119)],
- 'rdpu7': [(254, 235, 226), (252, 197, 192), (250, 159, 181), (247, 104, 161), (221, 52, 151), (174, 1, 126), (122, 1, 119)],
- 'rdpu8': [(255, 247, 243), (253, 224, 221), (252, 197, 192), (250, 159, 181), (247, 104, 161), (221, 52, 151), (174, 1, 126), (122, 1, 119)],
- 'rdpu9': [(255, 247, 243), (253, 224, 221), (252, 197, 192), (250, 159, 181), (247, 104, 161), (221, 52, 151), (174, 1, 126), (122, 1, 119), (73, 0, 106)],
- 'rdylbu10': [(165, 0, 38), (49, 54, 149), (215, 48, 39), (244, 109, 67), (253, 174, 97), (254, 224, 144), (224, 243, 248), (171, 217, 233), (116, 173, 209), (69, 117, 180)],
- 'rdylbu11': [(165, 0, 38), (69, 117, 180), (49, 54, 149), (215, 48, 39), (244, 109, 67), (253, 174, 97), (254, 224, 144), (255, 255, 191), (224, 243, 248), (171, 217, 233), (116, 173, 209)],
- 'rdylbu3': [(252, 141, 89), (255, 255, 191), (145, 191, 219)],
- 'rdylbu4': [(215, 25, 28), (253, 174, 97), (171, 217, 233), (44, 123, 182)],
- 'rdylbu5': [(215, 25, 28), (253, 174, 97), (255, 255, 191), (171, 217, 233), (44, 123, 182)],
- 'rdylbu6': [(215, 48, 39), (252, 141, 89), (254, 224, 144), (224, 243, 248), (145, 191, 219), (69, 117, 180)],
- 'rdylbu7': [(215, 48, 39), (252, 141, 89), (254, 224, 144), (255, 255, 191), (224, 243, 248), (145, 191, 219), (69, 117, 180)],
- 'rdylbu8': [(215, 48, 39), (244, 109, 67), (253, 174, 97), (254, 224, 144), (224, 243, 248), (171, 217, 233), (116, 173, 209), (69, 117, 180)],
- 'rdylbu9': [(215, 48, 39), (244, 109, 67), (253, 174, 97), (254, 224, 144), (255, 255, 191), (224, 243, 248), (171, 217, 233), (116, 173, 209), (69, 117, 180)],
- 'rdylgn10': [(165, 0, 38), (0, 104, 55), (215, 48, 39), (244, 109, 67), (253, 174, 97), (254, 224, 139), (217, 239, 139), (166, 217, 106), (102, 189, 99), (26, 152, 80)],
- 'rdylgn11': [(165, 0, 38), (26, 152, 80), (0, 104, 55), (215, 48, 39), (244, 109, 67), (253, 174, 97), (254, 224, 139), (255, 255, 191), (217, 239, 139), (166, 217, 106), (102, 189, 99)],
- 'rdylgn3': [(252, 141, 89), (255, 255, 191), (145, 207, 96)],
- 'rdylgn4': [(215, 25, 28), (253, 174, 97), (166, 217, 106), (26, 150, 65)],
- 'rdylgn5': [(215, 25, 28), (253, 174, 97), (255, 255, 191), (166, 217, 106), (26, 150, 65)],
- 'rdylgn6': [(215, 48, 39), (252, 141, 89), (254, 224, 139), (217, 239, 139), (145, 207, 96), (26, 152, 80)],
- 'rdylgn7': [(215, 48, 39), (252, 141, 89), (254, 224, 139), (255, 255, 191), (217, 239, 139), (145, 207, 96), (26, 152, 80)],
- 'rdylgn8': [(215, 48, 39), (244, 109, 67), (253, 174, 97), (254, 224, 139), (217, 239, 139), (166, 217, 106), (102, 189, 99), (26, 152, 80)],
- 'rdylgn9': [(215, 48, 39), (244, 109, 67), (253, 174, 97), (254, 224, 139), (255, 255, 191), (217, 239, 139), (166, 217, 106), (102, 189, 99), (26, 152, 80)],
- 'reds3': [(254, 224, 210), (252, 146, 114), (222, 45, 38)],
- 'reds4': [(254, 229, 217), (252, 174, 145), (251, 106, 74), (203, 24, 29)],
- 'reds5': [(254, 229, 217), (252, 174, 145), (251, 106, 74), (222, 45, 38), (165, 15, 21)],
- 'reds6': [(254, 229, 217), (252, 187, 161), (252, 146, 114), (251, 106, 74), (222, 45, 38), (165, 15, 21)],
- 'reds7': [(254, 229, 217), (252, 187, 161), (252, 146, 114), (251, 106, 74), (239, 59, 44), (203, 24, 29), (153, 0, 13)],
- 'reds8': [(255, 245, 240), (254, 224, 210), (252, 187, 161), (252, 146, 114), (251, 106, 74), (239, 59, 44), (203, 24, 29), (153, 0, 13)],
- 'reds9': [(255, 245, 240), (254, 224, 210), (252, 187, 161), (252, 146, 114), (251, 106, 74), (239, 59, 44), (203, 24, 29), (165, 15, 21), (103, 0, 13)],
- 'set13': [(228, 26, 28), (55, 126, 184), (77, 175, 74)],
- 'set14': [(228, 26, 28), (55, 126, 184), (77, 175, 74), (152, 78, 163)],
- 'set15': [(228, 26, 28), (55, 126, 184), (77, 175, 74), (152, 78, 163), (255, 127, 0)],
- 'set16': [(228, 26, 28), (55, 126, 184), (77, 175, 74), (152, 78, 163), (255, 127, 0), (255, 255, 51)],
- 'set17': [(228, 26, 28), (55, 126, 184), (77, 175, 74), (152, 78, 163), (255, 127, 0), (255, 255, 51), (166, 86, 40)],
- 'set18': [(228, 26, 28), (55, 126, 184), (77, 175, 74), (152, 78, 163), (255, 127, 0), (255, 255, 51), (166, 86, 40), (247, 129, 191)],
- 'set19': [(228, 26, 28), (55, 126, 184), (77, 175, 74), (152, 78, 163), (255, 127, 0), (255, 255, 51), (166, 86, 40), (247, 129, 191), (153, 153, 153)],
- 'set23': [(102, 194, 165), (252, 141, 98), (141, 160, 203)],
- 'set24': [(102, 194, 165), (252, 141, 98), (141, 160, 203), (231, 138, 195)],
- 'set25': [(102, 194, 165), (252, 141, 98), (141, 160, 203), (231, 138, 195), (166, 216, 84)],
- 'set26': [(102, 194, 165), (252, 141, 98), (141, 160, 203), (231, 138, 195), (166, 216, 84), (255, 217, 47)],
- 'set27': [(102, 194, 165), (252, 141, 98), (141, 160, 203), (231, 138, 195), (166, 216, 84), (255, 217, 47), (229, 196, 148)],
- 'set28': [(102, 194, 165), (252, 141, 98), (141, 160, 203), (231, 138, 195), (166, 216, 84), (255, 217, 47), (229, 196, 148), (179, 179, 179)],
- 'set310': [(141, 211, 199), (188, 128, 189), (255, 255, 179), (190, 186, 218), (251, 128, 114), (128, 177, 211), (253, 180, 98), (179, 222, 105), (252, 205, 229), (217, 217, 217)],
- 'set311': [(141, 211, 199), (188, 128, 189), (204, 235, 197), (255, 255, 179), (190, 186, 218), (251, 128, 114), (128, 177, 211), (253, 180, 98), (179, 222, 105), (252, 205, 229), (217, 217, 217)],
- 'set312': [(141, 211, 199), (188, 128, 189), (204, 235, 197), (255, 237, 111), (255, 255, 179), (190, 186, 218), (251, 128, 114), (128, 177, 211), (253, 180, 98), (179, 222, 105), (252, 205, 229), (217, 217, 217)],
- 'set33': [(141, 211, 199), (255, 255, 179), (190, 186, 218)],
- 'set34': [(141, 211, 199), (255, 255, 179), (190, 186, 218), (251, 128, 114)],
- 'set35': [(141, 211, 199), (255, 255, 179), (190, 186, 218), (251, 128, 114), (128, 177, 211)],
- 'set36': [(141, 211, 199), (255, 255, 179), (190, 186, 218), (251, 128, 114), (128, 177, 211), (253, 180, 98)],
- 'set37': [(141, 211, 199), (255, 255, 179), (190, 186, 218), (251, 128, 114), (128, 177, 211), (253, 180, 98), (179, 222, 105)],
- 'set38': [(141, 211, 199), (255, 255, 179), (190, 186, 218), (251, 128, 114), (128, 177, 211), (253, 180, 98), (179, 222, 105), (252, 205, 229)],
- 'set39': [(141, 211, 199), (255, 255, 179), (190, 186, 218), (251, 128, 114), (128, 177, 211), (253, 180, 98), (179, 222, 105), (252, 205, 229), (217, 217, 217)],
- 'spectral10': [(158, 1, 66), (94, 79, 162), (213, 62, 79), (244, 109, 67), (253, 174, 97), (254, 224, 139), (230, 245, 152), (171, 221, 164), (102, 194, 165), (50, 136, 189)],
- 'spectral11': [(158, 1, 66), (50, 136, 189), (94, 79, 162), (213, 62, 79), (244, 109, 67), (253, 174, 97), (254, 224, 139), (255, 255, 191), (230, 245, 152), (171, 221, 164), (102, 194, 165)],
- 'spectral3': [(252, 141, 89), (255, 255, 191), (153, 213, 148)],
- 'spectral4': [(215, 25, 28), (253, 174, 97), (171, 221, 164), (43, 131, 186)],
- 'spectral5': [(215, 25, 28), (253, 174, 97), (255, 255, 191), (171, 221, 164), (43, 131, 186)],
- 'spectral6': [(213, 62, 79), (252, 141, 89), (254, 224, 139), (230, 245, 152), (153, 213, 148), (50, 136, 189)],
- 'spectral7': [(213, 62, 79), (252, 141, 89), (254, 224, 139), (255, 255, 191), (230, 245, 152), (153, 213, 148), (50, 136, 189)],
- 'spectral8': [(213, 62, 79), (244, 109, 67), (253, 174, 97), (254, 224, 139), (230, 245, 152), (171, 221, 164), (102, 194, 165), (50, 136, 189)],
- 'spectral9': [(213, 62, 79), (244, 109, 67), (253, 174, 97), (254, 224, 139), (255, 255, 191), (230, 245, 152), (171, 221, 164), (102, 194, 165), (50, 136, 189)],
- 'ylgn3': [(247, 252, 185), (173, 221, 142), (49, 163, 84)],
- 'ylgn4': [(255, 255, 204), (194, 230, 153), (120, 198, 121), (35, 132, 67)],
- 'ylgn5': [(255, 255, 204), (194, 230, 153), (120, 198, 121), (49, 163, 84), (0, 104, 55)],
- 'ylgn6': [(255, 255, 204), (217, 240, 163), (173, 221, 142), (120, 198, 121), (49, 163, 84), (0, 104, 55)],
- 'ylgn7': [(255, 255, 204), (217, 240, 163), (173, 221, 142), (120, 198, 121), (65, 171, 93), (35, 132, 67), (0, 90, 50)],
- 'ylgn8': [(255, 255, 229), (247, 252, 185), (217, 240, 163), (173, 221, 142), (120, 198, 121), (65, 171, 93), (35, 132, 67), (0, 90, 50)],
- 'ylgn9': [(255, 255, 229), (247, 252, 185), (217, 240, 163), (173, 221, 142), (120, 198, 121), (65, 171, 93), (35, 132, 67), (0, 104, 55), (0, 69, 41)],
- 'ylgnbu3': [(237, 248, 177), (127, 205, 187), (44, 127, 184)],
- 'ylgnbu4': [(255, 255, 204), (161, 218, 180), (65, 182, 196), (34, 94, 168)],
- 'ylgnbu5': [(255, 255, 204), (161, 218, 180), (65, 182, 196), (44, 127, 184), (37, 52, 148)],
- 'ylgnbu6': [(255, 255, 204), (199, 233, 180), (127, 205, 187), (65, 182, 196), (44, 127, 184), (37, 52, 148)],
- 'ylgnbu7': [(255, 255, 204), (199, 233, 180), (127, 205, 187), (65, 182, 196), (29, 145, 192), (34, 94, 168), (12, 44, 132)],
- 'ylgnbu8': [(255, 255, 217), (237, 248, 177), (199, 233, 180), (127, 205, 187), (65, 182, 196), (29, 145, 192), (34, 94, 168), (12, 44, 132)],
- 'ylgnbu9': [(255, 255, 217), (237, 248, 177), (199, 233, 180), (127, 205, 187), (65, 182, 196), (29, 145, 192), (34, 94, 168), (37, 52, 148), (8, 29, 88)],
- 'ylorbr3': [(255, 247, 188), (254, 196, 79), (217, 95, 14)],
- 'ylorbr4': [(255, 255, 212), (254, 217, 142), (254, 153, 41), (204, 76, 2)],
- 'ylorbr5': [(255, 255, 212), (254, 217, 142), (254, 153, 41), (217, 95, 14), (153, 52, 4)],
- 'ylorbr6': [(255, 255, 212), (254, 227, 145), (254, 196, 79), (254, 153, 41), (217, 95, 14), (153, 52, 4)],
- 'ylorbr7': [(255, 255, 212), (254, 227, 145), (254, 196, 79), (254, 153, 41), (236, 112, 20), (204, 76, 2), (140, 45, 4)],
- 'ylorbr8': [(255, 255, 229), (255, 247, 188), (254, 227, 145), (254, 196, 79), (254, 153, 41), (236, 112, 20), (204, 76, 2), (140, 45, 4)],
- 'ylorbr9': [(255, 255, 229), (255, 247, 188), (254, 227, 145), (254, 196, 79), (254, 153, 41), (236, 112, 20), (204, 76, 2), (153, 52, 4), (102, 37, 6)],
- 'ylorrd3': [(255, 237, 160), (254, 178, 76), (240, 59, 32)],
- 'ylorrd4': [(255, 255, 178), (254, 204, 92), (253, 141, 60), (227, 26, 28)],
- 'ylorrd5': [(255, 255, 178), (254, 204, 92), (253, 141, 60), (240, 59, 32), (189, 0, 38)],
- 'ylorrd6': [(255, 255, 178), (254, 217, 118), (254, 178, 76), (253, 141, 60), (240, 59, 32), (189, 0, 38)],
- 'ylorrd7': [(255, 255, 178), (254, 217, 118), (254, 178, 76), (253, 141, 60), (252, 78, 42), (227, 26, 28), (177, 0, 38)],
- 'ylorrd8': [(255, 255, 204), (255, 237, 160), (254, 217, 118), (254, 178, 76), (253, 141, 60), (252, 78, 42), (227, 26, 28), (177, 0, 38)],
-}
-
-
-if __name__ == '__main__':
- main() \ No newline at end of file
diff --git a/Src/osmoconbb/doc/calypso-block.svg b/Src/osmoconbb/doc/calypso-block.svg
deleted file mode 100644
index 6f87267..0000000
--- a/Src/osmoconbb/doc/calypso-block.svg
+++ /dev/null
@@ -1,707 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="297mm"
- height="210mm"
- id="svg2383"
- sodipodi:version="0.32"
- inkscape:version="0.46"
- sodipodi:docname="calypso-block.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/laforge/calypso-block.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs2385">
- <marker
- inkscape:stockid="CurveIn"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="CurveIn"
- style="overflow:visible">
- <path
- id="path3349"
- d="M 4.6254930,-5.0456926 C 1.8654930,-5.0456926 -0.37450702,-2.8056926 -0.37450702,-0.045692580 C -0.37450702,2.7143074 1.8654930,4.9543074 4.6254930,4.9543074"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;marker-end:none;fill:none"
- transform="scale(0.6)" />
- </marker>
- <marker
- inkscape:stockid="DotM"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="DotM"
- style="overflow:visible">
- <path
- id="path3229"
- d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;marker-end:none"
- transform="scale(0.4) translate(7.4, 1)" />
- </marker>
- <marker
- inkscape:stockid="Arrow2Mstart"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="Arrow2Mstart"
- style="overflow:visible">
- <path
- id="path7719"
- style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
- d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
- transform="scale(0.6) translate(0,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow2Mend"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="Arrow2Mend"
- style="overflow:visible;">
- <path
- id="path3191"
- style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
- d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
- transform="scale(0.6) rotate(180) translate(0,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Send"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="Arrow1Send"
- style="overflow:visible;">
- <path
- id="path3179"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
- transform="scale(0.2) rotate(180) translate(6,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Mend"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="Arrow1Mend"
- style="overflow:visible;">
- <path
- id="path3173"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
- transform="scale(0.4) rotate(180) translate(10,0)" />
- </marker>
- <marker
- inkscape:stockid="TriangleOutL"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="TriangleOutL"
- style="overflow:visible">
- <path
- id="path3307"
- d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
- transform="scale(0.8)" />
- </marker>
- <marker
- inkscape:stockid="Arrow2Lend"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="Arrow2Lend"
- style="overflow:visible;">
- <path
- id="path3185"
- style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
- d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
- transform="scale(1.1) rotate(180) translate(1,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="Arrow1Lend"
- style="overflow:visible;">
- <path
- id="path3188"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
- transform="scale(0.8) rotate(180) translate(12.5,0)" />
- </marker>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 372.04724 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1052.3622 : 372.04724 : 1"
- inkscape:persp3d-origin="526.18109 : 248.03149 : 1"
- id="perspective2392" />
- </defs>
- <sodipodi:namedview
- inkscape:document-units="mm"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="0.96166971"
- inkscape:cx="576.3753"
- inkscape:cy="495.79724"
- inkscape:current-layer="layer1"
- id="namedview2387"
- showgrid="true"
- inkscape:snap-global="true"
- inkscape:window-width="1022"
- inkscape:window-height="731"
- inkscape:window-x="1024"
- inkscape:window-y="0"
- inkscape:snap-guide="true"
- inkscape:object-paths="false"
- inkscape:object-nodes="false"
- objecttolerance="3"
- gridtolerance="10000">
- <inkscape:grid
- type="xygrid"
- id="grid2400"
- visible="true"
- enabled="true"
- units="mm"
- spacingx="5mm"
- spacingy="5mm"
- empspacing="2" />
- </sodipodi:namedview>
- <metadata
- id="metadata2389">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.83464567;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#CurveIn);stroke-miterlimit:4;stroke-dasharray:none"
- d="M 992.12598,230.31495 L 1045.2756,230.31495 L 1045.2756,159.44881 L 1045.2756,159.44881"
- id="path22123" />
- <g
- id="g12239">
- <rect
- y="35.433064"
- x="70.866142"
- height="265.74802"
- width="177.16536"
- id="rect7161"
- style="fill:#ffffff;stroke:#000000;stroke-width:1.77165353000000003;stroke-miterlimit:4;stroke-dasharray:none" />
- <text
- sodipodi:linespacing="100%"
- id="text7163"
- y="53.149601"
- x="72.866142"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- y="53.149601"
- x="72.866142"
- id="tspan7165"
- sodipodi:role="line">CALYPSO</tspan></text>
- </g>
- <g
- id="g20347">
- <rect
- y="70.77356"
- x="389.63159"
- height="230.24446"
- width="106.56361"
- id="rect2406"
- style="fill:#ffffff;stroke:#000000;stroke-width:1.50725651;stroke-miterlimit:4;stroke-dasharray:none" />
- <text
- transform="scale(1.0221827,0.9782987)"
- sodipodi:linespacing="100%"
- id="text7157"
- y="92.63372"
- x="381.30542"
- style="font-size:21.45465279px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- y="92.63372"
- x="381.30542"
- id="tspan7159"
- sodipodi:role="line">TWL3025</tspan></text>
- <text
- sodipodi:linespacing="100%"
- id="text12244"
- y="216.1601"
- x="394.66666"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- y="216.1601"
- x="394.66666"
- id="tspan12246"
- sodipodi:role="line">BSP</tspan></text>
- <text
- sodipodi:linespacing="100%"
- id="text12248"
- y="252.99342"
- x="395.16666"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- y="252.99342"
- x="395.16666"
- id="tspan12250"
- sodipodi:role="line">USP</tspan></text>
- <text
- sodipodi:linespacing="100%"
- id="text12252"
- y="286.42783"
- x="396.16666"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- y="286.42783"
- x="396.16666"
- id="tspan12254"
- sodipodi:role="line">TSP</tspan></text>
- <text
- sodipodi:linespacing="100%"
- id="text20330"
- y="163.44881"
- x="464.62991"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- y="163.44881"
- x="464.62991"
- id="tspan20332"
- sodipodi:role="line">BUL</tspan></text>
- <text
- sodipodi:linespacing="100%"
- id="text20334"
- y="146.96971"
- x="463.70053"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- y="146.96971"
- x="463.70053"
- id="tspan20336"
- sodipodi:role="line">BDL</tspan></text>
- </g>
- <g
- id="g13450">
- <rect
- y="177.16687"
- x="885.82831"
- height="88.888702"
- width="106.29617"
- id="rect12310"
- style="fill:#ffffff;stroke:#000000;stroke-width:1.77468574;stroke-miterlimit:4;stroke-dasharray:none" />
- <text
- sodipodi:linespacing="100%"
- id="text13440"
- y="230.31496"
- x="903.54333"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- y="230.31496"
- x="903.54333"
- id="tspan13442"
- sodipodi:role="line">Antenna</tspan><tspan
- id="tspan13444"
- y="242.31496"
- x="903.54333"
- sodipodi:role="line">Switch</tspan></text>
- <text
- sodipodi:linespacing="100%"
- id="text13446"
- y="194.88188"
- x="887.82678"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- y="194.88188"
- x="887.82678"
- id="tspan13448"
- sodipodi:role="line">ASM4532</tspan></text>
- </g>
- <rect
- style="fill:#ffffff;stroke:#000000;stroke-width:1.61511528;stroke-miterlimit:4;stroke-dasharray:none"
- id="rect11596"
- width="142.16623"
- height="88.074844"
- x="885.74847"
- y="35.354794" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#550000;stroke-width:2.83464567;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
- d="M 496.06299,283.46456 L 850.3937,283.46456 L 850.3937,106.29921 L 885.82677,106.29921"
- id="path21554" />
- <path
- style="fill:#ff0000;fill-rule:evenodd;stroke:#ff0000;stroke-width:3.54330707;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow2Mstart);marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 248.0315,212.59842 L 389.76378,212.59842 L 389.76378,212.59842"
- id="path7167" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:3.54330708999999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
- d="M 248.0315,283.46456 L 389.76378,283.46456"
- id="path7171" />
- <path
- style="fill:#ff0000;fill-rule:evenodd;stroke:#ff0000;stroke-width:3.54330707;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow2Mstart);marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 248.03149,248.03149 L 389.76378,248.03149 L 389.76378,248.03149"
- id="path9925" />
- <g
- id="g12217">
- <rect
- y="35.433064"
- x="637.79529"
- height="212.59842"
- width="141.73228"
- id="rect2408"
- style="fill:#ffffff;stroke:#000000;stroke-width:1.77165354;stroke-miterlimit:4;stroke-dasharray:none" />
- <text
- sodipodi:linespacing="125%"
- id="text7153"
- y="53.149601"
- x="637.79529"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- id="tspan11602"
- y="78.149597"
- x="637.79529"
- sodipodi:role="line">TRF6151</tspan></text>
- <text
- sodipodi:linespacing="100%"
- id="text12175"
- y="88.582672"
- x="655.51184"
- style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- y="88.582672"
- x="655.51184"
- id="tspan12177"
- sodipodi:role="line">Transceiver</tspan><tspan
- id="tspan12179"
- y="104.58267"
- x="655.51184"
- sodipodi:role="line">Mixers</tspan><tspan
- id="tspan12183"
- y="120.58267"
- x="655.51184"
- sodipodi:role="line">VCO</tspan><tspan
- id="tspan12181"
- y="136.58267"
- x="655.51184"
- sodipodi:role="line">PLL</tspan></text>
- </g>
- <text
- xml:space="preserve"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- x="885.82678"
- y="53.149601"
- id="text11598"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan11600"
- x="885.82678"
- y="53.149601">RF3166</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- x="903.54333"
- y="88.582672"
- id="text12185"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- x="903.54333"
- y="88.582672"
- id="tspan12193">RF PA</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- x="218.59842"
- y="287.46457"
- id="text12256"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan12258"
- x="218.59842"
- y="287.46457">TSP</tspan></text>
- <g
- id="g12268">
- <path
- id="path11606"
- d="M 779.52756,53.149601 L 885.82677,53.149601 L 885.82677,53.149601"
- style="fill:none;fill-rule:evenodd;stroke:#ff00ff;stroke-width:2.83464567;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none" />
- <text
- sodipodi:linespacing="100%"
- id="text12260"
- y="51.149601"
- x="814.96063"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- y="51.149601"
- x="814.96063"
- id="tspan12262"
- sodipodi:role="line">GSM</tspan></text>
- </g>
- <g
- id="g12273">
- <path
- id="path12195"
- d="M 779.52756,70.866136 L 885.82677,70.866136 L 885.82677,70.866136"
- style="fill:none;fill-rule:evenodd;stroke:#ff00ff;stroke-width:2.83464575;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <text
- sodipodi:linespacing="100%"
- id="text12264"
- y="68.866135"
- x="814.96063"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- y="68.866135"
- x="814.96063"
- id="tspan12266"
- sodipodi:role="line">DCS/PCS</tspan></text>
- </g>
- <g
- id="g12290">
- <path
- id="path12197"
- d="M 885.82677,194.88188 L 779.52756,194.88188 L 779.52756,194.88188"
- style="fill:none;fill-rule:evenodd;stroke:#ff00ff;stroke-width:2.83464575;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <text
- sodipodi:linespacing="100%"
- id="text12278"
- y="192.88188"
- x="814.96063"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- y="192.88188"
- x="814.96063"
- id="tspan12280"
- sodipodi:role="line">GSM</tspan></text>
- </g>
- <g
- id="g12295">
- <path
- id="path12165"
- d="M 885.82677,212.59841 L 779.52756,212.59841 L 779.52756,212.59841"
- style="fill:none;fill-rule:evenodd;stroke:#ff00ff;stroke-width:2.83464575;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <text
- sodipodi:linespacing="100%"
- id="text12282"
- y="210.59842"
- x="814.96063"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- y="210.59842"
- x="814.96063"
- id="tspan12284"
- sodipodi:role="line">DCS</tspan></text>
- </g>
- <g
- id="g12300">
- <path
- id="path12199"
- d="M 885.82677,230.31495 L 779.52756,230.31495 L 779.52756,230.31495"
- style="fill:none;fill-rule:evenodd;stroke:#ff00ff;stroke-width:2.83464575;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <text
- sodipodi:linespacing="100%"
- id="text12286"
- y="228.31496"
- x="814.96063"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- y="228.31496"
- x="814.96063"
- id="tspan12288"
- sodipodi:role="line">PCS</tspan></text>
- </g>
- <g
- id="g18005">
- <text
- sodipodi:linespacing="100%"
- id="text14594"
- y="49.149601"
- x="425.21259"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- id="tspan14598"
- y="49.149601"
- x="425.21259"
- sodipodi:role="line">RFCLK</tspan></text>
- <path
- id="path14605"
- d="M 637.79528,53.149601 L 248.0315,53.149601 L 248.0315,53.149601"
- style="fill:none;fill-rule:evenodd;stroke:#ffff00;stroke-width:2.83464567;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
- </g>
- <g
- id="g18583">
- <path
- inkscape:label="#path2410"
- id="path241011111"
- d="M 496.06299,141.73228 L 637.79528,141.73228 L 637.79528,141.73228 L 637.79528,141.73228"
- style="fill:#00ff00;fill-rule:evenodd;stroke:#00ff00;stroke-width:2.83464567;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow2Mstart);marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <text
- sodipodi:linespacing="100%"
- id="text12167"
- y="137.73228"
- x="539.21259"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- y="137.73228"
- x="539.21259"
- id="tspan12169"
- sodipodi:role="line">I/Q Analog</tspan></text>
- <path
- id="path15170"
- d="M 531.49606,141.73228 L 531.49606,159.44881 L 496.06299,159.44881 L 496.06299,159.44881"
- style="fill:none;fill-rule:evenodd;stroke:#00ff00;stroke-width:2.83464575;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow2Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
- <g
- id="g18000">
- <path
- id="path17431"
- d="M 248.0315,88.582671 L 389.76378,88.582671"
- style="fill:none;fill-rule:evenodd;stroke:#ffff00;stroke-width:2.83464567;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
- <text
- sodipodi:linespacing="100%"
- id="text17996"
- y="84.582672"
- x="295.18109"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- y="84.582672"
- x="295.18109"
- id="tspan17998"
- sodipodi:role="line">CLK13M</tspan></text>
- </g>
- <g
- id="g18593">
- <path
- id="path18010"
- d="M 496.06299,194.88188 L 637.79528,194.88188"
- style="fill:none;fill-rule:evenodd;stroke:#550000;stroke-width:2.83464575;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <text
- sodipodi:linespacing="100%"
- id="text18589"
- y="188.88188"
- x="537.49603"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- y="188.88188"
- x="537.49603"
- id="tspan18591"
- sodipodi:role="line">AFC Analog</tspan></text>
- </g>
- <path
- style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:2.83464567;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
- d="M 212.59843,301.1811 L 212.59843,372.04724 L 921.25984,372.04724 L 921.25984,265.74803"
- id="path19726" />
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- x="354.33072"
- y="368.04724"
- id="text20291"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan20293"
- x="354.33072"
- y="368.04724">TSP Parallel</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- x="356.33072"
- y="330.89764"
- id="text20295"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan20297"
- x="356.33072"
- y="330.89764">TSP Serial</tspan></text>
- <g
- id="g20314"
- transform="translate(-4.7244095e-7,-17.716533)">
- <path
- id="path20301"
- d="M 248.0315,124.01574 L 389.76378,124.01574"
- style="fill:none;fill-rule:evenodd;stroke:#ffff00;stroke-width:2.83464575;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <text
- sodipodi:linespacing="100%"
- id="text20303"
- y="120.01574"
- x="295.18109"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- id="tspan20310"
- y="120.01574"
- x="295.18109"
- sodipodi:role="line">CLK32K</tspan></text>
- </g>
- <g
- id="g20421">
- <path
- id="path12871"
- d="M 956.69291,124.01574 L 956.69291,177.16535"
- style="fill:none;fill-rule:evenodd;stroke:#ff00ff;stroke-width:2.83464575;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <text
- transform="matrix(0,-1,1,0,0,0)"
- sodipodi:linespacing="100%"
- id="text20402"
- y="952.69293"
- x="-159.44881"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- y="952.69293"
- x="-159.44881"
- id="tspan20404"
- sodipodi:role="line">GSM</tspan></text>
- </g>
- <g
- id="g20415">
- <g
- id="g20410">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#ff00ff;stroke-width:2.83464567;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none"
- d="M 921.25984,124.01574 L 921.25984,177.16535"
- id="path12312" />
- <text
- xml:space="preserve"
- style="font-size:11.36807537px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- x="-184.69075"
- y="867.06183"
- id="text20406"
- sodipodi:linespacing="100%"
- transform="matrix(0,-0.9473396,1.0555877,0,0,0)"><tspan
- sodipodi:role="line"
- id="tspan20408"
- x="-184.69075"
- y="867.06183">DCS/PCS</tspan></text>
- </g>
- </g>
- <path
- style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:2.83464567;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;marker-start:url(#DotM);marker-end:url(#Arrow2Mend)"
- d="M 921.25984,372.04724 L 1009.8425,372.04724 L 1009.8425,124.01574 L 1009.8425,124.01574"
- id="path20426" />
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- x="539.21259"
- y="279.46457"
- id="text22119"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan22121"
- x="539.21259"
- y="279.46457">APC Analog</tspan></text>
- <path
- style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:2.83464567;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotM);marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none"
- d="M 318.89764,283.46456 L 318.89764,336.61417 L 673.22835,336.61417 L 673.22835,248.03149"
- id="path18598" />
- </g>
-</svg>
diff --git a/Src/osmoconbb/doc/calypso-gsm-notes.txt b/Src/osmoconbb/doc/calypso-gsm-notes.txt
deleted file mode 100644
index 4377ceb..0000000
--- a/Src/osmoconbb/doc/calypso-gsm-notes.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-GSM burst duration: 577uS
-RITA synthesizer retuning max: 170uS
diff --git a/Src/osmoconbb/doc/calypso-signals.txt b/Src/osmoconbb/doc/calypso-signals.txt
deleted file mode 100644
index be49cf0..0000000
--- a/Src/osmoconbb/doc/calypso-signals.txt
+++ /dev/null
@@ -1,184 +0,0 @@
-CALYPSO PAD AND NAME I/O CONNECTS TO TO BFIN?
-========================================================================================================
-C12 CLK32K_OUT O TWL3025:CLK32K (32kHz clock input) M
-F12 CLK13M_OUT_START_BIT O TWL3025:CLK13M (master clock input) M
-D12 nRESPWON I TWL3025:RESPWONz (dbb power-on reset @ batt insert) O
-P1 EXT-FIQ I TWL3025:INT1 O
-M3 EXT-IRQ I TWL3025:INT2 M
-A12 TCXOEN O TRF6151:XSEL,XEN (enable 26MHz oscillator) M
-F10 ON_OFF I TWL3025:ON_nOFF (dbb reset @ each switch on) O
-B14 IT_WAKEUP O TWL3025:ITWAKEUP (real-time wake-up irq) O
-B11 NEMU0 NC
-E10 NEMU1 NC
-D11 NBSCAN NC
-D10 TDI I
-C10 TDO O
-B10 TCK I
-E9 TMS I
-L11 BFSR I TWL3025:BFSX (bb-serial tx frame sync) M
-K10 BDR I TWL3025:BDX (bb-serial tx data) M
-P12 BFSX O TWL3025:BFSR (bb-serial rx frame sync) M
-M11 BDX O TWL3025:BDR (bb-serial rx data) M
-N11 BCLKX-IO6 NC
-P11 BCLKR-ARMCLK GND
-P14 VDX O TWL3025:VDR (vb-serial rx data)
-N13 VDR I TWL3025:VDX (vb-serial tx data)
-M13 VFSRX I TWL3025:VFS (vb-serial frame sync)
-N12 VCLKRX I TWL3025:VCK (vb-serial clock)
-N7 MCUDI I TWL3025:UDX (spi output) M
-M7 MCUDO O TWL3025:UDR (spi input) M
-M8 MCUEN0 O TWL3025:UEN (spi enable) M
-P8 MCUEN1-IO9 NC
-L8 MCUEN2-IO13 NC
-G13 SIM_IO IO TWL3025:DBBSIO (sim card shifter data) L
-F13 SIM_CLK O TWL3025:DBBSCK (sim card shifter clock) L
-G10 SIM_RST O TWL3025:DBBSRST (sim card shifter reset inp) L
-G11 SIM_CD-MAS0 V_IO
-F14 SIM_PWRCTRL-IO5 O TWL3025:DBBSIO (via 10k) L
-B13 OSC32K_OUT O XTAL
-C13 OSC32K_IN I XTAL
-A14 VSSO GND
-E13 CLKTCXO I TRF6151C:RFCLK (TCXO clock output) M
-M2 IDDQ GND
-N1 NI BOOT GND (via 100k)
-N2 nRESET_OUT O NC
-M4 IO3-SIM_RNW NC
-L4 IO2-IRQ4 NC
-P3 IO1-TPU_IDLE O S3C2410
-N3 IO0-TPU_WAIT NC
-L7 LT-PWL NC
-K7 BU-PWT NC
-L6 KBR4-XDIO7 NC
-N6 KBR3-XDIO6 NC
-P6 KBR2-XDIO5 NC
-M6 KBR1-XDIO4 NC
-K6 KBR0-XDIO3 NC
-M5 KBC4-XDIO2 NC
-P5 KBC3-XDIO1 NC
-L5 KBC2-XDIO0 NC
-K5 KBC1-nIRQ NC
-N4 KBC0-nFIQ NC
-K9 MCSI_FSYNCH-IO12 NC
-N10 MCSI_CLI-IO11 NC
-M10 MCSI_RXD-IO10 NC
-L10 MCSI_TXD-IO9 NC
-C9 CTS_MODEM-X_F S3C24xx
-D9 DSR_MODEM-LPG S3c24xx
-E8 RTS_MODEM-TOUT S3c24xx
-A9 RX_MODEM I S3c24xx
-B9 TX_MODEM O S3c24xx
-B8 SD_IRDA-CLKOUT_DSP NC
-A8 RXIR_IRDA-X_A1 NC
-C7 TXIR_IRDA-X_A4 NC
-D8 RX_IRDA I socket
-C8 TX_IRDA O socket
-N9 NSCS(1)-X_A32 NC
-L9 NSCS0-SCL NC
-M9 SDI-SDA I V-IO
-K8 SDO-nINT10 I NC
-P9 SCLK-nINT1 I INT0
-I14 TSPCLKX O TRF6151:CLK (serial clock) M
-H11 TSPDO O TWL3025:TDR,TRF6151:DATA (serial data) M
-H10 DSPDI-IO4 I NC
-H13 TSPEN0 O TWL3025:TEN (TSP enable) M
-H12 TSPEN1 NC
-H14 TSPEN2 TRF6151:STROBE (serial strobe) M
-G12 TSPEN3-nSCS2 NC
-M12 TSPACT0 O TRF6151:RESETz (serial interface reset) M
-M14 TSPACT1 O ASM4532:VC2 M
-L12 TSPACT2 O ASM4532:VC1 M
-L13 TSPACT3 O RF3166:BAND_SELECT M
-I10 TSPACT4-nRDYMEM O ASM4532:VC3 M
-K11 TSPACT5-DPLLCLK NC
-K13 TSPACT6-nCS6 NC
-K12 TSPACT7-CLKX_SPI NC
-K14 TSPACT8-nMREQ NC
-I11 TSPACT9-MAS1 RF3166:TX_ENABLE (PA TX) M
-I12 TSPACT10-nWAIT NC
-I13 TSPACT11-MCLK NC
-B7 DATA0 RAM/FLASH
-D7 DATA1 RAM/FLASH
-E7 DATA2 RAM/FLASH
-D6 DATA3 RAM/FLASH
-A6 DATA4 RAM/FLASH
-C6 DATA5 RAM/FLASH
-E6 DATA6 RAM/FLASH
-C6 DATA7 RAM/FLASH
-B5 DATA8 RAM/FLASH
-D5 DATA9 RAM/FLASH
-E5 DATA10 RAM/FLASH
-B4 DATA11 RAM/FLASH
-C4 DATA12 RAM/FLASH
-D4 DATA13 RAM/FLASH
-A3 DATA14 RAM/FLASH
-B3 DATA15 RAM/FLASH
-F3 ADD0 RAM/FLASH
-F2 ADD1 RAM/FLASH
-G5 ADD2 RAM/FLASH
-G4 ADD3 RAM/FLASH
-G2 ADD4 RAM/FLASH
-G3 ADD5 RAM/FLASH
-H1 ADD6 RAM/FLASH
-H3 ADD7 RAM/FLASH
-H2 ADD8 RAM/FLASH
-H4 ADD9 RAM/FLASH
-H5 ADD10 RAM/FLASH
-I1 ADD11 RAM/FLASH
-I2 ADD12 RAM/FLASH
-I3 ADD13 RAM/FLASH
-K3 ADD15 RAM/FLASH
-K2 ADD16 RAM/FLASH
-K4 ADD17 RAM/FLASH
-I5 ADD18 RAM/FLASH
-L1 ADD19 RAM/FLASH
-L2 ADD20 RAM/FLASH
-L3 ADD21-CLK16X_IRDA RAM/FLASH
-B2 RNW RAM/FLASH
-E3 nFEW-X_A0 NC
-E2 nFOE-X_A3 RAM/FLASH
-F4 FDP-nIACK RAM/FLASH
-E4 nBLE-IO15 RAM/FLASH
-F5 nBHE-IO14 RAM/FLASH
-C2 nCS0
-C3 nCS1 RAM/FLASH
-C1 nCS2 NC
-D3 nCS3-nINT4 NC
-D2 CS4-ADD22 RAM/FLASH
-C11 nCS4-CO35 RAM/FLASH
-A4 VDDS-MF1 V-FLASH
-B6 VDDS-MF2 V-FLASH
-G1 VDDS-MF3 V-FLASH
-D1 VDDS-MF4 V-FLASH
-A11 VDDS_2 V-IO
-L14 VDDS_1 V-IO
-N5 VDDS_1 V-IO
-A5 VDD1 V-DBB
-B12 VDD2 V-DBB
-N14 VDD3 V-DBB
-P7 VDD4 V-DBB
-M1 VDD5 V-DBB
-E1 VDD6 V-DBB
-F1 VSS1 GND
-N8 VSS2 GND
-K1 VSS3 GND
-P2 VSS4 GND
-P4 VSS5 GND
-P10 VSS6 GND
-P13 VSS7 GND
-G14 BSS8 GND
-A10 VSS9 GND
-A7 VSS10 GND
-A2 VSS11 GND
-B1 VSS12 GND
-D13 VDDS_RTC V-RTC
-D14 VDD_RTC V-RTC
-C14 VSS_RTC GND
-E11 VDD_ANG V-IO
-E12 VSS_ANG GND
-F11 VDD_PLL V-DBB
-E14 VSS_PLL GND
-
-Other signals
-
-MODEM_ON
-MODEM_RST
diff --git a/Src/osmoconbb/doc/gsmdevboard-block.svg b/Src/osmoconbb/doc/gsmdevboard-block.svg
deleted file mode 100644
index cb19bc0..0000000
--- a/Src/osmoconbb/doc/gsmdevboard-block.svg
+++ /dev/null
@@ -1,746 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="297mm"
- height="210mm"
- id="svg2383"
- sodipodi:version="0.32"
- inkscape:version="0.46"
- sodipodi:docname="gsmdevboard-block.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/sunbeam/home/laforge/gsmdevboard-block.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs2385">
- <marker
- inkscape:stockid="CurveIn"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="CurveIn"
- style="overflow:visible">
- <path
- id="path3349"
- d="M 4.6254930,-5.0456926 C 1.8654930,-5.0456926 -0.37450702,-2.8056926 -0.37450702,-0.045692580 C -0.37450702,2.7143074 1.8654930,4.9543074 4.6254930,4.9543074"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;marker-end:none;fill:none"
- transform="scale(0.6)" />
- </marker>
- <marker
- inkscape:stockid="DotM"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="DotM"
- style="overflow:visible">
- <path
- id="path3229"
- d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;marker-end:none"
- transform="scale(0.4) translate(7.4, 1)" />
- </marker>
- <marker
- inkscape:stockid="Arrow2Mstart"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="Arrow2Mstart"
- style="overflow:visible">
- <path
- id="path7719"
- style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
- d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
- transform="scale(0.6) translate(0,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow2Mend"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="Arrow2Mend"
- style="overflow:visible;">
- <path
- id="path3191"
- style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
- d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
- transform="scale(0.6) rotate(180) translate(0,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Send"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="Arrow1Send"
- style="overflow:visible;">
- <path
- id="path3179"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
- transform="scale(0.2) rotate(180) translate(6,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Mend"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="Arrow1Mend"
- style="overflow:visible;">
- <path
- id="path3173"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
- transform="scale(0.4) rotate(180) translate(10,0)" />
- </marker>
- <marker
- inkscape:stockid="TriangleOutL"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="TriangleOutL"
- style="overflow:visible">
- <path
- id="path3307"
- d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
- transform="scale(0.8)" />
- </marker>
- <marker
- inkscape:stockid="Arrow2Lend"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="Arrow2Lend"
- style="overflow:visible;">
- <path
- id="path3185"
- style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
- d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
- transform="scale(1.1) rotate(180) translate(1,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="Arrow1Lend"
- style="overflow:visible;">
- <path
- id="path3188"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
- transform="scale(0.8) rotate(180) translate(12.5,0)" />
- </marker>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 372.04724 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1052.3622 : 372.04724 : 1"
- inkscape:persp3d-origin="526.18109 : 248.03149 : 1"
- id="perspective2392" />
- </defs>
- <sodipodi:namedview
- inkscape:document-units="mm"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="0.96166971"
- inkscape:cx="386.08127"
- inkscape:cy="495.79724"
- inkscape:current-layer="layer1"
- id="namedview2387"
- showgrid="true"
- inkscape:snap-global="true"
- inkscape:window-width="1598"
- inkscape:window-height="1163"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:snap-guide="true"
- inkscape:object-paths="false"
- inkscape:object-nodes="false"
- objecttolerance="3"
- gridtolerance="10000">
- <inkscape:grid
- type="xygrid"
- id="grid2400"
- visible="true"
- enabled="true"
- units="mm"
- spacingx="5mm"
- spacingy="5mm"
- empspacing="2" />
- </sodipodi:namedview>
- <metadata
- id="metadata2389">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.83464567;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#CurveIn);stroke-miterlimit:4;stroke-dasharray:none"
- d="M 992.12598,230.31495 L 1045.2756,230.31495 L 1045.2756,159.44881 L 1045.2756,159.44881"
- id="path22123" />
- <g
- id="g20347">
- <rect
- y="70.77356"
- x="389.63159"
- height="230.24446"
- width="106.56361"
- id="rect2406"
- style="fill:#ffffff;stroke:#000000;stroke-width:1.50725651;stroke-miterlimit:4;stroke-dasharray:none" />
- <text
- transform="scale(1.0221827,0.9782987)"
- sodipodi:linespacing="100%"
- id="text7157"
- y="92.63372"
- x="381.30542"
- style="font-size:21.45465279px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- y="92.63372"
- x="381.30542"
- id="tspan7159"
- sodipodi:role="line">TWL3025</tspan></text>
- <text
- sodipodi:linespacing="100%"
- id="text12244"
- y="216.1601"
- x="394.66666"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- y="216.1601"
- x="394.66666"
- id="tspan12246"
- sodipodi:role="line">BSP</tspan></text>
- <text
- sodipodi:linespacing="100%"
- id="text12248"
- y="252.99342"
- x="395.16666"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- y="252.99342"
- x="395.16666"
- id="tspan12250"
- sodipodi:role="line">USP</tspan></text>
- <text
- sodipodi:linespacing="100%"
- id="text12252"
- y="286.42783"
- x="396.16666"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- y="286.42783"
- x="396.16666"
- id="tspan12254"
- sodipodi:role="line">TSP</tspan></text>
- <text
- sodipodi:linespacing="100%"
- id="text20330"
- y="163.44881"
- x="464.62991"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- y="163.44881"
- x="464.62991"
- id="tspan20332"
- sodipodi:role="line">BUL</tspan></text>
- <text
- sodipodi:linespacing="100%"
- id="text20334"
- y="146.96971"
- x="463.70053"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- y="146.96971"
- x="463.70053"
- id="tspan20336"
- sodipodi:role="line">BDL</tspan></text>
- </g>
- <g
- id="g13450">
- <rect
- y="177.16687"
- x="885.82831"
- height="88.888702"
- width="106.29617"
- id="rect12310"
- style="fill:#ffffff;stroke:#000000;stroke-width:1.77468574;stroke-miterlimit:4;stroke-dasharray:none" />
- <text
- sodipodi:linespacing="100%"
- id="text13440"
- y="230.31496"
- x="903.54333"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- y="230.31496"
- x="903.54333"
- id="tspan13442"
- sodipodi:role="line">Antenna</tspan><tspan
- id="tspan13444"
- y="242.31496"
- x="903.54333"
- sodipodi:role="line">Switch</tspan></text>
- <text
- sodipodi:linespacing="100%"
- id="text13446"
- y="194.88188"
- x="887.82678"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- y="194.88188"
- x="887.82678"
- id="tspan13448"
- sodipodi:role="line">ASM4532</tspan></text>
- </g>
- <rect
- style="fill:#ffffff;stroke:#000000;stroke-width:1.61511528;stroke-miterlimit:4;stroke-dasharray:none"
- id="rect11596"
- width="142.16623"
- height="88.074844"
- x="885.74847"
- y="35.354794" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#550000;stroke-width:2.83464567;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
- d="M 496.06299,283.46456 L 850.3937,283.46456 L 850.3937,106.29921 L 885.82677,106.29921"
- id="path21554" />
- <path
- style="fill:#ff0000;fill-rule:evenodd;stroke:#ff0000;stroke-width:3.54330707;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow2Mstart);marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 248.0315,212.59842 L 389.76378,212.59842 L 389.76378,212.59842"
- id="path7167" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:3.54330708999999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
- d="M 248.0315,283.46456 L 389.76378,283.46456"
- id="path7171" />
- <path
- style="fill:#ff0000;fill-rule:evenodd;stroke:#ff0000;stroke-width:3.54330707;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow2Mstart);marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 248.03149,248.03149 L 389.76378,248.03149 L 389.76378,248.03149"
- id="path9925" />
- <g
- id="g12217">
- <rect
- y="35.433064"
- x="637.79529"
- height="212.59842"
- width="141.73228"
- id="rect2408"
- style="fill:#ffffff;stroke:#000000;stroke-width:1.77165354;stroke-miterlimit:4;stroke-dasharray:none" />
- <text
- sodipodi:linespacing="125%"
- id="text7153"
- y="53.149601"
- x="637.79529"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- id="tspan11602"
- y="78.149597"
- x="637.79529"
- sodipodi:role="line">TRF6151</tspan></text>
- <text
- sodipodi:linespacing="100%"
- id="text12175"
- y="88.582672"
- x="655.51184"
- style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- y="88.582672"
- x="655.51184"
- id="tspan12177"
- sodipodi:role="line">Transceiver</tspan><tspan
- id="tspan12179"
- y="104.58267"
- x="655.51184"
- sodipodi:role="line">Mixers</tspan><tspan
- id="tspan12183"
- y="120.58267"
- x="655.51184"
- sodipodi:role="line">VCO</tspan><tspan
- id="tspan12181"
- y="136.58267"
- x="655.51184"
- sodipodi:role="line">PLL</tspan></text>
- </g>
- <text
- xml:space="preserve"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- x="885.82678"
- y="53.149601"
- id="text11598"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan11600"
- x="885.82678"
- y="53.149601">RF3166</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- x="903.54333"
- y="88.582672"
- id="text12185"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- x="903.54333"
- y="88.582672"
- id="tspan12193">RF PA</tspan></text>
- <g
- id="g12268">
- <path
- id="path11606"
- d="M 779.52756,53.149601 L 885.82677,53.149601 L 885.82677,53.149601"
- style="fill:none;fill-rule:evenodd;stroke:#ff00ff;stroke-width:2.83464567;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none" />
- <text
- sodipodi:linespacing="100%"
- id="text12260"
- y="51.149601"
- x="814.96063"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- y="51.149601"
- x="814.96063"
- id="tspan12262"
- sodipodi:role="line">GSM</tspan></text>
- </g>
- <g
- id="g12273">
- <path
- id="path12195"
- d="M 779.52756,70.866136 L 885.82677,70.866136 L 885.82677,70.866136"
- style="fill:none;fill-rule:evenodd;stroke:#ff00ff;stroke-width:2.83464575;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <text
- sodipodi:linespacing="100%"
- id="text12264"
- y="68.866135"
- x="814.96063"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- y="68.866135"
- x="814.96063"
- id="tspan12266"
- sodipodi:role="line">DCS/PCS</tspan></text>
- </g>
- <g
- id="g12290">
- <path
- id="path12197"
- d="M 885.82677,194.88188 L 779.52756,194.88188 L 779.52756,194.88188"
- style="fill:none;fill-rule:evenodd;stroke:#ff00ff;stroke-width:2.83464575;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <text
- sodipodi:linespacing="100%"
- id="text12278"
- y="192.88188"
- x="814.96063"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- y="192.88188"
- x="814.96063"
- id="tspan12280"
- sodipodi:role="line">GSM</tspan></text>
- </g>
- <g
- id="g12295">
- <path
- id="path12165"
- d="M 885.82677,212.59841 L 779.52756,212.59841 L 779.52756,212.59841"
- style="fill:none;fill-rule:evenodd;stroke:#ff00ff;stroke-width:2.83464575;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <text
- sodipodi:linespacing="100%"
- id="text12282"
- y="210.59842"
- x="814.96063"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- y="210.59842"
- x="814.96063"
- id="tspan12284"
- sodipodi:role="line">DCS</tspan></text>
- </g>
- <g
- id="g12300">
- <path
- id="path12199"
- d="M 885.82677,230.31495 L 779.52756,230.31495 L 779.52756,230.31495"
- style="fill:none;fill-rule:evenodd;stroke:#ff00ff;stroke-width:2.83464575;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <text
- sodipodi:linespacing="100%"
- id="text12286"
- y="228.31496"
- x="814.96063"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- y="228.31496"
- x="814.96063"
- id="tspan12288"
- sodipodi:role="line">PCS</tspan></text>
- </g>
- <g
- id="g18005">
- <text
- sodipodi:linespacing="100%"
- id="text14594"
- y="49.149601"
- x="425.21259"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- id="tspan14598"
- y="49.149601"
- x="425.21259"
- sodipodi:role="line">RFCLK</tspan></text>
- <path
- id="path14605"
- d="M 637.79528,53.149601 L 248.0315,53.149601 L 248.0315,53.149601"
- style="fill:none;fill-rule:evenodd;stroke:#ffff00;stroke-width:2.83464567;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
- </g>
- <g
- id="g18583">
- <path
- inkscape:label="#path2410"
- id="path241011111"
- d="M 496.06299,141.73228 L 637.79528,141.73228 L 637.79528,141.73228 L 637.79528,141.73228"
- style="fill:#00ff00;fill-rule:evenodd;stroke:#00ff00;stroke-width:2.83464567;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow2Mstart);marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <text
- sodipodi:linespacing="100%"
- id="text12167"
- y="137.73228"
- x="539.21259"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- y="137.73228"
- x="539.21259"
- id="tspan12169"
- sodipodi:role="line">I/Q Analog</tspan></text>
- <path
- id="path15170"
- d="M 531.49606,141.73228 L 531.49606,159.44881 L 496.06299,159.44881 L 496.06299,159.44881"
- style="fill:none;fill-rule:evenodd;stroke:#00ff00;stroke-width:2.83464575;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow2Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
- <g
- id="g18000">
- <path
- id="path17431"
- d="M 248.0315,88.582671 L 389.76378,88.582671"
- style="fill:none;fill-rule:evenodd;stroke:#ffff00;stroke-width:2.83464567;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
- <text
- sodipodi:linespacing="100%"
- id="text17996"
- y="84.582672"
- x="295.18109"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- y="84.582672"
- x="295.18109"
- id="tspan17998"
- sodipodi:role="line">CLK13M</tspan></text>
- </g>
- <g
- id="g18593">
- <path
- id="path18010"
- d="M 496.06299,194.88188 L 637.79528,194.88188"
- style="fill:none;fill-rule:evenodd;stroke:#550000;stroke-width:2.83464575;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <text
- sodipodi:linespacing="100%"
- id="text18589"
- y="188.88188"
- x="537.49603"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- y="188.88188"
- x="537.49603"
- id="tspan18591"
- sodipodi:role="line">AFC Analog</tspan></text>
- </g>
- <path
- style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:2.83464567;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
- d="M 212.59843,301.1811 L 212.59843,372.04724 L 921.25984,372.04724 L 921.25984,265.74803"
- id="path19726" />
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- x="354.33072"
- y="368.04724"
- id="text20291"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan20293"
- x="354.33072"
- y="368.04724">TSP Parallel</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- x="356.33072"
- y="330.89764"
- id="text20295"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan20297"
- x="356.33072"
- y="330.89764">TSP Serial</tspan></text>
- <g
- id="g20314"
- transform="translate(-4.7244095e-7,-17.716533)">
- <path
- id="path20301"
- d="M 248.0315,124.01574 L 389.76378,124.01574"
- style="fill:none;fill-rule:evenodd;stroke:#ffff00;stroke-width:2.83464575;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <text
- sodipodi:linespacing="100%"
- id="text20303"
- y="120.01574"
- x="295.18109"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- id="tspan20310"
- y="120.01574"
- x="295.18109"
- sodipodi:role="line">CLK32K</tspan></text>
- </g>
- <g
- id="g20421">
- <path
- id="path12871"
- d="M 956.69291,124.01574 L 956.69291,177.16535"
- style="fill:none;fill-rule:evenodd;stroke:#ff00ff;stroke-width:2.83464575;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <text
- transform="matrix(0,-1,1,0,0,0)"
- sodipodi:linespacing="100%"
- id="text20402"
- y="952.69293"
- x="-159.44881"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- y="952.69293"
- x="-159.44881"
- id="tspan20404"
- sodipodi:role="line">GSM</tspan></text>
- </g>
- <g
- id="g20415">
- <g
- id="g20410">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#ff00ff;stroke-width:2.83464567;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none"
- d="M 921.25984,124.01574 L 921.25984,177.16535"
- id="path12312" />
- <text
- xml:space="preserve"
- style="font-size:11.36807537px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- x="-184.69075"
- y="867.06183"
- id="text20406"
- sodipodi:linespacing="100%"
- transform="matrix(0,-0.9473396,1.0555877,0,0,0)"><tspan
- sodipodi:role="line"
- id="tspan20408"
- x="-184.69075"
- y="867.06183">DCS/PCS</tspan></text>
- </g>
- </g>
- <path
- style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:2.83464567;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;marker-start:url(#DotM);marker-end:url(#Arrow2Mend)"
- d="M 921.25984,372.04724 L 1009.8425,372.04724 L 1009.8425,124.01574 L 1009.8425,124.01574"
- id="path20426" />
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- x="539.21259"
- y="279.46457"
- id="text22119"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan22121"
- x="539.21259"
- y="279.46457">APC Analog</tspan></text>
- <path
- style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:2.83464567;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotM);marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none"
- d="M 318.89764,283.46456 L 318.89764,336.61417 L 673.22835,336.61417 L 673.22835,248.03149"
- id="path18598" />
- <g
- id="g3366">
- <rect
- y="35.433064"
- x="70.866142"
- height="265.74802"
- width="177.16536"
- id="rect7161"
- style="fill:#ffffff;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none" />
- <text
- sodipodi:linespacing="100%"
- id="text7163"
- y="53.149601"
- x="72.866142"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- id="tspan3352"
- y="53.149601"
- x="72.866142"
- sodipodi:role="line">BF537</tspan></text>
- <text
- sodipodi:linespacing="100%"
- id="text12256"
- y="287.46457"
- x="218.59842"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- y="287.46457"
- x="218.59842"
- id="tspan12258"
- sodipodi:role="line">TSP</tspan></text>
- <path
- d="M 158.52718,76.505608 A 0.46875,0.46875 0 1 1 157.58968,76.505608 A 0.46875,0.46875 0 1 1 158.52718,76.505608 z"
- sodipodi:ry="0.46875"
- sodipodi:rx="0.46875"
- sodipodi:cy="76.505608"
- sodipodi:cx="158.05843"
- style="fill:#000000;stroke:none"
- id="path2520"
- sodipodi:type="arc" />
- <path
- id="path2522"
- d="M 159.44882,35.327311 L 159.44882,301.07535 L 159.44882,301.07535 L 159.44882,301.07535 L 159.44882,301.07535"
- style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.47677553;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <text
- sodipodi:linespacing="100%"
- id="text3348"
- y="53.149601"
- x="159.44882"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- id="tspan3358"
- y="53.149601"
- x="159.44882"
- sodipodi:role="line">Spartan</tspan><tspan
- id="tspan3356"
- y="73.149597"
- x="159.44882"
- sodipodi:role="line">3E</tspan></text>
- <text
- sodipodi:linespacing="100%"
- id="text3362"
- y="290.92511"
- x="89.994156"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- y="290.92511"
- x="89.994156"
- id="tspan3364"
- sodipodi:role="line">Ethernet</tspan></text>
- </g>
- </g>
-</svg>
diff --git a/Src/osmoconbb/include/l1ctl_proto.h b/Src/osmoconbb/include/l1ctl_proto.h
deleted file mode 100644
index c1220d6..0000000
--- a/Src/osmoconbb/include/l1ctl_proto.h
+++ /dev/null
@@ -1,299 +0,0 @@
-/* Messages to be sent between the different layers */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- * (C) 2010 by Holger Hans Peter Freyther
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#ifndef __L1CTL_PROTO_H__
-#define __L1CTL_PROTO_H__
-
-enum {
- _L1CTL_NONE = 0,
- L1CTL_FBSB_REQ,
- L1CTL_FBSB_CONF,
- L1CTL_DATA_IND,
- L1CTL_RACH_REQ,
- L1CTL_DM_EST_REQ,
- L1CTL_DATA_REQ,
- L1CTL_RESET_IND,
- L1CTL_PM_REQ, /* power measurement */
- L1CTL_PM_CONF, /* power measurement */
- L1CTL_ECHO_REQ,
- L1CTL_ECHO_CONF,
- L1CTL_RACH_CONF,
- L1CTL_RESET_REQ,
- L1CTL_RESET_CONF,
- L1CTL_DATA_CONF,
- L1CTL_CCCH_MODE_REQ,
- L1CTL_CCCH_MODE_CONF,
- L1CTL_DM_REL_REQ,
- L1CTL_PARAM_REQ,
- L1CTL_DM_FREQ_REQ,
- L1CTL_CRYPTO_REQ,
- L1CTL_SIM_REQ,
- L1CTL_SIM_CONF,
- L1CTL_TCH_MODE_REQ,
- L1CTL_TCH_MODE_CONF,
- L1CTL_NEIGH_PM_REQ,
- L1CTL_NEIGH_PM_IND,
- L1CTL_TRAFFIC_REQ,
- L1CTL_TRAFFIC_CONF,
- L1CTL_TRAFFIC_IND,
-};
-
-enum ccch_mode {
- CCCH_MODE_NONE = 0,
- CCCH_MODE_NON_COMBINED,
- CCCH_MODE_COMBINED,
-};
-
-enum neigh_mode {
- NEIGH_MODE_NONE = 0,
- NEIGH_MODE_PM,
- NEIGH_MODE_SB,
-};
-
-#define TRAFFIC_DATA_LEN 40
-
-/*
- * NOTE: struct size. We do add manual padding out of the believe
- * that it will avoid some unaligned access.
- */
-
-/* there are no more messages in a sequence */
-#define L1CTL_F_DONE 0x01
-
-struct l1ctl_hdr {
- uint8_t msg_type;
- uint8_t flags;
- uint8_t padding[2];
- uint8_t data[0];
-} __attribute__((packed));
-
-/*
- * downlink info ... down from the BTS..
- */
-struct l1ctl_info_dl {
- /* GSM 08.58 channel number (9.3.1) */
- uint8_t chan_nr;
- /* GSM 08.58 link identifier (9.3.2) */
- uint8_t link_id;
- /* the ARFCN and the band. FIXME: what about MAIO? */
- uint16_t band_arfcn;
-
- uint32_t frame_nr;
-
- uint8_t rx_level; /* 0 .. 63 in typical GSM notation (dBm+110) */
- uint8_t snr; /* Signal/Noise Ration (dB) */
- uint8_t num_biterr;
- uint8_t fire_crc;
-
- uint8_t payload[0];
-} __attribute__((packed));
-
-/* new CCCH was found. This is following the header */
-struct l1ctl_fbsb_conf {
- int16_t initial_freq_err;
- uint8_t result;
- uint8_t bsic;
- /* FIXME: contents of cell_info ? */
-} __attribute__((packed));
-
-/* CCCH mode was changed */
-struct l1ctl_ccch_mode_conf {
- uint8_t ccch_mode; /* enum ccch_mode */
- uint8_t padding[3];
-} __attribute__((packed));
-
-/* TCH mode was changed */
-struct l1ctl_tch_mode_conf {
- uint8_t tch_mode; /* enum tch_mode */
- uint8_t audio_mode;
- uint8_t padding[2];
-} __attribute__((packed));
-
-/* data on the CCCH was found. This is following the header */
-struct l1ctl_data_ind {
- uint8_t data[23];
-} __attribute__((packed));
-
-/* traffic from the network */
-struct l1ctl_traffic_ind {
- uint8_t data[TRAFFIC_DATA_LEN];
-} __attribute__((packed));
-
-/*
- * uplink info
- */
-struct l1ctl_info_ul {
- /* GSM 08.58 channel number (9.3.1) */
- uint8_t chan_nr;
- /* GSM 08.58 link identifier (9.3.2) */
- uint8_t link_id;
- uint8_t padding[2];
-
- uint8_t payload[0];
-} __attribute__((packed));
-
-/*
- * msg for FBSB_REQ
- * the l1_info_ul header is in front
- */
-struct l1ctl_fbsb_req {
- uint16_t band_arfcn;
- uint16_t timeout; /* in TDMA frames */
-
- uint16_t freq_err_thresh1;
- uint16_t freq_err_thresh2;
-
- uint8_t num_freqerr_avg;
- uint8_t flags; /* L1CTL_FBSB_F_* */
- uint8_t sync_info_idx;
- uint8_t ccch_mode; /* enum ccch_mode */
-} __attribute__((packed));
-
-#define L1CTL_FBSB_F_FB0 (1 << 0)
-#define L1CTL_FBSB_F_FB1 (1 << 1)
-#define L1CTL_FBSB_F_SB (1 << 2)
-#define L1CTL_FBSB_F_FB01SB (L1CTL_FBSB_F_FB0|L1CTL_FBSB_F_FB1|L1CTL_FBSB_F_SB)
-
-/*
- * msg for CCCH_MODE_REQ
- * the l1_info_ul header is in front
- */
-struct l1ctl_ccch_mode_req {
- uint8_t ccch_mode; /* enum ccch_mode */
- uint8_t padding[3];
-} __attribute__((packed));
-
-/*
- * msg for TCH_MODE_REQ
- * the l1_info_ul header is in front
- */
-struct l1ctl_tch_mode_req {
- uint8_t tch_mode; /* enum gsm48_chan_mode */
-#define AUDIO_TX_MICROPHONE (1<<0)
-#define AUDIO_TX_TRAFFIC_REQ (1<<1)
-#define AUDIO_RX_SPEAKER (1<<2)
-#define AUDIO_RX_TRAFFIC_IND (1<<3)
- uint8_t audio_mode;
- uint8_t padding[2];
-} __attribute__((packed));
-
-/* the l1_info_ul header is in front */
-struct l1ctl_rach_req {
- uint8_t ra;
- uint8_t combined;
- uint16_t offset;
-} __attribute__((packed));
-
-/* the l1_info_ul header is in front */
-struct l1ctl_par_req {
- int8_t ta;
- uint8_t tx_power;
- uint8_t padding[2];
-} __attribute__((packed));
-
-struct l1ctl_h0 {
- uint16_t band_arfcn;
-} __attribute__((packed));
-
-struct l1ctl_h1 {
- uint8_t hsn;
- uint8_t maio;
- uint8_t n;
- uint8_t _padding[1];
- uint16_t ma[64];
-} __attribute__((packed));
-
-struct l1ctl_dm_est_req {
- uint8_t tsc;
- uint8_t h;
- union {
- struct l1ctl_h0 h0;
- struct l1ctl_h1 h1;
- };
- uint8_t tch_mode;
- uint8_t audio_mode;
-} __attribute__((packed));
-
-struct l1ctl_dm_freq_req {
- uint16_t fn;
- uint8_t tsc;
- uint8_t h;
- union {
- struct l1ctl_h0 h0;
- struct l1ctl_h1 h1;
- };
-} __attribute__((packed));
-
-struct l1ctl_crypto_req {
- uint8_t algo;
- uint8_t key[0];
-} __attribute__((packed));
-
-struct l1ctl_pm_req {
- uint8_t type;
- uint8_t padding[3];
-
- union {
- struct {
- uint16_t band_arfcn_from;
- uint16_t band_arfcn_to;
- } range;
- };
-} __attribute__((packed));
-
-/* a single L1CTL_PM response */
-struct l1ctl_pm_conf {
- uint16_t band_arfcn;
- uint8_t pm[2];
-} __attribute__((packed));
-
-enum l1ctl_reset_type {
- L1CTL_RES_T_BOOT, /* only _IND */
- L1CTL_RES_T_FULL,
- L1CTL_RES_T_SCHED,
-};
-
-/* argument to L1CTL_RESET_REQ and L1CTL_RESET_IND */
-struct l1ctl_reset {
- uint8_t type;
- uint8_t pad[3];
-} __attribute__((packed));
-
-struct l1ctl_neigh_pm_req {
- uint8_t n;
- uint8_t padding[1];
- uint16_t band_arfcn[64];
-} __attribute__((packed));
-
-/* neighbour cell measurement results */
-struct l1ctl_neigh_pm_ind {
- uint16_t band_arfcn;
- uint8_t pm[2];
-} __attribute__((packed));
-
-/* traffic data to network */
-struct l1ctl_traffic_req {
- uint8_t data[TRAFFIC_DATA_LEN];
-} __attribute__((packed));
-
-#endif /* __L1CTL_PROTO_H__ */
diff --git a/Src/osmoconbb/include/osmocore/rsl.h b/Src/osmoconbb/include/osmocore/rsl.h
deleted file mode 100644
index c9375a7..0000000
--- a/Src/osmoconbb/include/osmocore/rsl.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef _OSMOCORE_RSL_H
-#define _OSMOCORE_RSL_H
-
-#include <stdint.h>
-#include <osmocom/core/utils.h>
-#include <osmocom/gsm/protocol/gsm_08_58.h>
-
-void rsl_init_rll_hdr(struct abis_rsl_rll_hdr *dh, uint8_t msg_type);
-
-extern const struct tlv_definition rsl_att_tlvdef;
-#define rsl_tlv_parse(dec, buf, len) \
- tlv_parse(dec, &rsl_att_tlvdef, buf, len, 0, 0)
-
-/* encode channel number as per Section 9.3.1 */
-uint8_t rsl_enc_chan_nr(uint8_t type, uint8_t subch, uint8_t timeslot);
-
-const struct value_string rsl_rlm_cause_strs[];
-
-const char *rsl_err_name(uint8_t err);
-
-/* Section 3.3.2.3 TS 05.02. I think this looks like a table */
-int rsl_ccch_conf_to_bs_cc_chans(int ccch_conf);
-
-#endif /* _OSMOCORE_RSL_H */
diff --git a/Src/osmoconbb/include/osmocore/utils.h b/Src/osmoconbb/include/osmocore/utils.h
deleted file mode 100644
index cf3b460..0000000
--- a/Src/osmoconbb/include/osmocore/utils.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifndef OSMOCORE_UTIL_H
-#define OSMOCORE_UTIL_H
-
-#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
-
-#include <stdint.h>
-
-struct value_string {
- unsigned int value;
- const char *str;
-};
-
-const char *get_value_string(const struct value_string *vs, uint32_t val);
-int get_string_value(const struct value_string *vs, const char *str);
-
-
-#endif
diff --git a/Src/osmoconbb/src/Makefile b/Src/osmoconbb/src/Makefile
deleted file mode 100644
index de1435d..0000000
--- a/Src/osmoconbb/src/Makefile
+++ /dev/null
@@ -1,119 +0,0 @@
-
-# this is not really used as we don't do 'make install'. You can still specify
-# it in case you _want_ to manually 'make install' the target libosmocore.
-CROSS_INST_PREFIX ?= /usr/local/stow/osmocom-bb/arm-2010.09
-
-# this is the host tuple of your cross-toolchain
-CROSS_HOST ?= $(shell which arm-elf-gcc >/dev/null 2>&1 && echo arm-elf || echo arm-none-eabi)
-
-# this is the prefix of your cross-toolchain programs
-CROSS_TOOL_PREFIX=$(CROSS_HOST)-
-
-TOPDIR=$(shell pwd)
-OSMOCORE_CONFIGURE_ENV= LIBOSMOCORE_LIBS=$(TOPDIR)/shared/libosmocore/build-host/src/.libs/libosmocore.a \
- LIBOSMOVTY_LIBS=$(TOPDIR)/shared/libosmocore/build-host/src/vty/.libs/libosmovty.a \
- LIBOSMOGSM_LIBS=$(TOPDIR)/shared/libosmocore/build-host/src/gsm/.libs/libosmogsm.a \
- LIBOSMOCODEC_LIBS=$(TOPDIR)/shared/libosmocore/build-host/src/codec/.libs/libosmocodec.a \
- LIBOSMOCORE_CFLAGS=-I$(TOPDIR)/shared/libosmocore/include \
- LIBOSMOVTY_CFLAGS=-I$(TOPDIR)/shared/libosmocore/include \
- LIBOSMOGSM_CFLAGS=-I$(TOPDIR)/shared/libosmocore/include \
- LIBOSMOCODEC_CFLAGS=-I$(TOPDIR)/shared/libosmocore/include
-
-all: libosmocore-target nofirmware firmware mtk-firmware
-nofirmware: libosmocore-host layer23 osmocon gsmmap
-
-libosmocore-host: shared/libosmocore/build-host/src/.libs/libosmocore.la
-
-shared/libosmocore/build-host:
- mkdir $@
-
-shared/libosmocore/configure: shared/libosmocore/configure.ac
- cd shared/libosmocore && autoreconf -i
-
-shared/libosmocore/build-host/Makefile: shared/libosmocore/configure shared/libosmocore/build-host
- cd shared/libosmocore/build-host && ../configure $(HOST_CONFARGS)
-
-shared/libosmocore/build-host/src/.libs/libosmocore.la: shared/libosmocore/build-host/Makefile
- cd shared/libosmocore/build-host && make
-
-
-libosmocore-target: shared/libosmocore/build-target/src/.libs/libosmocore.a
-
-shared/libosmocore/build-target:
- mkdir $@
-
-shared/libosmocore/build-target/Makefile: shared/libosmocore/configure shared/libosmocore/build-target
- cd shared/libosmocore/build-target && ../configure \
- --host=$(CROSS_HOST) --disable-vty --enable-panic-infloop \
- --disable-shared --disable-talloc \
- --disable-tests ac_cv_header_sys_select_h=no \
- --disable-tests ac_cv_header_sys_socket_h=no \
- CFLAGS="-Os -ffunction-sections -I$(TOPDIR)/target/firmware/include -nostartfiles -nodefaultlibs"
-
-shared/libosmocore/build-target/src/.libs/libosmocore.a: shared/libosmocore/build-target/Makefile
- cd shared/libosmocore/build-target && make
-
-
-.PHONY: osmocon
-osmocon: host/osmocon/osmocon
-
-host/osmocon/configure: host/osmocon/configure.ac
- cd host/osmocon && autoreconf -i
-
-host/osmocon/Makefile: host/osmocon/configure
- cd host/osmocon && $(OSMOCORE_CONFIGURE_ENV) ./configure $(HOST_CONFARGS)
-
-host/osmocon/osmocon: host/osmocon/Makefile libosmocore-host
- make -C host/osmocon
-
-
-.PHONY: gsmmap
-gsmmap: host/gsmmap/gsmmap
-
-host/gsmmap/configure: host/gsmmap/configure.ac
- cd host/gsmmap && autoreconf -i
-
-host/gsmmap/Makefile: host/gsmmap/configure
- cd host/gsmmap && $(OSMOCORE_CONFIGURE_ENV) ./configure $(HOST_CONFARGS)
-
-host/gsmmap/gsmmap: host/gsmmap/Makefile libosmocore-host
- make -C host/gsmmap
-
-
-.PHONY: layer23
-layer23: host/layer23/layer23
-
-host/layer23/configure: host/layer23/configure.ac
- cd host/layer23 && autoreconf -i
-
-host/layer23/Makefile: host/layer23/configure
- cd host/layer23 && $(OSMOCORE_CONFIGURE_ENV) ./configure $(HOST_CONFARGS)
-
-host/layer23/layer23: host/layer23/Makefile libosmocore-host
- make -C host/layer23
-
-
-.PHONY: firmware
-firmware: libosmocore-target
- make -C target/firmware CROSS_COMPILE=$(CROSS_TOOL_PREFIX)
-
-.PHONY: mtk-firmware
-mtk-firmware: libosmocore-target
- make -C target/firmware -f Makefile.mtk CROSS_COMPILE=$(CROSS_TOOL_PREFIX)
-
-
-clean:
- make -C shared/libosmocore/build-host $@
- make -C shared/libosmocore/build-target $@
- make -C host/layer23 $@
- make -C host/osmocon $@
- make -C target/firmware $@
- make -C target/firmware -f Makefile.mtk $@
-
-distclean:
- rm -rf shared/libosmocore/build-host
- rm -rf shared/libosmocore/build-target
- make -C host/layer23 $@
- make -C host/osmocon $@
-# 'firmware' also handles 'mtk-firmware'
- make -C target/firmware $@
diff --git a/Src/osmoconbb/src/README.building b/Src/osmoconbb/src/README.building
deleted file mode 100644
index 328c9ed..0000000
--- a/Src/osmoconbb/src/README.building
+++ /dev/null
@@ -1,30 +0,0 @@
-== How to build OsmocomBB? ==
-
-=== Prerequisites ===
-
-We assume you are building on a GNU/Linux host system such as Debian
-GNU/Linux. Successful builds have also been reported using MacOS X
-and the Cygwin environment for MS Windows, but we do not officially support
-this.
-
- # Get a GNU toolchain (gcc/binutils) for ARM (e.g. from http://gnuarm.com/)
- # Set your path to include the arm-elf-* executables of your toolchain
- # call 'make' in this (the src) subdirectory
-
-=== Details ===
-
-The master Makefile will build:
-
- * libosmocore for the host (x86 or whatever you use)
- * libosmocore for the target (ARM)
- * osmocon and layer23 executables for the host (linking libosmocore)
- * the actual target firmware images (in src/target/firmware/board/*/*.bin)
-
-== Transmitting ==
-
-For safety reasons, all code that can enable the transmitter on the phone is
-disabled in the default builds. Plese check the src/target/firmware/Makefile
-for the "#CFLAGS += -DCONFIG_TX_ENABLE" line.
-
-Please notice that GSM operates in licensed spectrum and in most jurisdictions
-you will need a license from a regulatory authority to transmit.
diff --git a/Src/osmoconbb/src/README.development b/Src/osmoconbb/src/README.development
deleted file mode 100644
index 1963b5a..0000000
--- a/Src/osmoconbb/src/README.development
+++ /dev/null
@@ -1,72 +0,0 @@
-= Contributing to OsmocomBB development =
-
-Feel free to help us by extending the code. Always make sure to
-send back all your patches to the baseband-devel@lists.osmocom.org
-mailing list - Free Software is all about sharing.
-
-== Coding Style ==
-
-Like all C language Osmocom projects, we use the Linux Kernel coding
-style, you can find it in the Documentation/CodingStyle subdirectory
-of any Linux Kernel source.
-
-== More Information ==
-
-Please consult the http://bb.osmocom.org/ web page / wiki.
-
-If you have any technical questions regarding the code, don't hesitate
-to ask the baseband-devel@lists.osmocom.org mailing list.
-
-== subdirectories containing libraries and code ==
-
-=== src/shared/libosmocore ===
-
-This is a library of various utility routines, including linked lists,
-message buffers, bit-vectors, memory allocator, signals, select loop
-handling, timers - as well as some more specifically GSM related things
-like a TLV parser, a Comp128V1 implementation and utility functions for
-RSL (TS 08.58) and CC/MM/RR (TS 04.08).
-
-libosmocore is maintained in git://git.osmocom.org/libosmocore.git, so
-
- DO NOT DIRECTLY COMMIT TO libosmocore IN THIS REPOSITORY!
-
-We simply maintain a copy (synchronized by git-subtree) in this
-repository for the ease of building and to make sure everyone is using
-the proper/compatible version of libosmocore
-
-Please note, whatever you add to libosmocore will need to build as a
-Linux userspace program (using glibc) just as well as on the OsmocomBB
-embedded target without OS. So please refrain from using fancy
-functions.
-
-
-=== src/target/firmware ===
-
-The firmware is what we build for the actual target (phone). It was
-written with some idea of modularity in mind, i.e. we have
-
- * Ti Calypso specific code in calypso/
- * Analog Baseband code in abb/
- * RF Mixer code in rf/
- * Layer1 code in layer1/
- * NOR flash handling in flash/
- * LCD display handling in display/
- * minimal C-Library code in lib/
- * communications utility routines in comm/
- * Board (phone model/family) specific code in board/
- * board/compal_e88 is the Motorola C115-C124 family
- * board/compal_e99 is the Motorola C155 family
- * Applications (each app builds one firmware image) in apps/
-
-
-=== src/target_dsp/calypso ===
-
-This is where we keep some (assembly) code that we wrote for
-the DSP that is part of the Calypso DBB.
-
-=== src/host/layer23 ===
-
-The Layer2 (LAPDm / TS 04.06) and Layer3 (CC/MM/RR / TS 04.08)
-implementations, as they are growing.
-
diff --git a/Src/osmoconbb/src/host/calypso_pll/pll.pl b/Src/osmoconbb/src/host/calypso_pll/pll.pl
deleted file mode 100755
index 52c9131..0000000
--- a/Src/osmoconbb/src/host/calypso_pll/pll.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/perl
-
-my $f_in = 26*1000*1000;
-
-for (my $mult = 1; $mult < 31; $mult++) {
- for (my $div = 0; $div < 3; $div++) {
- my $fout = $f_in * ($mult / ($div+1));
- printf("%03.1f MHz (mult=%2u, div=%1u)\n", $fout/(1000*1000), $mult, $div);
- }
-}
diff --git a/Src/osmoconbb/src/host/gsm48-andreas/issues.txt b/Src/osmoconbb/src/host/gsm48-andreas/issues.txt
deleted file mode 100644
index 49a796b..0000000
--- a/Src/osmoconbb/src/host/gsm48-andreas/issues.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-Location updating procedure:
-
-OpenBSC:
-If tx_setup fails during process, the msg must be freed to avoid memory leak.
-
-OpenBSC:
-Must use *_LOC_PRN_S_LU on protocol side.
-Or it uses *_LOC_PUN_S_LU to hide private network type (maybe some cfg option)
-
-OpenBSC:
-Wrong channel is assigned when mobile supports TCH only.
-
-LCR:
-Also LCR must use correct location.
-For MS support, it must use *_LOC_USER
-
-mncc.h of openbsc / layer23:
-What about putting all (except call structure) to osmocore?
-
-
-
-
-
diff --git a/Src/osmoconbb/src/host/gsmmap/.gitignore b/Src/osmoconbb/src/host/gsmmap/.gitignore
deleted file mode 100644
index 661fd13..0000000
--- a/Src/osmoconbb/src/host/gsmmap/.gitignore
+++ /dev/null
@@ -1,35 +0,0 @@
-# autoreconf by-products
-*.in
-
-aclocal.m4
-autom4te.cache/
-configure
-depcomp
-install-sh
-missing
-
-# configure by-products
-.deps/
-Makefile
-
-config.status
-version.h
-
-# build by-products
-*.o
-
-gsmmap
-
-# various
-.version
-.tarball-version
-
-# IDA file
-*.id*
-*.nam
-*.til
-
-# Other test files
-*.dump
-*.bin
-*.log
diff --git a/Src/osmoconbb/src/host/gsmmap/Makefile.am b/Src/osmoconbb/src/host/gsmmap/Makefile.am
deleted file mode 100644
index 29be15c..0000000
--- a/Src/osmoconbb/src/host/gsmmap/Makefile.am
+++ /dev/null
@@ -1,17 +0,0 @@
-AUTOMAKE_OPTIONS = foreign dist-bzip2 1.6
-
-# versioning magic
-BUILT_SOURCES = $(top_srcdir)/.version
-$(top_srcdir)/.version:
- echo $(VERSION) > $@-t && mv $@-t $@
-dist-hook:
- echo $(VERSION) > $(distdir)/.tarball-version
-
-INCLUDES = $(all_includes) -I../layer23/include -DHOST_BUILD
-AM_CFLAGS=-Wall $(LIBOSMOCORE_CFLAGS) $(LIBOSMOGSM_CFLAGS)
-
-sbin_PROGRAMS = gsmmap
-
-gsmmap_SOURCES = gsmmap.c geo.c locate.c log.c ../layer23/src/common/sysinfo.c ../layer23/src/common/networks.c ../layer23/src/common/logging.c
-gsmmap_LDADD = $(LIBOSMOGSM_LIBS) $(LIBOSMOCORE_LIBS) -lm
-
diff --git a/Src/osmoconbb/src/host/gsmmap/configure.ac b/Src/osmoconbb/src/host/gsmmap/configure.ac
deleted file mode 100644
index 3a42d4c..0000000
--- a/Src/osmoconbb/src/host/gsmmap/configure.ac
+++ /dev/null
@@ -1,26 +0,0 @@
-dnl Process this file with autoconf to produce a configure script
-AC_INIT([gsmmap],
- m4_esyscmd([./git-version-gen .tarball-version]),
- [baseband-devel@lists.osmocom.org])
-
-AM_INIT_AUTOMAKE([dist-bzip2])
-
-dnl kernel style compile messages
-m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
-
-dnl checks for programs
-AC_PROG_MAKE_SET
-AC_PROG_CC
-AC_PROG_INSTALL
-
-dnl checks for libraries
-PKG_CHECK_MODULES(LIBOSMOCORE, libosmocore)
-PKG_CHECK_MODULES(LIBOSMOGSM, libosmogsm)
-
-dnl checks for header files
-AC_HEADER_STDC
-
-dnl Checks for typedefs, structures and compiler characteristics
-
-AC_OUTPUT(
- Makefile)
diff --git a/Src/osmoconbb/src/host/gsmmap/geo.c b/Src/osmoconbb/src/host/gsmmap/geo.c
deleted file mode 100644
index 65633d2..0000000
--- a/Src/osmoconbb/src/host/gsmmap/geo.c
+++ /dev/null
@@ -1,47 +0,0 @@
-#include <math.h>
-#include "geo.h"
-
-void geo2space(double *x, double *y, double *z, double lon, double lat)
-{
- *z = sin(lat / 180.0 * PI) * POLE_RADIUS;
- *x = sin(lon / 180.0 * PI) * cos(lat / 180.0 * PI) * EQUATOR_RADIUS;
- *y = -cos(lon / 180.0 * PI) * cos(lat / 180.0 * PI) * EQUATOR_RADIUS;
-}
-
-void space2geo(double *lon, double *lat, double x, double y, double z)
-{
- double r;
-
- /* bring geoid to 1m radius */
- z = z / POLE_RADIUS;
- x = x / EQUATOR_RADIUS;
- y = y / EQUATOR_RADIUS;
-
- /* normalize */
- r = sqrt(x * x + y * y + z * z);
- z = z / r;
- x = x / r;
- y = y / r;
-
- *lat = asin(z) / PI * 180;
- *lon = atan2(x, -y) / PI * 180;
-}
-
-double distinspace(double x1, double y1, double z1, double x2, double y2,
- double z2)
-{
- double x = x1 - x2;
- double y = y1 - y2;
- double z = z1 - z2;
-
- return sqrt(x * x + y * y + z * z);
-}
-
-double distonplane(double x1, double y1, double x2, double y2)
-{
- double x = x1 - x2;
- double y = y1 - y2;
-
- return sqrt(x * x + y * y);
-}
-
diff --git a/Src/osmoconbb/src/host/gsmmap/geo.h b/Src/osmoconbb/src/host/gsmmap/geo.h
deleted file mode 100644
index 25e26cb..0000000
--- a/Src/osmoconbb/src/host/gsmmap/geo.h
+++ /dev/null
@@ -1,12 +0,0 @@
-/* WGS 84 */
-#define EQUATOR_RADIUS 6378137.0
-#define POLE_RADIUS 6356752.314
-
-#define PI 3.1415926536
-
-void geo2space(double *x, double *y, double *z, double lat, double lon);
-void space2geo(double *lat, double *lon, double x, double y, double z);
-double distinspace(double x1, double y1, double z1, double x2, double y2,
- double z2);
-double distonplane(double x1, double y1, double x2, double y2);
-
diff --git a/Src/osmoconbb/src/host/gsmmap/git-version-gen b/Src/osmoconbb/src/host/gsmmap/git-version-gen
deleted file mode 100755
index 652fac6..0000000
--- a/Src/osmoconbb/src/host/gsmmap/git-version-gen
+++ /dev/null
@@ -1,151 +0,0 @@
-#!/bin/sh
-# Print a version string.
-scriptversion=2010-01-28.01
-
-# Copyright (C) 2007-2010 Free Software Foundation, Inc.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 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, see <http://www.gnu.org/licenses/>.
-
-# This script is derived from GIT-VERSION-GEN from GIT: http://git.or.cz/.
-# It may be run two ways:
-# - from a git repository in which the "git describe" command below
-# produces useful output (thus requiring at least one signed tag)
-# - from a non-git-repo directory containing a .tarball-version file, which
-# presumes this script is invoked like "./git-version-gen .tarball-version".
-
-# In order to use intra-version strings in your project, you will need two
-# separate generated version string files:
-#
-# .tarball-version - present only in a distribution tarball, and not in
-# a checked-out repository. Created with contents that were learned at
-# the last time autoconf was run, and used by git-version-gen. Must not
-# be present in either $(srcdir) or $(builddir) for git-version-gen to
-# give accurate answers during normal development with a checked out tree,
-# but must be present in a tarball when there is no version control system.
-# Therefore, it cannot be used in any dependencies. GNUmakefile has
-# hooks to force a reconfigure at distribution time to get the value
-# correct, without penalizing normal development with extra reconfigures.
-#
-# .version - present in a checked-out repository and in a distribution
-# tarball. Usable in dependencies, particularly for files that don't
-# want to depend on config.h but do want to track version changes.
-# Delete this file prior to any autoconf run where you want to rebuild
-# files to pick up a version string change; and leave it stale to
-# minimize rebuild time after unrelated changes to configure sources.
-#
-# It is probably wise to add these two files to .gitignore, so that you
-# don't accidentally commit either generated file.
-#
-# Use the following line in your configure.ac, so that $(VERSION) will
-# automatically be up-to-date each time configure is run (and note that
-# since configure.ac no longer includes a version string, Makefile rules
-# should not depend on configure.ac for version updates).
-#
-# AC_INIT([GNU project],
-# m4_esyscmd([build-aux/git-version-gen .tarball-version]),
-# [bug-project@example])
-#
-# Then use the following lines in your Makefile.am, so that .version
-# will be present for dependencies, and so that .tarball-version will
-# exist in distribution tarballs.
-#
-# BUILT_SOURCES = $(top_srcdir)/.version
-# $(top_srcdir)/.version:
-# echo $(VERSION) > $@-t && mv $@-t $@
-# dist-hook:
-# echo $(VERSION) > $(distdir)/.tarball-version
-
-case $# in
- 1) ;;
- *) echo 1>&2 "Usage: $0 \$srcdir/.tarball-version"; exit 1;;
-esac
-
-tarball_version_file=$1
-nl='
-'
-
-# First see if there is a tarball-only version file.
-# then try "git describe", then default.
-if test -f $tarball_version_file
-then
- v=`cat $tarball_version_file` || exit 1
- case $v in
- *$nl*) v= ;; # reject multi-line output
- [0-9]*) ;;
- *) v= ;;
- esac
- test -z "$v" \
- && echo "$0: WARNING: $tarball_version_file seems to be damaged" 1>&2
-fi
-
-if test -n "$v"
-then
- : # use $v
-elif
- v=`git describe --abbrev=4 --match='osmocon_v*' HEAD 2>/dev/null \
- || git describe --abbrev=4 HEAD 2>/dev/null` \
- && case $v in
- osmocon_[0-9]*) ;;
- osmocon_v[0-9]*) ;;
- *) (exit 1) ;;
- esac
-then
- # Is this a new git that lists number of commits since the last
- # tag or the previous older version that did not?
- # Newer: v6.10-77-g0f8faeb
- # Older: v6.10-g0f8faeb
- case $v in
- *-*-*) : git describe is okay three part flavor ;;
- *-*)
- : git describe is older two part flavor
- # Recreate the number of commits and rewrite such that the
- # result is the same as if we were using the newer version
- # of git describe.
- vtag=`echo "$v" | sed 's/-.*//'`
- numcommits=`git rev-list "$vtag"..HEAD | wc -l`
- v=`echo "$v" | sed "s/\(.*\)-\(.*\)/\1-$numcommits-\2/"`;
- ;;
- esac
-
- # Change the first '-' to a '.', so version-comparing tools work properly.
- # Remove the "g" in git describe's output string, to save a byte.
- v=`echo "$v" | sed 's/-/./;s/\(.*\)-g/\1-/;s/^osmocon_//'`;
-else
- v="UNKNOWN"
-fi
-
-v=`echo "$v" |sed 's/^v//'`
-
-# Don't declare a version "dirty" merely because a time stamp has changed.
-git status > /dev/null 2>&1
-
-dirty=`sh -c 'git diff-index --name-only HEAD' 2>/dev/null` || dirty=
-case "$dirty" in
- '') ;;
- *) # Append the suffix only if there isn't one already.
- case $v in
- *-dirty) ;;
- *) v="$v-dirty" ;;
- esac ;;
-esac
-
-# Omit the trailing newline, so that m4_esyscmd can use the result directly.
-echo "$v" | tr -d '\012'
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
-# End:
diff --git a/Src/osmoconbb/src/host/gsmmap/gsmmap.c b/Src/osmoconbb/src/host/gsmmap/gsmmap.c
deleted file mode 100644
index 83f0d01..0000000
--- a/Src/osmoconbb/src/host/gsmmap/gsmmap.c
+++ /dev/null
@@ -1,658 +0,0 @@
-/* Conversion of logged cells to KML file */
-
-/* (C) 2010 by Andreas Eversberg <jolly@eversberg.eu>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-#warning todo bsic
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <math.h>
-#include <time.h>
-
-#define GSM_TA_M 553.85
-#define PI 3.1415926536
-
-#include <osmocom/bb/common/osmocom_data.h>
-#include <osmocom/bb/common/networks.h>
-#include <osmocom/bb/common/logging.h>
-
-#include "log.h"
-#include "geo.h"
-#include "locate.h"
-
-/*
- * structure of power and cell infos
- */
-
-struct power power;
-struct sysinfo sysinfo;
-static struct node_power *node_power_first = NULL;
-static struct node_power **node_power_last_p = &node_power_first;
-struct node_mcc *node_mcc_first = NULL;
-int log_lines = 0, log_debug = 0;
-
-
-static void nomem(void)
-{
- fprintf(stderr, "No mem!\n");
- exit(-ENOMEM);
-}
-
-static void add_power()
-{
- struct node_power *node_power;
-
-// printf("New Power\n");
- /* append or insert to list */
- node_power = calloc(1, sizeof(struct node_power));
- if (!node_power)
- nomem();
- *node_power_last_p = node_power;
- node_power_last_p = &node_power->next;
- memcpy(&node_power->power, &power, sizeof(power));
-}
-
-static void print_si(void *priv, const char *fmt, ...)
-{
- char buffer[1000];
- FILE *outfp = (FILE *)priv;
- va_list args;
-
- va_start(args, fmt);
- vsnprintf(buffer, sizeof(buffer) - 1, fmt, args);
- buffer[sizeof(buffer) - 1] = '\0';
- va_end(args);
-
- if (buffer[0])
- fprintf(outfp, "%s", buffer);
-}
-
-static void add_sysinfo()
-{
- struct gsm48_sysinfo s;
- struct node_mcc *mcc;
- struct node_mnc *mnc;
- struct node_lac *lac;
- struct node_cell *cell;
- struct node_meas *meas;
-
- memset(&s, 0, sizeof(s));
-
- /* decode sysinfo */
- if (sysinfo.si1[2])
- gsm48_decode_sysinfo1(&s,
- (struct gsm48_system_information_type_1 *) sysinfo.si1,
- 23);
- if (sysinfo.si2[2])
- gsm48_decode_sysinfo2(&s,
- (struct gsm48_system_information_type_2 *) sysinfo.si2,
- 23);
- if (sysinfo.si2bis[2])
- gsm48_decode_sysinfo2bis(&s,
- (struct gsm48_system_information_type_2bis *)
- sysinfo.si2bis,
- 23);
- if (sysinfo.si2ter[2])
- gsm48_decode_sysinfo2ter(&s,
- (struct gsm48_system_information_type_2ter *)
- sysinfo.si2ter,
- 23);
- if (sysinfo.si3[2])
- gsm48_decode_sysinfo3(&s,
- (struct gsm48_system_information_type_3 *) sysinfo.si3,
- 23);
- if (sysinfo.si4[2])
- gsm48_decode_sysinfo4(&s,
- (struct gsm48_system_information_type_4 *) sysinfo.si4,
- 23);
- printf("--------------------------------------------------------------------------\n");
- gsm48_sysinfo_dump(&s, sysinfo.arfcn, print_si, stdout, NULL);
- mcc = get_node_mcc(s.mcc);
- if (!mcc)
- nomem();
- mnc = get_node_mnc(mcc, s.mnc);
- if (!mnc)
- nomem();
- lac = get_node_lac(mnc, s.lac);
- if (!lac)
- nomem();
- cell = get_node_cell(lac, s.cell_id);
- if (!cell)
- nomem();
- meas = add_node_meas(cell);
- if (!meas)
- nomem();
- if (!cell->content) {
- cell->content = 1;
- memcpy(&cell->sysinfo, &sysinfo, sizeof(sysinfo));
- memcpy(&cell->s, &s, sizeof(s));
- } else {
- if (memcmp(&cell->sysinfo.si1, sysinfo.si1,
- sizeof(sysinfo.si1))) {
-new_sysinfo:
- fprintf(stderr, "FIXME: the cell changed sysinfo\n");
- return;
- }
- if (memcmp(&cell->sysinfo.si2, sysinfo.si2,
- sizeof(sysinfo.si2)))
- goto new_sysinfo;
- if (memcmp(&cell->sysinfo.si2bis, sysinfo.si2bis,
- sizeof(sysinfo.si2bis)))
- goto new_sysinfo;
- if (memcmp(&cell->sysinfo.si2ter, sysinfo.si2ter,
- sizeof(sysinfo.si2ter)))
- goto new_sysinfo;
- if (memcmp(&cell->sysinfo.si3, sysinfo.si3,
- sizeof(sysinfo.si3)))
- goto new_sysinfo;
- if (memcmp(&cell->sysinfo.si4, sysinfo.si4,
- sizeof(sysinfo.si4)))
- goto new_sysinfo;
- }
-}
-
-void kml_header(FILE *outfp, char *name)
-{
- /* XML header */
- fprintf(outfp, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
-
- /* KML open tag */
- fprintf(outfp, "<kml xmlns=\"http://www.opengis.net/kml/2.2\" "
- "xmlns:gx=\"http://www.google.com/kml/ext/2.2\" "
- "xmlns:kml=\"http://www.opengis.net/kml/2.2\" "
- "xmlns:atom=\"http://www.w3.org/2005/Atom\">\n");
-
- /* document open tag */
- fprintf(outfp, "<Document>\n");
-
- /* pushpin */
- fprintf(outfp, "\t<Style id=\"sn_placemark_red_pushpin\">\n");
- fprintf(outfp, "\t\t<IconStyle>\n");
- fprintf(outfp, "\t\t\t<scale>1.1</scale>\n");
- fprintf(outfp, "\t\t\t<Icon>\n");
- fprintf(outfp, "\t\t\t\t<href>http://maps.google.com/mapfiles/kml/"
- "pushpin/red-pushpin.png</href>\n");
- fprintf(outfp, "\t\t\t</Icon>\n");
- fprintf(outfp, "\t\t</IconStyle>\n");
- fprintf(outfp, "\t\t<ListStyle>\n");
- fprintf(outfp, "\t\t</ListStyle>\n");
- fprintf(outfp, "\t</Style>\n");
- fprintf(outfp, "\t<Style id=\"sh_placemark_red_pushpin_highlight\">\n");
- fprintf(outfp, "\t\t<IconStyle>\n");
- fprintf(outfp, "\t\t\t<scale>1.3</scale>\n");
- fprintf(outfp, "\t\t\t<Icon>\n");
- fprintf(outfp, "\t\t\t\t<href>http://maps.google.com/mapfiles/kml/"
- "pushpin/red-pushpin.png</href>\n");
- fprintf(outfp, "\t\t\t</Icon>\n");
- fprintf(outfp, "\t\t</IconStyle>\n");
- fprintf(outfp, "\t\t<ListStyle>\n");
- fprintf(outfp, "\t\t</ListStyle>\n");
- fprintf(outfp, "\t</Style>\n");
- fprintf(outfp, "\t<StyleMap id=\"msn_placemark_red_pushpin\">\n");
- fprintf(outfp, "\t\t<Pair>\n");
- fprintf(outfp, "\t\t\t<key>normal</key>\n");
- fprintf(outfp, "\t\t\t<styleUrl>#sn_placemark_red_pushpin"
- "</styleUrl>\n");
- fprintf(outfp, "\t\t</Pair>\n");
- fprintf(outfp, "\t\t<Pair>\n");
- fprintf(outfp, "\t\t\t<key>highlight</key>\n");
- fprintf(outfp, "\t\t\t<styleUrl>#sh_placemark_red_pushpin_highlight"
- "</styleUrl>\n");
- fprintf(outfp, "\t\t</Pair>\n");
- fprintf(outfp, "\t</StyleMap>\n");
-
- fprintf(outfp, "\t<Style id=\"sn_placemark_grn_pushpin\">\n");
- fprintf(outfp, "\t\t<IconStyle>\n");
- fprintf(outfp, "\t\t\t<scale>1.1</scale>\n");
- fprintf(outfp, "\t\t\t<Icon>\n");
- fprintf(outfp, "\t\t\t\t<href>http://maps.google.com/mapfiles/kml/"
- "pushpin/grn-pushpin.png</href>\n");
- fprintf(outfp, "\t\t\t</Icon>\n");
- fprintf(outfp, "\t\t</IconStyle>\n");
- fprintf(outfp, "\t\t<ListStyle>\n");
- fprintf(outfp, "\t\t</ListStyle>\n");
- fprintf(outfp, "\t</Style>\n");
- fprintf(outfp, "\t<Style id=\"sh_placemark_grn_pushpin_highlight\">\n");
- fprintf(outfp, "\t\t<IconStyle>\n");
- fprintf(outfp, "\t\t\t<scale>1.3</scale>\n");
- fprintf(outfp, "\t\t\t<Icon>\n");
- fprintf(outfp, "\t\t\t\t<href>http://maps.google.com/mapfiles/kml/"
- "pushpin/grn-pushpin.png</href>\n");
- fprintf(outfp, "\t\t\t</Icon>\n");
- fprintf(outfp, "\t\t</IconStyle>\n");
- fprintf(outfp, "\t\t<ListStyle>\n");
- fprintf(outfp, "\t\t</ListStyle>\n");
- fprintf(outfp, "\t</Style>\n");
- fprintf(outfp, "\t<StyleMap id=\"msn_placemark_grn_pushpin\">\n");
- fprintf(outfp, "\t\t<Pair>\n");
- fprintf(outfp, "\t\t\t<key>normal</key>\n");
- fprintf(outfp, "\t\t\t<styleUrl>#sn_placemark_grn_pushpin"
- "</styleUrl>\n");
- fprintf(outfp, "\t\t</Pair>\n");
- fprintf(outfp, "\t\t<Pair>\n");
- fprintf(outfp, "\t\t\t<key>highlight</key>\n");
- fprintf(outfp, "\t\t\t<styleUrl>#sh_placemark_grn_pushpin_highlight"
- "</styleUrl>\n");
- fprintf(outfp, "\t\t</Pair>\n");
- fprintf(outfp, "\t</StyleMap>\n");
-
- /* circle */
- fprintf(outfp, "\t<Style id=\"sn_placemark_circle\">\n");
- fprintf(outfp, "\t\t<IconStyle>\n");
- fprintf(outfp, "\t\t\t<scale>1.0</scale>\n");
- fprintf(outfp, "\t\t\t<Icon>\n");
- fprintf(outfp, "\t\t\t\t<href>http://maps.google.com/mapfiles/kml/"
- "shapes/placemark_circle.png</href>\n");
- fprintf(outfp, "\t\t\t</Icon>\n");
- fprintf(outfp, "\t\t</IconStyle>\n");
- fprintf(outfp, "\t\t<ListStyle>\n");
- fprintf(outfp, "\t\t</ListStyle>\n");
- fprintf(outfp, "\t</Style>\n");
- fprintf(outfp, "\t<Style id=\"sh_placemark_circle_highlight\">\n");
- fprintf(outfp, "\t\t<IconStyle>\n");
- fprintf(outfp, "\t\t\t<scale>1.2</scale>\n");
- fprintf(outfp, "\t\t\t<Icon>\n");
- fprintf(outfp, "\t\t\t\t<href>http://maps.google.com/mapfiles/kml/"
- "shapes/placemark_circle_highlight.png</href>\n");
- fprintf(outfp, "\t\t\t</Icon>\n");
- fprintf(outfp, "\t\t</IconStyle>\n");
- fprintf(outfp, "\t\t<ListStyle>\n");
- fprintf(outfp, "\t\t</ListStyle>\n");
- fprintf(outfp, "\t</Style>\n");
- fprintf(outfp, "\t<StyleMap id=\"msn_placemark_circle\">\n");
- fprintf(outfp, "\t\t<Pair>\n");
- fprintf(outfp, "\t\t\t<key>normal</key>\n");
- fprintf(outfp, "\t\t\t<styleUrl>#sn_placemark_circle</styleUrl>\n");
- fprintf(outfp, "\t\t</Pair>\n");
- fprintf(outfp, "\t\t<Pair>\n");
- fprintf(outfp, "\t\t\t<key>highlight</key>\n");
- fprintf(outfp, "\t\t\t<styleUrl>#sh_placemark_circle_highlight"
- "</styleUrl>\n");
- fprintf(outfp, "\t\t</Pair>\n");
- fprintf(outfp, "\t</StyleMap>\n");
-}
-
-void kml_footer(FILE *outfp)
-{
- /* document close tag */
- fprintf(outfp, "</Document>\n");
-
- /* KML close tag */
- fprintf(outfp, "</kml>\n");
-
-}
-
-void kml_meas(FILE *outfp, struct node_meas *meas, int n, uint16_t mcc,
- uint16_t mnc, uint16_t lac, uint16_t cellid)
-{
- struct tm *tm = localtime(&meas->gmt);
-
- fprintf(outfp, "\t\t\t\t\t<Placemark>\n");
- fprintf(outfp, "\t\t\t\t\t\t<name>%d: %d</name>\n", n, meas->rxlev);
- fprintf(outfp, "\t\t\t\t\t\t<description>\n");
- fprintf(outfp, "MCC=%s MNC=%s\nLAC=%04x CELL-ID=%04x\n(%s %s)\n",
- gsm_print_mcc(mcc), gsm_print_mnc(mnc), lac, cellid,
- gsm_get_mcc(mcc), gsm_get_mnc(mcc, mnc));
- fprintf(outfp, "\n%s", asctime(tm));
- fprintf(outfp, "RX-LEV %d dBm\n", meas->rxlev);
- if (meas->ta_valid)
- fprintf(outfp, "TA=%d (%d-%d meter)\n", meas->ta,
- (int)(GSM_TA_M * meas->ta),
- (int)(GSM_TA_M * (meas->ta + 1)));
- fprintf(outfp, "\t\t\t\t\t\t</description>\n");
- fprintf(outfp, "\t\t\t\t\t\t<LookAt>\n");
- fprintf(outfp, "\t\t\t\t\t\t\t<longitude>%.8f</longitude>\n",
- meas->longitude);
- fprintf(outfp, "\t\t\t\t\t\t\t<latitude>%.8f</latitude>\n",
- meas->latitude);
- fprintf(outfp, "\t\t\t\t\t\t\t<altitude>0</altitude>\n");
- fprintf(outfp, "\t\t\t\t\t\t\t<tilt>0</tilt>\n");
- fprintf(outfp, "\t\t\t\t\t\t\t<altitudeMode>relativeToGround"
- "</altitudeMode>\n");
- fprintf(outfp, "\t\t\t\t\t\t\t<gx:altitudeMode>relativeToSeaFloor"
- "</gx:altitudeMode>\n");
- fprintf(outfp, "\t\t\t\t\t\t</LookAt>\n");
- fprintf(outfp, "\t\t\t\t\t\t<styleUrl>#msn_placemark_circle"
- "</styleUrl>\n");
- fprintf(outfp, "\t\t\t\t\t\t<Point>\n");
- fprintf(outfp, "\t\t\t\t\t\t\t<coordinates>%.8f,%.8f</coordinates>\n",
- meas->longitude, meas->latitude);
- fprintf(outfp, "\t\t\t\t\t\t</Point>\n");
- fprintf(outfp, "\t\t\t\t\t</Placemark>\n");
-}
-
-double debug_long, debug_lat, debug_x_scale;
-FILE *debug_fp;
-
-void kml_cell(FILE *outfp, struct node_cell *cell)
-{
- struct node_meas *meas;
- double x, y, z, sum_x = 0, sum_y = 0, sum_z = 0, longitude, latitude;
- int n, known = 0;
-
- meas = cell->meas;
- n = 0;
- while (meas) {
- if (meas->gps_valid && meas->ta_valid) {
- geo2space(&x, &y, &z, meas->longitude, meas->latitude);
- sum_x += x;
- sum_y += y;
- sum_z += z;
- n++;
- }
- meas = meas->next;
- }
- if (!n)
- return;
- if (n < 3) {
- x = sum_x / n;
- y = sum_y / n;
- z = sum_z / n;
- space2geo(&longitude, &latitude, x, y, z);
- } else {
- struct probe *probe_first = NULL, *probe,
- **probe_last_p = &probe_first;
- double x_scale;
-
- /* translate to flat surface */
- meas = cell->meas;
- x_scale = 1.0 / cos(meas->latitude / 180.0 * PI);
- longitude = meas->longitude;
- latitude = meas->latitude;
- debug_x_scale = x_scale;
- debug_long = longitude;
- debug_lat = latitude;
- debug_fp = outfp;
- while (meas) {
- if (meas->gps_valid && meas->ta_valid) {
- probe = calloc(1, sizeof(struct probe));
- if (!probe)
- nomem();
- probe->x = (meas->longitude - longitude) /
- x_scale;
- if (x < -180)
- x += 360;
- else if (x > 180)
- x -= 360;
- probe->y = meas->latitude - latitude;
- probe->dist = GSM_TA_M * (0.5 +
- (double)meas->ta) /
- (EQUATOR_RADIUS * PI / 180.0);
- *probe_last_p = probe;
- probe_last_p = &probe->next;
- }
- meas = meas->next;
- }
-
- /* locate */
- locate_cell(probe_first, &x, &y);
-
- /* translate from flat surface */
- longitude += x * x_scale;
- if (longitude < 0)
- longitude += 360;
- else if (longitude >= 360)
- longitude -= 360;
- latitude += y;
-
- /* remove probes */
- while (probe_first) {
- probe = probe_first;
- probe_first = probe->next;
- free(probe);
- }
-
- known = 1;
- }
-
- if (!known)
- return;
-
- fprintf(outfp, "\t\t\t\t\t<Placemark>\n");
- fprintf(outfp, "\t\t\t\t\t\t<name>MCC=%s MNC=%s\nLAC=%04x "
- "CELL-ID=%04x\n(%s %s)</name>\n", gsm_print_mcc(cell->s.mcc),
- gsm_print_mnc(cell->s.mnc), cell->s.lac, cell->s.cell_id,
- gsm_get_mcc(cell->s.mcc),
- gsm_get_mnc(cell->s.mcc, cell->s.mnc));
- fprintf(outfp, "\t\t\t\t\t\t<description>\n");
- gsm48_sysinfo_dump(&cell->s, cell->sysinfo.arfcn, print_si, outfp,
- NULL);
- fprintf(outfp, "\t\t\t\t\t\t</description>\n");
- fprintf(outfp, "\t\t\t\t\t\t<LookAt>\n");
- fprintf(outfp, "\t\t\t\t\t\t\t<longitude>%.8f</longitude>\n",
- longitude);
- fprintf(outfp, "\t\t\t\t\t\t\t<latitude>%.8f</latitude>\n", latitude);
- fprintf(outfp, "\t\t\t\t\t\t\t<altitude>0</altitude>\n");
- fprintf(outfp, "\t\t\t\t\t\t\t<tilt>0</tilt>\n");
- fprintf(outfp, "\t\t\t\t\t\t\t<altitudeMode>relativeToGround"
- "</altitudeMode>\n");
- fprintf(outfp, "\t\t\t\t\t\t\t<gx:altitudeMode>relativeToSeaFloor"
- "</gx:altitudeMode>\n");
- fprintf(outfp, "\t\t\t\t\t\t</LookAt>\n");
- if (known)
- fprintf(outfp, "\t\t\t\t\t\t<styleUrl>#msn_placemark_grn_"
- "pushpin</styleUrl>\n");
- else
- fprintf(outfp, "\t\t\t\t\t\t<styleUrl>#msn_placemark_red_"
- "pushpin</styleUrl>\n");
- fprintf(outfp, "\t\t\t\t\t\t<Point>\n");
- fprintf(outfp, "\t\t\t\t\t\t\t<coordinates>%.8f,%.8f</coordinates>\n",
- longitude, latitude);
- fprintf(outfp, "\t\t\t\t\t\t</Point>\n");
- fprintf(outfp, "\t\t\t\t\t</Placemark>\n");
-
- if (!log_lines)
- return;
-
- fprintf(outfp, "\t<Folder>\n");
- fprintf(outfp, "\t\t<name>Lines</name>\n");
- fprintf(outfp, "\t\t<open>0</open>\n");
- fprintf(outfp, "\t\t<visibility>0</visibility>\n");
-
- geo2space(&x, &y, &z, longitude, latitude);
- meas = cell->meas;
- n = 0;
- while (meas) {
- if (meas->gps_valid) {
- double mx, my, mz, dist;
-
- geo2space(&mx, &my, &mz, meas->longitude,
- meas->latitude);
- dist = distinspace(x, y, z, mx, my, mz);
- fprintf(outfp, "\t\t<Placemark>\n");
- fprintf(outfp, "\t\t\t<name>Range</name>\n");
- fprintf(outfp, "\t\t\t<description>\n");
- fprintf(outfp, "Distance: %d\n", (int)dist);
- fprintf(outfp, "TA=%d (%d-%d meter)\n", meas->ta,
- (int)(GSM_TA_M * meas->ta),
- (int)(GSM_TA_M * (meas->ta + 1)));
- fprintf(outfp, "\t\t\t</description>\n");
- fprintf(outfp, "\t\t\t<visibility>0</visibility>\n");
- fprintf(outfp, "\t\t\t<LineString>\n");
- fprintf(outfp, "\t\t\t\t<tessellate>1</tessellate>\n");
- fprintf(outfp, "\t\t\t\t<coordinates>\n");
- fprintf(outfp, "%.8f,%.8f\n", longitude, latitude);
- fprintf(outfp, "%.8f,%.8f\n", meas->longitude,
- meas->latitude);
- fprintf(outfp, "\t\t\t\t</coordinates>\n");
- fprintf(outfp, "\t\t\t</LineString>\n");
- fprintf(outfp, "\t\t</Placemark>\n");
- }
- meas = meas->next;
- }
- fprintf(outfp, "\t</Folder>\n");
-}
-
-struct log_target *stderr_target;
-
-int main(int argc, char *argv[])
-{
- FILE *infp, *outfp;
- int type, n, i;
- char *p;
- struct node_mcc *mcc;
- struct node_mnc *mnc;
- struct node_lac *lac;
- struct node_cell *cell;
- struct node_meas *meas;
-
- log_init(&log_info, NULL);
- stderr_target = log_target_create_stderr();
- log_add_target(stderr_target);
- log_set_all_filter(stderr_target, 1);
- log_parse_category_mask(stderr_target, "Dxxx");
- log_set_log_level(stderr_target, LOGL_INFO);
-
- if (argc <= 2) {
-usage:
- fprintf(stderr, "Usage: %s <file.log> <file.kml> "
- "[lines] [debug]\n", argv[0]);
- fprintf(stderr, "lines: Add lines between cell and "
- "Measurement point\n");
- fprintf(stderr, "debug: Add debugging of location algorithm.\n"
- );
- return 0;
- }
-
- for (i = 3; i < argc; i++) {
- if (!strcmp(argv[i], "lines"))
- log_lines = 1;
- else if (!strcmp(argv[i], "debug"))
- log_debug = 1;
- else goto usage;
- }
-
- infp = fopen(argv[1], "r");
- if (!infp) {
- fprintf(stderr, "Failed to open '%s' for reading\n", argv[1]);
- return -EIO;
- }
-
- while ((type = read_log(infp))) {
- switch (type) {
- case LOG_TYPE_SYSINFO:
- add_sysinfo();
- break;
- case LOG_TYPE_POWER:
- add_power();
- break;
- }
- }
-
- fclose(infp);
-
- if (!strcmp(argv[2], "-"))
- outfp = stdout;
- else
- outfp = fopen(argv[2], "w");
- if (!outfp) {
- fprintf(stderr, "Failed to open '%s' for writing\n", argv[2]);
- return -EIO;
- }
-
- /* document name */
- p = argv[2];
- while (strchr(p, '/'))
- p = strchr(p, '/') + 1;
-
- kml_header(outfp, p);
- mcc = node_mcc_first;
- while (mcc) {
- printf("MCC: %02x\n", mcc->mcc);
- /* folder open */
- fprintf(outfp, "\t<Folder>\n");
- fprintf(outfp, "\t\t<name>MCC %s (%s)</name>\n",
- gsm_print_mcc(mcc->mcc), gsm_get_mcc(mcc->mcc));
- fprintf(outfp, "\t\t<open>0</open>\n");
- mnc = mcc->mnc;
- while (mnc) {
- printf(" MNC: %02x\n", mnc->mnc);
- /* folder open */
- fprintf(outfp, "\t\t<Folder>\n");
- fprintf(outfp, "\t\t\t<name>MNC %s (%s)</name>\n",
- gsm_print_mnc(mnc->mnc), gsm_get_mnc(mcc->mcc, mnc->mnc));
- fprintf(outfp, "\t\t\t<open>0</open>\n");
- lac = mnc->lac;
- while (lac) {
- printf(" LAC: %04x\n", lac->lac);
- /* folder open */
- fprintf(outfp, "\t\t\t<Folder>\n");
- fprintf(outfp, "\t\t\t\t<name>LAC %04x</name>\n", lac->lac);
- fprintf(outfp, "\t\t\t\t<open>0</open>\n");
- cell = lac->cell;
- while (cell) {
- printf(" CELL: %04x\n", cell->cellid);
- fprintf(outfp, "\t\t\t\t<Folder>\n");
- fprintf(outfp, "\t\t\t\t\t<name>CELL-ID %04x</name>\n", cell->cellid);
- fprintf(outfp, "\t\t\t\t\t<open>0</open>\n");
- meas = cell->meas;
- n = 0;
- while (meas) {
- if (meas->ta_valid)
- printf(" TA: %d\n", meas->ta);
- if (meas->gps_valid)
- kml_meas(outfp, meas, ++n, mcc->mcc, mnc->mnc,
- lac->lac, cell->cellid);
- meas = meas->next;
- }
- kml_cell(outfp, cell);
- /* folder close */
- fprintf(outfp, "\t\t\t\t</Folder>\n");
- cell = cell->next;
- }
- /* folder close */
- fprintf(outfp, "\t\t\t</Folder>\n");
- lac = lac->next;
- }
- /* folder close */
- fprintf(outfp, "\t\t</Folder>\n");
- mnc = mnc->next;
- }
- /* folder close */
- fprintf(outfp, "\t</Folder>\n");
- mcc = mcc->next;
- }
-#if 0
- FIXME: power
- /* folder open */
- fprintf(outfp, "\t<Folder>\n");
- fprintf(outfp, "\t\t<name>Power</name>\n");
- fprintf(outfp, "\t\t<open>0</open>\n");
- power = node_power_first;
- n = 0;
- while (power) {
- /* folder open */
- fprintf(outfp, "\t\t<Folder>\n");
- fprintf(outfp, "\t\t\t<name>Power %d</name>\n", ++n);
- fprintf(outfp, "\t\t\t<open>0</open>\n");
- /* folder close */
- fprintf(outfp, "\t\t</Folder>\n");
- power = power->next;
- }
- /* folder close */
- fprintf(outfp, "\t</Folder>\n");
-#endif
- kml_footer(outfp);
-
- fclose(outfp);
-
- return 0;
-}
diff --git a/Src/osmoconbb/src/host/gsmmap/locate.c b/Src/osmoconbb/src/host/gsmmap/locate.c
deleted file mode 100644
index ed0ac93..0000000
--- a/Src/osmoconbb/src/host/gsmmap/locate.c
+++ /dev/null
@@ -1,182 +0,0 @@
-/* Algorithm to locate a destination by distance measurement:
- */
-
-#include <stdio.h>
-#include <errno.h>
-#include <math.h>
-
-#include "geo.h"
-#include "locate.h"
-
-#define CIRCLE_PROBE 30.0
-#define FINETUNE_RADIUS 5.0
-
-extern double debug_long, debug_lat, debug_x_scale;
-extern FILE *debug_fp;
-extern int log_debug;
-
-static double finetune_x[6], finetune_y[6], finetune_dist[6];
-
-int locate_cell(struct probe *probe_first, double *min_x, double *min_y)
-{
- struct probe *probe, *min_probe;
- int i, test_steps, optimized;
- double min_dist, dist, x, y, rad, temp;
- double circle_probe, finetune_radius;
-
- /* convert meters into degrees */
- circle_probe = CIRCLE_PROBE / (EQUATOR_RADIUS * PI / 180.0);
- finetune_radius = FINETUNE_RADIUS / (EQUATOR_RADIUS * PI / 180.0);
-
- if (log_debug) {
- fprintf(debug_fp, "<Folder>\n");
- fprintf(debug_fp, "\t<name>Debug Locator</name>\n");
- fprintf(debug_fp, "\t<open>0</open>\n");
- fprintf(debug_fp, "\t<visibility>0</visibility>\n");
- }
-
- /* get probe of minimum distance */
- min_probe = NULL;
- probe = probe_first;
- min_dist = 42;
- i = 0;
- while (probe) {
- if (log_debug) {
- fprintf(debug_fp, "\t<Placemark>\n");
- fprintf(debug_fp, "\t\t<name>MEAS</name>\n");
- fprintf(debug_fp, "\t\t<visibility>0</visibility>\n");
- fprintf(debug_fp, "\t\t<LineString>\n");
- fprintf(debug_fp, "\t\t\t<tessellate>1</tessellate>\n");
- fprintf(debug_fp, "\t\t\t<coordinates>\n");
- rad = 2.0 * 3.1415927 / 35;
- for (i = 0; i < 35; i++) {
- x = probe->x + probe->dist * sin(rad * i);
- y = probe->y + probe->dist * cos(rad * i);
- fprintf(debug_fp, "%.8f,%.8f\n", debug_long +
- x * debug_x_scale, debug_lat + y);
- }
- fprintf(debug_fp, "\t\t\t</coordinates>\n");
- fprintf(debug_fp, "\t\t</LineString>\n");
- fprintf(debug_fp, "\t</Placemark>\n");
- }
-
- if (!min_probe || probe->dist < min_dist) {
- min_probe = probe;
- min_dist = probe->dist;
- }
- probe = probe->next;
- i++;
- }
-
- if (i < 3) {
- fprintf(stderr, "Need at least 3 points\n");
- return -EINVAL;
- }
-
- /* calculate the number of steps to search for destination point */
- test_steps = 2.0 * 3.1415927 * min_probe->dist / circle_probe;
- rad = 2.0 * 3.1415927 / test_steps;
-
- if (log_debug) {
- fprintf(debug_fp, "\t<Placemark>\n");
- fprintf(debug_fp, "\t\t<name>Smallest MEAS</name>\n");
- fprintf(debug_fp, "\t\t<visibility>0</visibility>\n");
- fprintf(debug_fp, "\t\t<LineString>\n");
- fprintf(debug_fp, "\t\t\t<tessellate>1</tessellate>\n");
- fprintf(debug_fp, "\t\t\t<coordinates>\n");
- }
-
- /* search on a circle for the location of the lowest distance
- * to the radius with the greatest distance */
- min_dist = 42;
- *min_x = *min_y = 42;
- for (i = 0; i < test_steps; i++) {
- x = min_probe->x + min_probe->dist * sin(rad * i);
- y = min_probe->y + min_probe->dist * cos(rad * i);
- if (log_debug)
- fprintf(debug_fp, "%.8f,%.8f\n", debug_long +
- x * debug_x_scale, debug_lat + y);
- /* look for greatest distance */
- dist = 0;
- probe = probe_first;
- while (probe) {
- if (probe != min_probe) {
- /* distance to the radius */
- temp = distonplane(probe->x, probe->y, x, y);
- temp -= probe->dist;
- if (temp < 0)
- temp = -temp;
- if (temp > dist)
- dist = temp;
- }
- probe = probe->next;
- }
- if (i == 0 || dist < min_dist) {
- min_dist = dist;
- *min_x = x;
- *min_y = y;
- }
- }
-
- if (log_debug) {
- fprintf(debug_fp, "\t\t\t</coordinates>\n");
- fprintf(debug_fp, "\t\t</LineString>\n");
- fprintf(debug_fp, "\t</Placemark>\n");
-
- fprintf(debug_fp, "\t<Placemark>\n");
- fprintf(debug_fp, "\t\t<name>Finetune</name>\n");
- fprintf(debug_fp, "\t\t<visibility>0</visibility>\n");
- fprintf(debug_fp, "\t\t<LineString>\n");
- fprintf(debug_fp, "\t\t\t<tessellate>1</tessellate>\n");
- fprintf(debug_fp, "\t\t\t<coordinates>\n");
- }
-
- min_dist = 9999999999.0;
-tune_again:
- if (log_debug)
- fprintf(debug_fp, "%.8f,%.8f\n", debug_long +
- *min_x * debug_x_scale, debug_lat + *min_y);
-
- /* finetune the point */
- rad = 2.0 * 3.1415927 / 6;
- for (i = 0; i < 6; i++) {
- x = *min_x + finetune_radius * sin(rad * i);
- y = *min_y + finetune_radius * cos(rad * i);
- /* search for the point with the lowest sum of distances */
- dist = 0;
- probe = probe_first;
- while (probe) {
- /* distance to the radius */
- temp = distonplane(probe->x, probe->y, x, y);
- temp -= probe->dist;
- if (temp < 0)
- temp = -temp;
- dist += temp;
- probe = probe->next;
- }
- finetune_dist[i] = dist;
- finetune_x[i] = x;
- finetune_y[i] = y;
- }
-
- optimized = 0;
- for (i = 0; i < 6; i++) {
- if (finetune_dist[i] < min_dist) {
- min_dist = finetune_dist[i];
- *min_x = finetune_x[i];
- *min_y = finetune_y[i];
- optimized = 1;
- }
- }
- if (optimized)
- goto tune_again;
-
- if (log_debug) {
- fprintf(debug_fp, "\t\t\t</coordinates>\n");
- fprintf(debug_fp, "\t\t</LineString>\n");
- fprintf(debug_fp, "\t</Placemark>\n");
- fprintf(debug_fp, "</Folder>\n");
- }
-
- return 0;
-}
diff --git a/Src/osmoconbb/src/host/gsmmap/locate.h b/Src/osmoconbb/src/host/gsmmap/locate.h
deleted file mode 100644
index 2613345..0000000
--- a/Src/osmoconbb/src/host/gsmmap/locate.h
+++ /dev/null
@@ -1,8 +0,0 @@
-
-struct probe {
- struct probe *next;
- double x, y, dist;
-};
-
-int locate_cell(struct probe *probe_first, double *min_x, double *min_y);
-
diff --git a/Src/osmoconbb/src/host/gsmmap/log.c b/Src/osmoconbb/src/host/gsmmap/log.c
deleted file mode 100644
index c2db801..0000000
--- a/Src/osmoconbb/src/host/gsmmap/log.c
+++ /dev/null
@@ -1,377 +0,0 @@
-/* Conversion of logged cells to KML file */
-
-/* (C) 2010 by Andreas Eversberg <jolly@eversberg.eu>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include <osmocom/bb/common/osmocom_data.h>
-
-#include "log.h"
-
-extern struct power power;
-extern struct sysinfo sysinfo;
-extern struct node_power *node_power_first;
-extern struct node_power **node_power_last_p;
-extern struct node_mcc *node_mcc_first;
-
-struct node_mcc *get_node_mcc(uint16_t mcc)
-{
- struct node_mcc *node_mcc;
- struct node_mcc **node_mcc_p = &node_mcc_first;
-
-//printf("add mcc %d\n", mcc);
- while (*node_mcc_p) {
- /* found in list */
- if ((*node_mcc_p)->mcc == mcc)
- return *node_mcc_p;
- /* insert into list */
- if ((*node_mcc_p)->mcc > mcc)
- break;
- node_mcc_p = &((*node_mcc_p)->next);
- }
-
-//printf("new mcc %d\n", mcc);
- /* append or insert to list */
- node_mcc = calloc(1, sizeof(struct node_mcc));
- if (!node_mcc)
- return NULL;
- node_mcc->mcc = mcc;
- node_mcc->next = *node_mcc_p;
- *node_mcc_p = node_mcc;
- return node_mcc;
-}
-
-struct node_mnc *get_node_mnc(struct node_mcc *mcc, uint16_t mnc)
-{
- struct node_mnc *node_mnc;
- struct node_mnc **node_mnc_p = &mcc->mnc;
-
- while (*node_mnc_p) {
- /* found in list */
- if ((*node_mnc_p)->mnc == mnc)
- return *node_mnc_p;
- /* insert into list */
- if ((*node_mnc_p)->mnc > mnc)
- break;
- node_mnc_p = &((*node_mnc_p)->next);
- }
-
- /* append or insert to list */
- node_mnc = calloc(1, sizeof(struct node_mnc));
- if (!node_mnc)
- return NULL;
- node_mnc->mnc = mnc;
- node_mnc->next = *node_mnc_p;
- *node_mnc_p = node_mnc;
- return node_mnc;
-}
-
-struct node_lac *get_node_lac(struct node_mnc *mnc, uint16_t lac)
-{
- struct node_lac *node_lac;
- struct node_lac **node_lac_p = &mnc->lac;
-
- while (*node_lac_p) {
- /* found in list */
- if ((*node_lac_p)->lac == lac)
- return *node_lac_p;
- /* insert into list */
- if ((*node_lac_p)->lac > lac)
- break;
- node_lac_p = &((*node_lac_p)->next);
- }
-
- /* append or insert to list */
- node_lac = calloc(1, sizeof(struct node_lac));
- if (!node_lac)
- return NULL;
- node_lac->lac = lac;
- node_lac->next = *node_lac_p;
- *node_lac_p = node_lac;
- return node_lac;
-}
-
-struct node_cell *get_node_cell(struct node_lac *lac, uint16_t cellid)
-{
- struct node_cell *node_cell;
- struct node_cell **node_cell_p = &lac->cell;
-
- while (*node_cell_p) {
- /* found in list */
- if ((*node_cell_p)->cellid == cellid)
- return *node_cell_p;
- /* insert into list */
- if ((*node_cell_p)->cellid > cellid)
- break;
- node_cell_p = &((*node_cell_p)->next);
- }
-
- /* append or insert to list */
- node_cell = calloc(1, sizeof(struct node_cell));
- if (!node_cell)
- return NULL;
- node_cell->meas_last_p = &node_cell->meas;
- node_cell->cellid = cellid;
- node_cell->next = *node_cell_p;
- *node_cell_p = node_cell;
- return node_cell;
-}
-
-struct node_meas *add_node_meas(struct node_cell *cell)
-{
- struct node_meas *node_meas;
-
- /* append to list */
- node_meas = calloc(1, sizeof(struct node_meas));
- if (!node_meas)
- return NULL;
- node_meas->gmt = sysinfo.gmt;
- node_meas->rxlev = sysinfo.rxlev;
- if (sysinfo.ta_valid) {
- node_meas->ta_valid = 1;
- node_meas->ta = sysinfo.ta;
- }
- if (sysinfo.gps_valid) {
- node_meas->gps_valid = 1;
- node_meas->longitude = sysinfo.longitude;
- node_meas->latitude = sysinfo.latitude;
- }
- *cell->meas_last_p = node_meas;
- cell->meas_last_p = &node_meas->next;
- return node_meas;
-}
-
-/* read "<ncc>,<bcc>" */
-static void read_log_bsic(char *buffer)
-{
- char *p;
- uint8_t bsic;
-
- /* skip first spaces */
- while (*buffer == ' ')
- buffer++;
-
- /* read ncc */
- p = buffer;
- while (*p > ' ' && *p != ',')
- p++;
- if (*p == '\0')
- return; /* no value */
- *p++ = '\0';
- bsic = atoi(buffer) << 3;
- buffer = p;
-
- /* read latitude */
- bsic |= atoi(buffer);
-
- sysinfo.bsic = bsic;
-}
-
-/* read "<longitude> <latitude>" */
-static void read_log_pos(char *buffer, double *longitude, double *latitude,
- uint8_t *valid)
-{
- char *p;
-
- /* skip first spaces */
- while (*buffer == ' ')
- buffer++;
-
- /* read longitude */
- p = buffer;
- while (*p > ' ')
- p++;
- if (*p == '\0')
- return; /* no value after longitude */
- *p++ = '\0';
- *longitude = atof(buffer);
- buffer = p;
-
- /* skip second spaces */
- while (*buffer == ' ')
- buffer++;
-
- /* read latitude */
- *latitude = atof(buffer);
-
- *valid = 1;
-}
-
-/* read "<arfcn> <value> <next value> ...." */
-static void read_log_power(char *buffer)
-{
- char *p;
- int arfcn;
-
- /* skip first spaces */
- while (*buffer == ' ')
- buffer++;
-
- /* read arfcn */
- p = buffer;
- while (*p > ' ')
- p++;
- if (*p == '\0')
- return; /* no value after arfcn */
- *p++ = '\0';
- arfcn = atoi(buffer);
- buffer = p;
-
- while (*buffer) {
- /* wrong arfcn */
- if (arfcn < 0 || arfcn > 1023)
- break;
- /* skip spaces */
- while (*buffer == ' ')
- buffer++;
- /* get value */
- p = buffer;
- while (*p > ' ')
- p++;
- /* last value */
- if (*p == '\0') {
- power.rxlev[arfcn] = atoi(buffer);
- break;
- }
- *p++ = '\0';
- power.rxlev[arfcn] = atoi(buffer);
- arfcn++;
- buffer = p;
- }
-}
-
-/* read "xx xx xx xx xx...." */
-static void read_log_si(char *buffer, uint8_t *data)
-{
- uint8_t si[23];
- int i;
-
-// printf("%s ", buffer);
- for (i = 0; i < 23; i++) {
- while (*buffer == ' ')
- buffer++;
- if (*buffer >= '0' && *buffer <= '9')
- si[i] = (*buffer - '0') << 4;
- else if (*buffer >= 'a' && *buffer <= 'f')
- si[i] = (*buffer - 'a' + 10) << 4;
- else if (*buffer >= 'A' && *buffer <= 'F')
- si[i] = (*buffer - 'A' + 10) << 4;
- else
- break;
- buffer++;
- if (*buffer >= '0' && *buffer <= '9')
- si[i] += *buffer - '0';
- else if (*buffer >= 'a' && *buffer <= 'f')
- si[i] += *buffer - 'a' + 10;
- else if (*buffer >= 'A' && *buffer <= 'F')
- si[i] += *buffer - 'A' + 10;
- else
- break;
- buffer++;
-// printf("%02x ", si[i]);
- }
-// printf("\n");
-
- if (i == 23)
- memcpy(data, si, 23);
-}
-
-/* read next record from log file */
-int read_log(FILE *infp)
-{
- static int type = LOG_TYPE_NONE, ret;
- char buffer[256];
-
- memset(&sysinfo, 0, sizeof(sysinfo));
- memset(&power, 0, sizeof(power));
- memset(&power.rxlev, -128, sizeof(power.rxlev));
-
- if (feof(infp))
- return LOG_TYPE_NONE;
-
- while (fgets(buffer, sizeof(buffer), infp)) {
- buffer[sizeof(buffer) - 1] = 0;
- if (buffer[0])
- buffer[strlen(buffer) - 1] = '\0';
- if (buffer[0] == '[') {
- if (!strcmp(buffer, "[sysinfo]")) {
- ret = type;
- type = LOG_TYPE_SYSINFO;
- if (ret != LOG_TYPE_NONE)
- return ret;
- } else
- if (!strcmp(buffer, "[power]")) {
- ret = type;
- type = LOG_TYPE_POWER;
- if (ret != LOG_TYPE_NONE)
- return ret;
- } else {
- type = LOG_TYPE_NONE;
- }
- continue;
- }
- switch (type) {
- case LOG_TYPE_SYSINFO:
- if (!strncmp(buffer, "arfcn ", 6))
- sysinfo.arfcn = atoi(buffer + 6);
- else if (!strncmp(buffer, "si1 ", 4))
- read_log_si(buffer + 4, sysinfo.si1);
- else if (!strncmp(buffer, "si2 ", 4))
- read_log_si(buffer + 4, sysinfo.si2);
- else if (!strncmp(buffer, "si2bis ", 7))
- read_log_si(buffer + 7, sysinfo.si2bis);
- else if (!strncmp(buffer, "si2ter ", 7))
- read_log_si(buffer + 7, sysinfo.si2ter);
- else if (!strncmp(buffer, "si3 ", 4))
- read_log_si(buffer + 4, sysinfo.si3);
- else if (!strncmp(buffer, "si4 ", 4))
- read_log_si(buffer + 4, sysinfo.si4);
- else if (!strncmp(buffer, "time ", 5))
- sysinfo.gmt = strtoul(buffer + 5, NULL, 0);
- else if (!strncmp(buffer, "position ", 9))
- read_log_pos(buffer + 9, &sysinfo.longitude,
- &sysinfo.latitude, &sysinfo.gps_valid);
- else if (!strncmp(buffer, "rxlev ", 5))
- sysinfo.rxlev =
- strtoul(buffer + 5, NULL, 0);
- else if (!strncmp(buffer, "bsic ", 5))
- read_log_bsic(buffer + 5);
- else if (!strncmp(buffer, "ta ", 3)) {
- sysinfo.ta_valid = 1;
- sysinfo.ta = atoi(buffer + 3);
- }
- break;
- case LOG_TYPE_POWER:
- if (!strncmp(buffer, "arfcn ", 6))
- read_log_power(buffer + 6);
- else if (!strncmp(buffer, "time ", 5))
- power.gmt = strtoul(buffer + 5, NULL, 0);
- else if (!strncmp(buffer, "position ", 9))
- read_log_pos(buffer + 9, &power.longitude,
- &power.latitude, &sysinfo.gps_valid);
- break;
- }
- }
-
- return type;
-}
-
diff --git a/Src/osmoconbb/src/host/gsmmap/log.h b/Src/osmoconbb/src/host/gsmmap/log.h
deleted file mode 100644
index d152010..0000000
--- a/Src/osmoconbb/src/host/gsmmap/log.h
+++ /dev/null
@@ -1,80 +0,0 @@
-
-enum {
- LOG_TYPE_NONE = 0,
- LOG_TYPE_SYSINFO,
- LOG_TYPE_POWER,
-};
-
-struct power {
- uint8_t gps_valid;
- double longitude, latitude;
- time_t gmt;
- int8_t rxlev[1024];
-};
-
-struct node_power {
- struct node_power *next;
- struct power power;
-};
-
-struct node_mcc {
- struct node_mcc *next;
- uint16_t mcc;
- struct node_mnc *mnc;
-};
-
-struct node_mnc {
- struct node_mnc *next;
- uint16_t mnc;
- struct node_lac *lac;
-};
-
-struct node_lac {
- struct node_lac *next;
- uint16_t lac;
- struct node_cell *cell;
-};
-
-struct sysinfo {
- uint16_t arfcn;
- int8_t rxlev;
- uint8_t bsic;
- uint8_t gps_valid;
- double longitude, latitude;
- time_t gmt;
- uint8_t si1[23];
- uint8_t si2[23];
- uint8_t si2bis[23];
- uint8_t si2ter[23];
- uint8_t si3[23];
- uint8_t si4[23];
- uint8_t ta_valid;
- uint8_t ta;
-};
-
-struct node_cell {
- struct node_cell *next;
- uint16_t cellid;
- uint8_t content; /* indicates, if sysinfo is already applied */
- struct node_meas *meas, **meas_last_p;
- struct sysinfo sysinfo;
- struct gsm48_sysinfo s;
-};
-
-struct node_meas {
- struct node_meas *next;
- time_t gmt;
- int8_t rxlev;
- uint8_t gps_valid;
- double longitude, latitude;
- uint8_t ta_valid;
- uint8_t ta;
-};
-
-struct node_mcc *get_node_mcc(uint16_t mcc);
-struct node_mnc *get_node_mnc(struct node_mcc *mcc, uint16_t mnc);
-struct node_lac *get_node_lac(struct node_mnc *mnc, uint16_t lac);
-struct node_cell *get_node_cell(struct node_lac *lac, uint16_t cellid);
-struct node_meas *add_node_meas(struct node_cell *cell);
-int read_log(FILE *infp);
-
diff --git a/Src/osmoconbb/src/host/layer23/.gitignore b/Src/osmoconbb/src/host/layer23/.gitignore
deleted file mode 100644
index 8fb93f7..0000000
--- a/Src/osmoconbb/src/host/layer23/.gitignore
+++ /dev/null
@@ -1,36 +0,0 @@
-# autoreconf by-products
-*.in
-
-aclocal.m4
-autom4te.cache/
-config.h.in
-configure
-depcomp
-install-sh
-missing
-
-# configure by-products
-.deps
-Makefile
-
-config.h
-config.log
-config.status
-
-# build by-products
-*.o
-*.a
-
-# various
-*.sw?
-*.deps
-
-# final executables
-src/misc/bcch_scan
-src/misc/cbch_sniff
-src/misc/cell_log
-src/misc/echo_test
-src/misc/cbch_sniff
-src/misc/ccch_scan
-src/misc/layer23
-src/mobile/mobile
diff --git a/Src/osmoconbb/src/host/layer23/COPYING b/Src/osmoconbb/src/host/layer23/COPYING
deleted file mode 100644
index d511905..0000000
--- a/Src/osmoconbb/src/host/layer23/COPYING
+++ /dev/null
@@ -1,339 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.
diff --git a/Src/osmoconbb/src/host/layer23/Makefile.am b/Src/osmoconbb/src/host/layer23/Makefile.am
deleted file mode 100644
index bc3910f..0000000
--- a/Src/osmoconbb/src/host/layer23/Makefile.am
+++ /dev/null
@@ -1,3 +0,0 @@
-AUTOMAKE_OPTIONS = foreign dist-bzip2 1.6
-
-SUBDIRS = include src
diff --git a/Src/osmoconbb/src/host/layer23/README b/Src/osmoconbb/src/host/layer23/README
deleted file mode 100644
index dd59823..0000000
--- a/Src/osmoconbb/src/host/layer23/README
+++ /dev/null
@@ -1,42 +0,0 @@
-= OsmocomBB layer23 architecture =
-
-layer23 is an (incomplete) MS-side implementation of the L2 and L3 GSM
-protocols as described in GSM TS 04.06, 04.08 and others.
-
-== Interfaces ==
-
-L1 (on the phone) uses the L1CTL protocol to talk with layer23 (on the PC).
-
-L2 (inside layer23) uses the RSLms protocol to talk with the L3 (inside layer23)
-
-
-=== RSLms ===
-
-RSLms is modeled after the GSM TS 08.58 Radio Subsystem Link protocol. Despite
-being designed for the network side, RSL seems a good match for the L2/L3
-interface inside a MS, too.
-
-At least the RLL (Radio Link Layer) part of RSL is 100% as applicable to the MS
-side as it is for the ntwork side.
-
-==== Lower interface (L2 to RSLms) ====
-
-Layer2 calls rslms_sendmsg() with a msgb that has the msgb->l2h pointing to a
-RSL header (struct abis_rsl_common_hdr).
-
-==== Upper interface (L3 to RSLms) ====
-
-Layer3 calls rslms_recvmsg() with a msgb that has the msgb->l2h pointing to a
-RSL header (struct abis_rsl_common_hdr).
-
-There are utility functions like rslms_tx_rll_req() and rslms_tx_rsll_req_l3()
-for creating msgb's with the apropriate RSL/RLL headers.
-
-
-=== LAPDm ===
-
-LAPDm is the GSM TS 04.06 protocol
-
-The lower interface (to L1) is using L1CTL
-
-The upper interface (to L3) is using RSLms
diff --git a/Src/osmoconbb/src/host/layer23/configure.ac b/Src/osmoconbb/src/host/layer23/configure.ac
deleted file mode 100644
index b50868a..0000000
--- a/Src/osmoconbb/src/host/layer23/configure.ac
+++ /dev/null
@@ -1,38 +0,0 @@
-dnl Process this file with autoconf to produce a configure script
-AC_INIT
-
-AM_INIT_AUTOMAKE(layer23, 0.0.0)
-
-dnl kernel style compile messages
-m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
-
-dnl checks for programs
-AC_PROG_MAKE_SET
-AC_PROG_CC
-AC_PROG_INSTALL
-AC_PROG_RANLIB
-
-dnl checks for libraries
-PKG_CHECK_MODULES(LIBOSMOCORE, libosmocore)
-PKG_CHECK_MODULES(LIBOSMOVTY, libosmovty)
-PKG_CHECK_MODULES(LIBOSMOGSM, libosmogsm)
-PKG_CHECK_MODULES(LIBOSMOCODEC, libosmocodec)
-AC_CHECK_LIB(gps, gps_waiting, CFLAGS+=" -D_HAVE_GPSD" LDFLAGS+=" -lgps",,)
-
-dnl checks for header files
-AC_HEADER_STDC
-
-dnl Checks for typedefs, structures and compiler characteristics
-
-AC_OUTPUT(
- src/Makefile
- src/common/Makefile
- src/misc/Makefile
- src/mobile/Makefile
- include/Makefile
- include/osmocom/Makefile
- include/osmocom/bb/Makefile
- include/osmocom/bb/common/Makefile
- include/osmocom/bb/misc/Makefile
- include/osmocom/bb/mobile/Makefile
- Makefile)
diff --git a/Src/osmoconbb/src/host/layer23/include/Makefile.am b/Src/osmoconbb/src/host/layer23/include/Makefile.am
deleted file mode 100644
index 297ece9..0000000
--- a/Src/osmoconbb/src/host/layer23/include/Makefile.am
+++ /dev/null
@@ -1,2 +0,0 @@
-noinst_HEADERS = l1ctl_proto.h
-SUBDIRS = osmocom
diff --git a/Src/osmoconbb/src/host/layer23/include/l1ctl_proto.h b/Src/osmoconbb/src/host/layer23/include/l1ctl_proto.h
deleted file mode 120000
index f12ba71..0000000
--- a/Src/osmoconbb/src/host/layer23/include/l1ctl_proto.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../../include/l1ctl_proto.h \ No newline at end of file
diff --git a/Src/osmoconbb/src/host/layer23/include/osmocom/Makefile.am b/Src/osmoconbb/src/host/layer23/include/osmocom/Makefile.am
deleted file mode 100644
index 5adf9df..0000000
--- a/Src/osmoconbb/src/host/layer23/include/osmocom/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-SUBDIRS = bb
diff --git a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/Makefile.am b/Src/osmoconbb/src/host/layer23/include/osmocom/bb/Makefile.am
deleted file mode 100644
index 58a5f7f..0000000
--- a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-SUBDIRS = common misc mobile
diff --git a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/Makefile.am b/Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/Makefile.am
deleted file mode 100644
index 26e63cf..0000000
--- a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/Makefile.am
+++ /dev/null
@@ -1,2 +0,0 @@
-noinst_HEADERS = l1ctl.h l1l2_interface.h l23_app.h lapdm.h logging.h \
- networks.h gps.h sysinfo.h osmocom_data.h
diff --git a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/gps.h b/Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/gps.h
deleted file mode 100644
index 58c0c53..0000000
--- a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/gps.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * (C) 2010 by Andreas Eversberg <jolly@eversberg.eu>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-enum {
- GPS_TYPE_UNDEF,
- GPS_TYPE_GPSD,
- GPS_TYPE_SERIAL
-};
-
-struct osmo_gps {
- /* GPS device */
- uint8_t enable;
- uint8_t gps_type;
-
-#ifdef _HAVE_GPSD
- char gpsd_host[32];
- char gpsd_port[6];
-#endif
-
- char device[32];
- uint32_t baud;
-
- /* current data */
- uint8_t valid; /* we have a fix */
- time_t gmt; /* GMT time when position was received */
- double latitude, longitude;
-};
-
-extern struct osmo_gps g;
-
-int osmo_gps_open(void);
-void osmo_gps_close(void);
-void osmo_gps_init(void);
-
-
diff --git a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/l1ctl.h b/Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/l1ctl.h
deleted file mode 100644
index 5ebea96..0000000
--- a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/l1ctl.h
+++ /dev/null
@@ -1,76 +0,0 @@
-#ifndef osmocom_l1ctl_h
-#define osmocom_l1ctl_h
-
-#include <osmocom/core/msgb.h>
-#include <osmocom/bb/common/osmocom_data.h>
-
-struct osmocom_ms;
-
-/* Receive incoming data from L1 using L1CTL format */
-int l1ctl_recv(struct osmocom_ms *ms, struct msgb *msg);
-
-/* Transmit L1CTL_DATA_REQ */
-int l1ctl_tx_data_req(struct osmocom_ms *ms, struct msgb *msg, uint8_t chan_nr,
- uint8_t link_id);
-
-/* Transmit L1CTL_PARAM_REQ */
-int l1ctl_tx_param_req(struct osmocom_ms *ms, uint8_t ta, uint8_t tx_power);
-
-int l1ctl_tx_crypto_req(struct osmocom_ms *ms, uint8_t algo, uint8_t *key,
- uint8_t len);
-
-/* Transmit L1CTL_RACH_REQ */
-int l1ctl_tx_rach_req(struct osmocom_ms *ms, uint8_t ra, uint16_t offset,
- uint8_t combined);
-
-/* Transmit L1CTL_DM_EST_REQ */
-int l1ctl_tx_dm_est_req_h0(struct osmocom_ms *ms, uint16_t band_arfcn,
- uint8_t chan_nr, uint8_t tsc, uint8_t tch_mode, uint8_t audio_mode);
-int l1ctl_tx_dm_est_req_h1(struct osmocom_ms *ms, uint8_t maio, uint8_t hsn,
- uint16_t *ma, uint8_t ma_len, uint8_t chan_nr, uint8_t tsc,
- uint8_t tch_mode, uint8_t audio_mode);
-
-/* Transmit L1CTL_DM_FREQ_REQ */
-int l1ctl_tx_dm_freq_req_h0(struct osmocom_ms *ms, uint16_t band_arfcn,
- uint8_t tsc, uint16_t fn);
-int l1ctl_tx_dm_freq_req_h1(struct osmocom_ms *ms, uint8_t maio, uint8_t hsn,
- uint16_t *ma, uint8_t ma_len, uint8_t tsc, uint16_t fn);
-
-/* Transmit L1CTL_DM_REL_REQ */
-int l1ctl_tx_dm_rel_req(struct osmocom_ms *ms);
-
-/* Transmit FBSB_REQ */
-int l1ctl_tx_fbsb_req(struct osmocom_ms *ms, uint16_t arfcn,
- uint8_t flags, uint16_t timeout, uint8_t sync_info_idx,
- uint8_t ccch_mode);
-
-/* Transmit CCCH_MODE_REQ */
-int l1ctl_tx_ccch_mode_req(struct osmocom_ms *ms, uint8_t ccch_mode);
-
-/* Transmit TCH_MODE_REQ */
-int l1ctl_tx_tch_mode_req(struct osmocom_ms *ms, uint8_t tch_mode,
- uint8_t audio_mode);
-
-/* Transmit ECHO_REQ */
-int l1ctl_tx_echo_req(struct osmocom_ms *ms, unsigned int len);
-
-/* Transmit L1CTL_RESET_REQ */
-int l1ctl_tx_reset_req(struct osmocom_ms *ms, uint8_t type);
-
-/* Transmit L1CTL_PM_REQ */
-int l1ctl_tx_pm_req_range(struct osmocom_ms *ms, uint16_t arfcn_from,
- uint16_t arfcm_to);
-
-int l1ctl_tx_sim_req(struct osmocom_ms *ms, uint8_t *data, uint16_t length);
-
-/* Transmit L1CTL_VOICE_REQ */
-int l1ctl_tx_traffic_req(struct osmocom_ms *ms, struct msgb *msg,
- uint8_t chan_nr, uint8_t link_id);
-
-/* LAPDm wants to send a PH-* primitive to the physical layer (L1) */
-int l1ctl_ph_prim_cb(struct osmo_prim_hdr *oph, void *ctx);
-
-/* Transmit L1CTL_NEIGH_PM_REQ */
-int l1ctl_tx_neigh_pm_req(struct osmocom_ms *ms, int num, uint16_t *arfcn);
-
-#endif
diff --git a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/l1l2_interface.h b/Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/l1l2_interface.h
deleted file mode 100644
index 41403d8..0000000
--- a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/l1l2_interface.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#ifndef _L1L2_INTERFACE_H
-#define _L1L2_INTERFACE_H
-
-int layer2_open(struct osmocom_ms *ms, const char *socket_path);
-int layer2_close(struct osmocom_ms *ms);
-int osmo_send_l1(struct osmocom_ms *ms, struct msgb *msg);
-
-#endif /* _L1L2_INTERFACE_H */
diff --git a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/l23_app.h b/Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/l23_app.h
deleted file mode 100644
index e4c5d55..0000000
--- a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/l23_app.h
+++ /dev/null
@@ -1,35 +0,0 @@
-#ifndef _L23_APP_H
-#define _L23_APP_H
-
-struct option;
-
-/* Options supported by the l23 app */
-enum {
- L23_OPT_SAP = 1,
- L23_OPT_ARFCN = 2,
- L23_OPT_TAP = 4,
- L23_OPT_VTY = 8,
- L23_OPT_DBG = 16,
-};
-
-/* initialization, called once when starting the app, before entering
- * select loop */
-extern int l23_app_init(struct osmocom_ms *ms);
-extern int (*l23_app_work) (struct osmocom_ms *ms);
-extern int (*l23_app_exit) (struct osmocom_ms *ms);
-
-/* configuration options */
-struct l23_app_info {
- const char *copyright;
- const char *contribution;
-
- char *getopt_string;
- int (*cfg_supported)();
- int (*cfg_print_help)();
- int (*cfg_getopt_opt)(struct option **options);
- int (*cfg_handle_opt)(int c,const char *optarg);
-};
-
-extern struct l23_app_info *l23_app_info();
-
-#endif /* _L23_APP_H */
diff --git a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/lapdm.h b/Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/lapdm.h
deleted file mode 100644
index 2e78aee..0000000
--- a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/lapdm.h
+++ /dev/null
@@ -1,186 +0,0 @@
-#ifndef _OSMOCOM_LAPDM_H
-#define _OSMOCOM_LAPDM_H
-
-#include <stdint.h>
-
-#include <osmocom/core/timer.h>
-#include <osmocom/core/msgb.h>
-#include <osmocom/gsm/prim.h>
-
-/* primitive related sutff */
-
-enum osmo_ph_prim {
- PRIM_PH_DATA, /* PH-DATA */
- PRIM_PH_RACH, /* PH-RANDOM_ACCESS */
- PRIM_PH_CONN, /* PH-CONNECT */
- PRIM_PH_EMPTY_FRAME, /* PH-EMPTY_FRAME */
- PRIM_PH_RTS, /* PH-RTS */
-};
-
-/* for PH-RANDOM_ACCESS.req */
-struct ph_rach_req_param {
- uint8_t ra;
- uint8_t ta;
- uint8_t tx_power;
- uint8_t is_combined_ccch;
- uint16_t offset;
-};
-
-/* for PH-RANDOM_ACCESS.ind */
-struct ph_rach_ind_param {
- uint8_t ra;
- uint8_t acc_delay;
- uint32_t fn;
-};
-
-/* for PH-[UNIT]DATA.{req,ind} */
-struct ph_data_param {
- uint8_t link_id;
- uint8_t chan_nr;
-};
-
-struct ph_conn_ind_param {
- uint32_t fn;
-};
-
-struct osmo_phsap_prim {
- struct osmo_prim_hdr oph;
- union {
- struct ph_data_param data;
- struct ph_rach_req_param rach_req;
- struct ph_rach_ind_param rach_ind;
- struct ph_conn_ind_param conn_ind;
- } u;
-};
-
-enum lapdm_mode {
- LAPDM_MODE_MS,
- LAPDM_MODE_BTS,
-};
-
-enum lapdm_state {
- LAPDm_STATE_NULL = 0,
- LAPDm_STATE_IDLE,
- LAPDm_STATE_SABM_SENT,
- LAPDm_STATE_MF_EST,
- LAPDm_STATE_TIMER_RECOV,
- LAPDm_STATE_DISC_SENT,
-};
-
-struct lapdm_entity;
-
-struct lapdm_msg_ctx {
- struct lapdm_datalink *dl;
- int lapdm_fmt;
- uint8_t n201;
- uint8_t chan_nr;
- uint8_t link_id;
- uint8_t addr;
- uint8_t ctrl;
- uint8_t ta_ind;
- uint8_t tx_power_ind;
-};
-
-/* TS 04.06 / Section 3.5.2 */
-struct lapdm_datalink {
- uint8_t V_send; /* seq nr of next I frame to be transmitted */
- uint8_t V_ack; /* last frame ACKed by peer */
- uint8_t N_send; /* ? set to V_send at Tx time*/
- uint8_t V_recv; /* seq nr of next I frame expected to be received */
- uint8_t N_recv; /* expected send seq nr of the next received I frame */
- uint32_t state;
- int seq_err_cond; /* condition of sequence error */
- uint8_t own_busy, peer_busy;
- struct osmo_timer_list t200;
- uint8_t retrans_ctr;
- struct llist_head send_queue; /* frames from L3 */
- struct msgb *send_buffer; /* current frame transmitting */
- int send_out; /* how much was sent from send_buffer */
- uint8_t tx_hist[8][200]; /* tx history buffer */
- int tx_length[8]; /* length in history buffer */
- struct llist_head tx_queue; /* frames to L1 */
- struct lapdm_msg_ctx mctx; /* context of established connection */
- struct msgb *rcv_buffer; /* buffer to assemble the received message */
-
- struct lapdm_entity *entity;
-};
-
-enum lapdm_dl_sapi {
- DL_SAPI0 = 0,
- DL_SAPI3 = 1,
- _NR_DL_SAPI
-};
-
-typedef int (*lapdm_cb_t)(struct msgb *msg, struct lapdm_entity *le, void *ctx);
-
-struct lapdm_cr_ent {
- uint8_t cmd;
- uint8_t resp;
-};
-
-#define LAPDM_ENT_F_EMPTY_FRAME 0x0001
-#define LAPDM_ENT_F_POLLING_ONLY 0x0002
-
-/* register message handler for messages that are sent from L2->L3 */
-struct lapdm_entity {
- struct lapdm_datalink datalink[_NR_DL_SAPI];
- int last_tx_dequeue; /* last entity that was dequeued */
- int tx_pending; /* currently a pending frame not confirmed by L1 */
- enum lapdm_mode mode; /* are we in BTS mode or MS mode */
- unsigned int flags;
-
- struct {
- /* filled-in once we set the lapdm_mode above */
- struct lapdm_cr_ent loc2rem;
- struct lapdm_cr_ent rem2loc;
- } cr;
-
- void *l1_ctx; /* context for layer1 instance */
- void *l3_ctx; /* context for layer3 instance */
-
- osmo_prim_cb l1_prim_cb;
- lapdm_cb_t l3_cb; /* callback for sending stuff to L3 */
-
- struct lapdm_channel *lapdm_ch;
-};
-
-/* the two lapdm_entities that form a GSM logical channel (ACCH + DCCH) */
-struct lapdm_channel {
- struct llist_head list;
- char *name;
- struct lapdm_entity lapdm_acch;
- struct lapdm_entity lapdm_dcch;
-};
-
-const char *get_rsl_name(int value);
-extern const char *lapdm_state_names[];
-
-/* initialize a LAPDm entity */
-void lapdm_entity_init(struct lapdm_entity *le, enum lapdm_mode mode);
-void lapdm_channel_init(struct lapdm_channel *lc, enum lapdm_mode mode);
-
-/* deinitialize a LAPDm entity */
-void lapdm_entity_exit(struct lapdm_entity *le);
-void lapdm_channel_exit(struct lapdm_channel *lc);
-
-/* input into layer2 (from layer 1) */
-int lapdm_phsap_up(struct osmo_prim_hdr *oph, struct lapdm_entity *le);
-
-/* input into layer2 (from layer 3) */
-int lapdm_rslms_recvmsg(struct msgb *msg, struct lapdm_channel *lc);
-
-void lapdm_channel_set_l3(struct lapdm_channel *lc, lapdm_cb_t cb, void *ctx);
-void lapdm_channel_set_l1(struct lapdm_channel *lc, osmo_prim_cb cb, void *ctx);
-
-int lapdm_entity_set_mode(struct lapdm_entity *le, enum lapdm_mode mode);
-int lapdm_channel_set_mode(struct lapdm_channel *lc, enum lapdm_mode mode);
-
-void lapdm_entity_reset(struct lapdm_entity *le);
-void lapdm_channel_reset(struct lapdm_channel *lc);
-
-void lapdm_entity_set_flags(struct lapdm_entity *le, unsigned int flags);
-void lapdm_channel_set_flags(struct lapdm_channel *lc, unsigned int flags);
-
-int lapdm_phsap_dequeue_prim(struct lapdm_entity *le, struct osmo_phsap_prim *pp);
-
-#endif /* _OSMOCOM_LAPDM_H */
diff --git a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/logging.h b/Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/logging.h
deleted file mode 100644
index 554b767..0000000
--- a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/logging.h
+++ /dev/null
@@ -1,29 +0,0 @@
-#ifndef _LOGGING_H
-#define _LOGGING_H
-
-#define DEBUG
-#include <osmocom/core/logging.h>
-
-enum {
- DRSL,
- DRR,
- DPLMN,
- DCS,
- DNB,
- DMM,
- DCC,
- DSMS,
- DMNCC,
- DMEAS,
- DPAG,
- DLAPDM,
- DL1C,
- DSAP,
- DSUM,
- DSIM,
- DGPS,
-};
-
-extern const struct log_info log_info;
-
-#endif /* _LOGGING_H */
diff --git a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/networks.h b/Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/networks.h
deleted file mode 100644
index e681216..0000000
--- a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/networks.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef _NETWORKS_H
-#define _NETWORKS_H
-
-#define GSM_INPUT_INVALID 0xffff
-
-struct gsm_networks {
- uint16_t mcc;
- int16_t mnc;
- const char *name;
-};
-
-int gsm_match_mcc(uint16_t mcc, char *imsi);
-int gsm_match_mnc(uint16_t mcc, uint8_t mnc, char *imsi);
-const char *gsm_print_mcc(uint16_t mcc);
-const char *gsm_print_mnc(uint16_t mcc);
-const char *gsm_get_mcc(uint16_t mcc);
-const char *gsm_get_mnc(uint16_t mcc, uint16_t mnc);
-const char *gsm_imsi_mcc(char *imsi);
-const char *gsm_imsi_mnc(char *imsi);
-const uint16_t gsm_input_mcc(char *string);
-const uint16_t gsm_input_mnc(char *string);
-
-#endif /* _NETWORKS_H */
-
diff --git a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/osmocom_data.h b/Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/osmocom_data.h
deleted file mode 100644
index 6ad89cd..0000000
--- a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/osmocom_data.h
+++ /dev/null
@@ -1,129 +0,0 @@
-#ifndef osmocom_data_h
-#define osmocom_data_h
-
-#include <osmocom/core/select.h>
-#include <osmocom/gsm/gsm_utils.h>
-#include <osmocom/core/write_queue.h>
-
-struct osmocom_ms;
-
- /* FIXME no 'mobile' specific stuff should be here */
-#include <osmocom/bb/mobile/support.h>
-#include <osmocom/bb/mobile/settings.h>
-#include <osmocom/bb/mobile/subscriber.h>
-#include <osmocom/bb/common/lapdm.h>
-#include <osmocom/bb/common/sap_interface.h>
-#include <osmocom/bb/mobile/gsm48_rr.h>
-#include <osmocom/bb/common/sysinfo.h>
-#include <osmocom/bb/mobile/gsm322.h>
-#include <osmocom/bb/mobile/gsm48_mm.h>
-#include <osmocom/bb/mobile/gsm48_cc.h>
-#include <osmocom/bb/common/sim.h>
-#include <osmocom/bb/common/l1ctl.h>
-
-struct osmosap_entity {
- osmosap_cb_t msg_handler;
-};
-
-struct osmol1_entity {
- int (*l1_traffic_ind)(struct osmocom_ms *ms, struct msgb *msg);
-};
-
-struct osmomncc_entity {
- int (*mncc_recv)(struct osmocom_ms *ms, int msg_type, void *arg);
- uint32_t ref;
-};
-
-
-/* RX measurement statistics */
-struct rx_meas_stat {
- uint32_t last_fn;
-
- /* cumulated values of current cell from SACCH dl */
- uint32_t frames;
- uint32_t snr;
- uint32_t berr;
- uint32_t rxlev;
-
- /* counters loss criterion */
- int16_t dsc, ds_fail;
- int16_t s, rl_fail;
-};
-
-/* One Mobilestation for osmocom */
-struct osmocom_ms {
- struct llist_head entity;
- char name[32];
- struct osmo_wqueue l2_wq, sap_wq;
- uint16_t test_arfcn;
- struct osmol1_entity l1_entity;
-
- uint8_t deleting, shutdown, started;
- struct gsm_support support;
- struct gsm_settings settings;
- struct gsm_subscriber subscr;
- struct gsm_sim sim;
- struct lapdm_channel lapdm_channel;
- struct osmosap_entity sap_entity;
- struct rx_meas_stat meas;
- struct gsm48_rrlayer rrlayer;
- struct gsm322_plmn plmn;
- struct gsm322_cellsel cellsel;
- struct gsm48_mmlayer mmlayer;
- struct gsm48_cclayer cclayer;
- struct osmomncc_entity mncc_entity;
- struct llist_head trans_list;
-};
-
-enum osmobb_sig_subsys {
- SS_L1CTL,
- SS_GLOBAL,
-};
-
-enum osmobb_l1ctl_sig {
- S_L1CTL_FBSB_ERR,
- S_L1CTL_FBSB_RESP,
- S_L1CTL_RESET,
- S_L1CTL_PM_RES,
- S_L1CTL_PM_DONE,
- S_L1CTL_CCCH_MODE_CONF,
- S_L1CTL_TCH_MODE_CONF,
- S_L1CTL_LOSS_IND,
- S_L1CTL_NEIGH_PM_IND,
-};
-
-enum osmobb_global_sig {
- S_GLOBAL_SHUTDOWN,
-};
-
-struct osmobb_fbsb_res {
- struct osmocom_ms *ms;
- int8_t snr;
- uint8_t bsic;
- uint16_t band_arfcn;
-};
-
-struct osmobb_meas_res {
- struct osmocom_ms *ms;
- uint16_t band_arfcn;
- uint8_t rx_lev;
-};
-
-struct osmobb_ccch_mode_conf {
- struct osmocom_ms *ms;
- uint8_t ccch_mode;
-};
-
-struct osmobb_tch_mode_conf {
- struct osmocom_ms *ms;
- uint8_t tch_mode;
- uint8_t audio_mode;
-};
-
-struct osmobb_neigh_pm_ind {
- struct osmocom_ms *ms;
- uint16_t band_arfcn;
- uint8_t rx_lev;
-};
-
-#endif
diff --git a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/sap_interface.h b/Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/sap_interface.h
deleted file mode 100644
index f2f577a..0000000
--- a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/sap_interface.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef _SAP_INTERFACE_H
-#define _SAP_INTERFACE_H
-
-typedef int (*osmosap_cb_t)(struct msgb *msg, struct osmocom_ms *ms);
-
-int sap_open(struct osmocom_ms *ms, const char *socket_path);
-int sap_close(struct osmocom_ms *ms);
-int osmosap_send(struct osmocom_ms *ms, struct msgb *msg);
-int osmosap_register_handler(struct osmocom_ms *ms, osmosap_cb_t cb);
-
-#endif /* _SAP_INTERFACE_H */
diff --git a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/sim.h b/Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/sim.h
deleted file mode 100644
index a676b92..0000000
--- a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/sim.h
+++ /dev/null
@@ -1,274 +0,0 @@
-/*
- * (C) 2010 by Andreas Eversberg <jolly@eversberg.eu>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-
-/* 9.2 commands */
-#define GSM1111_CLASS_GSM 0xa0
-#define GSM1111_INST_SELECT 0xa4
-#define GSM1111_INST_STATUS 0xf2
-#define GSM1111_INST_READ_BINARY 0xb0
-#define GSM1111_INST_UPDATE_BINARY 0xd6
-#define GSM1111_INST_READ_RECORD 0xb2
-#define GSM1111_INST_UPDATE_RECORD 0xdc
-#define GSM1111_INST_SEEK 0xa2
-#define GSM1111_INST_INCREASE 0x32
-#define GSM1111_INST_VERIFY_CHV 0x20
-#define GSM1111_INST_CHANGE_CHV 0x24
-#define GSM1111_INST_DISABLE_CHV 0x26
-#define GSM1111_INST_ENABLE_CHV 0x28
-#define GSM1111_INST_UNBLOCK_CHV 0x2c
-#define GSM1111_INST_INVALIDATE 0x04
-#define GSM1111_INST_REHABLILITATE 0x44
-#define GSM1111_INST_RUN_GSM_ALGO 0x88
-#define GSM1111_INST_SLEEP 0xfa
-#define GSM1111_INST_GET_RESPONSE 0xc0
-#define GSM1111_INST_TERMINAL_PROFILE 0x10
-#define GSM1111_INST_ENVELOPE 0xc2
-#define GSM1111_INST_FETCH 0x12
-#define GSM1111_INST_TERMINAL_RESPONSE 0x14
-
-/* 9.3 access conditions */
-#define GSM1111_ACC_ALWAYS 0x0
-#define GSM1111_ACC_CHV1 0x1
-#define GSM1111_ACC_CHV2 0x2
-#define GSM1111_ACC_RFU 0x3
-#define GSM1111_ACC_NEW 0xf
-/* others are ADM */
-
-/* 9.3 type of file */
-#define GSM1111_TOF_RFU 0x00
-#define GSM1111_TOF_MF 0x01
-#define GSM1111_TOF_DF 0x02
-#define GSM1111_TOF_EF 0x04
-
-/* 9.3 struct of file */
-#define GSM1111_SOF_TRANSPARENT 0x00
-#define GSM1111_SOF_LINEAR 0x01
-#define GSM1111_SOF_CYCLIC 0x03
-
-/* 9.4 status */
-#define GSM1111_STAT_NORMAL 0x90
-#define GSM1111_STAT_PROACTIVE 0x91
-#define GSM1111_STAT_DL_ERROR 0x9e
-#define GSM1111_STAT_RESPONSE 0x9f
-#define GSM1111_STAT_RESPONSE_TOO 0x61
-#define GSM1111_STAT_APP_TK_BUSY 0x93
-#define GSM1111_STAT_MEM_PROBLEM 0x92
-#define GSM1111_STAT_REFERENCING 0x94
-#define GSM1111_STAT_SECURITY 0x98
-#define GSM1111_STAT_INCORR_P3 0x67
-#define GSM1111_STAT_INCORR_P1_P2 0x6b
-#define GSM1111_STAT_UKN_INST 0x6d
-#define GSM1111_STAT_WRONG_CLASS 0x6e
-#define GSM1111_STAT_TECH_PROBLEM 0x6f
-
-/* 9.4.4 Referencing management SW2 */
-#define GSM1111_REF_NO_EF 0x00
-#define GSM1111_REF_OUT_OF_RANGE 0x02
-#define GSM1111_REF_FILE_NOT_FOUND 0x04
-#define GSM1111_REF_FILE_INCONSI 0x08
-
-/* 9.4.5 Security management SW2 */
-#define GSM1111_SEC_NO_CHV 0x02
-#define GSM1111_SEC_NO_ACCESS 0x04
-#define GSM1111_SEC_CONTRA_CHV 0x08
-#define GSM1111_SEC_CONTRA_INVAL 0x10
-#define GSM1111_SEC_BLOCKED 0x40
-#define GSM1111_SEC_MAX_VALUE 0x50
-
-/* messages from application to sim client */
-enum {
- /* requests */
- SIM_JOB_READ_BINARY,
- SIM_JOB_UPDATE_BINARY,
- SIM_JOB_READ_RECORD,
- SIM_JOB_UPDATE_RECORD,
- SIM_JOB_SEEK_RECORD,
- SIM_JOB_INCREASE,
- SIM_JOB_INVALIDATE,
- SIM_JOB_REHABILITATE,
- SIM_JOB_RUN_GSM_ALGO,
- SIM_JOB_PIN1_UNLOCK,
- SIM_JOB_PIN1_CHANGE,
- SIM_JOB_PIN1_DISABLE,
- SIM_JOB_PIN1_ENABLE,
- SIM_JOB_PIN1_UNBLOCK,
- SIM_JOB_PIN2_UNLOCK,
- SIM_JOB_PIN2_CHANGE,
- SIM_JOB_PIN2_UNBLOCK,
-
- /* results */
- SIM_JOB_OK,
- SIM_JOB_ERROR,
-};
-
-/* messages from sim client to application */
-#define SIM_JOB_OK 0
-#define SIM_JOB_ERROR 1
-
-/* error causes */
-#define SIM_CAUSE_NO_SIM 0 /* no SIM present, if detectable */
-#define SIM_CAUSE_SIM_ERROR 1 /* any error while reading SIM */
-#define SIM_CAUSE_REQUEST_ERROR 2 /* error in request */
-#define SIM_CAUSE_PIN1_REQUIRED 3 /* CHV1 is required for access */
-#define SIM_CAUSE_PIN2_REQUIRED 4 /* CHV2 is required for access */
-#define SIM_CAUSE_PIN1_BLOCKED 5 /* CHV1 was entered too many times */
-#define SIM_CAUSE_PIN2_BLOCKED 6 /* CHV2 was entered too many times */
-#define SIM_CAUSE_PUC_BLOCKED 7 /* unblock entered too many times */
-
-/* job states */
-enum {
- SIM_JST_IDLE = 0,
- SIM_JST_SELECT_MFDF, /* SELECT sent */
- SIM_JST_SELECT_MFDF_RESP, /* GET RESPONSE sent */
- SIM_JST_SELECT_EF, /* SELECT sent */
- SIM_JST_SELECT_EF_RESP, /* GET RESPONSE sent */
- SIM_JST_WAIT_FILE, /* file command sent */
- SIM_JST_RUN_GSM_ALGO, /* wait for algorithm to process */
- SIM_JST_RUN_GSM_ALGO_RESP, /* wait for response */
- SIM_JST_PIN1_UNLOCK,
- SIM_JST_PIN1_CHANGE,
- SIM_JST_PIN1_DISABLE,
- SIM_JST_PIN1_ENABLE,
- SIM_JST_PIN1_UNBLOCK,
- SIM_JST_PIN2_UNLOCK,
- SIM_JST_PIN2_CHANGE,
- SIM_JST_PIN2_UNBLOCK,
-};
-
-#define MAX_SIM_PATH_LENGTH 6 + 1 /* one for the termination */
-
-struct gsm_sim_handler {
- struct llist_head entry;
-
- uint32_t handle;
- void (*cb)(struct osmocom_ms *ms, struct msgb *msg);
-};
-
-struct gsm_sim {
- struct llist_head handlers; /* gsm_sim_handler */
- struct llist_head jobs; /* messages */
- uint16_t path[MAX_SIM_PATH_LENGTH];
- uint16_t file;
-
- struct msgb *job_msg;
- uint32_t job_handle;
- int job_state;
-
- uint8_t reset;
- uint8_t chv1_remain, chv2_remain;
- uint8_t unblk1_remain, unblk2_remain;
-};
-
-struct sim_hdr {
- int handle;
- uint8_t job_type;
- uint16_t path[MAX_SIM_PATH_LENGTH];
- uint16_t file;
- uint8_t rec_no, rec_mode; /* in case of record */
- uint8_t seek_type_mode; /* in case of seek command */
-};
-
-#define SIM_ALLOC_SIZE 512
-#define SIM_ALLOC_HEADROOM 64
-
-struct msgb *gsm_sim_msgb_alloc(uint32_t handle, uint8_t job_type);
-uint32_t sim_open(struct osmocom_ms *ms,
- void (*cb)(struct osmocom_ms *ms, struct msgb *msg));
-void sim_close(struct osmocom_ms *ms, uint32_t handle);
-void sim_job(struct osmocom_ms *ms, struct msgb *msg);
-
-/* Section 9.2.1 (response to selecting DF or MF) */
-struct gsm1111_response_mfdf {
- uint16_t rfu1;
- uint16_t free_mem;
- uint16_t file_id;
- uint8_t tof;
- uint8_t rfu2[5];
- uint8_t length;
- uint8_t gsm_data[0];
-} __attribute__ ((packed));
-
-struct gsm1111_response_mfdf_gsm {
- uint8_t file_char;
- uint8_t num_df;
- uint8_t num_ef;
- uint8_t num_codes;
- uint8_t rfu1;
- uint8_t chv1_remain:4,
- rfu2:3,
- chv1_init:1;
- uint8_t unblk1_remain:4,
- rfu3:3,
- unblk1_init:1;
- uint8_t chv2_remain:4,
- rfu4:3,
- chv2_init:1;
- uint8_t unblk2_remain:4,
- rfu5:3,
- unblk2_init:1;
- uint8_t more_data[0];
-} __attribute__ ((packed));
-
-/* Section 9.2.1 (response to selecting EF) */
-struct gsm1111_response_ef {
- uint16_t rfu1;
- uint16_t file_size;
- uint16_t file_id;
- uint8_t tof;
- uint8_t inc_allowed;
- uint8_t acc_update:4,
- acc_read:4;
- uint8_t rfu2:4,
- acc_inc:4;
- uint8_t acc_inval:4,
- acc_reha:4;
- uint8_t not_inval:1,
- rfu3:1,
- ru_inval:1,
- rfu4:5;
- uint8_t length;
- uint8_t structure;
-} __attribute__ ((packed));
-
-/* Section 10.3.17 */
-struct gsm1111_ef_loci {
- uint32_t tmsi;
- struct gsm48_loc_area_id lai;
- uint8_t tmsi_time;
- uint8_t lupd_status;
-} __attribute__ ((packed));
-
-/* Section 10.5.1 */
-struct gsm1111_ef_adn {
- uint8_t len_bcd;
- uint8_t ton_npi;
- uint8_t number[10];
- uint8_t capa_conf;
- uint8_t ext_id;
-} __attribute__ ((packed));
-
-int sim_apdu_resp(struct osmocom_ms *ms, struct msgb *msg);
-int gsm_sim_init(struct osmocom_ms *ms);
-int gsm_sim_exit(struct osmocom_ms *ms);
-int gsm_sim_job_dequeue(struct osmocom_ms *ms);
-
-
diff --git a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/sysinfo.h b/Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/sysinfo.h
deleted file mode 100644
index 5d3ed59..0000000
--- a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/common/sysinfo.h
+++ /dev/null
@@ -1,158 +0,0 @@
-#ifndef _SYSINFO_H
-#define _SYSINFO_H
-
-#include <osmocom/gsm/gsm48_ie.h>
-
-/* collection of system information of the current cell */
-
-/* frequency mask flags of frequency type */
-#define FREQ_TYPE_SERV 0x01 /* frequency of the serving cell */
-#define FREQ_TYPE_HOPP 0x02 /* frequency used for channel hopping */
-#define FREQ_TYPE_NCELL 0x1c /* frequency of the neighbor cell */
-#define FREQ_TYPE_NCELL_2 0x04 /* sub channel of SI 2 */
-#define FREQ_TYPE_NCELL_2bis 0x08 /* sub channel of SI 2bis */
-#define FREQ_TYPE_NCELL_2ter 0x10 /* sub channel of SI 2ter */
-#define FREQ_TYPE_REP 0xe0 /* frequency to be reported */
-#define FREQ_TYPE_REP_5 0x20 /* sub channel of SI 5 */
-#define FREQ_TYPE_REP_5bis 0x40 /* sub channel of SI 5bis */
-#define FREQ_TYPE_REP_5ter 0x80 /* sub channel of SI 5ter */
-
-/* structure of all received system informations */
-struct gsm48_sysinfo {
- /* flags of available information */
- uint8_t si1, si2, si2bis, si2ter, si3,
- si4, si5, si5bis, si5ter, si6;
-
- /* memory maps to simply detect change in system info messages */
- uint8_t si1_msg[23];
- uint8_t si2_msg[23];
- uint8_t si2b_msg[23];
- uint8_t si2t_msg[23];
- uint8_t si3_msg[23];
- uint8_t si4_msg[23];
- uint8_t si5_msg[18];
- uint8_t si5b_msg[18];
- uint8_t si5t_msg[18];
- uint8_t si6_msg[18];
-
- struct gsm_sysinfo_freq freq[1024]; /* all frequencies */
- uint16_t hopping[64]; /* hopping arfcn */
- uint8_t hopp_len;
-
- /* serving cell */
- uint8_t bsic;
- uint16_t cell_id;
- uint16_t mcc, mnc, lac; /* LAI */
- uint8_t max_retrans; /* decoded */
- uint8_t tx_integer; /* decoded */
- uint8_t reest_denied; /* 1 = denied */
- uint8_t cell_barr; /* 1 = barred */
- uint16_t class_barr; /* bit 10 is emergency */
-
- /* si1 rest */
- uint8_t nch;
- uint8_t nch_position;
- uint8_t band_ind; /* set for DCS */
-
- /* si3 rest */
- uint8_t sp;
- uint8_t sp_cbq;
- uint8_t sp_cro;
- uint8_t sp_to;
- uint8_t sp_pt;
- uint8_t po;
- uint8_t po_value;
- uint8_t si2ter_ind;
- uint8_t ecsm;
- uint8_t sched;
- uint8_t sched_where;
- uint8_t gprs;
- uint8_t gprs_ra_colour;
- uint8_t gprs_si13_pos;
-
- /* cell selection */
- int8_t ms_txpwr_max_cch;
- int8_t cell_resel_hyst_db;
- int8_t rxlev_acc_min_db;
- uint8_t neci;
- uint8_t acs;
- /* bcch options */
- uint8_t bcch_radio_link_timeout;
- uint8_t bcch_dtx;
- uint8_t bcch_pwrc;
- /* sacch options */
- uint8_t sacch_radio_link_timeout;
- uint8_t sacch_dtx;
- uint8_t sacch_pwrc;
- /* control channel */
- uint8_t ccch_conf;
- uint8_t bs_ag_blks_res;
- uint8_t att_allowed;
- uint8_t pag_mf_periods;
- int32_t t3212; /* real value in seconds */
- /* channel description */
- uint8_t tsc;
- uint8_t h; /* using hopping */
- uint16_t arfcn;
- uint8_t maio;
- uint8_t hsn;
- uint8_t chan_nr; /* type, slot, sub slot */
-
- /* neighbor cell */
- uint8_t nb_ext_ind_si2;
- uint8_t nb_ba_ind_si2;
- uint8_t nb_ext_ind_si2bis;
- uint8_t nb_ba_ind_si2bis;
- uint8_t nb_multi_rep_si2ter; /* see GSM 05.08 8.4.3 */
- uint8_t nb_ba_ind_si2ter;
- uint8_t nb_ext_ind_si5;
- uint8_t nb_ba_ind_si5;
- uint8_t nb_ext_ind_si5bis;
- uint8_t nb_ba_ind_si5bis;
- uint8_t nb_multi_rep_si5ter;
- uint8_t nb_ba_ind_si5ter;
- uint8_t nb_ncc_permitted_si2;
- uint8_t nb_ncc_permitted_si6;
- uint8_t nb_max_retrans; /* decoded */
- uint8_t nb_tx_integer; /* decoded */
- uint8_t nb_reest_denied; /* 1 = denied */
- uint8_t nb_cell_barr; /* 1 = barred */
- uint16_t nb_class_barr; /* bit 10 is emergency */
-};
-
-char *gsm_print_arfcn(uint16_t arfcn);
-uint8_t gsm_refer_pcs(uint16_t arfcn, struct gsm48_sysinfo *s);
-int gsm48_sysinfo_dump(struct gsm48_sysinfo *s, uint16_t arfcn,
- void (*print)(void *, const char *, ...), void *priv,
- uint8_t *freq_map);
-int gsm48_decode_lai(struct gsm48_loc_area_id *lai, uint16_t *mcc,
- uint16_t *mnc, uint16_t *lac);
-int gsm48_decode_chan_h0(struct gsm48_chan_desc *cd, uint8_t *tsc,
- uint16_t *arfcn);
-int gsm48_decode_chan_h1(struct gsm48_chan_desc *cd, uint8_t *tsc,
- uint8_t *maio, uint8_t *hsn);
-int gsm48_decode_sysinfo1(struct gsm48_sysinfo *s,
- struct gsm48_system_information_type_1 *si, int len);
-int gsm48_decode_sysinfo2(struct gsm48_sysinfo *s,
- struct gsm48_system_information_type_2 *si, int len);
-int gsm48_decode_sysinfo2bis(struct gsm48_sysinfo *s,
- struct gsm48_system_information_type_2bis *si, int len);
-int gsm48_decode_sysinfo2ter(struct gsm48_sysinfo *s,
- struct gsm48_system_information_type_2ter *si, int len);
-int gsm48_decode_sysinfo3(struct gsm48_sysinfo *s,
- struct gsm48_system_information_type_3 *si, int len);
-int gsm48_decode_sysinfo4(struct gsm48_sysinfo *s,
- struct gsm48_system_information_type_4 *si, int len);
-int gsm48_decode_sysinfo5(struct gsm48_sysinfo *s,
- struct gsm48_system_information_type_5 *si, int len);
-int gsm48_decode_sysinfo5bis(struct gsm48_sysinfo *s,
- struct gsm48_system_information_type_5bis *si, int len);
-int gsm48_decode_sysinfo5ter(struct gsm48_sysinfo *s,
- struct gsm48_system_information_type_5ter *si, int len);
-int gsm48_decode_sysinfo6(struct gsm48_sysinfo *s,
- struct gsm48_system_information_type_6 *si, int len);
-int gsm48_decode_mobile_alloc(struct gsm_sysinfo_freq *freq,
- uint8_t *ma, uint8_t len, uint16_t *hopping, uint8_t *hopp_len,
- int si4);
-
-#endif /* _SYSINFO_H */
diff --git a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/misc/Makefile.am b/Src/osmoconbb/src/host/layer23/include/osmocom/bb/misc/Makefile.am
deleted file mode 100644
index 71c9d38..0000000
--- a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/misc/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-noinst_HEADERS = layer3.h rslms.h
diff --git a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/misc/cell_log.h b/Src/osmoconbb/src/host/layer23/include/osmocom/bb/misc/cell_log.h
deleted file mode 100644
index bce066e..0000000
--- a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/misc/cell_log.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Cell Scanning code for OsmocomBB */
-
-/* (C) 2010 by Andreas Eversberg <jolly@eversberg.eu>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-int scan_init(struct osmocom_ms *_ms);
-int scan_exit(void);
-
diff --git a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/misc/layer3.h b/Src/osmoconbb/src/host/layer23/include/osmocom/bb/misc/layer3.h
deleted file mode 100644
index bbf242d..0000000
--- a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/misc/layer3.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifndef _OSMOCOM_L3_H
-#define _OSMOCOM_L3_H
-
-#include <osmocom/core/msgb.h>
-#include <osmocom/bb/common/osmocom_data.h>
-
-int gsm48_rx_ccch(struct msgb *msg, struct osmocom_ms *ms);
-int gsm48_rx_dcch(struct msgb *msg, struct osmocom_ms *ms);
-int gsm48_rx_bcch(struct msgb *msg, struct osmocom_ms *ms);
-
-/* Initialize layer3 for the MS, hook it to L2 */
-int layer3_init(struct osmocom_ms *ms);
-
-/* Reset the 'aplication' state */
-void layer3_app_reset(void);
-
-#endif
diff --git a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/misc/rslms.h b/Src/osmoconbb/src/host/layer23/include/osmocom/bb/misc/rslms.h
deleted file mode 100644
index 94fe99c..0000000
--- a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/misc/rslms.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef _OSMOCOM_RSLMS_H
-#define _OSMOCOM_RSLMS_H
-
-#include <osmocom/core/msgb.h>
-#include <osmocom/bb/common/osmocom_data.h>
-
-/* From L3 into RSLMS (direction -> L2) */
-
-/* Send a 'simple' RLL request to L2 */
-int rslms_tx_rll_req(struct osmocom_ms *ms, uint8_t msg_type,
- uint8_t chan_nr, uint8_t link_id);
-
-/* Send a RLL request (including L3 info) to L2 */
-int rslms_tx_rll_req_l3(struct osmocom_ms *ms, uint8_t msg_type,
- uint8_t chan_nr, uint8_t link_id, struct msgb *msg);
-
-
-/* From L2 into RSLMS (direction -> L3) */
-
-/* input function that L2 calls when sending messages up to L3 */
-//int rslms_sendmsg(struct msgb *msg, struct osmocom_ms *ms);
-
-#endif /* _OSMOCOM_RSLMS_H */
diff --git a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/Makefile.am b/Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/Makefile.am
deleted file mode 100644
index 951e4d1..0000000
--- a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/Makefile.am
+++ /dev/null
@@ -1,2 +0,0 @@
-noinst_HEADERS = gsm322.h gsm48_cc.h gsm48_mm.h gsm48_rr.h mncc.h settings.h \
- subscriber.h support.h transaction.h vty.h
diff --git a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/app_mobile.h b/Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/app_mobile.h
deleted file mode 100644
index 4010a68..0000000
--- a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/app_mobile.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifndef APP_MOBILE_H
-#define APP_MOBILE_H
-
-char *config_dir;
-
-int l23_app_init(int (*mncc_recv)(struct osmocom_ms *ms, int, void *),
- const char *config_file, uint16_t vty_port);
-int l23_app_exit(void);
-int l23_app_work(int *quit);
-int mobile_delete(struct osmocom_ms *ms, int force);
-struct osmocom_ms *mobile_new(char *name);
-int mobile_init(struct osmocom_ms *ms);
-int mobile_exit(struct osmocom_ms *ms, int force);
-int mobile_work(struct osmocom_ms *ms);
-
-#endif
-
diff --git a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/gsm322.h b/Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/gsm322.h
deleted file mode 100644
index f39e566..0000000
--- a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/gsm322.h
+++ /dev/null
@@ -1,255 +0,0 @@
-#ifndef _GSM322_H
-#define _GSM322_H
-
-/* 4.3.1.1 List of states for PLMN slection process (automatic mode) */
-#define GSM322_A0_NULL 0
-#define GSM322_A1_TRYING_RPLMN 1
-#define GSM322_A2_ON_PLMN 2
-#define GSM322_A3_TRYING_PLMN 3
-#define GSM322_A4_WAIT_FOR_PLMN 4
-#define GSM322_A5_HPLMN_SEARCH 5
-#define GSM322_A6_NO_SIM 6
-
-/* 4.3.1.2 List of states for PLMN slection process (manual mode) */
-#define GSM322_M0_NULL 0
-#define GSM322_M1_TRYING_RPLMN 1
-#define GSM322_M2_ON_PLMN 2
-#define GSM322_M3_NOT_ON_PLMN 3
-#define GSM322_M4_TRYING_PLMN 4
-#define GSM322_M5_NO_SIM 5
-
-/* 4.3.2 List of states for cell selection process */
-#define GSM322_C0_NULL 0
-#define GSM322_C1_NORMAL_CELL_SEL 1
-#define GSM322_C2_STORED_CELL_SEL 2
-#define GSM322_C3_CAMPED_NORMALLY 3
-#define GSM322_C4_NORMAL_CELL_RESEL 4
-#define GSM322_C5_CHOOSE_CELL 5
-#define GSM322_C6_ANY_CELL_SEL 6
-#define GSM322_C7_CAMPED_ANY_CELL 7
-#define GSM322_C8_ANY_CELL_RESEL 8
-#define GSM322_C9_CHOOSE_ANY_CELL 9
-#define GSM322_CONNECTED_MODE_1 10
-#define GSM322_CONNECTED_MODE_2 11
-#define GSM322_PLMN_SEARCH 12
-#define GSM322_HPLMN_SEARCH 13
-#define GSM322_ANY_SEARCH 14
-
-/* GSM 03.22 events */
-#define GSM322_EVENT_SWITCH_ON 1
-#define GSM322_EVENT_SWITCH_OFF 2
-#define GSM322_EVENT_SIM_INSERT 3
-#define GSM322_EVENT_SIM_REMOVE 4
-#define GSM322_EVENT_REG_SUCCESS 5
-#define GSM322_EVENT_REG_FAILED 6
-#define GSM322_EVENT_ROAMING_NA 7
-#define GSM322_EVENT_INVALID_SIM 8
-#define GSM322_EVENT_NEW_PLMN 9
-#define GSM322_EVENT_ON_PLMN 10
-#define GSM322_EVENT_PLMN_SEARCH_START 11
-#define GSM322_EVENT_PLMN_SEARCH_END 12
-#define GSM322_EVENT_USER_RESEL 13
-#define GSM322_EVENT_PLMN_AVAIL 14
-#define GSM322_EVENT_CHOOSE_PLMN 15
-#define GSM322_EVENT_SEL_MANUAL 16
-#define GSM322_EVENT_SEL_AUTO 17
-#define GSM322_EVENT_CELL_FOUND 18
-#define GSM322_EVENT_NO_CELL_FOUND 19
-#define GSM322_EVENT_LEAVE_IDLE 20
-#define GSM322_EVENT_RET_IDLE 21
-#define GSM322_EVENT_CELL_RESEL 22
-#define GSM322_EVENT_SYSINFO 23
-#define GSM322_EVENT_HPLMN_SEARCH 24
-
-enum {
- PLMN_MODE_MANUAL,
- PLMN_MODE_AUTO
-};
-
-/* node for each PLMN */
-struct gsm322_plmn_list {
- struct llist_head entry;
- uint16_t mcc, mnc;
- int8_t rxlev; /* rx level in range format */
- uint8_t cause; /* cause value, if PLMN is not allowed */
-};
-
-/* node for each forbidden LA */
-struct gsm322_la_list {
- struct llist_head entry;
- uint16_t mcc, mnc, lac;
- uint8_t cause;
-};
-
-/* node for each BA-List */
-struct gsm322_ba_list {
- struct llist_head entry;
- uint16_t mcc, mnc;
- /* Band allocation for 1024+299 frequencies.
- * First bit of first index is frequency 0.
- */
- uint8_t freq[128+38];
-};
-
-#define GSM322_CS_FLAG_SUPPORT 0x01 /* frequency is supported by radio */
-#define GSM322_CS_FLAG_BA 0x02 /* frequency is part of the current ba */
-#define GSM322_CS_FLAG_POWER 0x04 /* frequency was power scanned */
-#define GSM322_CS_FLAG_SIGNAL 0x08 /* valid signal detected */
-#define GSM322_CS_FLAG_SYSINFO 0x10 /* complete sysinfo received */
-#define GSM322_CS_FLAG_BARRED 0x20 /* cell is barred */
-#define GSM322_CS_FLAG_FORBIDD 0x40 /* cell in list of forbidden LAs */
-#define GSM322_CS_FLAG_TEMP_AA 0x80 /* if temporary available and allowable */
-
-/* Cell selection list */
-struct gsm322_cs_list {
- uint8_t flags; /* see GSM322_CS_FLAG_* */
- int8_t rxlev; /* rx level range format */
- struct gsm48_sysinfo *sysinfo;
-};
-
-/* PLMN search process */
-struct gsm322_plmn {
- struct osmocom_ms *ms;
- int state; /* GSM322_Ax_* or GSM322_Mx_* */
-
- struct llist_head event_queue; /* event messages */
- struct llist_head sorted_plmn; /* list of sorted PLMN */
- struct llist_head forbidden_la; /* forbidden LAs */
-
- struct osmo_timer_list timer;
-
- int plmn_curr; /* current index in sorted_plmn */
- uint16_t mcc, mnc; /* current network selected */
-};
-
-/* state of CCCH activation */
-#define GSM322_CCCH_ST_IDLE 0 /* no connection */
-#define GSM322_CCCH_ST_INIT 1 /* initalized */
-#define GSM322_CCCH_ST_SYNC 2 /* got sync */
-#define GSM322_CCCH_ST_DATA 3 /* receiveing data */
-
-/* neighbour cell info list entry */
-struct gsm322_neighbour {
- struct llist_head entry;
- struct gsm322_cellsel *cs;
- uint16_t arfcn; /* ARFCN identity of that neighbour */
-
- uint8_t state; /* GSM322_NB_* */
- time_t created; /* when was this neighbour created */
- time_t when; /* when did we sync / read */
- int16_t rxlev_dbm; /* sum of received levels */
- uint8_t rxlev_count; /* number of received levels */
- int8_t rla_c_dbm; /* average of the reveive level */
- uint8_t c12_valid; /* both C1 and C2 are calculated */
- int16_t c1, c2, crh;
- uint8_t checked_for_resel;
- uint8_t suitable_allowable;
- uint8_t prio_low;
-};
-
-#define GSM322_NB_NEW 0 /* new NB instance */
-#define GSM322_NB_NOT_SUP 1 /* ARFCN not supported */
-#define GSM322_NB_RLA_C 2 /* valid measurement available */
-#define GSM322_NB_NO_SYNC 3 /* cannot sync to neighbour */
-#define GSM322_NB_NO_BCCH 4 /* sync */
-#define GSM322_NB_SYSINFO 5 /* sysinfo */
-
-struct gsm48_sysinfo;
-/* Cell selection process */
-struct gsm322_cellsel {
- struct osmocom_ms *ms;
- int state; /* GSM322_Cx_* */
-
- struct llist_head event_queue; /* event messages */
- struct llist_head ba_list; /* BCCH Allocation per PLMN */
- struct gsm322_cs_list list[1024+299];
- /* cell selection list per frequency. */
- /* scan and tune state */
- struct osmo_timer_list timer; /* cell selection timer */
- uint16_t mcc, mnc; /* current network to search for */
- uint8_t powerscan; /* currently scanning for power */
- uint8_t ccch_state; /* special state of current ccch */
- uint32_t scan_state; /* special state of current scan */
- uint16_t arfcn; /* current tuned idle mode arfcn */
- int arfci; /* list index of frequency above */
- uint8_t ccch_mode; /* curren CCCH_MODE_* */
- uint8_t sync_retries; /* number retries to sync */
- uint8_t sync_pending; /* to prevent double sync req. */
- struct gsm48_sysinfo *si; /* current sysinfo of tuned cell */
- uint8_t tuned; /* if a cell is selected */
- struct osmo_timer_list any_timer; /* restart search 'any cell' */
-
- /* serving cell */
- uint8_t selected; /* if a cell is selected */
- uint16_t sel_arfcn; /* current selected serving cell! */
- struct gsm48_sysinfo sel_si; /* copy of selected cell, will update */
- uint16_t sel_mcc, sel_mnc, sel_lac, sel_id;
-
- /* cell re-selection */
- struct llist_head nb_list; /* list of neighbour cells */
- uint16_t last_serving_arfcn; /* the ARFCN of last cell */
- uint8_t last_serving_valid; /* there is a last cell */
- struct gsm322_neighbour *neighbour; /* when selecting neighbour cell */
- time_t resel_when; /* timestamp of last re-selection */
- int8_t nb_meas_set;
- int16_t rxlev_dbm; /* sum of received levels */
- uint8_t rxlev_count; /* number of received levels */
- int8_t rla_c_dbm; /* average of received level */
- uint8_t c12_valid; /* both C1 and C2 values are
- calculated */
- int16_t c1, c2;
- uint8_t prio_low;
-};
-
-/* GSM 03.22 message */
-struct gsm322_msg {
- int msg_type;
- uint16_t mcc, mnc;
- uint8_t sysinfo; /* system information type */
- uint8_t same_cell; /* select same cell when RET_IDLE */
- uint8_t reject; /* location update reject cause */
- uint8_t limited; /* trigger search for limited serv. */
-};
-
-#define GSM322_ALLOC_SIZE sizeof(struct gsm322_msg)
-#define GSM322_ALLOC_HEADROOM 0
-
-uint16_t index2arfcn(int index);
-int arfcn2index(uint16_t arfcn);
-int gsm322_init(struct osmocom_ms *ms);
-int gsm322_exit(struct osmocom_ms *ms);
-struct msgb *gsm322_msgb_alloc(int msg_type);
-int gsm322_plmn_sendmsg(struct osmocom_ms *ms, struct msgb *msg);
-int gsm322_cs_sendmsg(struct osmocom_ms *ms, struct msgb *msg);
-int gsm322_c_event(struct osmocom_ms *ms, struct msgb *msg);
-int gsm322_plmn_dequeue(struct osmocom_ms *ms);
-int gsm322_cs_dequeue(struct osmocom_ms *ms);
-int gsm322_add_forbidden_la(struct osmocom_ms *ms, uint16_t mcc,
- uint16_t mnc, uint16_t lac, uint8_t cause);
-int gsm322_del_forbidden_la(struct osmocom_ms *ms, uint16_t mcc,
- uint16_t mnc, uint16_t lac);
-int gsm322_is_forbidden_la(struct osmocom_ms *ms, uint16_t mcc, uint16_t mnc,
- uint16_t lac);
-int gsm322_dump_sorted_plmn(struct osmocom_ms *ms);
-int gsm322_dump_cs_list(struct gsm322_cellsel *cs, uint8_t flags,
- void (*print)(void *, const char *, ...), void *priv);
-int gsm322_dump_forbidden_la(struct osmocom_ms *ms,
- void (*print)(void *, const char *, ...), void *priv);
-int gsm322_dump_ba_list(struct gsm322_cellsel *cs, uint16_t mcc, uint16_t mnc,
- void (*print)(void *, const char *, ...), void *priv);
-int gsm322_dump_nb_list(struct gsm322_cellsel *cs,
- void (*print)(void *, const char *, ...), void *priv);
-void start_cs_timer(struct gsm322_cellsel *cs, int sec, int micro);
-void start_loss_timer(struct gsm322_cellsel *cs, int sec, int micro);
-const char *get_a_state_name(int value);
-const char *get_m_state_name(int value);
-const char *get_cs_state_name(int value);
-int gsm322_l1_signal(unsigned int subsys, unsigned int signal,
- void *handler_data, void *signal_data);
-
-int gsm322_meas(struct osmocom_ms *ms, uint8_t rx_lev);
-
-char *gsm_print_rxlev(uint8_t rxlev);
-
-
-#endif /* _GSM322_H */
diff --git a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/gsm48_cc.h b/Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/gsm48_cc.h
deleted file mode 100644
index 8cdd1c4..0000000
--- a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/gsm48_cc.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifndef _GSM48_CC_H
-#define _GSM48_CC_H
-
-struct gsm48_cclayer {
- struct osmocom_ms *ms;
-
- struct llist_head mncc_upqueue;
-};
-
-int gsm48_cc_init(struct osmocom_ms *ms);
-int gsm48_cc_exit(struct osmocom_ms *ms);
-int gsm48_rcv_cc(struct osmocom_ms *ms, struct msgb *msg);
-int mncc_dequeue(struct osmocom_ms *ms);
-int mncc_send(struct osmocom_ms *ms, int msg_type, void *arg);
-
-#endif /* _GSM48_CC_H */
-
diff --git a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/gsm48_mm.h b/Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/gsm48_mm.h
deleted file mode 100644
index afdcf02..0000000
--- a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/gsm48_mm.h
+++ /dev/null
@@ -1,230 +0,0 @@
-#ifndef _GSM48_MM_H
-#define _GSM48_MM_H
-
-/* GSM 04.07 9.2.2 */
-#define GSM48_MMXX_MASK 0xf00
-#define GSM48_MMCC_CLASS 0x100
-#define GSM48_MMSS_CLASS 0x200
-#define GSM48_MMSMS_CLASS 0x300
-#define GSM48_MMCC_EST_REQ 0x110
-#define GSM48_MMCC_EST_IND 0x112
-#define GSM48_MMCC_EST_CNF 0x111
-#define GSM48_MMCC_REL_REQ 0x120
-#define GSM48_MMCC_REL_IND 0x122
-#define GSM48_MMCC_DATA_REQ 0x130
-#define GSM48_MMCC_DATA_IND 0x132
-#define GSM48_MMCC_UNIT_DATA_REQ 0x140
-#define GSM48_MMCC_UNIT_DATA_IND 0x142
-#define GSM48_MMCC_SYNC_IND 0x152
-#define GSM48_MMCC_REEST_REQ 0x160
-#define GSM48_MMCC_REEST_CNF 0x161
-#define GSM48_MMCC_ERR_IND 0x172
-#define GSM48_MMCC_PROMPT_IND 0x182
-#define GSM48_MMCC_PROMPT_REJ 0x184
-#define GSM48_MMSS_EST_REQ 0x210
-#define GSM48_MMSS_EST_IND 0x212
-#define GSM48_MMSS_EST_CNF 0x211
-#define GSM48_MMSS_REL_REQ 0x220
-#define GSM48_MMSS_REL_IND 0x222
-#define GSM48_MMSS_DATA_REQ 0x230
-#define GSM48_MMSS_DATA_IND 0x232
-#define GSM48_MMSS_UNIT_DATA_REQ 0x240
-#define GSM48_MMSS_UNIT_DATA_IND 0x242
-#define GSM48_MMSS_REEST_REQ 0x260
-#define GSM48_MMSS_REEST_CNF 0x261
-#define GSM48_MMSS_ERR_IND 0x272
-#define GSM48_MMSS_PROMPT_IND 0x282
-#define GSM48_MMSS_PROMPT_REJ 0x284
-#define GSM48_MMSMS_EST_REQ 0x310
-#define GSM48_MMSMS_EST_IND 0x312
-#define GSM48_MMSMS_EST_CNF 0x311
-#define GSM48_MMSMS_REL_REQ 0x320
-#define GSM48_MMSMS_REL_IND 0x322
-#define GSM48_MMSMS_DATA_REQ 0x330
-#define GSM48_MMSMS_DATA_IND 0x332
-#define GSM48_MMSMS_UNIT_DATA_REQ 0x340
-#define GSM48_MMSMS_UNIT_DATA_IND 0x342
-#define GSM48_MMSMS_REEST_REQ 0x360
-#define GSM48_MMSMS_REEST_CNF 0x361
-#define GSM48_MMSMS_ERR_IND 0x372
-#define GSM48_MMSMS_PROMPT_IND 0x382
-#define GSM48_MMSMS_PROMPT_REJ 0x384
-
-#define MMXX_ALLOC_SIZE 256
-#define MMXX_ALLOC_HEADROOM 64
-
-/* MMxx-SAP header */
-struct gsm48_mmxx_hdr {
- int msg_type; /* MMxx_* primitive */
- uint32_t ref; /* reference to transaction */
- uint32_t transaction_id; /* transaction identifier */
- uint8_t emergency; /* emergency type of call */
- uint8_t cause; /* cause used for release */
-};
-
-/* GSM 6.1.2 */
-#define GSM48_MMR_REG_REQ 0x01
-#define GSM48_MMR_REG_CNF 0x02
-#define GSM48_MMR_NREG_REQ 0x03
-#define GSM48_MMR_NREG_IND 0x04
-
-/* MMR-SAP header */
-struct gsm48_mmr {
- int msg_type;
-
- uint8_t cause;
-};
-
-/* GSM 04.07 9.2.1 */
-#define GSM48_MMXX_ST_IDLE 0
-#define GSM48_MMXX_ST_CONN_PEND 1
-#define GSM48_MMXX_ST_DEDICATED 2
-#define GSM48_MMXX_ST_CONN_SUSP 3
-#define GSM48_MMXX_ST_REESTPEND 4
-
-/* GSM 04.08 4.1.2.1 */
-#define GSM48_MM_ST_NULL 0
-#define GSM48_MM_ST_LOC_UPD_INIT 3
-#define GSM48_MM_ST_WAIT_OUT_MM_CONN 5
-#define GSM48_MM_ST_MM_CONN_ACTIVE 6
-#define GSM48_MM_ST_IMSI_DETACH_INIT 7
-#define GSM48_MM_ST_PROCESS_CM_SERV_P 8
-#define GSM48_MM_ST_WAIT_NETWORK_CMD 9
-#define GSM48_MM_ST_LOC_UPD_REJ 10
-#define GSM48_MM_ST_WAIT_RR_CONN_LUPD 13
-#define GSM48_MM_ST_WAIT_RR_CONN_MM_CON 14
-#define GSM48_MM_ST_WAIT_RR_CONN_IMSI_D 15
-#define GSM48_MM_ST_WAIT_REEST 17
-#define GSM48_MM_ST_WAIT_RR_ACTIVE 18
-#define GSM48_MM_ST_MM_IDLE 19
-#define GSM48_MM_ST_WAIT_ADD_OUT_MM_CON 20
-#define GSM48_MM_ST_MM_CONN_ACTIVE_VGCS 21
-#define GSM48_MM_ST_WAIT_RR_CONN_VGCS 22
-#define GSM48_MM_ST_LOC_UPD_PEND 23
-#define GSM48_MM_ST_IMSI_DETACH_PEND 24
-#define GSM48_MM_ST_RR_CONN_RELEASE_NA 25
-
-/* GSM 04.08 4.1.2.1 */
-#define GSM48_MM_SST_NORMAL_SERVICE 1
-#define GSM48_MM_SST_ATTEMPT_UPDATE 2
-#define GSM48_MM_SST_LIMITED_SERVICE 3
-#define GSM48_MM_SST_NO_IMSI 4
-#define GSM48_MM_SST_NO_CELL_AVAIL 5
-#define GSM48_MM_SST_LOC_UPD_NEEDED 6
-#define GSM48_MM_SST_PLMN_SEARCH 7
-#define GSM48_MM_SST_PLMN_SEARCH_NORMAL 8
-#define GSM48_MM_SST_RX_VGCS_NORMAL 9
-#define GSM48_MM_SST_RX_VGCS_LIMITED 10
-
-/* MM events */
-#define GSM48_MM_EVENT_CELL_SELECTED 1
-#define GSM48_MM_EVENT_NO_CELL_FOUND 2
-#define GSM48_MM_EVENT_TIMEOUT_T3210 3
-#define GSM48_MM_EVENT_TIMEOUT_T3211 4
-#define GSM48_MM_EVENT_TIMEOUT_T3212 5
-#define GSM48_MM_EVENT_TIMEOUT_T3213 6
-#define GSM48_MM_EVENT_TIMEOUT_T3220 7
-#define GSM48_MM_EVENT_TIMEOUT_T3230 8
-#define GSM48_MM_EVENT_TIMEOUT_T3240 9
-#define GSM48_MM_EVENT_IMSI_DETACH 10
-#define GSM48_MM_EVENT_POWER_OFF 11
-#define GSM48_MM_EVENT_PAGING 12
-#define GSM48_MM_EVENT_AUTH_RESPONSE 13
-#define GSM48_MM_EVENT_SYSINFO 14
-#define GSM48_MM_EVENT_USER_PLMN_SEL 15
-#define GSM48_MM_EVENT_LOST_COVERAGE 16
-
-/* message for MM events */
-struct gsm48_mm_event {
- uint32_t msg_type;
-
- uint8_t sres[4];
-};
-
-/* GSM 04.08 MM timers */
-#define GSM_T3210_MS 20, 0
-#define GSM_T3211_MS 15, 0
-/* T3212 is given by SYSTEM INFORMATION */
-#define GSM_T3213_MS 4, 0
-#define GSM_T3220_MS 5, 0
-#define GSM_T3230_MS 15, 0
-#define GSM_T3240_MS 10, 0
-#define GSM_T3241_MS 300, 0
-
-/* MM sublayer instance */
-struct gsm48_mmlayer {
- struct osmocom_ms *ms;
- int state;
- int substate;
-
- /* queue for RR-SAP, MMxx-SAP, MMR-SAP, events message upwards */
- struct llist_head rr_upqueue;
- struct llist_head mmxx_upqueue;
- struct llist_head mmr_downqueue;
- struct llist_head event_queue;
-
- /* timers */
- struct osmo_timer_list t3210, t3211, t3212, t3213;
- struct osmo_timer_list t3220, t3230, t3240;
- int t3212_value;
- int start_t3211; /* remember to start timer */
-
- /* list of MM connections */
- struct llist_head mm_conn;
-
- /* network name */
- char name_short[32];
- char name_long[32];
-
- /* location update */
- uint8_t lupd_pending; /* current pending loc. upd. */
- uint8_t lupd_type; /* current coded type */
- uint8_t lupd_attempt; /* attempt counter */
- uint8_t lupd_ra_failure;/* random access failed */
- uint8_t lupd_rej_cause; /* cause of last reject */
- uint8_t lupd_periodic; /* periodic update pending */
- uint8_t lupd_retry; /* pending T3211/T3213 to */
- uint16_t lupd_mcc, lupd_mnc, lupd_lac;
-
- /* imsi detach */
- uint8_t delay_detach; /* do detach when possible */
-
- /* other */
- uint8_t est_cause; /* cause of establishment msg */
- int mr_substate; /* rem most recent substate */
- uint8_t power_off_idle; /* waits for IDLE before po */
-};
-
-/* MM connection entry */
-struct gsm48_mm_conn {
- struct llist_head list;
- struct gsm48_mmlayer *mm;
-
- /* ref and type form a unique tupple */
- uint32_t ref; /* reference to trans */
- uint8_t protocol;
- uint8_t transaction_id;
-
- int state;
-};
-
-uint8_t gsm48_current_pwr_lev(struct gsm_settings *set, uint16_t arfcn);
-int gsm48_mm_init(struct osmocom_ms *ms);
-int gsm48_mm_exit(struct osmocom_ms *ms);
-struct msgb *gsm48_mmr_msgb_alloc(int msg_type);
-struct msgb *gsm48_mmevent_msgb_alloc(int msg_type);
-int gsm48_mmevent_msg(struct osmocom_ms *ms, struct msgb *msg);
-int gsm48_mmr_downmsg(struct osmocom_ms *ms, struct msgb *msg);
-int gsm48_rr_dequeue(struct osmocom_ms *ms);
-int gsm48_mmxx_dequeue(struct osmocom_ms *ms);
-int gsm48_mmr_dequeue(struct osmocom_ms *ms);
-int gsm48_mmevent_dequeue(struct osmocom_ms *ms);
-int gsm48_mmxx_downmsg(struct osmocom_ms *ms, struct msgb *msg);
-struct msgb *gsm48_mmxx_msgb_alloc(int msg_type, uint32_t ref,
- uint8_t transaction_id);
-const char *get_mmr_name(int value);
-const char *get_mmxx_name(int value);
-extern const char *gsm48_mm_state_names[];
-extern const char *gsm48_mm_substate_names[];
-
-#endif /* _GSM48_MM_H */
diff --git a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/gsm48_rr.h b/Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/gsm48_rr.h
deleted file mode 100644
index 1af09f4..0000000
--- a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/gsm48_rr.h
+++ /dev/null
@@ -1,203 +0,0 @@
-#ifndef _GSM48_RR_H
-#define _GSM48_RR_H
-
-#include <osmocom/gsm/protocol/gsm_04_08.h>
-
-#define GSM_TA_CM 55385
-
-/* GSM 04.07 9.1.2 */
-#define GSM48_RR_EST_REQ 0x10
-#define GSM48_RR_EST_IND 0x12
-#define GSM48_RR_EST_CNF 0x11
-#define GSM48_RR_REL_IND 0x22
-#define GSM48_RR_SYNC_IND 0x32
-#define GSM48_RR_DATA_REQ 0x40
-#define GSM48_RR_DATA_IND 0x42
-#define GSM48_RR_UNIT_DATA_IND 0x52
-#define GSM48_RR_ABORT_REQ 0x60
-#define GSM48_RR_ABORT_IND 0x62
-#define GSM48_RR_ACT_REQ 0x70
-
-#define RR_EST_CAUSE_EMERGENCY 1
-#define RR_EST_CAUSE_REESTAB_TCH_F 2
-#define RR_EST_CAUSE_REESTAB_TCH_H 3
-#define RR_EST_CAUSE_REESTAB_2_TCH_H 4
-#define RR_EST_CAUSE_ANS_PAG_ANY 5
-#define RR_EST_CAUSE_ANS_PAG_SDCCH 6
-#define RR_EST_CAUSE_ANS_PAG_TCH_F 7
-#define RR_EST_CAUSE_ANS_PAG_TCH_ANY 8
-#define RR_EST_CAUSE_ORIG_TCHF 9
-#define RR_EST_CAUSE_LOC_UPD 12
-#define RR_EST_CAUSE_OTHER_SDCCH 13
-
-#define RR_REL_CAUSE_UNDEFINED 0
-#define RR_REL_CAUSE_NORMAL 1
-#define RR_REL_CAUSE_NOT_AUTHORIZED 2
-#define RR_REL_CAUSE_RA_FAILURE 3
-#define RR_REL_CAUSE_T3122 4
-#define RR_REL_CAUSE_TRY_LATER 5
-#define RR_REL_CAUSE_EMERGENCY_ONLY 6
-#define RR_REL_CAUSE_LOST_SIGNAL 7
-#define RR_REL_CAUSE_LINK_FAILURE 8
-
-#define RR_SYNC_CAUSE_CIPHERING 1
-
-#define L3_ALLOC_SIZE 256
-#define L3_ALLOC_HEADROOM 64
-
-#define RSL_ALLOC_SIZE 256
-#define RSL_ALLOC_HEADROOM 64
-
-#define RR_ALLOC_SIZE 256
-#define RR_ALLOC_HEADROOM 64
-
-/* GSM 04.08 RR-SAP header */
-struct gsm48_rr_hdr {
- uint32_t msg_type; /* RR-* primitive */
- uint8_t cause;
-};
-
-/* GSM 04.07 9.1.1 */
-#define GSM48_RR_ST_IDLE 0
-#define GSM48_RR_ST_CONN_PEND 1
-#define GSM48_RR_ST_DEDICATED 2
-#define GSM48_RR_ST_REL_PEND 3
-
-/* modify state */
-#define GSM48_RR_MOD_NONE 0
-#define GSM48_RR_MOD_IMM_ASS 1
-#define GSM48_RR_MOD_ASSIGN 2
-#define GSM48_RR_MOD_HANDO 3
-#define GSM48_RR_MOD_ASSIGN_RESUME 4
-#define GSM48_RR_MOD_HANDO_RESUME 5
-
-/* channel description */
-struct gsm48_rr_cd {
- uint8_t tsc;
- uint8_t h; /* using hopping */
- uint16_t arfcn; /* dedicated mode */
- uint8_t maio;
- uint8_t hsn;
- uint8_t chan_nr; /* type, slot, sub slot */
- uint8_t link_id;
- uint8_t ind_tx_power; /* last indicated power */
- uint8_t ind_ta; /* last indicated ta */
- uint8_t mob_alloc_lv[9]; /* len + up to 64 bits */
- uint8_t freq_list_lv[131]; /* len + 130 octets */
- uint8_t freq_seq_lv[10]; /* len + 9 octets */
- uint8_t cell_desc_lv[17]; /* len + 16 octets */
- uint8_t start; /* start time available */
- struct gsm_time start_tm; /* start time */
- uint8_t mode; /* mode of channel */
- uint8_t cipher; /* ciphering of channel */
-};
-
-struct gsm48_cr_hist {
- uint8_t valid;
- struct gsm48_req_ref ref;
-};
-
-/* neighbor cell measurements */
-struct gsm48_rr_meas {
- /* note: must be sorted by arfcn 1..1023,0 according to SI5* */
- uint8_t nc_num; /* number of measured cells (32 max) */
- int8_t nc_rxlev[32]; /* -128 = no value */
- uint8_t nc_bsic[32];
- uint16_t nc_arfcn[32];
-};
-
-/* RR sublayer instance */
-struct gsm48_rrlayer {
- struct osmocom_ms *ms;
- int state;
-
- /* queue for RSL-SAP message upwards */
- struct llist_head rsl_upqueue;
-
- /* queue for messages while RR connection is built up */
- struct llist_head downqueue;
-
- /* timers */
- struct osmo_timer_list t_starting; /* starting time for chan. access */
- struct osmo_timer_list t_rel_wait; /* wait for L2 to transmit UA */
- struct osmo_timer_list t3110;
- struct osmo_timer_list t3122;
- struct osmo_timer_list t3124;
- struct osmo_timer_list t3126;
- int t3126_value;
-#ifndef TODO
- struct osmo_timer_list temp_rach_ti; /* temporary timer */
-#endif
-
- /* states if RR-EST-REQ was used */
- uint8_t rr_est_req;
- struct msgb *rr_est_msg;
- uint8_t est_cause; /* cause used for establishment */
-
- /* channel request states */
- uint8_t wait_assign; /* waiting for assignment state */
- uint8_t n_chan_req; /* number left, incl. current */
- uint8_t chan_req_val; /* current request value */
- uint8_t chan_req_mask; /* mask of random bits */
-
- /* state of dedicated mdoe */
- uint8_t dm_est;
-
- /* cr_hist */
- uint8_t cr_ra; /* stores requested ra until confirmed */
- struct gsm48_cr_hist cr_hist[3];
-
- /* V(SD) sequence numbers */
- uint16_t v_sd; /* 16 PD 1-bit sequence numbers packed */
-
- /* current channel descriptions */
- struct gsm48_rr_cd cd_now;
-
- /* current cipering */
- uint8_t cipher_on;
- uint8_t cipher_type; /* 10.5.2.9 */
-
- /* special states when assigning channel */
- uint8_t modify_state;
- uint8_t hando_sync_ind, hando_rot, hando_nci, hando_act;
- struct gsm48_rr_cd cd_last; /* store last cd in case of failure */
- struct gsm48_rr_cd cd_before; /* before start time */
- struct gsm48_rr_cd cd_after; /* after start time */
-
- /* BA range */
- uint8_t ba_ranges;
- uint32_t ba_range[16];
-
- /* measurements */
- struct osmo_timer_list t_meas;
- struct gsm48_rr_meas meas;
- uint8_t monitor;
-
- /* audio flow */
- uint8_t audio_mode;
-};
-
-const char *get_rr_name(int value);
-extern int gsm48_rr_init(struct osmocom_ms *ms);
-extern int gsm48_rr_exit(struct osmocom_ms *ms);
-int gsm48_rsl_dequeue(struct osmocom_ms *ms);
-int gsm48_rr_downmsg(struct osmocom_ms *ms, struct msgb *msg);
-struct msgb *gsm48_l3_msgb_alloc(void);
-struct msgb *gsm48_rr_msgb_alloc(int msg_type);
-int gsm48_decode_lai(struct gsm48_loc_area_id *lai, uint16_t *mcc,
- uint16_t *mnc, uint16_t *lac);
-int gsm48_encode_lai(struct gsm48_loc_area_id *lai, uint16_t mcc,
- uint16_t mnc, uint16_t lac);
-int gsm48_rr_enc_cm2(struct osmocom_ms *ms, struct gsm48_classmark2 *cm,
- uint16_t arfcn);
-int gsm48_rr_tx_rand_acc(struct osmocom_ms *ms, struct msgb *msg);
-int gsm48_rr_los(struct osmocom_ms *ms);
-int gsm48_rr_rach_conf(struct osmocom_ms *ms, uint32_t fn);
-extern const char *gsm48_rr_state_names[];
-int gsm48_rr_start_monitor(struct osmocom_ms *ms);
-int gsm48_rr_stop_monitor(struct osmocom_ms *ms);
-int gsm48_rr_alter_delay(struct osmocom_ms *ms);
-int gsm48_rr_tx_voice(struct osmocom_ms *ms, struct msgb *msg);
-int gsm48_rr_audio_mode(struct osmocom_ms *ms, uint8_t mode);
-
-#endif /* _GSM48_RR_H */
diff --git a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/mncc.h b/Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/mncc.h
deleted file mode 100644
index a2b48cf..0000000
--- a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/mncc.h
+++ /dev/null
@@ -1,181 +0,0 @@
-/* GSM Mobile Radio Interface Layer 3 messages on the A-bis interface
- * 3GPP TS 04.08 version 7.21.0 Release 1998 / ETSI TS 100 940 V7.21.0 */
-
-/* (C) 2008-2009 by Harald Welte <laforge@gnumonks.org>
- * (C) 2008, 2009 by Holger Hans Peter Freyther <zecke@selfish.org>
- * (C) 2009 by Andreas Eversberg <jolly@eversberg.eu>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#ifndef _MNCC_H
-#define _MNCC_H
-
-#include <osmocom/core/linuxlist.h>
-#include <osmocom/gsm/mncc.h>
-
-struct gsm_call {
- struct llist_head entry;
-
- struct osmocom_ms *ms;
-
- uint32_t callref;
-
- uint8_t init; /* call initiated, no response yet */
- uint8_t hold; /* call on hold */
- uint8_t ring; /* call ringing/knocking */
-
- struct osmo_timer_list dtmf_timer;
- uint8_t dtmf_state;
- uint8_t dtmf_index;
- char dtmf[32]; /* dtmf sequence */
-};
-
-#define DTMF_ST_IDLE 0 /* no DTMF active */
-#define DTMF_ST_START 1 /* DTMF started, waiting for resp. */
-#define DTMF_ST_MARK 2 /* wait tone duration */
-#define DTMF_ST_STOP 3 /* DTMF stopped, waiting for resp. */
-#define DTMF_ST_SPACE 4 /* wait space between tones */
-
-#define MNCC_SETUP_REQ 0x0101
-#define MNCC_SETUP_IND 0x0102
-#define MNCC_SETUP_RSP 0x0103
-#define MNCC_SETUP_CNF 0x0104
-#define MNCC_SETUP_COMPL_REQ 0x0105
-#define MNCC_SETUP_COMPL_IND 0x0106
-/* MNCC_REJ_* is perfomed via MNCC_REL_* */
-#define MNCC_CALL_CONF_IND 0x0107
-#define MNCC_CALL_PROC_REQ 0x0108
-#define MNCC_PROGRESS_REQ 0x0109
-#define MNCC_ALERT_REQ 0x010a
-#define MNCC_ALERT_IND 0x010b
-#define MNCC_NOTIFY_REQ 0x010c
-#define MNCC_NOTIFY_IND 0x010d
-#define MNCC_DISC_REQ 0x010e
-#define MNCC_DISC_IND 0x010f
-#define MNCC_REL_REQ 0x0110
-#define MNCC_REL_IND 0x0111
-#define MNCC_REL_CNF 0x0112
-#define MNCC_FACILITY_REQ 0x0113
-#define MNCC_FACILITY_IND 0x0114
-#define MNCC_START_DTMF_IND 0x0115
-#define MNCC_START_DTMF_RSP 0x0116
-#define MNCC_START_DTMF_REJ 0x0117
-#define MNCC_STOP_DTMF_IND 0x0118
-#define MNCC_STOP_DTMF_RSP 0x0119
-#define MNCC_MODIFY_REQ 0x011a
-#define MNCC_MODIFY_IND 0x011b
-#define MNCC_MODIFY_RSP 0x011c
-#define MNCC_MODIFY_CNF 0x011d
-#define MNCC_MODIFY_REJ 0x011e
-#define MNCC_HOLD_IND 0x011f
-#define MNCC_HOLD_CNF 0x0120
-#define MNCC_HOLD_REJ 0x0121
-#define MNCC_RETRIEVE_IND 0x0122
-#define MNCC_RETRIEVE_CNF 0x0123
-#define MNCC_RETRIEVE_REJ 0x0124
-#define MNCC_USERINFO_REQ 0x0125
-#define MNCC_USERINFO_IND 0x0126
-#define MNCC_REJ_REQ 0x0127
-#define MNCC_REJ_IND 0x0128
-#define MNCC_PROGRESS_IND 0x0129
-#define MNCC_CALL_PROC_IND 0x012a
-#define MNCC_CALL_CONF_REQ 0x012b
-#define MNCC_START_DTMF_REQ 0x012c
-#define MNCC_STOP_DTMF_REQ 0x012d
-#define MNCC_HOLD_REQ 0x012e
-#define MNCC_RETRIEVE_REQ 0x012f
-
-#define MNCC_BRIDGE 0x0200
-#define MNCC_FRAME_RECV 0x0201
-#define MNCC_FRAME_DROP 0x0202
-#define MNCC_LCHAN_MODIFY 0x0203
-
-#define GSM_TCHF_FRAME 0x0300
-#define GSM_TCHF_FRAME_EFR 0x0301
-
-#define MS_NEW 0x0400
-#define MS_DELETE 0x0401
-
-#define GSM_MAX_FACILITY 128
-#define GSM_MAX_SSVERSION 128
-#define GSM_MAX_USERUSER 128
-
-#define MNCC_F_BEARER_CAP 0x0001
-#define MNCC_F_CALLED 0x0002
-#define MNCC_F_CALLING 0x0004
-#define MNCC_F_REDIRECTING 0x0008
-#define MNCC_F_CONNECTED 0x0010
-#define MNCC_F_CAUSE 0x0020
-#define MNCC_F_USERUSER 0x0040
-#define MNCC_F_PROGRESS 0x0080
-#define MNCC_F_EMERGENCY 0x0100
-#define MNCC_F_FACILITY 0x0200
-#define MNCC_F_SSVERSION 0x0400
-#define MNCC_F_CCCAP 0x0800
-#define MNCC_F_KEYPAD 0x1000
-#define MNCC_F_SIGNAL 0x2000
-
-struct gsm_mncc {
- /* context based information */
- u_int32_t msg_type;
- u_int32_t callref;
-
- /* which fields are present */
- u_int32_t fields;
-
- /* data derived informations (MNCC_F_ based) */
- struct gsm_mncc_bearer_cap bearer_cap;
- struct gsm_mncc_number called;
- struct gsm_mncc_number calling;
- struct gsm_mncc_number redirecting;
- struct gsm_mncc_number connected;
- struct gsm_mncc_cause cause;
- struct gsm_mncc_progress progress;
- struct gsm_mncc_useruser useruser;
- struct gsm_mncc_facility facility;
- struct gsm_mncc_cccap cccap;
- struct gsm_mncc_ssversion ssversion;
- struct {
- int sup;
- int inv;
- } clir;
- int signal;
-
- /* data derived information, not MNCC_F based */
- int keypad;
- int more;
- int notify; /* 0..127 */
- int emergency;
- char imsi[16];
-
- unsigned char lchan_mode;
-};
-
-struct gsm_data_frame {
- u_int32_t msg_type;
- u_int32_t callref;
- unsigned char data[0];
-};
-
-const char *get_mncc_name(int value);
-int mncc_recv(struct osmocom_ms *ms, int msg_type, void *arg);
-void mncc_set_cause(struct gsm_mncc *data, int loc, int val);
-
-#endif
-
diff --git a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/settings.h b/Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/settings.h
deleted file mode 100644
index cd1b800..0000000
--- a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/settings.h
+++ /dev/null
@@ -1,120 +0,0 @@
-#ifndef _settings_h
-#define _settings_h
-
-/* type of test SIM key */
-enum {
- GSM_SIM_KEY_XOR = 0,
- GSM_SIM_KEY_COMP128
-};
-
-struct gsm_settings {
- char layer2_socket_path[128];
- char sap_socket_path[128];
-
- /* IMEI */
- char imei[16];
- char imeisv[17];
- char imei_random;
-
- /* network search */
- int plmn_mode; /* PLMN_MODE_* */
-
- /* SIM */
- int sim_type; /* selects card on power on */
- char emergency_imsi[16];
-
- /* test card simulator settings */
- char test_imsi[16];
- uint32_t test_tmsi;
- uint8_t test_ki_type;
- uint8_t test_ki[16]; /* 128 bit max */
- uint8_t test_barr;
- uint8_t test_rplmn_valid;
- uint16_t test_rplmn_mcc, test_rplmn_mnc;
- uint16_t test_lac;
- uint8_t test_always; /* ...search hplmn... */
-
- /* call related settings */
- uint8_t cw; /* set if call-waiting is allowed */
- uint8_t auto_answer;
- uint8_t clip, clir;
- uint8_t half, half_prefer;
-
- /* changing default behavior */
- uint8_t alter_tx_power;
- uint8_t alter_tx_power_value;
- int8_t alter_delay;
- uint8_t stick;
- uint16_t stick_arfcn;
- uint8_t skip_max_per_band;
- uint8_t no_lupd;
- uint8_t no_neighbour;
-
- /* supported by configuration */
- uint8_t cc_dtmf;
- uint8_t sms_ptp;
- uint8_t a5_1;
- uint8_t a5_2;
- uint8_t a5_3;
- uint8_t a5_4;
- uint8_t a5_5;
- uint8_t a5_6;
- uint8_t a5_7;
- uint8_t p_gsm;
- uint8_t e_gsm;
- uint8_t r_gsm;
- uint8_t dcs;
- uint8_t gsm_850;
- uint8_t pcs;
- uint8_t gsm_480;
- uint8_t gsm_450;
- uint8_t class_900;
- uint8_t class_dcs;
- uint8_t class_850;
- uint8_t class_pcs;
- uint8_t class_400;
- uint8_t freq_map[128+38];
- uint8_t full_v1;
- uint8_t full_v2;
- uint8_t full_v3;
- uint8_t half_v1;
- uint8_t half_v3;
- uint8_t ch_cap; /* channel capability */
- int8_t min_rxlev_db; /* min DB to access */
-
- /* radio */
- uint16_t dsc_max;
-
- /* dialing */
- struct llist_head abbrev;
-
- /* EDGE / UMTS / CDMA */
- uint8_t edge_ms_sup;
- uint8_t edge_psk_sup;
- uint8_t edge_psk_uplink;
- uint8_t class_900_edge;
- uint8_t class_dcs_pcs_edge;
- uint8_t umts_fdd;
- uint8_t umts_tdd;
- uint8_t cdma_2000;
- uint8_t dtm;
- uint8_t class_dtm;
- uint8_t dtm_mac;
- uint8_t dtm_egprs;
-};
-
-struct gsm_settings_abbrev {
- struct llist_head list;
- char abbrev[4];
- char number[32];
- char name[32];
-};
-
-int gsm_settings_arfcn(struct osmocom_ms *ms);
-int gsm_settings_init(struct osmocom_ms *ms);
-int gsm_settings_exit(struct osmocom_ms *ms);
-char *gsm_check_imei(const char *imei, const char *sv);
-int gsm_random_imei(struct gsm_settings *set);
-
-#endif /* _settings_h */
-
diff --git a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/subscriber.h b/Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/subscriber.h
deleted file mode 100644
index cc0cfac..0000000
--- a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/subscriber.h
+++ /dev/null
@@ -1,107 +0,0 @@
-#ifndef _SUBSCRIBER_H
-#define _SUBSCRIBER_H
-
-/* GSM 04.08 4.1.2.2 SIM update status */
-#define GSM_SIM_U0_NULL 0
-#define GSM_SIM_U1_UPDATED 1
-#define GSM_SIM_U2_NOT_UPDATED 2
-#define GSM_SIM_U3_ROAMING_NA 3
-
-struct gsm_sub_plmn_list {
- struct llist_head entry;
- uint16_t mcc, mnc;
-};
-
-struct gsm_sub_plmn_na {
- struct llist_head entry;
- uint16_t mcc, mnc;
- uint8_t cause;
-};
-
-#define GSM_IMSI_LENGTH 16
-
-enum {
- GSM_SIM_TYPE_NONE = 0,
- GSM_SIM_TYPE_READER,
- GSM_SIM_TYPE_TEST
-};
-
-struct gsm_subscriber {
- struct osmocom_ms *ms;
-
- /* status */
- uint8_t sim_type; /* type of sim */
- uint8_t sim_valid; /* sim inserted and valid */
- uint8_t ustate; /* update status */
- uint8_t imsi_attached; /* attached state */
-
- /* IMSI & co */
- char imsi[GSM_IMSI_LENGTH];
- char msisdn[31]; /* may include access codes */
- char iccid[21]; /* 20 + termination */
-
- /* TMSI / LAI */
- uint32_t tmsi; /* invalid tmsi: 0xffffffff */
- uint16_t mcc, mnc, lac; /* invalid lac: 0x0000 */
-
-
- /* key */
- uint8_t key_seq; /* ciphering key sequence number */
- uint8_t key[8]; /* 64 bit */
-
- /* other */
- struct llist_head plmn_list; /* PLMN Selector field */
- struct llist_head plmn_na; /* not allowed PLMNs */
- uint8_t t6m_hplmn; /* timer for hplmn search */
-
- /* special things */
- uint8_t always_search_hplmn;
- /* search hplmn in other countries also (for test cards) */
- uint8_t any_timeout;
- /* timer to restart 'any cell selection' */
- char sim_name[31]; /* name to load/save sim */
- char sim_spn[17]; /* name of service privider */
-
- /* PLMN last registered */
- uint8_t plmn_valid;
- uint16_t plmn_mcc, plmn_mnc;
-
- /* our access */
- uint8_t acc_barr; /* if we may access, if cell barred */
- uint16_t acc_class; /* bitmask of what we may access */
-
- /* talk to SIM */
- uint8_t sim_state;
- uint8_t sim_pin_required; /* state: wait for PIN */
- uint8_t sim_file_index;
- uint32_t sim_handle_query;
- uint32_t sim_handle_update;
- uint32_t sim_handle_key;
-};
-
-int gsm_subscr_init(struct osmocom_ms *ms);
-int gsm_subscr_exit(struct osmocom_ms *ms);
-int gsm_subscr_testcard(struct osmocom_ms *ms, uint16_t mcc, uint16_t mnc,
- uint16_t lac, uint32_t tmsi);
-int gsm_subscr_simcard(struct osmocom_ms *ms);
-void gsm_subscr_sim_pin(struct osmocom_ms *ms, char *pin1, char *pin2,
- int8_t mode);
-int gsm_subscr_write_loci(struct osmocom_ms *ms);
-int gsm_subscr_generate_kc(struct osmocom_ms *ms, uint8_t key_seq,
- uint8_t *rand, uint8_t no_sim);
-int gsm_subscr_remove(struct osmocom_ms *ms);
-void new_sim_ustate(struct gsm_subscriber *subscr, int state);
-int gsm_subscr_del_forbidden_plmn(struct gsm_subscriber *subscr, uint16_t mcc,
- uint16_t mnc);
-int gsm_subscr_add_forbidden_plmn(struct gsm_subscriber *subscr, uint16_t mcc,
- uint16_t mnc, uint8_t cause);
-int gsm_subscr_is_forbidden_plmn(struct gsm_subscriber *subscr, uint16_t mcc,
- uint16_t mnc);
-int gsm_subscr_dump_forbidden_plmn(struct osmocom_ms *ms,
- void (*print)(void *, const char *, ...), void *priv);
-void gsm_subscr_dump(struct gsm_subscriber *subscr,
- void (*print)(void *, const char *, ...), void *priv);
-char *gsm_check_imsi(const char *imsi);
-
-#endif /* _SUBSCRIBER_H */
-
diff --git a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/support.h b/Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/support.h
deleted file mode 100644
index 035e10a..0000000
--- a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/support.h
+++ /dev/null
@@ -1,122 +0,0 @@
-#ifndef _SUPPORT_H
-#define _SUPPORT_H
-
-#define GSM_CIPHER_A5_1 0
-#define GSM_CIPHER_A5_2 1
-#define GSM_CIPHER_A5_3 2
-#define GSM_CIPHER_A5_4 3
-#define GSM_CIPHER_A5_5 4
-#define GSM_CIPHER_A5_6 5
-#define GSM_CIPHER_A5_7 6
-#define GSM_CIPHER_RESERVED 7
-
-#define GSM_CAP_SDCCH 0
-#define GSM_CAP_SDCCH_TCHF 1
-#define GSM_CAP_SDCCH_TCHF_TCHH 2
-
-struct gsm_support {
- struct osmocom_ms *ms;
-
- /* controlled early classmark sending */
- uint8_t es_ind;
- /* revision level */
- uint8_t rev_lev;
- /* support of VGCS */
- uint8_t vgcs;
- /* support of VBS */
- uint8_t vbs;
- /* support of SMS */
- uint8_t sms_ptp;
- /* screening indicator */
- uint8_t ss_ind;
- /* pseudo synchronised capability */
- uint8_t ps_cap;
- /* CM service prompt */
- uint8_t cmsp;
- /* solsa support */
- uint8_t solsa;
- /* location service support */
- uint8_t lcsva;
- /* codec supprot */
- uint8_t a5_1;
- uint8_t a5_2;
- uint8_t a5_3;
- uint8_t a5_4;
- uint8_t a5_5;
- uint8_t a5_6;
- uint8_t a5_7;
- /* radio support */
- uint8_t p_gsm;
- uint8_t e_gsm;
- uint8_t r_gsm;
- uint8_t dcs;
- uint8_t gsm_850;
- uint8_t pcs;
- uint8_t gsm_480;
- uint8_t gsm_450;
- uint8_t class_900;
- uint8_t class_dcs;
- uint8_t class_850;
- uint8_t class_pcs;
- uint8_t class_400;
- /* multi slot support */
- uint8_t ms_sup;
- /* ucs2 treatment */
- uint8_t ucs2_treat;
- /* support extended measurements */
- uint8_t ext_meas;
- /* support switched measurement capability */
- uint8_t meas_cap;
- uint8_t sms_val;
- uint8_t sm_val;
- /* positioning method capability */
- uint8_t loc_serv;
- uint8_t e_otd_ass;
- uint8_t e_otd_based;
- uint8_t gps_ass;
- uint8_t gps_based;
- uint8_t gps_conv;
-
- /* radio */
- uint8_t ch_cap; /* channel capability */
- int8_t min_rxlev_db;
- uint8_t scan_to;
- uint8_t sync_to;
- uint16_t dsc_max; /* maximum dl signal failure counter */
-
- /* codecs */
- uint8_t full_v1;
- uint8_t full_v2;
- uint8_t full_v3;
- uint8_t half_v1;
- uint8_t half_v3;
-
- /* EDGE / UMTS / CDMA */
- uint8_t edge_ms_sup;
- uint8_t edge_psk_sup;
- uint8_t edge_psk_uplink;
- uint8_t class_900_edge;
- uint8_t class_dcs_pcs_edge;
- uint8_t umts_fdd;
- uint8_t umts_tdd;
- uint8_t cdma_2000;
- uint8_t dtm;
- uint8_t class_dtm;
- uint8_t dtm_mac;
- uint8_t dtm_egprs;
-};
-
-struct gsm_support_scan_max {
- uint16_t start;
- uint16_t end;
- uint16_t max;
- uint16_t temp;
-};
-extern struct gsm_support_scan_max gsm_sup_smax[];
-
-void gsm_support_init(struct osmocom_ms *ms);
-void gsm_support_dump(struct osmocom_ms *ms,
- void (*print)(void *, const char *, ...), void *priv);
-
-#endif /* _SUPPORT_H */
-
diff --git a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/transaction.h b/Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/transaction.h
deleted file mode 100644
index aa62f46..0000000
--- a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/transaction.h
+++ /dev/null
@@ -1,71 +0,0 @@
-#ifndef _TRANSACT_H
-#define _TRANSACT_H
-
-#include <osmocom/core/linuxlist.h>
-
-/* One transaction */
-struct gsm_trans {
- /* Entry in list of all transactions */
- struct llist_head entry;
-
- /* The protocol within which we live */
- uint8_t protocol;
-
- /* The current transaction ID */
- uint8_t transaction_id;
-
- /* To whom we belong */
- struct osmocom_ms *ms;
-
- /* reference from MNCC or other application */
- uint32_t callref;
-
- /* if traffic channel receive was requested */
- int tch_recv;
-
- union {
- struct {
-
- /* current call state */
- int state;
-
- /* most recent progress indicator */
- uint8_t prog_ind;
-
- /* current timer and message queue */
- int Tcurrent; /* current CC timer */
- int T308_second; /* used to send release again */
- struct osmo_timer_list timer;
- struct gsm_mncc msg; /* stores setup/disconnect/release message */
- } cc;
-#if 0
- struct {
- uint8_t link_id; /* RSL Link ID to be used for this trans */
- int is_mt; /* is this a MO (0) or MT (1) transfer */
- enum gsm411_cp_state cp_state;
- struct osmo_timer_list cp_timer;
-
- enum gsm411_rp_state rp_state;
-
- struct gsm_sms *sms;
- } sms;
-#endif
- };
-};
-
-
-
-struct gsm_trans *trans_find_by_id(struct osmocom_ms *ms,
- uint8_t proto, uint8_t trans_id);
-struct gsm_trans *trans_find_by_callref(struct osmocom_ms *ms,
- uint32_t callref);
-
-struct gsm_trans *trans_alloc(struct osmocom_ms *ms,
- uint8_t protocol, uint8_t trans_id,
- uint32_t callref);
-void trans_free(struct gsm_trans *trans);
-
-int trans_assign_trans_id(struct osmocom_ms *ms,
- uint8_t protocol, uint8_t ti_flag);
-
-#endif
diff --git a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/voice.h b/Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/voice.h
deleted file mode 100644
index a052418..0000000
--- a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/voice.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef _voice_h
-#define _voice_h
-
-int gsm_voice_init(struct osmocom_ms *ms);
-int gsm_send_voice(struct osmocom_ms *ms, struct gsm_data_frame *data);
-
-#endif /* _voice_h */
diff --git a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/vty.h b/Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/vty.h
deleted file mode 100644
index 1f1341b..0000000
--- a/Src/osmoconbb/src/host/layer23/include/osmocom/bb/mobile/vty.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef OSMOCOM_VTY_H
-#define OSMOCOM_VTY_H
-
-#include <osmocom/bb/common/osmocom_data.h>
-#include <osmocom/vty/vty.h>
-#include <osmocom/vty/buffer.h>
-#include <osmocom/vty/command.h>
-
-enum ms_vty_node {
- MS_NODE = _LAST_OSMOVTY_NODE + 1,
- TESTSIM_NODE,
- SUPPORT_NODE,
-};
-
-enum node_type ms_vty_go_parent(struct vty *vty);
-int ms_vty_init(void);
-extern void vty_notify(struct osmocom_ms *ms, const char *fmt, ...) __attribute__ ((format (printf, 2, 3)));
-
-#endif
-
diff --git a/Src/osmoconbb/src/host/layer23/src/Makefile.am b/Src/osmoconbb/src/host/layer23/src/Makefile.am
deleted file mode 100644
index 58a5f7f..0000000
--- a/Src/osmoconbb/src/host/layer23/src/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-SUBDIRS = common misc mobile
diff --git a/Src/osmoconbb/src/host/layer23/src/common/Makefile.am b/Src/osmoconbb/src/host/layer23/src/common/Makefile.am
deleted file mode 100644
index aca2eb4..0000000
--- a/Src/osmoconbb/src/host/layer23/src/common/Makefile.am
+++ /dev/null
@@ -1,6 +0,0 @@
-INCLUDES = $(all_includes) -I$(top_srcdir)/include
-AM_CFLAGS = -Wall $(LIBOSMOCORE_CFLAGS) $(LIBOSMOGSM_CFLAGS)
-
-noinst_LIBRARIES = liblayer23.a
-liblayer23_a_SOURCES = l1ctl.c l1l2_interface.c sap_interface.c lapdm.c \
- logging.c networks.c sim.c sysinfo.c gps.c l1ctl_lapdm_glue.c
diff --git a/Src/osmoconbb/src/host/layer23/src/common/gps.c b/Src/osmoconbb/src/host/layer23/src/common/gps.c
deleted file mode 100644
index 38aae2c..0000000
--- a/Src/osmoconbb/src/host/layer23/src/common/gps.c
+++ /dev/null
@@ -1,381 +0,0 @@
-/*
- * (C) 2010 by Andreas Eversberg <jolly@eversberg.eu>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdio.h>
-#include <sys/file.h>
-#include <termios.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <time.h>
-#include <stdbool.h>
-
-#ifdef _HAVE_GPSD
-#include <gps.h>
-#endif
-
-#include <osmocom/core/utils.h>
-
-#include <osmocom/bb/common/osmocom_data.h>
-#include <osmocom/bb/common/logging.h>
-#include <osmocom/bb/common/gps.h>
-
-struct osmo_gps g = {
- 0,
- GPS_TYPE_UNDEF,
-#ifdef _HAVE_GPSD
- "localhost",
- "2947",
-#endif
- "/dev/ttyACM0",
- 0,
- 0,
- 0,
- 0,0
-};
-
-static struct osmo_fd gps_bfd;
-
-#ifdef _HAVE_GPSD
-
-static struct gps_data_t* gdata;
-
-int osmo_gpsd_cb(struct osmo_fd *bfd, unsigned int what)
-{
- struct tm *tm;
- unsigned diff = 0;
-
- g.valid = 0;
-
- /* gps is offline */
- if (gdata->online)
- goto gps_not_ready;
-
- /* gps has no data */
- if (gps_waiting(gdata))
- goto gps_not_ready;
-
- /* polling returned an error */
- if (gps_poll(gdata))
- goto gps_not_ready;
-
- /* data are valid */
- if (gdata->set & LATLON_SET) {
- g.valid = 1;
- g.gmt = gdata->fix.time;
- tm = localtime(&g.gmt);
- diff = time(NULL) - g.gmt;
- g.latitude = gdata->fix.latitude;
- g.longitude = gdata->fix.longitude;
-
- LOGP(DGPS, LOGL_INFO, " time=%02d:%02d:%02d %04d-%02d-%02d, "
- "diff-to-host=%d, latitude=%do%.4f, longitude=%do%.4f\n",
- tm->tm_hour, tm->tm_min, tm->tm_sec, tm->tm_year + 1900,
- tm->tm_mday, tm->tm_mon + 1, diff,
- (int)g.latitude,
- (g.latitude - ((int)g.latitude)) * 60.0,
- (int)g.longitude,
- (g.longitude - ((int)g.longitude)) * 60.0);
- }
-
- return 0;
-
-gps_not_ready:
- LOGP(DGPS, LOGL_DEBUG, "gps is offline");
- return -1;
-}
-
-int osmo_gpsd_open(void)
-{
- LOGP(DGPS, LOGL_INFO, "Connecting to gpsd at '%s:%s'\n", g.gpsd_host, g.gpsd_port);
-
- gps_bfd.data = NULL;
- gps_bfd.when = BSC_FD_READ;
- gps_bfd.cb = osmo_gpsd_cb;
-
- gdata = gps_open(g.gpsd_host, g.gpsd_port);
- if (gdata == NULL) {
- LOGP(DGPS, LOGL_ERROR, "Can't connect to gpsd\n");
- return -1;
- }
- gps_bfd.fd = gdata->gps_fd;
- if (gps_bfd.fd < 0)
- return gps_bfd.fd;
-
- if (gps_stream(gdata, WATCH_ENABLE, NULL) == -1) {
- LOGP(DGPS, LOGL_ERROR, "Error in gps_stream()\n");
- return -1;
- }
-
- osmo_fd_register(&gps_bfd);
-
- return 0;
-}
-
-void osmo_gpsd_close(void)
-{
- if (gps_bfd.fd <= 0)
- return;
-
- LOGP(DGPS, LOGL_INFO, "Disconnecting from gpsd\n");
-
- osmo_fd_unregister(&gps_bfd);
-
- gps_close(gdata);
- gps_bfd.fd = -1; /* -1 or 0 indicates: 'close' */
-}
-
-#endif
-
-static struct termios gps_termios, gps_old_termios;
-
-static int osmo_serialgps_line(char *line)
-{
- time_t gps_now, host_now;
- struct tm *tm;
- int32_t diff;
- double latitude, longitude;
-
- if (!!strncmp(line, "$GPGLL", 6))
- return 0;
- line += 7;
- if (strlen(line) < 37)
- return 0;
- line[37] = '\0';
- /* ddmm.mmmm,N,dddmm.mmmm,E,hhmmss.mmm,A */
-
- /* valid position */
- if (line[36] != 'A') {
- LOGP(DGPS, LOGL_INFO, "%s (invalid)\n", line);
- g.valid = 0;
- return 0;
- }
- g.valid = 1;
-
- /* time stamp */
- gps_now = line[30] - '0';
- gps_now += (line[29] - '0') * 10;
- gps_now += (line[28] - '0') * 60;
- gps_now += (line[27] - '0') * 600;
- gps_now += (line[26] - '0') * 3600;
- gps_now += (line[25] - '0') * 36000;
- time(&host_now);
- /* calculate the number of seconds the host differs from GPS */
- diff = host_now % 86400 - gps_now;
- if (diff < 0)
- diff += 86400;
- if (diff >= 43200)
- diff -= 86400;
- /* apply the "date" part to the GPS time */
- gps_now = host_now - diff;
- g.gmt = gps_now;
- tm = localtime(&gps_now);
-
- /* position */
- latitude = (double)(line[0] - '0') * 10.0;
- latitude += (double)(line[1] - '0');
- latitude += (double)(line[2] - '0') / 6.0;
- latitude += (double)(line[3] - '0') / 60.0;
- latitude += (double)(line[5] - '0') / 600.0;
- latitude += (double)(line[6] - '0') / 6000.0;
- latitude += (double)(line[7] - '0') / 60000.0;
- latitude += (double)(line[8] - '0') / 600000.0;
- if (line[10] == 'S')
- latitude = 0.0 - latitude;
- g.latitude = latitude;
- longitude = (double)(line[12] - '0') * 100.0;
- longitude += (double)(line[13] - '0') * 10.0;
- longitude += (double)(line[14] - '0');
- longitude += (double)(line[15] - '0') / 6.0;
- longitude += (double)(line[16] - '0') / 60.0;
- longitude += (double)(line[18] - '0') / 600.0;
- longitude += (double)(line[19] - '0') / 6000.0;
- longitude += (double)(line[20] - '0') / 60000.0;
- longitude += (double)(line[21] - '0') / 600000.0;
- if (line[23] == 'W')
- longitude = 360.0 - longitude;
- g.longitude = longitude;
-
- LOGP(DGPS, LOGL_DEBUG, "%s\n", line);
- LOGP(DGPS, LOGL_INFO, " time=%02d:%02d:%02d %04d-%02d-%02d, "
- "diff-to-host=%d, latitude=%do%.4f, longitude=%do%.4f\n",
- tm->tm_hour, tm->tm_min, tm->tm_sec, tm->tm_year + 1900,
- tm->tm_mday, tm->tm_mon + 1, diff,
- (int)g.latitude,
- (g.latitude - ((int)g.latitude)) * 60.0,
- (int)g.longitude,
- (g.longitude - ((int)g.longitude)) * 60.0);
- return 0;
-}
-
-static int nmea_checksum(char *line)
-{
- uint8_t checksum = 0;
-
- while (*line) {
- if (*line == '$') {
- line++;
- continue;
- }
- if (*line == '*')
- break;
- checksum ^= *line++;
- }
- return (strtoul(line+1, NULL, 16) == checksum);
-}
-
-int osmo_serialgps_cb(struct osmo_fd *bfd, unsigned int what)
-{
- char buff[128];
- static char line[128];
- static int lpos = 0;
- int i = 0, len;
-
- len = read(bfd->fd, buff, sizeof(buff));
- if (len <= 0) {
- fprintf(stderr, "error reading GPS device (errno=%d)\n", errno);
- return len;
- }
- while(i < len) {
- if (buff[i] == 13) {
- i++;
- continue;
- }
- if (buff[i] == 10) {
- line[lpos] = '\0';
- lpos = 0;
- i++;
- if (!nmea_checksum(line))
- fprintf(stderr, "NMEA checksum error\n");
- else
- osmo_serialgps_line(line);
- continue;
- }
- line[lpos++] = buff[i++];
- if (lpos == sizeof(line))
- lpos--;
- }
-
- return 0;
-}
-
-int osmo_serialgps_open(void)
-{
- int baud = 0;
-
- if (gps_bfd.fd > 0)
- return 0;
-
- LOGP(DGPS, LOGL_INFO, "Open GPS device '%s'\n", g.device);
-
- gps_bfd.data = NULL;
- gps_bfd.when = BSC_FD_READ;
- gps_bfd.cb = osmo_serialgps_cb;
- gps_bfd.fd = open(g.device, O_RDONLY);
- if (gps_bfd.fd < 0)
- return gps_bfd.fd;
-
- switch (g.baud) {
- case 4800:
- baud = B4800; break;
- case 9600:
- baud = B9600; break;
- case 19200:
- baud = B19200; break;
- case 38400:
- baud = B38400; break;
- case 57600:
- baud = B57600; break;
- case 115200:
- baud = B115200; break;
- }
-
- if (isatty(gps_bfd.fd))
- {
- /* get termios */
- tcgetattr(gps_bfd.fd, &gps_old_termios);
- tcgetattr(gps_bfd.fd, &gps_termios);
- /* set baud */
- if (baud) {
- gps_termios.c_cflag |= baud;
- cfsetispeed(&gps_termios, baud);
- cfsetospeed(&gps_termios, baud);
- }
- if (tcsetattr(gps_bfd.fd, TCSANOW, &gps_termios))
- printf("Failed to set termios for GPS\n");
- }
-
- osmo_fd_register(&gps_bfd);
-
- return 0;
-}
-
-void osmo_serialgps_close(void)
-{
- if (gps_bfd.fd <= 0)
- return;
-
- LOGP(DGPS, LOGL_INFO, "Close GPS device\n");
-
- osmo_fd_unregister(&gps_bfd);
-
- if (isatty(gps_bfd.fd))
- tcsetattr(gps_bfd.fd, TCSANOW, &gps_old_termios);
-
- close(gps_bfd.fd);
- gps_bfd.fd = -1; /* -1 or 0 indicates: 'close' */
-}
-
-void osmo_gps_init(void)
-{
- memset(&gps_bfd, 0, sizeof(gps_bfd));
-}
-
-int osmo_gps_open(void)
-{
- switch (g.gps_type) {
-#ifdef _HAVE_GPSD
- case GPS_TYPE_GPSD:
- return osmo_gpsd_open();
-#endif
- case GPS_TYPE_SERIAL:
- return osmo_serialgps_open();
-
- default:
- return 0;
- }
-}
-
-void osmo_gps_close(void)
-{
- switch (g.gps_type) {
-#ifdef _HAVE_GPSD
- case GPS_TYPE_GPSD:
- return osmo_gpsd_close();
-#endif
- case GPS_TYPE_SERIAL:
- return osmo_serialgps_close();
-
- default:
- return;
- }
-}
-
diff --git a/Src/osmoconbb/src/host/layer23/src/common/l1ctl.c b/Src/osmoconbb/src/host/layer23/src/common/l1ctl.c
deleted file mode 100644
index e3ab4c9..0000000
--- a/Src/osmoconbb/src/host/layer23/src/common/l1ctl.c
+++ /dev/null
@@ -1,965 +0,0 @@
-/* Layer1 control code, talking L1CTL protocol with L1 on the phone */
-
-/* (C) 2010 by Holger Hans Peter Freyther <zecke@selfish.org>
- * (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdio.h>
-#include <stdint.h>
-#include <string.h>
-#include <errno.h>
-
-#include <arpa/inet.h>
-
-#include <l1ctl_proto.h>
-
-#include <osmocom/core/signal.h>
-#include <osmocom/core/logging.h>
-#include <osmocom/core/timer.h>
-#include <osmocom/core/msgb.h>
-#include <osmocom/gsm/tlv.h>
-#include <osmocom/gsm/gsm_utils.h>
-#include <osmocom/core/gsmtap_util.h>
-#include <osmocom/gsm/protocol/gsm_04_08.h>
-#include <osmocom/gsm/protocol/gsm_08_58.h>
-#include <osmocom/gsm/rsl.h>
-
-#include <osmocom/bb/common/l1ctl.h>
-#include <osmocom/bb/common/osmocom_data.h>
-#include <osmocom/bb/common/l1l2_interface.h>
-#include <osmocom/bb/common/lapdm.h>
-#include <osmocom/bb/common/logging.h>
-#include <osmocom/codec/codec.h>
-
-extern struct gsmtap_inst *gsmtap_inst;
-
-static struct msgb *osmo_l1_alloc(uint8_t msg_type)
-{
- struct l1ctl_hdr *l1h;
- struct msgb *msg = msgb_alloc_headroom(256, 4, "osmo_l1");
-
- if (!msg) {
- LOGP(DL1C, LOGL_ERROR, "Failed to allocate memory.\n");
- return NULL;
- }
-
- msg->l1h = msgb_put(msg, sizeof(*l1h));
- l1h = (struct l1ctl_hdr *) msg->l1h;
- l1h->msg_type = msg_type;
-
- return msg;
-}
-
-
-static inline int msb_get_bit(uint8_t *buf, int bn)
-{
- int pos_byte = bn >> 3;
- int pos_bit = 7 - (bn & 7);
-
- return (buf[pos_byte] >> pos_bit) & 1;
-}
-
-static inline void msb_set_bit(uint8_t *buf, int bn, int bit)
-{
- int pos_byte = bn >> 3;
- int pos_bit = 7 - (bn & 7);
-
- buf[pos_byte] |= (bit << pos_bit);
-}
-
-
-static int osmo_make_band_arfcn(struct osmocom_ms *ms, uint16_t arfcn)
-{
- /* TODO: Include the band */
- return arfcn;
-}
-
-static int rx_l1_fbsb_conf(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct l1ctl_info_dl *dl;
- struct l1ctl_fbsb_conf *sb;
- struct gsm_time tm;
- struct osmobb_fbsb_res fr;
-
- if (msgb_l3len(msg) < sizeof(*dl) + sizeof(*sb)) {
- LOGP(DL1C, LOGL_ERROR, "FBSB RESP: MSG too short %u\n",
- msgb_l3len(msg));
- return -1;
- }
-
- dl = (struct l1ctl_info_dl *) msg->l1h;
- sb = (struct l1ctl_fbsb_conf *) dl->payload;
-
- LOGP(DL1C, LOGL_INFO, "snr=%04x, arfcn=%u result=%u\n", dl->snr,
- ntohs(dl->band_arfcn), sb->result);
-
- if (sb->result != 0) {
- LOGP(DL1C, LOGL_ERROR, "FBSB RESP: result=%u\n", sb->result);
- fr.ms = ms;
- fr.band_arfcn = ntohs(dl->band_arfcn);
- osmo_signal_dispatch(SS_L1CTL, S_L1CTL_FBSB_ERR, &fr);
- return 0;
- }
-
- gsm_fn2gsmtime(&tm, ntohl(dl->frame_nr));
- DEBUGP(DL1C, "SCH: SNR: %u TDMA: (%.4u/%.2u/%.2u) bsic: %d\n",
- dl->snr, tm.t1, tm.t2, tm.t3, sb->bsic);
- fr.ms = ms;
- fr.snr = dl->snr;
- fr.bsic = sb->bsic;
- fr.band_arfcn = ntohs(dl->band_arfcn);
- osmo_signal_dispatch(SS_L1CTL, S_L1CTL_FBSB_RESP, &fr);
-
- return 0;
-}
-
-static int rx_l1_rach_conf(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct lapdm_entity *le = &ms->lapdm_channel.lapdm_dcch;
- struct osmo_phsap_prim pp;
- struct l1ctl_info_dl *dl;
-
- if (msgb_l2len(msg) < sizeof(*dl)) {
- LOGP(DL1C, LOGL_ERROR, "RACH CONF: MSG too short %u\n",
- msgb_l3len(msg));
- msgb_free(msg);
- return -1;
- }
-
- dl = (struct l1ctl_info_dl *) msg->l1h;
-
- osmo_prim_init(&pp.oph, SAP_GSM_PH, PRIM_PH_RACH,
- PRIM_OP_CONFIRM, msg);
- pp.u.rach_ind.fn = ntohl(dl->frame_nr);
-
- return lapdm_phsap_up(&pp.oph, le);
-}
-
-/* Receive L1CTL_DATA_IND (Data Indication from L1) */
-static int rx_ph_data_ind(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct osmo_phsap_prim pp;
- struct l1ctl_info_dl *dl;
- struct l1ctl_data_ind *ccch;
- struct lapdm_entity *le;
- struct rx_meas_stat *meas = &ms->meas;
- uint8_t chan_type, chan_ts, chan_ss;
- uint8_t gsmtap_chan_type;
- struct gsm_time tm;
-
- if (msgb_l3len(msg) < sizeof(*ccch)) {
- LOGP(DL1C, LOGL_ERROR, "MSG too short Data Ind: %u\n",
- msgb_l3len(msg));
- msgb_free(msg);
- return -1;
- }
-
- dl = (struct l1ctl_info_dl *) msg->l1h;
- msg->l2h = dl->payload;
- ccch = (struct l1ctl_data_ind *) msg->l2h;
-
- gsm_fn2gsmtime(&tm, ntohl(dl->frame_nr));
- rsl_dec_chan_nr(dl->chan_nr, &chan_type, &chan_ss, &chan_ts);
- DEBUGP(DL1C, "%s (%.4u/%.2u/%.2u) %d dBm: %s\n",
- rsl_chan_nr_str(dl->chan_nr), tm.t1, tm.t2, tm.t3,
- (int)dl->rx_level-110,
- osmo_hexdump(ccch->data, sizeof(ccch->data)));
-
- meas->last_fn = ntohl(dl->frame_nr);
- meas->frames++;
- meas->snr += dl->snr;
- meas->berr += dl->num_biterr;
- meas->rxlev += dl->rx_level;
-
- /* counting loss criteria */
- if (!(dl->link_id & 0x40)) {
- switch (chan_type) {
- case RSL_CHAN_PCH_AGCH:
- if (!meas->ds_fail)
- break;
- if (dl->fire_crc >= 2)
- meas->dsc -= 4;
- else
- meas->dsc += 1;
- if (meas->dsc > meas->ds_fail)
- meas->dsc = meas->ds_fail;
- if (meas->dsc < meas->ds_fail)
- printf("LOSS counter for CCCH %d\n", meas->dsc);
- if (meas->dsc > 0)
- break;
- meas->ds_fail = 0;
- osmo_signal_dispatch(SS_L1CTL, S_L1CTL_LOSS_IND, ms);
- break;
- }
- } else {
- switch (chan_type) {
- case RSL_CHAN_Bm_ACCHs:
- case RSL_CHAN_Lm_ACCHs:
- case RSL_CHAN_SDCCH4_ACCH:
- case RSL_CHAN_SDCCH8_ACCH:
- if (!meas->rl_fail)
- break;
- if (dl->fire_crc >= 2)
- meas->s -= 1;
- else
- meas->s += 2;
- if (meas->s > meas->rl_fail)
- meas->s = meas->rl_fail;
- if (meas->s < meas->rl_fail)
- printf("LOSS counter for ACCH %d\n", meas->s);
- if (meas->s > 0)
- break;
- meas->rl_fail = 0;
- osmo_signal_dispatch(SS_L1CTL, S_L1CTL_LOSS_IND, ms);
- break;
- }
- }
-
- if (dl->fire_crc >= 2) {
-printf("Dropping frame with %u bit errors\n", dl->num_biterr);
- LOGP(DL1C, LOGL_NOTICE, "Dropping frame with %u bit errors\n",
- dl->num_biterr);
- msgb_free(msg);
- return 0;
- }
-
- /* send CCCH data via GSMTAP */
- gsmtap_chan_type = chantype_rsl2gsmtap(chan_type, dl->link_id);
- gsmtap_send(gsmtap_inst, ntohs(dl->band_arfcn), chan_ts,
- gsmtap_chan_type, chan_ss, tm.fn, dl->rx_level-110,
- dl->snr, ccch->data, sizeof(ccch->data));
-
- /* determine LAPDm entity based on SACCH or not */
- if (dl->link_id & 0x40)
- le = &ms->lapdm_channel.lapdm_acch;
- else
- le = &ms->lapdm_channel.lapdm_dcch;
-
- /* pull the L1 header from the msgb */
- msgb_pull(msg, msg->l2h - (msg->l1h-sizeof(struct l1ctl_hdr)));
- msg->l1h = NULL;
-
- osmo_prim_init(&pp.oph, SAP_GSM_PH, PRIM_PH_DATA,
- PRIM_OP_INDICATION, msg);
- pp.u.data.chan_nr = dl->chan_nr;
- pp.u.data.link_id = dl->link_id;
-
- /* send it up into LAPDm */
- return lapdm_phsap_up(&pp.oph, le);
-}
-
-/* Receive L1CTL_DATA_CONF (Data Confirm from L1) */
-static int rx_ph_data_conf(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct osmo_phsap_prim pp;
- struct l1ctl_info_dl *dl = (struct l1ctl_info_dl *) msg->l1h;
- struct lapdm_entity *le;
-
- osmo_prim_init(&pp.oph, SAP_GSM_PH, PRIM_PH_RTS,
- PRIM_OP_INDICATION, msg);
-
- /* determine LAPDm entity based on SACCH or not */
- if (dl->link_id & 0x40)
- le = &ms->lapdm_channel.lapdm_acch;
- else
- le = &ms->lapdm_channel.lapdm_dcch;
-
- /* send it up into LAPDm */
- return lapdm_phsap_up(&pp.oph, le);
-}
-
-/* Transmit L1CTL_DATA_REQ */
-int l1ctl_tx_data_req(struct osmocom_ms *ms, struct msgb *msg,
- uint8_t chan_nr, uint8_t link_id)
-{
- struct l1ctl_hdr *l1h;
- struct l1ctl_info_ul *l1i_ul;
- uint8_t chan_type, chan_ts, chan_ss;
- uint8_t gsmtap_chan_type;
-
- DEBUGP(DL1C, "(%s)\n", osmo_hexdump(msg->l2h, msgb_l2len(msg)));
-
- if (msgb_l2len(msg) > 23) {
- LOGP(DL1C, LOGL_ERROR, "L1 cannot handle message length "
- "> 23 (%u)\n", msgb_l2len(msg));
- msgb_free(msg);
- return -EINVAL;
- } else if (msgb_l2len(msg) < 23)
- LOGP(DL1C, LOGL_ERROR, "L1 message length < 23 (%u) "
- "doesn't seem right!\n", msgb_l2len(msg));
-
- /* send copy via GSMTAP */
- rsl_dec_chan_nr(chan_nr, &chan_type, &chan_ss, &chan_ts);
- gsmtap_chan_type = chantype_rsl2gsmtap(chan_type, link_id);
- gsmtap_send(gsmtap_inst, 0|0x4000, chan_ts, gsmtap_chan_type,
- chan_ss, 0, 127, 255, msg->l2h, msgb_l2len(msg));
-
- /* prepend uplink info header */
- l1i_ul = (struct l1ctl_info_ul *) msgb_push(msg, sizeof(*l1i_ul));
-
- l1i_ul->chan_nr = chan_nr;
- l1i_ul->link_id = link_id;
-
- /* prepend l1 header */
- msg->l1h = msgb_push(msg, sizeof(*l1h));
- l1h = (struct l1ctl_hdr *) msg->l1h;
- l1h->msg_type = L1CTL_DATA_REQ;
-
- return osmo_send_l1(ms, msg);
-}
-
-/* Transmit FBSB_REQ */
-int l1ctl_tx_fbsb_req(struct osmocom_ms *ms, uint16_t arfcn,
- uint8_t flags, uint16_t timeout, uint8_t sync_info_idx,
- uint8_t ccch_mode)
-{
- struct msgb *msg;
- struct l1ctl_fbsb_req *req;
-
- LOGP(DL1C, LOGL_INFO, "Sync Req\n");
-
- msg = osmo_l1_alloc(L1CTL_FBSB_REQ);
- if (!msg)
- return -1;
-
- req = (struct l1ctl_fbsb_req *) msgb_put(msg, sizeof(*req));
- req->band_arfcn = htons(osmo_make_band_arfcn(ms, arfcn));
- req->timeout = htons(timeout);
- /* Threshold when to consider FB_MODE1: 4kHz - 1kHz */
- req->freq_err_thresh1 = htons(11000 - 1000);
- /* Threshold when to consider SCH: 1kHz - 200Hz */
- req->freq_err_thresh2 = htons(1000 - 200);
- /* not used yet! */
- req->num_freqerr_avg = 3;
- req->flags = flags;
- req->sync_info_idx = sync_info_idx;
- req->ccch_mode = ccch_mode;
-
- return osmo_send_l1(ms, msg);
-}
-
-/* Transmit L1CTL_CCCH_MODE_REQ */
-int l1ctl_tx_ccch_mode_req(struct osmocom_ms *ms, uint8_t ccch_mode)
-{
- struct msgb *msg;
- struct l1ctl_ccch_mode_req *req;
-
- LOGP(DL1C, LOGL_INFO, "CCCH Mode Req\n");
-
- msg = osmo_l1_alloc(L1CTL_CCCH_MODE_REQ);
- if (!msg)
- return -1;
-
- req = (struct l1ctl_ccch_mode_req *) msgb_put(msg, sizeof(*req));
- req->ccch_mode = ccch_mode;
-
- return osmo_send_l1(ms, msg);
-}
-
-/* Transmit L1CTL_TCH_MODE_REQ */
-int l1ctl_tx_tch_mode_req(struct osmocom_ms *ms, uint8_t tch_mode,
- uint8_t audio_mode)
-{
- struct msgb *msg;
- struct l1ctl_tch_mode_req *req;
-
- LOGP(DL1C, LOGL_INFO, "TCH Mode Req\n");
-
- msg = osmo_l1_alloc(L1CTL_TCH_MODE_REQ);
- if (!msg)
- return -1;
-
- req = (struct l1ctl_tch_mode_req *) msgb_put(msg, sizeof(*req));
- req->tch_mode = tch_mode;
- req->audio_mode = audio_mode;
-
- return osmo_send_l1(ms, msg);
-}
-
-/* Transmit L1CTL_PARAM_REQ */
-int l1ctl_tx_param_req(struct osmocom_ms *ms, uint8_t ta, uint8_t tx_power)
-{
- struct msgb *msg;
- struct l1ctl_info_ul *ul;
- struct l1ctl_par_req *req;
-
- msg = osmo_l1_alloc(L1CTL_PARAM_REQ);
- if (!msg)
- return -1;
-
- DEBUGP(DL1C, "PARAM Req. ta=%d, tx_power=%d\n", ta, tx_power);
- ul = (struct l1ctl_info_ul *) msgb_put(msg, sizeof(*ul));
- req = (struct l1ctl_par_req *) msgb_put(msg, sizeof(*req));
- req->tx_power = tx_power;
- req->ta = ta;
-
- return osmo_send_l1(ms, msg);
-}
-
-/* Transmit L1CTL_CRYPTO_REQ */
-int l1ctl_tx_crypto_req(struct osmocom_ms *ms, uint8_t algo, uint8_t *key,
- uint8_t len)
-{
- struct msgb *msg;
- struct l1ctl_info_ul *ul;
- struct l1ctl_crypto_req *req;
-
- msg = osmo_l1_alloc(L1CTL_CRYPTO_REQ);
- if (!msg)
- return -1;
-
- DEBUGP(DL1C, "CRYPTO Req. algo=%d, len=%d\n", algo, len);
- ul = (struct l1ctl_info_ul *) msgb_put(msg, sizeof(*ul));
- req = (struct l1ctl_crypto_req *) msgb_put(msg, sizeof(*req) + len);
- req->algo = algo;
- if (len)
- memcpy(req->key, key, len);
-
- return osmo_send_l1(ms, msg);
-}
-
-/* Transmit L1CTL_RACH_REQ */
-int l1ctl_tx_rach_req(struct osmocom_ms *ms, uint8_t ra, uint16_t offset,
- uint8_t combined)
-{
- struct msgb *msg;
- struct l1ctl_info_ul *ul;
- struct l1ctl_rach_req *req;
-
- msg = osmo_l1_alloc(L1CTL_RACH_REQ);
- if (!msg)
- return -1;
-
- DEBUGP(DL1C, "RACH Req. offset=%d combined=%d\n", offset, combined);
- ul = (struct l1ctl_info_ul *) msgb_put(msg, sizeof(*ul));
- req = (struct l1ctl_rach_req *) msgb_put(msg, sizeof(*req));
- req->ra = ra;
- req->offset = htons(offset);
- req->combined = combined;
-
- return osmo_send_l1(ms, msg);
-}
-
-/* Transmit L1CTL_DM_EST_REQ */
-int l1ctl_tx_dm_est_req_h0(struct osmocom_ms *ms, uint16_t band_arfcn,
- uint8_t chan_nr, uint8_t tsc, uint8_t tch_mode,
- uint8_t audio_mode)
-{
- struct msgb *msg;
- struct l1ctl_info_ul *ul;
- struct l1ctl_dm_est_req *req;
-
- msg = osmo_l1_alloc(L1CTL_DM_EST_REQ);
- if (!msg)
- return -1;
-
- LOGP(DL1C, LOGL_INFO, "Tx Dedic.Mode Est Req (arfcn=%u, "
- "chan_nr=0x%02x)\n", band_arfcn, chan_nr);
-
- ul = (struct l1ctl_info_ul *) msgb_put(msg, sizeof(*ul));
- ul->chan_nr = chan_nr;
- ul->link_id = 0;
-
- req = (struct l1ctl_dm_est_req *) msgb_put(msg, sizeof(*req));
- req->tsc = tsc;
- req->h = 0;
- req->h0.band_arfcn = htons(band_arfcn);
- req->tch_mode = tch_mode;
- req->audio_mode = audio_mode;
-
- return osmo_send_l1(ms, msg);
-}
-
-int l1ctl_tx_dm_est_req_h1(struct osmocom_ms *ms, uint8_t maio, uint8_t hsn,
- uint16_t *ma, uint8_t ma_len,
- uint8_t chan_nr, uint8_t tsc, uint8_t tch_mode,
- uint8_t audio_mode)
-{
- struct msgb *msg;
- struct l1ctl_info_ul *ul;
- struct l1ctl_dm_est_req *req;
- int i;
-
- msg = osmo_l1_alloc(L1CTL_DM_EST_REQ);
- if (!msg)
- return -1;
-
- LOGP(DL1C, LOGL_INFO, "Tx Dedic.Mode Est Req (maio=%u, hsn=%u, "
- "chan_nr=0x%02x)\n", maio, hsn, chan_nr);
-
- ul = (struct l1ctl_info_ul *) msgb_put(msg, sizeof(*ul));
- ul->chan_nr = chan_nr;
- ul->link_id = 0;
-
- req = (struct l1ctl_dm_est_req *) msgb_put(msg, sizeof(*req));
- req->tsc = tsc;
- req->h = 1;
- req->h1.maio = maio;
- req->h1.hsn = hsn;
- req->h1.n = ma_len;
- for (i = 0; i < ma_len; i++)
- req->h1.ma[i] = htons(ma[i]);
- req->tch_mode = tch_mode;
- req->audio_mode = audio_mode;
-
- return osmo_send_l1(ms, msg);
-}
-
-/* Transmit L1CTL_DM_FREQ_REQ */
-int l1ctl_tx_dm_freq_req_h0(struct osmocom_ms *ms, uint16_t band_arfcn,
- uint8_t tsc, uint16_t fn)
-{
- struct msgb *msg;
- struct l1ctl_info_ul *ul;
- struct l1ctl_dm_freq_req *req;
-
- msg = osmo_l1_alloc(L1CTL_DM_FREQ_REQ);
- if (!msg)
- return -1;
-
- LOGP(DL1C, LOGL_INFO, "Tx Dedic.Mode Freq Req (arfcn=%u, fn=%d)\n",
- band_arfcn, fn);
-
- ul = (struct l1ctl_info_ul *) msgb_put(msg, sizeof(*ul));
- ul->chan_nr = 0;
- ul->link_id = 0;
-
- req = (struct l1ctl_dm_freq_req *) msgb_put(msg, sizeof(*req));
- req->fn = htons(fn);
- req->tsc = tsc;
- req->h = 0;
- req->h0.band_arfcn = htons(band_arfcn);
-
- return osmo_send_l1(ms, msg);
-}
-
-int l1ctl_tx_dm_freq_req_h1(struct osmocom_ms *ms, uint8_t maio, uint8_t hsn,
- uint16_t *ma, uint8_t ma_len,
- uint8_t tsc, uint16_t fn)
-{
- struct msgb *msg;
- struct l1ctl_info_ul *ul;
- struct l1ctl_dm_freq_req *req;
- int i;
-
- msg = osmo_l1_alloc(L1CTL_DM_FREQ_REQ);
- if (!msg)
- return -1;
-
- LOGP(DL1C, LOGL_INFO, "Tx Dedic.Mode Freq Req (maio=%u, hsn=%u, "
- "fn=%d)\n", maio, hsn, fn);
-
- ul = (struct l1ctl_info_ul *) msgb_put(msg, sizeof(*ul));
- ul->chan_nr = 0;
- ul->link_id = 0;
-
- req = (struct l1ctl_dm_freq_req *) msgb_put(msg, sizeof(*req));
- req->fn = htons(fn);
- req->tsc = tsc;
- req->h = 1;
- req->h1.maio = maio;
- req->h1.hsn = hsn;
- req->h1.n = ma_len;
- for (i = 0; i < ma_len; i++)
- req->h1.ma[i] = htons(ma[i]);
-
- return osmo_send_l1(ms, msg);
-}
-
-/* Transmit L1CTL_DM_REL_REQ */
-int l1ctl_tx_dm_rel_req(struct osmocom_ms *ms)
-{
- struct msgb *msg;
- struct l1ctl_info_ul *ul;
-
- msg = osmo_l1_alloc(L1CTL_DM_REL_REQ);
- if (!msg)
- return -1;
-
- LOGP(DL1C, LOGL_INFO, "Tx Dedic.Mode Rel Req\n");
-
- ul = (struct l1ctl_info_ul *) msgb_put(msg, sizeof(*ul));
-
- return osmo_send_l1(ms, msg);
-}
-
-int l1ctl_tx_echo_req(struct osmocom_ms *ms, unsigned int len)
-{
- struct msgb *msg;
- uint8_t *data;
- unsigned int i;
-
- msg = osmo_l1_alloc(L1CTL_ECHO_REQ);
- if (!msg)
- return -1;
-
- data = msgb_put(msg, len);
- for (i = 0; i < len; i++)
- data[i] = i % 8;
-
- return osmo_send_l1(ms, msg);
-}
-
-int l1ctl_tx_sim_req(struct osmocom_ms *ms, uint8_t *data, uint16_t length)
-{
- struct msgb *msg;
- uint8_t *dat;
-
- msg = osmo_l1_alloc(L1CTL_SIM_REQ);
- if (!msg)
- return -1;
-
- dat = msgb_put(msg, length);
- memcpy(dat, data, length);
-
- return osmo_send_l1(ms, msg);
-}
-
-/* just forward the SIM response to the SIM handler */
-static int rx_l1_sim_conf(struct osmocom_ms *ms, struct msgb *msg)
-{
- uint16_t len = msg->len - sizeof(struct l1ctl_hdr);
- uint8_t *data = msg->data + sizeof(struct l1ctl_hdr);
-
- LOGP(DL1C, LOGL_INFO, "SIM %s\n", osmo_hexdump(data, len));
-
- /* pull the L1 header from the msgb */
- msgb_pull(msg, sizeof(struct l1ctl_hdr));
- msg->l1h = NULL;
-
- sim_apdu_resp(ms, msg);
-
- return 0;
-}
-
-/* Transmit L1CTL_PM_REQ */
-int l1ctl_tx_pm_req_range(struct osmocom_ms *ms, uint16_t arfcn_from,
- uint16_t arfcn_to)
-{
- struct msgb *msg;
- struct l1ctl_pm_req *pm;
-
- msg = osmo_l1_alloc(L1CTL_PM_REQ);
- if (!msg)
- return -1;
-
- LOGP(DL1C, LOGL_INFO, "Tx PM Req (%u-%u)\n", arfcn_from, arfcn_to);
- pm = (struct l1ctl_pm_req *) msgb_put(msg, sizeof(*pm));
- pm->type = 1;
- pm->range.band_arfcn_from = htons(arfcn_from);
- pm->range.band_arfcn_to = htons(arfcn_to);
-
- return osmo_send_l1(ms, msg);
-}
-
-/* Transmit L1CTL_RESET_REQ */
-int l1ctl_tx_reset_req(struct osmocom_ms *ms, uint8_t type)
-{
- struct msgb *msg;
- struct l1ctl_reset *res;
-
- msg = osmo_l1_alloc(L1CTL_RESET_REQ);
- if (!msg)
- return -1;
-
- LOGP(DL1C, LOGL_INFO, "Tx Reset Req (%u)\n", type);
- res = (struct l1ctl_reset *) msgb_put(msg, sizeof(*res));
- res->type = type;
-
- return osmo_send_l1(ms, msg);
-}
-
-/* Receive L1CTL_RESET_IND */
-static int rx_l1_reset(struct osmocom_ms *ms)
-{
- LOGP(DL1C, LOGL_INFO, "Layer1 Reset indication\n");
- osmo_signal_dispatch(SS_L1CTL, S_L1CTL_RESET, ms);
-
- return 0;
-}
-
-/* Receive L1CTL_PM_CONF */
-static int rx_l1_pm_conf(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct l1ctl_pm_conf *pmr;
-
- for (pmr = (struct l1ctl_pm_conf *) msg->l1h;
- (uint8_t *) pmr < msg->tail; pmr++) {
- struct osmobb_meas_res mr;
- DEBUGP(DL1C, "PM MEAS: ARFCN: %4u RxLev: %3d %3d\n",
- ntohs(pmr->band_arfcn), pmr->pm[0], pmr->pm[1]);
- mr.band_arfcn = ntohs(pmr->band_arfcn);
- mr.rx_lev = pmr->pm[0];
- mr.ms = ms;
- osmo_signal_dispatch(SS_L1CTL, S_L1CTL_PM_RES, &mr);
- }
- return 0;
-}
-
-/* Receive L1CTL_CCCH_MODE_CONF */
-static int rx_l1_ccch_mode_conf(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct osmobb_ccch_mode_conf mc;
- struct l1ctl_ccch_mode_conf *conf;
-
- if (msgb_l3len(msg) < sizeof(*conf)) {
- LOGP(DL1C, LOGL_ERROR, "CCCH MODE CONF: MSG too short %u\n",
- msgb_l3len(msg));
- return -1;
- }
-
- conf = (struct l1ctl_ccch_mode_conf *) msg->l1h;
-
- LOGP(DL1C, LOGL_INFO, "CCCH MODE CONF: mode=%u\n", conf->ccch_mode);
-
- mc.ccch_mode = conf->ccch_mode;
- mc.ms = ms;
- osmo_signal_dispatch(SS_L1CTL, S_L1CTL_CCCH_MODE_CONF, &mc);
-
- return 0;
-}
-
-/* Receive L1CTL_TCH_MODE_CONF */
-static int rx_l1_tch_mode_conf(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct osmobb_tch_mode_conf mc;
- struct l1ctl_tch_mode_conf *conf;
-
- if (msgb_l3len(msg) < sizeof(*conf)) {
- LOGP(DL1C, LOGL_ERROR, "TCH MODE CONF: MSG too short %u\n",
- msgb_l3len(msg));
- return -1;
- }
-
- conf = (struct l1ctl_tch_mode_conf *) msg->l1h;
-
- LOGP(DL1C, LOGL_INFO, "TCH MODE CONF: mode=%u\n", conf->tch_mode);
-
- mc.tch_mode = conf->tch_mode;
- mc.audio_mode = conf->audio_mode;
- mc.ms = ms;
- osmo_signal_dispatch(SS_L1CTL, S_L1CTL_TCH_MODE_CONF, &mc);
-
- return 0;
-}
-
-/* Receive L1CTL_TRAFFIC_IND (Traffic Indication from L1) */
-static int rx_l1_traffic_ind(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct l1ctl_info_dl *dl;
- struct l1ctl_traffic_ind *ti;
- uint8_t fr[33];
- int i, di, si;
-
- /* Header handling */
- dl = (struct l1ctl_info_dl *) msg->l1h;
- msg->l2h = dl->payload;
- ti = (struct l1ctl_traffic_ind *) msg->l2h;
-
- memset(fr, 0x00, 33);
- fr[0] = 0xd0;
- for (i = 0; i < 260; i++) {
- di = gsm610_bitorder[i];
- si = (i > 181) ? i + 4 : i;
- msb_set_bit(fr, 4 + di, msb_get_bit(ti->data, si));
- }
- memcpy(ti->data, fr, 33);
-
- DEBUGP(DL1C, "TRAFFIC IND (%s)\n", osmo_hexdump(ti->data, 33));
-
- /* distribute or drop */
- if (ms->l1_entity.l1_traffic_ind) {
- /* pull the L1 header from the msgb */
- msgb_pull(msg, msg->l2h - (msg->l1h-sizeof(struct l1ctl_hdr)));
- msg->l1h = NULL;
-
- return ms->l1_entity.l1_traffic_ind(ms, msg);
- }
-
- msgb_free(msg);
- return 0;
-}
-
-/* Transmit L1CTL_TRAFFIC_REQ (Traffic Request to L1) */
-int l1ctl_tx_traffic_req(struct osmocom_ms *ms, struct msgb *msg,
- uint8_t chan_nr, uint8_t link_id)
-{
- struct l1ctl_hdr *l1h;
- struct l1ctl_info_ul *l1i_ul;
- struct l1ctl_traffic_req *tr;
- uint8_t fr[33];
- int i, di, si;
-
- /* Header handling */
- tr = (struct l1ctl_traffic_req *) msg->l2h;
-
- DEBUGP(DL1C, "TRAFFIC REQ (%s)\n",
- osmo_hexdump(msg->l2h, msgb_l2len(msg)));
-
- if (msgb_l2len(msg) != 33) {
- LOGP(DL1C, LOGL_ERROR, "Traffic Request has incorrect length "
- "(%u != 33)\n", msgb_l2len(msg));
- msgb_free(msg);
- return -EINVAL;
- }
-
- if ((tr->data[0] >> 4) != 0xd) {
- LOGP(DL1C, LOGL_ERROR, "Traffic Request has incorrect magic "
- "(%u != 0xd)\n", tr->data[0] >> 4);
- msgb_free(msg);
- return -EINVAL;
- }
-
- memset(fr, 0x00, 33);
- for (i = 0; i < 260; i++) {
- si = gsm610_bitorder[i];
- di = (i > 181) ? i + 4 : i;
- msb_set_bit(fr, di, msb_get_bit(tr->data, 4 + si));
- }
- memcpy(tr->data, fr, 33);
-// printf("TX %s\n", osmo_hexdump(tr->data, 33));
-
- /* prepend uplink info header */
- l1i_ul = (struct l1ctl_info_ul *) msgb_push(msg, sizeof(*l1i_ul));
-
- l1i_ul->chan_nr = chan_nr;
- l1i_ul->link_id = link_id;
-
- /* prepend l1 header */
- msg->l1h = msgb_push(msg, sizeof(*l1h));
- l1h = (struct l1ctl_hdr *) msg->l1h;
- l1h->msg_type = L1CTL_TRAFFIC_REQ;
-
- return osmo_send_l1(ms, msg);
-}
-
-/* Transmit L1CTL_NEIGH_PM_REQ */
-int l1ctl_tx_neigh_pm_req(struct osmocom_ms *ms, int num, uint16_t *arfcn)
-{
- struct msgb *msg;
- struct l1ctl_neigh_pm_req *pm_req;
- int i;
-
- msg = osmo_l1_alloc(L1CTL_NEIGH_PM_REQ);
- if (!msg)
- return -1;
-
- LOGP(DL1C, LOGL_INFO, "Tx NEIGH PM Req (num %u)\n", num);
- pm_req = (struct l1ctl_neigh_pm_req *) msgb_put(msg, sizeof(*pm_req));
- pm_req->n = num;
- for (i = 0; i < num; i++)
- pm_req->band_arfcn[i] = htons(*arfcn++);
-
- return osmo_send_l1(ms, msg);
-}
-
-/* Receive L1CTL_NEIGH_PM_IND */
-static int rx_l1_neigh_pm_ind(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct l1ctl_neigh_pm_ind *pm_ind;
-
- for (pm_ind = (struct l1ctl_neigh_pm_ind *) msg->l1h;
- (uint8_t *) pm_ind < msg->tail; pm_ind++) {
- struct osmobb_neigh_pm_ind mi;
- DEBUGP(DL1C, "NEIGH_PM IND: ARFCN: %4u RxLev: %3d %3d\n",
- ntohs(pm_ind->band_arfcn), pm_ind->pm[0],
- pm_ind->pm[1]);
- mi.band_arfcn = ntohs(pm_ind->band_arfcn);
- mi.rx_lev = pm_ind->pm[0];
- mi.ms = ms;
- osmo_signal_dispatch(SS_L1CTL, S_L1CTL_NEIGH_PM_IND, &mi);
- }
- return 0;
-}
-
-/* Receive incoming data from L1 using L1CTL format */
-int l1ctl_recv(struct osmocom_ms *ms, struct msgb *msg)
-{
- int rc = 0;
- struct l1ctl_hdr *l1h;
- struct l1ctl_info_dl *dl;
-
- if (msgb_l2len(msg) < sizeof(*dl)) {
- LOGP(DL1C, LOGL_ERROR, "Short Layer2 message: %u\n",
- msgb_l2len(msg));
- msgb_free(msg);
- return -1;
- }
-
- l1h = (struct l1ctl_hdr *) msg->l1h;
-
- /* move the l1 header pointer to point _BEHIND_ l1ctl_hdr,
- as the l1ctl header is of no interest to subsequent code */
- msg->l1h = l1h->data;
-
- switch (l1h->msg_type) {
- case L1CTL_FBSB_CONF:
- rc = rx_l1_fbsb_conf(ms, msg);
- msgb_free(msg);
- break;
- case L1CTL_DATA_IND:
- rc = rx_ph_data_ind(ms, msg);
- break;
- case L1CTL_DATA_CONF:
- rc = rx_ph_data_conf(ms, msg);
- break;
- case L1CTL_RESET_IND:
- case L1CTL_RESET_CONF:
- rc = rx_l1_reset(ms);
- msgb_free(msg);
- break;
- case L1CTL_PM_CONF:
- rc = rx_l1_pm_conf(ms, msg);
- if (l1h->flags & L1CTL_F_DONE)
- osmo_signal_dispatch(SS_L1CTL, S_L1CTL_PM_DONE, ms);
- msgb_free(msg);
- break;
- case L1CTL_RACH_CONF:
- rc = rx_l1_rach_conf(ms, msg);
- break;
- case L1CTL_CCCH_MODE_CONF:
- rc = rx_l1_ccch_mode_conf(ms, msg);
- msgb_free(msg);
- break;
- case L1CTL_TCH_MODE_CONF:
- rc = rx_l1_tch_mode_conf(ms, msg);
- msgb_free(msg);
- break;
- case L1CTL_SIM_CONF:
- rc = rx_l1_sim_conf(ms, msg);
- break;
- case L1CTL_NEIGH_PM_IND:
- rc = rx_l1_neigh_pm_ind(ms, msg);
- msgb_free(msg);
- break;
- case L1CTL_TRAFFIC_IND:
- rc = rx_l1_traffic_ind(ms, msg);
- break;
- case L1CTL_TRAFFIC_CONF:
- msgb_free(msg);
- break;
- default:
- LOGP(DL1C, LOGL_ERROR, "Unknown MSG: %u\n", l1h->msg_type);
- msgb_free(msg);
- break;
- }
-
- return rc;
-}
diff --git a/Src/osmoconbb/src/host/layer23/src/common/l1ctl_lapdm_glue.c b/Src/osmoconbb/src/host/layer23/src/common/l1ctl_lapdm_glue.c
deleted file mode 100644
index db071a3..0000000
--- a/Src/osmoconbb/src/host/layer23/src/common/l1ctl_lapdm_glue.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/* Glue code between L1CTL and LAPDm */
-
-/* (C) 2011 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-
-#include <l1ctl_proto.h>
-
-#include <osmocom/gsm/prim.h>
-
-#include <osmocom/bb/common/l1ctl.h>
-#include <osmocom/bb/common/lapdm.h>
-
-/* LAPDm wants to send a PH-* primitive to the physical layer (L1) */
-int l1ctl_ph_prim_cb(struct osmo_prim_hdr *oph, void *ctx)
-{
- struct osmocom_ms *ms = ctx;
- struct osmo_phsap_prim *pp = (struct osmo_phsap_prim *) oph;
- int rc = 0;
-
- if (oph->sap != SAP_GSM_PH)
- return -ENODEV;
-
- if (oph->operation != PRIM_OP_REQUEST)
- return -EINVAL;
-
- switch (oph->primitive) {
- case PRIM_PH_DATA:
- rc = l1ctl_tx_data_req(ms, oph->msg, pp->u.data.chan_nr,
- pp->u.data.link_id);
- break;
- case PRIM_PH_RACH:
- l1ctl_tx_param_req(ms, pp->u.rach_req.ta,
- pp->u.rach_req.tx_power);
- rc = l1ctl_tx_rach_req(ms, pp->u.rach_req.ra,
- pp->u.rach_req.offset,
- pp->u.rach_req.is_combined_ccch);
- break;
- default:
- rc = -EINVAL;
- }
-
- return rc;
-}
diff --git a/Src/osmoconbb/src/host/layer23/src/common/l1l2_interface.c b/Src/osmoconbb/src/host/layer23/src/common/l1l2_interface.c
deleted file mode 100644
index abaa64f..0000000
--- a/Src/osmoconbb/src/host/layer23/src/common/l1l2_interface.c
+++ /dev/null
@@ -1,179 +0,0 @@
-/* Layer 1 socket interface of layer2/3 stack */
-
-/* (C) 2010 by Holger Hans Peter Freyther
- * (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <osmocom/bb/common/osmocom_data.h>
-#include <osmocom/bb/common/l1ctl.h>
-#include <osmocom/bb/common/logging.h>
-#include <osmocom/bb/common/l1l2_interface.h>
-
-#include <osmocom/core/utils.h>
-
-#include <sys/socket.h>
-#include <sys/un.h>
-
-#include <arpa/inet.h>
-
-#define _GNU_SOURCE
-#include <unistd.h>
-#include <errno.h>
-#include <string.h>
-#include <stdlib.h>
-
-#define GSM_L2_LENGTH 256
-#define GSM_L2_HEADROOM 32
-
-static int layer2_read(struct osmo_fd *fd)
-{
- struct msgb *msg;
- u_int16_t len;
- int rc;
-
- msg = msgb_alloc_headroom(GSM_L2_LENGTH+GSM_L2_HEADROOM, GSM_L2_HEADROOM, "Layer2");
- if (!msg) {
- LOGP(DL1C, LOGL_ERROR, "Failed to allocate msg.\n");
- return -ENOMEM;
- }
-
- rc = read(fd->fd, &len, sizeof(len));
- if (rc < sizeof(len)) {
- fprintf(stderr, "Layer2 socket failed\n");
- msgb_free(msg);
- if (rc >= 0)
- rc = -EIO;
- layer2_close((struct osmocom_ms *) fd->data);
- return rc;
- }
-
- len = ntohs(len);
- if (len > GSM_L2_LENGTH) {
- LOGP(DL1C, LOGL_ERROR, "Length is too big: %u\n", len);
- msgb_free(msg);
- return -EINVAL;
- }
-
-
- msg->l1h = msgb_put(msg, len);
- rc = read(fd->fd, msg->l1h, msgb_l1len(msg));
- if (rc != msgb_l1len(msg)) {
- LOGP(DL1C, LOGL_ERROR, "Can not read data: len=%d rc=%d "
- "errno=%d\n", len, rc, errno);
- msgb_free(msg);
- return rc;
- }
-
- l1ctl_recv((struct osmocom_ms *) fd->data, msg);
-
- return 0;
-}
-
-static int layer2_write(struct osmo_fd *fd, struct msgb *msg)
-{
- int rc;
-
- if (fd->fd <= 0)
- return -EINVAL;
-
- rc = write(fd->fd, msg->data, msg->len);
- if (rc != msg->len) {
- LOGP(DL1C, LOGL_ERROR, "Failed to write data: rc: %d\n", rc);
- return rc;
- }
-
- return 0;
-}
-
-int layer2_open(struct osmocom_ms *ms, const char *socket_path)
-{
- int rc;
- struct sockaddr_un local;
-
- ms->l2_wq.bfd.fd = socket(AF_UNIX, SOCK_STREAM, 0);
- if (ms->l2_wq.bfd.fd < 0) {
- fprintf(stderr, "Failed to create unix domain socket.\n");
- return ms->l2_wq.bfd.fd;
- }
-
- local.sun_family = AF_UNIX;
- strncpy(local.sun_path, socket_path, sizeof(local.sun_path));
- local.sun_path[sizeof(local.sun_path) - 1] = '\0';
-
- rc = connect(ms->l2_wq.bfd.fd, (struct sockaddr *) &local,
- sizeof(local));
- if (rc < 0) {
- fprintf(stderr, "Failed to connect to '%s': %s\n", local.sun_path,
- strerror(errno));
- close(ms->l2_wq.bfd.fd);
- return rc;
- }
-
- osmo_wqueue_init(&ms->l2_wq, 100);
- ms->l2_wq.bfd.data = ms;
- ms->l2_wq.bfd.when = BSC_FD_READ;
- ms->l2_wq.read_cb = layer2_read;
- ms->l2_wq.write_cb = layer2_write;
-
- rc = osmo_fd_register(&ms->l2_wq.bfd);
- if (rc != 0) {
- fprintf(stderr, "Failed to register fd.\n");
- close(ms->l2_wq.bfd.fd);
- return rc;
- }
-
- return 0;
-}
-
-int layer2_close(struct osmocom_ms *ms)
-{
- if (ms->l2_wq.bfd.fd <= 0)
- return -EINVAL;
-
- close(ms->l2_wq.bfd.fd);
- ms->l2_wq.bfd.fd = -1;
- osmo_fd_unregister(&ms->l2_wq.bfd);
-
- return 0;
-}
-
-int osmo_send_l1(struct osmocom_ms *ms, struct msgb *msg)
-{
- uint16_t *len;
-
- DEBUGP(DL1C, "Sending: '%s'\n", osmo_hexdump(msg->data, msg->len));
-
- if (msg->l1h != msg->data)
- LOGP(DL1C, LOGL_ERROR, "Message L1 header != Message Data\n");
-
- /* prepend 16bit length before sending */
- len = (uint16_t *) msgb_push(msg, sizeof(*len));
- *len = htons(msg->len - sizeof(*len));
-
- if (osmo_wqueue_enqueue(&ms->l2_wq, msg) != 0) {
- LOGP(DL1C, LOGL_ERROR, "Failed to enqueue msg.\n");
- msgb_free(msg);
- return -1;
- }
-
- return 0;
-}
-
-
diff --git a/Src/osmoconbb/src/host/layer23/src/common/lapdm.c b/Src/osmoconbb/src/host/layer23/src/common/lapdm.c
deleted file mode 100644
index 1fbebe6..0000000
--- a/Src/osmoconbb/src/host/layer23/src/common/lapdm.c
+++ /dev/null
@@ -1,2510 +0,0 @@
-/* GSM LAPDm (TS 04.06) implementation */
-
-/* (C) 2010-2011 by Harald Welte <laforge@gnumonks.org>
- * (C) 2010 by Andreas Eversberg <jolly@eversberg.eu>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-/* Notes on Buffering: rcv_buffer, tx_queue, tx_hist, send_buffer, send_queue
- *
- * RX data is stored in the rcv_buffer (pointer). If the message is complete, it
- * is removed from rcv_buffer pointer and forwarded to L3. If the RX data is
- * received while there is an incomplete rcv_buffer, it is appended to it.
- *
- * TX data is stored in the send_queue first. When transmitting a frame,
- * the first message in the send_queue is moved to the send_buffer. There it
- * resides until all fragments are acknowledged. Fragments to be sent by I
- * frames are stored in the tx_hist buffer for resend, if required. Also the
- * current fragment is copied into the tx_queue. There it resides until it is
- * forwarded to layer 1.
- *
- * In case we have SAPI 0, we only have a window size of 1, so the unack-
- * nowledged message resides always in the send_buffer. In case of a suspend,
- * it can be written back to the first position of the send_queue.
- *
- * The layer 1 normally sends a PH-READY-TO-SEND. But because we use
- * asynchronous transfer between layer 1 and layer 2 (serial link), we must
- * send a frame before layer 1 reaches the right timeslot to send it. So we
- * move the tx_queue to layer 1 when there is not already a pending frame, and
- * wait until acknowledge after the frame has been sent. If we receive an
- * acknowledge, we can send the next frame from the buffer, if any.
- *
- * The moving of tx_queue to layer 1 may also trigger T200, if desired. Also it
- * will trigger next I frame, if possible.
- *
- */
-
-#include <stdio.h>
-#include <stdint.h>
-#include <string.h>
-#include <errno.h>
-#include <arpa/inet.h>
-
-#include <osmocom/core/logging.h>
-#include <osmocom/core/timer.h>
-#include <osmocom/core/msgb.h>
-#include <osmocom/gsm/tlv.h>
-#include <osmocom/core/utils.h>
-#include <osmocom/gsm/rsl.h>
-#include <osmocom/gsm/prim.h>
-#include <osmocom/gsm/gsm_utils.h>
-#include <osmocom/gsm/protocol/gsm_04_08.h>
-#include <osmocom/gsm/protocol/gsm_08_58.h>
-
-#include <osmocom/bb/common/lapdm.h>
-#include <osmocom/bb/common/logging.h>
-
-/* TS 04.06 Figure 4 / Section 3.2 */
-#define LAPDm_LPD_NORMAL 0
-#define LAPDm_LPD_SMSCB 1
-#define LAPDm_SAPI_NORMAL 0
-#define LAPDm_SAPI_SMS 3
-#define LAPDm_ADDR(lpd, sapi, cr) ((((lpd) & 0x3) << 5) | (((sapi) & 0x7) << 2) | (((cr) & 0x1) << 1) | 0x1)
-
-#define LAPDm_ADDR_SAPI(addr) (((addr) >> 2) & 0x7)
-#define LAPDm_ADDR_CR(addr) (((addr) >> 1) & 0x1)
-#define LAPDm_ADDR_EA(addr) ((addr) & 0x1)
-
-/* TS 04.06 Table 3 / Section 3.4.3 */
-#define LAPDm_CTRL_I(nr, ns, p) ((((nr) & 0x7) << 5) | (((p) & 0x1) << 4) | (((ns) & 0x7) << 1))
-#define LAPDm_CTRL_S(nr, s, p) ((((nr) & 0x7) << 5) | (((p) & 0x1) << 4) | (((s) & 0x3) << 2) | 0x1)
-#define LAPDm_CTRL_U(u, p) ((((u) & 0x1c) << (5-2)) | (((p) & 0x1) << 4) | (((u) & 0x3) << 2) | 0x3)
-
-#define LAPDm_CTRL_is_I(ctrl) (((ctrl) & 0x1) == 0)
-#define LAPDm_CTRL_is_S(ctrl) (((ctrl) & 0x3) == 1)
-#define LAPDm_CTRL_is_U(ctrl) (((ctrl) & 0x3) == 3)
-
-#define LAPDm_CTRL_U_BITS(ctrl) ((((ctrl) & 0xC) >> 2) | ((ctrl) & 0xE0) >> 3)
-#define LAPDm_CTRL_PF_BIT(ctrl) (((ctrl) >> 4) & 0x1)
-
-#define LAPDm_CTRL_S_BITS(ctrl) (((ctrl) & 0xC) >> 2)
-
-#define LAPDm_CTRL_I_Ns(ctrl) (((ctrl) & 0xE) >> 1)
-#define LAPDm_CTRL_Nr(ctrl) (((ctrl) & 0xE0) >> 5)
-
-/* TS 04.06 Table 4 / Section 3.8.1 */
-#define LAPDm_U_SABM 0x7
-#define LAPDm_U_DM 0x3
-#define LAPDm_U_UI 0x0
-#define LAPDm_U_DISC 0x8
-#define LAPDm_U_UA 0xC
-
-#define LAPDm_S_RR 0x0
-#define LAPDm_S_RNR 0x1
-#define LAPDm_S_REJ 0x2
-
-#define LAPDm_LEN(len) ((len << 2) | 0x1)
-#define LAPDm_MORE 0x2
-
-/* TS 04.06 Section 5.8.3 */
-#define N201_AB_SACCH 18
-#define N201_AB_SDCCH 20
-#define N201_AB_FACCH 20
-#define N201_Bbis 23
-#define N201_Bter_SACCH 21
-#define N201_Bter_SDCCH 23
-#define N201_Bter_FACCH 23
-#define N201_B4 19
-
-/* 5.8.2.1 N200 during establish and release */
-#define N200_EST_REL 5
-/* 5.8.2.1 N200 during timer recovery state */
-#define N200_TR_SACCH 5
-#define N200_TR_SDCCH 23
-#define N200_TR_FACCH_FR 34
-#define N200_TR_EFACCH_FR 48
-#define N200_TR_FACCH_HR 29
-/* FIXME: this depends on chan type */
-#define N200 N200_TR_SACCH
-
-#define CR_MS2BS_CMD 0
-#define CR_MS2BS_RESP 1
-#define CR_BS2MS_CMD 1
-#define CR_BS2MS_RESP 0
-
-/* Set T200 to 1 Second (OpenBTS uses 900ms) */
-#define T200 1, 0
-
-/* k value for each SAPI */
-static uint8_t k_sapi[] = {1, 1, 1, 1, 1, 1, 1, 1};
-
-enum lapdm_format {
- LAPDm_FMT_A,
- LAPDm_FMT_B,
- LAPDm_FMT_Bbis,
- LAPDm_FMT_Bter,
- LAPDm_FMT_B4,
-};
-
-static void lapdm_t200_cb(void *data);
-static int rslms_send_i(struct lapdm_msg_ctx *mctx, int line);
-
-/* UTILITY FUNCTIONS */
-
-static inline uint8_t inc_mod8(uint8_t x)
-{
- return (x + 1) & 7;
-}
-
-static inline uint8_t add_mod8(uint8_t x, uint8_t y)
-{
- return (x + y) & 7;
-}
-
-static inline uint8_t sub_mod8(uint8_t x, uint8_t y)
-{
- return (x - y) & 7; /* handle negative results correctly */
-}
-
-static void lapdm_dl_init(struct lapdm_datalink *dl,
- struct lapdm_entity *entity)
-{
- memset(dl, 0, sizeof(*dl));
- INIT_LLIST_HEAD(&dl->send_queue);
- INIT_LLIST_HEAD(&dl->tx_queue);
- dl->state = LAPDm_STATE_IDLE;
- dl->t200.data = dl;
- dl->t200.cb = &lapdm_t200_cb;
- dl->entity = entity;
-}
-
-void lapdm_entity_init(struct lapdm_entity *le, enum lapdm_mode mode)
-{
- unsigned int i;
-
- for (i = 0; i < ARRAY_SIZE(le->datalink); i++)
- lapdm_dl_init(&le->datalink[i], le);
-
- lapdm_entity_set_mode(le, mode);
-}
-
-void lapdm_channel_init(struct lapdm_channel *lc, enum lapdm_mode mode)
-{
- lapdm_entity_init(&lc->lapdm_acch, mode);
- lapdm_entity_init(&lc->lapdm_dcch, mode);
-}
-
-
-static void lapdm_dl_flush_send(struct lapdm_datalink *dl)
-{
- struct msgb *msg;
-
- /* Flush send-queue */
- while ((msg = msgb_dequeue(&dl->send_queue)))
- msgb_free(msg);
-
- /* Clear send-buffer */
- if (dl->send_buffer) {
- msgb_free(dl->send_buffer);
- dl->send_buffer = NULL;
- }
-}
-
-static void lapdm_dl_flush_tx(struct lapdm_datalink *dl)
-{
- struct msgb *msg;
- unsigned int i;
-
- while ((msg = msgb_dequeue(&dl->tx_queue)))
- msgb_free(msg);
- for (i = 0; i < 8; i++)
- dl->tx_length[i] = 0;
-}
-
-void lapdm_entity_exit(struct lapdm_entity *le)
-{
- unsigned int i;
- struct lapdm_datalink *dl;
-
- for (i = 0; i < ARRAY_SIZE(le->datalink); i++) {
- dl = &le->datalink[i];
- lapdm_dl_flush_tx(dl);
- lapdm_dl_flush_send(dl);
- if (dl->rcv_buffer)
- msgb_free(dl->rcv_buffer);
- }
-}
-
-void lapdm_channel_exit(struct lapdm_channel *lc)
-{
- lapdm_entity_exit(&lc->lapdm_acch);
- lapdm_entity_exit(&lc->lapdm_dcch);
-}
-
-static void lapdm_dl_newstate(struct lapdm_datalink *dl, uint32_t state)
-{
- LOGP(DLAPDM, LOGL_INFO, "new state %s -> %s\n",
- lapdm_state_names[dl->state], lapdm_state_names[state]);
-
- dl->state = state;
-}
-
-static struct lapdm_datalink *datalink_for_sapi(struct lapdm_entity *le, uint8_t sapi)
-{
- switch (sapi) {
- case LAPDm_SAPI_NORMAL:
- return &le->datalink[0];
- case LAPDm_SAPI_SMS:
- return &le->datalink[1];
- default:
- return NULL;
- }
-}
-
-/* remove the L2 header from a MSGB */
-static inline unsigned char *msgb_pull_l2h(struct msgb *msg)
-{
- unsigned char *ret = msgb_pull(msg, msg->l3h - msg->l2h);
- msg->l2h = NULL;
- return ret;
-}
-
-/* Append padding (if required) */
-static void lapdm_pad_msgb(struct msgb *msg, uint8_t n201)
-{
- int pad_len = n201 - msgb_l2len(msg);
- uint8_t *data;
-
- if (pad_len < 0) {
- LOGP(DLAPDM, LOGL_ERROR,
- "cannot pad message that is already too big!\n");
- return;
- }
-
- data = msgb_put(msg, pad_len);
- memset(data, 0x2B, pad_len);
-}
-
-/* input function that L2 calls when sending messages up to L3 */
-static int rslms_sendmsg(struct msgb *msg, struct lapdm_entity *le)
-{
- if (!le->l3_cb) {
- msgb_free(msg);
- return -EIO;
- }
-
- /* call the layer2 message handler that is registered */
- return le->l3_cb(msg, le, le->l3_ctx);
-}
-
-/* write a frame into the tx queue */
-static int tx_ph_data_enqueue(struct lapdm_datalink *dl, struct msgb *msg,
- uint8_t chan_nr, uint8_t link_id, uint8_t n201)
-{
- struct lapdm_entity *le = dl->entity;
- struct osmo_phsap_prim pp;
-
- /* if there is a pending message, queue it */
- if (le->tx_pending || le->flags & LAPDM_ENT_F_POLLING_ONLY) {
- *msgb_push(msg, 1) = n201;
- *msgb_push(msg, 1) = link_id;
- *msgb_push(msg, 1) = chan_nr;
- msgb_enqueue(&dl->tx_queue, msg);
- return -EBUSY;
- }
-
- osmo_prim_init(&pp.oph, SAP_GSM_PH, PRIM_PH_DATA,
- PRIM_OP_REQUEST, msg);
- pp.u.data.chan_nr = chan_nr;
- pp.u.data.link_id = link_id;
-
- /* send the frame now */
- le->tx_pending = 0; /* disabled flow control */
- lapdm_pad_msgb(msg, n201);
-
- return le->l1_prim_cb(&pp.oph, le->l1_ctx);
-}
-
-static struct msgb *tx_dequeue_msgb(struct lapdm_entity *le)
-{
- struct lapdm_datalink *dl;
- int last = le->last_tx_dequeue;
- int i = last, n = ARRAY_SIZE(le->datalink);
- struct msgb *msg = NULL;
-
- /* round-robin dequeue */
- do {
- /* next */
- i = (i + 1) % n;
- dl = &le->datalink[i];
- if ((msg = msgb_dequeue(&dl->tx_queue)))
- break;
- } while (i != last);
-
- if (msg) {
- /* Set last dequeue position */
- le->last_tx_dequeue = i;
- }
-
- return msg;
-}
-
-/* dequeue a msg that's pending transmission via L1 and wrap it into
- * a osmo_phsap_prim */
-int lapdm_phsap_dequeue_prim(struct lapdm_entity *le, struct osmo_phsap_prim *pp)
-{
- struct msgb *msg;
- uint8_t n201;
-
- msg = tx_dequeue_msgb(le);
- if (!msg)
- return -ENODEV;
-
- /* if we have a message, send PH-DATA.req */
- osmo_prim_init(&pp->oph, SAP_GSM_PH, PRIM_PH_DATA,
- PRIM_OP_REQUEST, msg);
-
- /* Pull chan_nr and link_id */
- pp->u.data.chan_nr = *msg->data;
- msgb_pull(msg, 1);
- pp->u.data.link_id = *msg->data;
- msgb_pull(msg, 1);
- n201 = *msg->data;
- msgb_pull(msg, 1);
-
- /* Pad the frame, we can transmit now */
- lapdm_pad_msgb(msg, n201);
-
- return 0;
-}
-
-/* get next frame from the tx queue. because the ms has multiple datalinks,
- * each datalink's queue is read round-robin.
- */
-static int l2_ph_data_conf(struct msgb *msg, struct lapdm_entity *le)
-{
- struct osmo_phsap_prim pp;
-
- /* we may send again */
- le->tx_pending = 0;
-
- /* free confirm message */
- if (msg)
- msgb_free(msg);
-
- if (lapdm_phsap_dequeue_prim(le, &pp) < 0) {
- /* no message in all queues */
-
- /* If user didn't request PH-EMPTY_FRAME.req, abort */
- if (!(le->flags & LAPDM_ENT_F_EMPTY_FRAME))
- return 0;
-
- /* otherwise, send PH-EMPTY_FRAME.req */
- osmo_prim_init(&pp.oph, SAP_GSM_PH,
- PRIM_PH_EMPTY_FRAME,
- PRIM_OP_REQUEST, NULL);
- } else {
- le->tx_pending = 1;
- }
-
- return le->l1_prim_cb(&pp.oph, le->l1_ctx);
-}
-
-/* Create RSLms various RSLms messages */
-static int send_rslms_rll_l3(uint8_t msg_type, struct lapdm_msg_ctx *mctx,
- struct msgb *msg)
-{
- /* Add the RSL + RLL header */
- rsl_rll_push_l3(msg, msg_type, mctx->chan_nr, mctx->link_id, 1);
-
- /* send off the RSLms message to L3 */
- return rslms_sendmsg(msg, mctx->dl->entity);
-}
-
-/* Take a B4 format message from L1 and create RSLms UNIT DATA IND */
-static int send_rslms_rll_l3_ui(struct lapdm_msg_ctx *mctx, struct msgb *msg)
-{
- uint8_t l3_len = msg->tail - (uint8_t *)msgb_l3(msg);
- struct abis_rsl_rll_hdr *rllh;
-
- /* Add the RSL + RLL header */
- msgb_tv16_push(msg, RSL_IE_L3_INFO, l3_len);
- msgb_push(msg, 2 + 2);
- rsl_rll_push_hdr(msg, RSL_MT_UNIT_DATA_IND, mctx->chan_nr,
- mctx->link_id, 1);
- rllh = (struct abis_rsl_rll_hdr *)msgb_l2(msg);
-
- rllh->data[0] = RSL_IE_TIMING_ADVANCE;
- rllh->data[1] = mctx->ta_ind;
-
- rllh->data[2] = RSL_IE_MS_POWER;
- rllh->data[3] = mctx->tx_power_ind;
-
- return rslms_sendmsg(msg, mctx->dl->entity);
-}
-
-static int send_rll_simple(uint8_t msg_type, struct lapdm_msg_ctx *mctx)
-{
- struct msgb *msg;
-
- msg = rsl_rll_simple(msg_type, mctx->chan_nr, mctx->link_id, 1);
-
- /* send off the RSLms message to L3 */
- return rslms_sendmsg(msg, mctx->dl->entity);
-}
-
-static int rsl_rll_error(uint8_t cause, struct lapdm_msg_ctx *mctx)
-{
- struct msgb *msg;
-
- LOGP(DLAPDM, LOGL_NOTICE, "sending MDL-ERROR-IND %d\n", cause);
- msg = rsl_rll_simple(RSL_MT_ERROR_IND, mctx->chan_nr, mctx->link_id, 1);
- msg->l2h = msgb_put(msg, sizeof(struct abis_rsl_rll_hdr));
- msgb_tlv_put(msg, RSL_IE_RLM_CAUSE, 1, &cause);
- return rslms_sendmsg(msg, mctx->dl->entity);
-}
-
-static int check_length_ind(struct lapdm_msg_ctx *mctx, uint8_t length_ind)
-{
- if (!(length_ind & 0x01)) {
- /* G.4.1 If the EL bit is set to "0", an MDL-ERROR-INDICATION
- * primitive with cause "frame not implemented" is sent to the
- * mobile management entity. */
- LOGP(DLAPDM, LOGL_NOTICE,
- "we don't support multi-octet length\n");
- rsl_rll_error(RLL_CAUSE_FRM_UNIMPL, mctx);
- return -EINVAL;
- }
- return 0;
-}
-
-static int lapdm_send_resend(struct lapdm_datalink *dl)
-{
- struct msgb *msg = msgb_alloc_headroom(23+10, 10, "LAPDm resend");
- int length;
-
- /* Resend SABM/DISC from tx_hist */
- length = dl->tx_length[0];
- msg->l2h = msgb_put(msg, length);
- memcpy(msg->l2h, dl->tx_hist[dl->V_send], length);
-
- return tx_ph_data_enqueue(dl, msg, dl->mctx.chan_nr, dl->mctx.link_id,
- dl->mctx.n201);
-}
-
-static int lapdm_send_ua(struct lapdm_msg_ctx *mctx, uint8_t len, uint8_t *data)
-{
- uint8_t sapi = mctx->link_id & 7;
- uint8_t f_bit = LAPDm_CTRL_PF_BIT(mctx->ctrl);
- struct msgb *msg = msgb_alloc_headroom(23+10, 10, "LAPDm UA");
- struct lapdm_entity *le = mctx->dl->entity;
-
- msg->l2h = msgb_put(msg, 3 + len);
- msg->l2h[0] = LAPDm_ADDR(LAPDm_LPD_NORMAL, sapi, le->cr.loc2rem.resp);
- msg->l2h[1] = LAPDm_CTRL_U(LAPDm_U_UA, f_bit);
- msg->l2h[2] = LAPDm_LEN(len);
- if (len)
- memcpy(msg->l2h + 3, data, len);
-
- return tx_ph_data_enqueue(mctx->dl, msg, mctx->chan_nr, mctx->link_id,
- mctx->n201);
-}
-
-static int lapdm_send_dm(struct lapdm_msg_ctx *mctx)
-{
- uint8_t sapi = mctx->link_id & 7;
- uint8_t f_bit = LAPDm_CTRL_PF_BIT(mctx->ctrl);
- struct msgb *msg = msgb_alloc_headroom(23+10, 10, "LAPDm DM");
- struct lapdm_entity *le = mctx->dl->entity;
-
- msg->l2h = msgb_put(msg, 3);
- msg->l2h[0] = LAPDm_ADDR(LAPDm_LPD_NORMAL, sapi, le->cr.loc2rem.resp);
- msg->l2h[1] = LAPDm_CTRL_U(LAPDm_U_DM, f_bit);
- msg->l2h[2] = 0;
-
- return tx_ph_data_enqueue(mctx->dl, msg, mctx->chan_nr, mctx->link_id,
- mctx->n201);
-}
-
-static int lapdm_send_rr(struct lapdm_msg_ctx *mctx, uint8_t f_bit)
-{
- uint8_t sapi = mctx->link_id & 7;
- struct msgb *msg = msgb_alloc_headroom(23+10, 10, "LAPDm RR");
- struct lapdm_entity *le = mctx->dl->entity;
-
- msg->l2h = msgb_put(msg, 3);
- msg->l2h[0] = LAPDm_ADDR(LAPDm_LPD_NORMAL, sapi, le->cr.loc2rem.resp);
- msg->l2h[1] = LAPDm_CTRL_S(mctx->dl->V_recv, LAPDm_S_RR, f_bit);
- msg->l2h[2] = LAPDm_LEN(0);
-
- return tx_ph_data_enqueue(mctx->dl, msg, mctx->chan_nr, mctx->link_id,
- mctx->n201);
-}
-
-static int lapdm_send_rnr(struct lapdm_msg_ctx *mctx, uint8_t f_bit)
-{
- uint8_t sapi = mctx->link_id & 7;
- struct msgb *msg = msgb_alloc_headroom(23+10, 10, "LAPDm RNR");
- struct lapdm_entity *le = mctx->dl->entity;
-
- msg->l2h = msgb_put(msg, 3);
- msg->l2h[0] = LAPDm_ADDR(LAPDm_LPD_NORMAL, sapi, le->cr.loc2rem.resp);
- msg->l2h[1] = LAPDm_CTRL_S(mctx->dl->V_recv, LAPDm_S_RNR, f_bit);
- msg->l2h[2] = LAPDm_LEN(0);
-
- return tx_ph_data_enqueue(mctx->dl, msg, mctx->chan_nr, mctx->link_id,
- mctx->n201);
-}
-
-static int lapdm_send_rej(struct lapdm_msg_ctx *mctx, uint8_t f_bit)
-{
- uint8_t sapi = mctx->link_id & 7;
- struct msgb *msg = msgb_alloc_headroom(23+10, 10, "LAPDm REJ");
- struct lapdm_entity *le = mctx->dl->entity;
-
- msg->l2h = msgb_put(msg, 3);
- msg->l2h[0] = LAPDm_ADDR(LAPDm_LPD_NORMAL, sapi, le->cr.loc2rem.resp);
- msg->l2h[1] = LAPDm_CTRL_S(mctx->dl->V_recv, LAPDm_S_REJ, f_bit);
- msg->l2h[2] = LAPDm_LEN(0);
-
- return tx_ph_data_enqueue(mctx->dl, msg, mctx->chan_nr, mctx->link_id,
- mctx->n201);
-}
-
-/* Timer callback on T200 expiry */
-static void lapdm_t200_cb(void *data)
-{
- struct lapdm_datalink *dl = data;
-
- LOGP(DLAPDM, LOGL_INFO, "lapdm_t200_cb(%p) state=%u\n", dl, dl->state);
-
- switch (dl->state) {
- case LAPDm_STATE_SABM_SENT:
- /* 5.4.1.3 */
- if (dl->retrans_ctr + 1 >= N200_EST_REL + 1) {
- /* send RELEASE INDICATION to L3 */
- send_rll_simple(RSL_MT_REL_IND, &dl->mctx);
- /* send MDL ERROR INIDCATION to L3 */
- rsl_rll_error(RLL_CAUSE_T200_EXPIRED, &dl->mctx);
- /* flush tx buffers */
- lapdm_dl_flush_tx(dl);
- /* go back to idle state */
- lapdm_dl_newstate(dl, LAPDm_STATE_IDLE);
- /* NOTE: we must not change any other states or buffers
- * and queues, since we may reconnect after handover
- * failure. the buffered messages is replaced there */
- break;
- }
- /* retransmit SABM command */
- lapdm_send_resend(dl);
- /* increment re-transmission counter */
- dl->retrans_ctr++;
- /* restart T200 (PH-READY-TO-SEND) */
- osmo_timer_schedule(&dl->t200, T200);
- break;
- case LAPDm_STATE_DISC_SENT:
- /* 5.4.4.3 */
- if (dl->retrans_ctr + 1 >= N200_EST_REL + 1) {
- /* send RELEASE INDICATION to L3 */
- send_rll_simple(RSL_MT_REL_CONF, &dl->mctx);
- /* send MDL ERROR INIDCATION to L3 */
- rsl_rll_error(RLL_CAUSE_T200_EXPIRED, &dl->mctx);
- /* flush buffers */
- lapdm_dl_flush_tx(dl);
- lapdm_dl_flush_send(dl);
- /* go back to idle state */
- lapdm_dl_newstate(dl, LAPDm_STATE_IDLE);
- /* NOTE: we must not change any other states or buffers
- * and queues, since we may reconnect after handover
- * failure. the buffered messages is replaced there */
- break;
- }
- /* retransmit DISC command */
- lapdm_send_resend(dl);
- /* increment re-transmission counter */
- dl->retrans_ctr++;
- /* restart T200 (PH-READY-TO-SEND) */
- osmo_timer_schedule(&dl->t200, T200);
- break;
- case LAPDm_STATE_MF_EST:
- /* 5.5.7 */
- dl->retrans_ctr = 0;
- lapdm_dl_newstate(dl, LAPDm_STATE_TIMER_RECOV);
- /* fall through */
- case LAPDm_STATE_TIMER_RECOV:
- dl->retrans_ctr++;
- if (dl->retrans_ctr < N200) {
- /* retransmit I frame (V_s-1) with P=1, if any */
- if (dl->tx_length[sub_mod8(dl->V_send, 1)]) {
- struct msgb *msg;
- int length;
-
- LOGP(DLAPDM, LOGL_INFO, "retransmit last frame "
- "V(S)=%d\n", sub_mod8(dl->V_send, 1));
- /* Create I frame (segment) from tx_hist */
- length = dl->tx_length[sub_mod8(dl->V_send, 1)];
- msg = msgb_alloc_headroom(23+10, 10, "LAPDm I");
- msg->l2h = msgb_put(msg, length);
- memcpy(msg->l2h,
- dl->tx_hist[sub_mod8(dl->V_send, 1)],
- length);
- msg->l2h[1] = LAPDm_CTRL_I(dl->V_recv,
- sub_mod8(dl->V_send, 1), 1); /* P=1 */
- tx_ph_data_enqueue(dl, msg, dl->mctx.chan_nr,
- dl->mctx.link_id, dl->mctx.n201);
- } else {
- /* OR send appropriate supervision frame with P=1 */
- if (!dl->own_busy && !dl->seq_err_cond) {
- lapdm_send_rr(&dl->mctx, 1);
- /* NOTE: In case of sequence error
- * condition, the REJ frame has been
- * transmitted when entering the
- * condition, so it has not be done
- * here
- */
- } else if (dl->own_busy) {
- lapdm_send_rnr(&dl->mctx, 1);
- } else {
- LOGP(DLAPDM, LOGL_INFO, "unhandled, "
- "pls. fix\n");
- }
- }
- /* restart T200 (PH-READY-TO-SEND) */
- osmo_timer_schedule(&dl->t200, T200);
- } else {
- /* send MDL ERROR INIDCATION to L3 */
- rsl_rll_error(RLL_CAUSE_T200_EXPIRED, &dl->mctx);
- }
- break;
- default:
- LOGP(DLAPDM, LOGL_INFO, "T200 expired in unexpected "
- "dl->state %u\n", dl->state);
- }
-}
-
-/* 5.5.3.1: Common function to acknowlege frames up to the given N(R) value */
-static void lapdm_acknowledge(struct lapdm_msg_ctx *mctx)
-{
- struct lapdm_datalink *dl = mctx->dl;
- uint8_t nr = LAPDm_CTRL_Nr(mctx->ctrl);
- int s = 0, rej = 0, t200_reset = 0;
- int i;
-
- /* supervisory frame ? */
- if (LAPDm_CTRL_is_S(mctx->ctrl))
- s = 1;
- /* REJ frame ? */
- if (s && LAPDm_CTRL_S_BITS(mctx->ctrl) == LAPDm_S_REJ)
- rej = 1;
-
- /* Flush all transmit buffers of acknowledged frames */
- for (i = dl->V_ack; i != nr; i = inc_mod8(i)) {
- if (dl->tx_length[i]) {
- dl->tx_length[i] = 0;
- LOGP(DLAPDM, LOGL_INFO, "ack frame %d\n", i);
- }
- }
-
- if (dl->state != LAPDm_STATE_TIMER_RECOV) {
- /* When not in the timer recovery condition, the data
- * link layer entity shall reset the timer T200 on
- * receipt of a valid I frame with N(R) higher than V(A),
- * or an REJ with an N(R) equal to V(A). */
- if ((!rej && nr != dl->V_ack)
- || (rej && nr == dl->V_ack)) {
- LOGP(DLAPDM, LOGL_INFO, "reset t200\n");
- t200_reset = 1;
- osmo_timer_del(&dl->t200);
- /* 5.5.3.1 Note 1 + 2 imply timer recovery cond. */
- }
- /* 5.7.4: N(R) sequence error
- * N(R) is called valid, if and only if
- * (N(R)-V(A)) mod 8 <= (V(S)-V(A)) mod 8.
- */
- if (sub_mod8(nr, dl->V_ack) > sub_mod8(dl->V_send, dl->V_ack)) {
- LOGP(DLAPDM, LOGL_NOTICE, "N(R) sequence error\n");
- rsl_rll_error(RLL_CAUSE_SEQ_ERR, mctx);
- }
- }
-
- /* V(A) shall be set to the value of N(R) */
- dl->V_ack = nr;
-
- /* If T200 has been reset by the receipt of an I, RR or RNR frame,
- * and if there are outstanding I frames, restart T200 */
- if (t200_reset && !rej) {
- if (dl->tx_length[dl->V_send - 1]) {
- LOGP(DLAPDM, LOGL_INFO, "start T200, due to unacked I "
- "frame(s)\n");
- osmo_timer_schedule(&dl->t200, T200);
- }
- }
-}
-
-/* L1 -> L2 */
-
-/* Receive a LAPDm U (Unnumbered) message from L1 */
-static int lapdm_rx_u(struct msgb *msg, struct lapdm_msg_ctx *mctx)
-{
- struct lapdm_datalink *dl = mctx->dl;
- struct lapdm_entity *le = dl->entity;
- uint8_t length;
- int rc;
- int rsl_msg;
-
- switch (LAPDm_CTRL_U_BITS(mctx->ctrl)) {
- case LAPDm_U_SABM:
- rsl_msg = RSL_MT_EST_IND;
-
- LOGP(DLAPDM, LOGL_INFO, "SABM received\n");
- /* 5.7.1 */
- dl->seq_err_cond = 0;
- /* G.2.2 Wrong value of the C/R bit */
- if (LAPDm_ADDR_CR(mctx->addr) == le->cr.rem2loc.resp) {
- LOGP(DLAPDM, LOGL_NOTICE, "SABM response error\n");
- msgb_free(msg);
- rsl_rll_error(RLL_CAUSE_FRM_UNIMPL, mctx);
- return -EINVAL;
- }
-
- length = msg->l2h[2] >> 2;
- /* G.4.5 If SABM is received with L>N201 or with M bit
- * set, AN MDL-ERROR-INDICATION is sent to MM.
- */
- if ((msg->l2h[2] & LAPDm_MORE) || length + 3 > mctx->n201) {
- LOGP(DLAPDM, LOGL_NOTICE, "SABM too large error\n");
- msgb_free(msg);
- rsl_rll_error(RLL_CAUSE_UFRM_INC_PARAM, mctx);
- return -EIO;
- }
-
- /* Must be Format B */
- rc = check_length_ind(mctx, msg->l2h[2]);
- if (rc < 0) {
- msgb_free(msg);
- return rc;
- }
- switch (dl->state) {
- case LAPDm_STATE_IDLE:
- /* Set chan_nr and link_id for established connection */
- memset(&dl->mctx, 0, sizeof(dl->mctx));
- dl->mctx.dl = dl;
- dl->mctx.chan_nr = mctx->chan_nr;
- dl->mctx.link_id = mctx->link_id;
- dl->mctx.n201 = mctx->n201;
- break;
- case LAPDm_STATE_MF_EST:
- if (length == 0) {
- rsl_msg = RSL_MT_EST_CONF;
- break;
- }
- LOGP(DLAPDM, LOGL_INFO, "SABM command, multiple "
- "frame established state\n");
- /* check for contention resoultion */
- if (dl->tx_hist[0][2] >> 2) {
- LOGP(DLAPDM, LOGL_NOTICE, "SABM not allowed "
- "during contention resolution\n");
- rsl_rll_error(RLL_CAUSE_SABM_INFO_NOTALL, mctx);
- }
- msgb_free(msg);
- return 0;
- case LAPDm_STATE_DISC_SENT:
- /* 5.4.6.2 send DM with F=P */
- lapdm_send_dm(mctx);
- /* reset Timer T200 */
- osmo_timer_del(&dl->t200);
- msgb_free(msg);
- return send_rll_simple(RSL_MT_REL_CONF, mctx);
- default:
- lapdm_send_ua(mctx, length, msg->l2h + 3);
- msgb_free(msg);
- return 0;
- }
- /* send UA response */
- lapdm_send_ua(mctx, length, msg->l2h + 3);
- /* set Vs, Vr and Va to 0 */
- dl->V_send = dl->V_recv = dl->V_ack = 0;
- /* clear tx_hist */
- dl->tx_length[0] = 0;
- /* enter multiple-frame-established state */
- lapdm_dl_newstate(dl, LAPDm_STATE_MF_EST);
- /* send notification to L3 */
- if (length == 0) {
- /* 5.4.1.2 Normal establishment procedures */
- rc = send_rll_simple(rsl_msg, mctx);
- msgb_free(msg);
- } else {
- /* 5.4.1.4 Contention resolution establishment */
- msg->l3h = msg->l2h + 3;
- msgb_pull_l2h(msg);
- rc = send_rslms_rll_l3(rsl_msg, mctx, msg);
- }
- break;
- case LAPDm_U_DM:
- LOGP(DLAPDM, LOGL_INFO, "DM received\n");
- /* G.2.2 Wrong value of the C/R bit */
- if (LAPDm_ADDR_CR(mctx->addr) == le->cr.rem2loc.cmd) {
- LOGP(DLAPDM, LOGL_NOTICE, "DM command error\n");
- msgb_free(msg);
- rsl_rll_error(RLL_CAUSE_FRM_UNIMPL, mctx);
- return -EINVAL;
- }
- if (!LAPDm_CTRL_PF_BIT(mctx->ctrl)) {
- /* 5.4.1.2 DM responses with the F bit set to "0"
- * shall be ignored.
- */
- msgb_free(msg);
- return 0;
- }
- switch (dl->state) {
- case LAPDm_STATE_SABM_SENT:
- break;
- case LAPDm_STATE_MF_EST:
- if (LAPDm_CTRL_PF_BIT(mctx->ctrl) == 1) {
- LOGP(DLAPDM, LOGL_INFO, "unsolicited DM "
- "response\n");
- rsl_rll_error(RLL_CAUSE_UNSOL_DM_RESP, mctx);
- } else {
- LOGP(DLAPDM, LOGL_INFO, "unsolicited DM "
- "response, multiple frame established "
- "state\n");
- rsl_rll_error(RLL_CAUSE_UNSOL_DM_RESP_MF, mctx);
- }
- msgb_free(msg);
- return 0;
- case LAPDm_STATE_TIMER_RECOV:
- /* DM is normal in case PF = 1 */
- if (LAPDm_CTRL_PF_BIT(mctx->ctrl) == 0) {
- LOGP(DLAPDM, LOGL_INFO, "unsolicited DM "
- "response, multiple frame established "
- "state\n");
- rsl_rll_error(RLL_CAUSE_UNSOL_DM_RESP_MF, mctx);
- msgb_free(msg);
- return 0;
- }
- break;
- case LAPDm_STATE_DISC_SENT:
- /* reset Timer T200 */
- osmo_timer_del(&dl->t200);
- /* go to idle state */
- lapdm_dl_newstate(dl, LAPDm_STATE_IDLE);
- rc = send_rll_simple(RSL_MT_REL_CONF, mctx);
- msgb_free(msg);
- return 0;
- case LAPDm_STATE_IDLE:
- /* 5.4.5 all other frame types shall be discarded */
- default:
- LOGP(DLAPDM, LOGL_INFO, "unsolicited DM response! "
- "(discarding)\n");
- msgb_free(msg);
- return 0;
- }
- /* reset T200 */
- osmo_timer_del(&dl->t200);
- rc = send_rll_simple(RSL_MT_REL_IND, mctx);
- msgb_free(msg);
- break;
- case LAPDm_U_UI:
- LOGP(DLAPDM, LOGL_INFO, "UI received\n");
- /* G.2.2 Wrong value of the C/R bit */
- if (LAPDm_ADDR_CR(mctx->addr) == le->cr.rem2loc.resp) {
- LOGP(DLAPDM, LOGL_NOTICE, "UI indicates response "
- "error\n");
- msgb_free(msg);
- rsl_rll_error(RLL_CAUSE_FRM_UNIMPL, mctx);
- return -EINVAL;
- }
-
- length = msg->l2h[2] >> 2;
- /* FIXME: G.4.5 If UI is received with L>N201 or with M bit
- * set, AN MDL-ERROR-INDICATION is sent to MM.
- */
-
- if (mctx->lapdm_fmt == LAPDm_FMT_B4) {
- length = N201_B4;
- msg->l3h = msg->l2h + 2;
- } else {
- rc = check_length_ind(mctx, msg->l2h[2]);
- if (rc < 0) {
- msgb_free(msg);
- return rc;
- }
- length = msg->l2h[2] >> 2;
- msg->l3h = msg->l2h + 3;
- }
- /* do some length checks */
- if (length == 0) {
- /* 5.3.3 UI frames received with the length indicator
- * set to "0" shall be ignored
- */
- LOGP(DLAPDM, LOGL_INFO, "length=0 (discarding)\n");
- msgb_free(msg);
- return 0;
- }
- switch (LAPDm_ADDR_SAPI(mctx->addr)) {
- case LAPDm_SAPI_NORMAL:
- case LAPDm_SAPI_SMS:
- break;
- default:
- /* 5.3.3 UI frames with invalid SAPI values shall be
- * discarded
- */
- LOGP(DLAPDM, LOGL_INFO, "sapi=%u (discarding)\n",
- LAPDm_ADDR_SAPI(mctx->addr));
- msgb_free(msg);
- return 0;
- }
- msgb_pull_l2h(msg);
- rc = send_rslms_rll_l3_ui(mctx, msg);
- break;
- case LAPDm_U_DISC:
- rsl_msg = RSL_MT_REL_IND;
-
- LOGP(DLAPDM, LOGL_INFO, "DISC received\n");
- /* flush buffers */
- lapdm_dl_flush_tx(dl);
- lapdm_dl_flush_send(dl);
- /* 5.7.1 */
- dl->seq_err_cond = 0;
- /* G.2.2 Wrong value of the C/R bit */
- if (LAPDm_ADDR_CR(mctx->addr) == le->cr.rem2loc.resp) {
- LOGP(DLAPDM, LOGL_NOTICE, "DISC response error\n");
- msgb_free(msg);
- rsl_rll_error(RLL_CAUSE_FRM_UNIMPL, mctx);
- return -EINVAL;
- }
- length = msg->l2h[2] >> 2;
- if (length > 0 || msg->l2h[2] & 0x02) {
- /* G.4.4 If a DISC or DM frame is received with L>0 or
- * with the M bit set to "1", an MDL-ERROR-INDICATION
- * primitive with cause "U frame with incorrect
- * parameters" is sent to the mobile management entity.
- */
- LOGP(DLAPDM, LOGL_NOTICE,
- "U frame iwth incorrect parameters ");
- msgb_free(msg);
- rsl_rll_error(RLL_CAUSE_UFRM_INC_PARAM, mctx);
- return -EIO;
- }
- switch (dl->state) {
- case LAPDm_STATE_IDLE:
- LOGP(DLAPDM, LOGL_INFO, "DISC in idle state\n");
- /* send DM with F=P */
- msgb_free(msg);
- return lapdm_send_dm(mctx);
- case LAPDm_STATE_SABM_SENT:
- LOGP(DLAPDM, LOGL_INFO, "DISC in SABM state\n");
- /* 5.4.6.2 send DM with F=P */
- lapdm_send_dm(mctx);
- /* reset Timer T200 */
- osmo_timer_del(&dl->t200);
- msgb_free(msg);
- return send_rll_simple(RSL_MT_REL_IND, mctx);
- case LAPDm_STATE_MF_EST:
- case LAPDm_STATE_TIMER_RECOV:
- LOGP(DLAPDM, LOGL_INFO, "DISC in est state\n");
- break;
- case LAPDm_STATE_DISC_SENT:
- LOGP(DLAPDM, LOGL_INFO, "DISC in disc state\n");
- rsl_msg = RSL_MT_REL_CONF;
- break;
- default:
- lapdm_send_ua(mctx, length, msg->l2h + 3);
- msgb_free(msg);
- return 0;
- }
- /* send UA response */
- lapdm_send_ua(mctx, length, msg->l2h + 3);
- /* reset Timer T200 */
- osmo_timer_del(&dl->t200);
- /* enter idle state */
- lapdm_dl_newstate(dl, LAPDm_STATE_IDLE);
- /* send notification to L3 */
- rc = send_rll_simple(rsl_msg, mctx);
- msgb_free(msg);
- break;
- case LAPDm_U_UA:
- LOGP(DLAPDM, LOGL_INFO, "UA received\n");
- /* G.2.2 Wrong value of the C/R bit */
- if (LAPDm_ADDR_CR(mctx->addr) == le->cr.rem2loc.cmd) {
- LOGP(DLAPDM, LOGL_NOTICE, "UA indicates command "
- "error\n");
- msgb_free(msg);
- rsl_rll_error(RLL_CAUSE_FRM_UNIMPL, mctx);
- return -EINVAL;
- }
-
- length = msg->l2h[2] >> 2;
- /* G.4.5 If UA is received with L>N201 or with M bit
- * set, AN MDL-ERROR-INDICATION is sent to MM.
- */
- if ((msg->l2h[2] & LAPDm_MORE) || length + 3 > mctx->n201) {
- LOGP(DLAPDM, LOGL_NOTICE, "UA too large error\n");
- msgb_free(msg);
- rsl_rll_error(RLL_CAUSE_UFRM_INC_PARAM, mctx);
- return -EIO;
- }
-
- if (!LAPDm_CTRL_PF_BIT(mctx->ctrl)) {
- /* 5.4.1.2 A UA response with the F bit set to "0"
- * shall be ignored.
- */
- LOGP(DLAPDM, LOGL_INFO, "F=0 (discarding)\n");
- msgb_free(msg);
- return 0;
- }
- switch (dl->state) {
- case LAPDm_STATE_SABM_SENT:
- break;
- case LAPDm_STATE_MF_EST:
- case LAPDm_STATE_TIMER_RECOV:
- LOGP(DLAPDM, LOGL_INFO, "unsolicited UA response! "
- "(discarding)\n");
- rsl_rll_error(RLL_CAUSE_UNSOL_UA_RESP, mctx);
- msgb_free(msg);
- return 0;
- case LAPDm_STATE_DISC_SENT:
- LOGP(DLAPDM, LOGL_INFO, "UA in disconnect state\n");
- /* reset Timer T200 */
- osmo_timer_del(&dl->t200);
- /* go to idle state */
- lapdm_dl_newstate(dl, LAPDm_STATE_IDLE);
- rc = send_rll_simple(RSL_MT_REL_CONF, mctx);
- msgb_free(msg);
- return 0;
- case LAPDm_STATE_IDLE:
- /* 5.4.5 all other frame types shall be discarded */
- default:
- LOGP(DLAPDM, LOGL_INFO, "unsolicited UA response! "
- "(discarding)\n");
- msgb_free(msg);
- return 0;
- }
- LOGP(DLAPDM, LOGL_INFO, "UA in SABM state\n");
- /* reset Timer T200 */
- osmo_timer_del(&dl->t200);
- /* compare UA with SABME if contention resolution is applied */
- if (dl->tx_hist[0][2] >> 2) {
- rc = check_length_ind(mctx, msg->l2h[2]);
- if (rc < 0) {
- rc = send_rll_simple(RSL_MT_REL_IND, mctx);
- msgb_free(msg);
- /* go to idle state */
- lapdm_dl_newstate(dl, LAPDm_STATE_IDLE);
- return 0;
- }
- length = msg->l2h[2] >> 2;
- if (length != (dl->tx_hist[0][2] >> 2)
- || !!memcmp(dl->tx_hist[0] + 3, msg->l2h + 3,
- length)) {
- LOGP(DLAPDM, LOGL_INFO, "**** UA response "
- "mismatches ****\n");
- rc = send_rll_simple(RSL_MT_REL_IND, mctx);
- msgb_free(msg);
- /* go to idle state */
- lapdm_dl_newstate(dl, LAPDm_STATE_IDLE);
- return 0;
- }
- }
- /* set Vs, Vr and Va to 0 */
- dl->V_send = dl->V_recv = dl->V_ack = 0;
- /* clear tx_hist */
- dl->tx_length[0] = 0;
- /* enter multiple-frame-established state */
- lapdm_dl_newstate(dl, LAPDm_STATE_MF_EST);
- /* send outstanding frames, if any (resume / reconnect) */
- rslms_send_i(mctx, __LINE__);
- /* send notification to L3 */
- rc = send_rll_simple(RSL_MT_EST_CONF, mctx);
- msgb_free(msg);
- break;
- default:
- /* G.3.1 */
- LOGP(DLAPDM, LOGL_NOTICE, "Unnumbered frame not allowed.\n");
- msgb_free(msg);
- rsl_rll_error(RLL_CAUSE_FRM_UNIMPL, mctx);
- return -EINVAL;
- }
- return rc;
-}
-
-/* Receive a LAPDm S (Supervisory) message from L1 */
-static int lapdm_rx_s(struct msgb *msg, struct lapdm_msg_ctx *mctx)
-{
- struct lapdm_datalink *dl = mctx->dl;
- struct lapdm_entity *le = dl->entity;
- uint8_t length;
-
- length = msg->l2h[2] >> 2;
- if (length > 0 || msg->l2h[2] & 0x02) {
- /* G.4.3 If a supervisory frame is received with L>0 or
- * with the M bit set to "1", an MDL-ERROR-INDICATION
- * primitive with cause "S frame with incorrect
- * parameters" is sent to the mobile management entity. */
- LOGP(DLAPDM, LOGL_NOTICE,
- "S frame with incorrect parameters\n");
- msgb_free(msg);
- rsl_rll_error(RLL_CAUSE_SFRM_INC_PARAM, mctx);
- return -EIO;
- }
-
- if (LAPDm_ADDR_CR(mctx->addr) == le->cr.rem2loc.resp
- && LAPDm_CTRL_PF_BIT(mctx->ctrl)
- && dl->state != LAPDm_STATE_TIMER_RECOV) {
- /* 5.4.2.2: Inidcate error on supervisory reponse F=1 */
- LOGP(DLAPDM, LOGL_NOTICE, "S frame response with F=1 error\n");
- rsl_rll_error(RLL_CAUSE_UNSOL_SPRV_RESP, mctx);
- }
-
- switch (dl->state) {
- case LAPDm_STATE_IDLE:
- /* if P=1, respond DM with F=1 (5.2.2) */
- /* 5.4.5 all other frame types shall be discarded */
- if (LAPDm_CTRL_PF_BIT(mctx->ctrl))
- lapdm_send_dm(mctx); /* F=P */
- /* fall though */
- case LAPDm_STATE_SABM_SENT:
- case LAPDm_STATE_DISC_SENT:
- LOGP(DLAPDM, LOGL_NOTICE, "S frame ignored in this state\n");
- msgb_free(msg);
- return 0;
- }
- switch (LAPDm_CTRL_S_BITS(mctx->ctrl)) {
- case LAPDm_S_RR:
- LOGP(DLAPDM, LOGL_INFO, "RR received\n");
- /* 5.5.3.1: Acknowlege all tx frames up the the N(R)-1 */
- lapdm_acknowledge(mctx);
-
- /* 5.5.3.2 */
- if (LAPDm_ADDR_CR(mctx->addr) == le->cr.rem2loc.cmd
- && LAPDm_CTRL_PF_BIT(mctx->ctrl)) {
- if (!dl->own_busy && !dl->seq_err_cond) {
- LOGP(DLAPDM, LOGL_NOTICE, "RR frame command "
- "with polling bit set and we are not "
- "busy, so we reply with RR frame\n");
- lapdm_send_rr(mctx, 1);
- /* NOTE: In case of sequence error condition,
- * the REJ frame has been transmitted when
- * entering the condition, so it has not be
- * done here
- */
- } else if (dl->own_busy) {
- LOGP(DLAPDM, LOGL_NOTICE, "RR frame command "
- "with polling bit set and we are busy, "
- "so we reply with RR frame\n");
- lapdm_send_rnr(mctx, 1);
- }
- } else if (LAPDm_ADDR_CR(mctx->addr) == le->cr.rem2loc.resp
- && LAPDm_CTRL_PF_BIT(mctx->ctrl)
- && dl->state == LAPDm_STATE_TIMER_RECOV) {
- LOGP(DLAPDM, LOGL_INFO, "RR response with F==1, "
- "and we are in timer recovery state, so "
- "we leave that state\n");
- /* V(S) to the N(R) in the RR frame */
- dl->V_send = LAPDm_CTRL_Nr(mctx->ctrl);
- /* reset Timer T200 */
- osmo_timer_del(&dl->t200);
- /* 5.5.7 Clear timer recovery condition */
- lapdm_dl_newstate(dl, LAPDm_STATE_MF_EST);
- }
- /* Send message, if possible due to acknowledged data */
- rslms_send_i(mctx, __LINE__);
-
- break;
- case LAPDm_S_RNR:
- LOGP(DLAPDM, LOGL_INFO, "RNR received\n");
- /* 5.5.3.1: Acknowlege all tx frames up the the N(R)-1 */
- lapdm_acknowledge(mctx);
-
- /* 5.5.5 */
- /* Set peer receiver busy condition */
- dl->peer_busy = 1;
-
- if (LAPDm_CTRL_PF_BIT(mctx->ctrl)) {
- if (LAPDm_ADDR_CR(mctx->addr) == le->cr.rem2loc.cmd) {
- if (!dl->own_busy) {
- LOGP(DLAPDM, LOGL_INFO, "RNR poll "
- "command and we are not busy, "
- "so we reply with RR final "
- "response\n");
- /* Send RR with F=1 */
- lapdm_send_rr(mctx, 1);
- } else {
- LOGP(DLAPDM, LOGL_INFO, "RNR poll "
- "command and we are busy, so "
- "we reply with RNR final "
- "response\n");
- /* Send RNR with F=1 */
- lapdm_send_rnr(mctx, 1);
- }
- } else if (dl->state == LAPDm_STATE_TIMER_RECOV) {
- LOGP(DLAPDM, LOGL_INFO, "RNR poll response "
- "and we in timer recovery state, so "
- "we leave that state\n");
- /* 5.5.7 Clear timer recovery condition */
- lapdm_dl_newstate(dl, LAPDm_STATE_MF_EST);
- /* V(S) to the N(R) in the RNR frame */
- dl->V_send = LAPDm_CTRL_Nr(mctx->ctrl);
- }
- } else
- LOGP(DLAPDM, LOGL_INFO, "RNR not polling/final state "
- "received\n");
-
- /* Send message, if possible due to acknowledged data */
- rslms_send_i(mctx, __LINE__);
-
- break;
- case LAPDm_S_REJ:
- LOGP(DLAPDM, LOGL_INFO, "REJ received\n");
- /* 5.5.3.1: Acknowlege all tx frames up the the N(R)-1 */
- lapdm_acknowledge(mctx);
-
- /* 5.5.4.1 */
- if (dl->state != LAPDm_STATE_TIMER_RECOV) {
- /* Clear an existing peer receiver busy condition */
- dl->peer_busy = 0;
- /* V(S) and V(A) to the N(R) in the REJ frame */
- dl->V_send = dl->V_ack = LAPDm_CTRL_Nr(mctx->ctrl);
- /* reset Timer T200 */
- osmo_timer_del(&dl->t200);
- /* 5.5.3.2 */
- if (LAPDm_ADDR_CR(mctx->addr) == le->cr.rem2loc.cmd
- && LAPDm_CTRL_PF_BIT(mctx->ctrl)) {
- if (!dl->own_busy && !dl->seq_err_cond) {
- LOGP(DLAPDM, LOGL_INFO, "REJ poll "
- "command not in timer recovery "
- "state and not in own busy "
- "condition received, so we "
- "respond with RR final "
- "response\n");
- lapdm_send_rr(mctx, 1);
- /* NOTE: In case of sequence error
- * condition, the REJ frame has been
- * transmitted when entering the
- * condition, so it has not be done
- * here
- */
- } else if (dl->own_busy) {
- LOGP(DLAPDM, LOGL_INFO, "REJ poll "
- "command not in timer recovery "
- "state and in own busy "
- "condition received, so we "
- "respond with RNR final "
- "response\n");
- lapdm_send_rnr(mctx, 1);
- }
- } else
- LOGP(DLAPDM, LOGL_INFO, "REJ response or not "
- "polling command not in timer recovery "
- "state received\n");
- /* send MDL ERROR INIDCATION to L3 */
- if (LAPDm_ADDR_CR(mctx->addr) == le->cr.rem2loc.resp
- && LAPDm_CTRL_PF_BIT(mctx->ctrl)) {
- rsl_rll_error(RLL_CAUSE_UNSOL_SPRV_RESP, mctx);
- }
-
- } else if (LAPDm_ADDR_CR(mctx->addr) == le->cr.rem2loc.resp
- && LAPDm_CTRL_PF_BIT(mctx->ctrl)) {
- LOGP(DLAPDM, LOGL_INFO, "REJ poll response in timer "
- "recovery state received\n");
- /* Clear an existing peer receiver busy condition */
- dl->peer_busy = 0;
- /* 5.5.7 Clear timer recovery condition */
- lapdm_dl_newstate(dl, LAPDm_STATE_MF_EST);
- /* V(S) and V(A) to the N(R) in the REJ frame */
- dl->V_send = dl->V_ack = LAPDm_CTRL_Nr(mctx->ctrl);
- /* reset Timer T200 */
- osmo_timer_del(&dl->t200);
- } else {
- /* Clear an existing peer receiver busy condition */
- dl->peer_busy = 0;
- /* V(S) and V(A) to the N(R) in the REJ frame */
- dl->V_send = dl->V_ack = LAPDm_CTRL_Nr(mctx->ctrl);
- /* 5.5.3.2 */
- if (LAPDm_ADDR_CR(mctx->addr) == le->cr.rem2loc.cmd
- && LAPDm_CTRL_PF_BIT(mctx->ctrl)) {
- if (!dl->own_busy && !dl->seq_err_cond) {
- LOGP(DLAPDM, LOGL_INFO, "REJ poll "
- "command in timer recovery "
- "state and not in own busy "
- "condition received, so we "
- "respond with RR final "
- "response\n");
- lapdm_send_rr(mctx, 1);
- /* NOTE: In case of sequence error
- * condition, the REJ frame has been
- * transmitted when entering the
- * condition, so it has not be done
- * here
- */
- } else if (dl->own_busy) {
- LOGP(DLAPDM, LOGL_INFO, "REJ poll "
- "command in timer recovery "
- "state and in own busy "
- "condition received, so we "
- "respond with RNR final "
- "response\n");
- lapdm_send_rnr(mctx, 1);
- }
- } else
- LOGP(DLAPDM, LOGL_INFO, "REJ response or not "
- "polling command in timer recovery "
- "state received\n");
- }
-
- /* FIXME: 5.5.4.2 2) */
-
- /* Send message, if possible due to acknowledged data */
- rslms_send_i(mctx, __LINE__);
-
- break;
- default:
- /* G.3.1 */
- LOGP(DLAPDM, LOGL_NOTICE, "Supervisory frame not allowed.\n");
- msgb_free(msg);
- rsl_rll_error(RLL_CAUSE_FRM_UNIMPL, mctx);
- return -EINVAL;
- }
- msgb_free(msg);
- return 0;
-}
-
-/* Receive a LAPDm I (Information) message from L1 */
-static int lapdm_rx_i(struct msgb *msg, struct lapdm_msg_ctx *mctx)
-{
- struct lapdm_datalink *dl = mctx->dl;
- struct lapdm_entity *le = dl->entity;
- //uint8_t nr = LAPDm_CTRL_Nr(mctx->ctrl);
- uint8_t ns = LAPDm_CTRL_I_Ns(mctx->ctrl);
- uint8_t length;
- int rc;
-
- LOGP(DLAPDM, LOGL_NOTICE, "I received\n");
-
- /* G.2.2 Wrong value of the C/R bit */
- if (LAPDm_ADDR_CR(mctx->addr) == le->cr.rem2loc.resp) {
- LOGP(DLAPDM, LOGL_NOTICE, "I frame response not allowed\n");
- msgb_free(msg);
- rsl_rll_error(RLL_CAUSE_FRM_UNIMPL, mctx);
- return -EINVAL;
- }
-
- length = msg->l2h[2] >> 2;
- if (length == 0 || length + 3 > mctx->n201) {
- /* G.4.2 If the length indicator of an I frame is set
- * to a numerical value L>N201 or L=0, an MDL-ERROR-INDICATION
- * primitive with cause "I frame with incorrect length"
- * is sent to the mobile management entity. */
- LOGP(DLAPDM, LOGL_NOTICE, "I frame length not allowed\n");
- msgb_free(msg);
- rsl_rll_error(RLL_CAUSE_IFRM_INC_LEN, mctx);
- return -EIO;
- }
-
- /* G.4.2 If the numerical value of L is L<N201 and the M
- * bit is set to "1", then an MDL-ERROR-INDICATION primitive with
- * cause "I frame with incorrect use of M bit" is sent to the
- * mobile management entity. */
- if ((msg->l2h[2] & LAPDm_MORE) && length + 3 < mctx->n201) {
- LOGP(DLAPDM, LOGL_NOTICE, "I frame with M bit too short\n");
- msgb_free(msg);
- rsl_rll_error(RLL_CAUSE_IFRM_INC_MBITS, mctx);
- return -EIO;
- }
-
- switch (dl->state) {
- case LAPDm_STATE_IDLE:
- /* if P=1, respond DM with F=1 (5.2.2) */
- /* 5.4.5 all other frame types shall be discarded */
- if (LAPDm_CTRL_PF_BIT(mctx->ctrl))
- lapdm_send_dm(mctx); /* F=P */
- /* fall though */
- case LAPDm_STATE_SABM_SENT:
- case LAPDm_STATE_DISC_SENT:
- LOGP(DLAPDM, LOGL_NOTICE, "I frame ignored in this state\n");
- msgb_free(msg);
- return 0;
- }
-
- /* 5.7.1: N(s) sequence error */
- if (ns != dl->V_recv) {
- LOGP(DLAPDM, LOGL_NOTICE, "N(S) sequence error: N(S)=%u, "
- "V(R)=%u\n", ns, dl->V_recv);
- /* discard data */
- msgb_free(msg);
- if (!dl->seq_err_cond) {
- /* FIXME: help me understand what exactly todo here
- dl->seq_err_cond = 1;
- */
- lapdm_send_rej(mctx, LAPDm_CTRL_PF_BIT(mctx->ctrl));
- } else {
- }
- return -EIO;
- }
- dl->seq_err_cond = 0;
-
- /* Increment receiver state */
- dl->V_recv = inc_mod8(dl->V_recv);
- LOGP(DLAPDM, LOGL_NOTICE, "incrementing V(R) to %u\n", dl->V_recv);
-
- /* 5.5.3.1: Acknowlege all transmitted frames up the the N(R)-1 */
- lapdm_acknowledge(mctx); /* V(A) is also set here */
-
- /* Only if we are not in own receiver busy condition */
- if (!dl->own_busy) {
- /* if the frame carries a complete segment */
- if (!(msg->l2h[2] & LAPDm_MORE)
- && !dl->rcv_buffer) {
- LOGP(DLAPDM, LOGL_INFO, "message in single I frame\n");
- /* send a DATA INDICATION to L3 */
- msg->l3h = msg->l2h + 3;
- msgb_pull_l2h(msg);
- msg->len = length;
- msg->tail = msg->data + length;
- rc = send_rslms_rll_l3(RSL_MT_DATA_IND, mctx, msg);
- } else {
- /* create rcv_buffer */
- if (!dl->rcv_buffer) {
- LOGP(DLAPDM, LOGL_INFO, "message in multiple I "
- "frames (first message)\n");
- dl->rcv_buffer = msgb_alloc_headroom(200+56, 56,
- "LAPDm RX");
- dl->rcv_buffer->l3h = dl->rcv_buffer->data;
- }
- /* concat. rcv_buffer */
- if (msgb_l3len(dl->rcv_buffer) + length > 200) {
- LOGP(DLAPDM, LOGL_NOTICE, "Received frame "
- "overflow!\n");
- } else {
- memcpy(msgb_put(dl->rcv_buffer, length),
- msg->l2h + 3, length);
- }
- /* if the last segment was received */
- if (!(msg->l2h[2] & LAPDm_MORE)) {
- LOGP(DLAPDM, LOGL_INFO, "message in multiple I "
- "frames (last message)\n");
- rc = send_rslms_rll_l3(RSL_MT_DATA_IND, mctx,
- dl->rcv_buffer);
- dl->rcv_buffer = NULL;
- } else
- LOGP(DLAPDM, LOGL_INFO, "message in multiple I "
- "frames (next message)\n");
- msgb_free(msg);
-
- }
- } else
- LOGP(DLAPDM, LOGL_INFO, "I frame ignored during own receiver "
- "busy condition\n");
-
- /* Check for P bit */
- if (LAPDm_CTRL_PF_BIT(mctx->ctrl)) {
- /* 5.5.2.1 */
- /* check if we are not in own receiver busy */
- if (!dl->own_busy) {
- LOGP(DLAPDM, LOGL_INFO, "we are not busy, send RR\n");
- /* Send RR with F=1 */
- rc = lapdm_send_rr(mctx, 1);
- } else {
- LOGP(DLAPDM, LOGL_INFO, "we are busy, send RNR\n");
- /* Send RNR with F=1 */
- rc = lapdm_send_rnr(mctx, 1);
- }
- } else {
- /* 5.5.2.2 */
- /* check if we are not in own receiver busy */
- if (!dl->own_busy) {
- /* NOTE: V(R) is already set above */
- rc = rslms_send_i(mctx, __LINE__);
- if (rc) {
- LOGP(DLAPDM, LOGL_INFO, "we are not busy and "
- "have no pending data, send RR\n");
- /* Send RR with F=0 */
- return lapdm_send_rr(mctx, 0);
- }
- /* all I or one RR is sent, we are done */
- return 0;
- } else {
- LOGP(DLAPDM, LOGL_INFO, "we are busy, send RNR\n");
- /* Send RNR with F=0 */
- rc = lapdm_send_rnr(mctx, 0);
- }
- }
-
- /* Send message, if possible due to acknowledged data */
- rslms_send_i(mctx, __LINE__);
-
- return rc;
-}
-
-/* Receive a LAPDm message from L1 */
-static int lapdm_ph_data_ind(struct msgb *msg, struct lapdm_msg_ctx *mctx)
-{
- int rc;
-
- /* G.2.3 EA bit set to "0" is not allowed in GSM */
- if (!LAPDm_ADDR_EA(mctx->addr)) {
- LOGP(DLAPDM, LOGL_NOTICE, "EA bit 0 is not allowed in GSM\n");
- msgb_free(msg);
- rsl_rll_error(RLL_CAUSE_FRM_UNIMPL, mctx);
- return -EINVAL;
- }
-
- if (LAPDm_CTRL_is_U(mctx->ctrl))
- rc = lapdm_rx_u(msg, mctx);
- else if (LAPDm_CTRL_is_S(mctx->ctrl))
- rc = lapdm_rx_s(msg, mctx);
- else if (LAPDm_CTRL_is_I(mctx->ctrl))
- rc = lapdm_rx_i(msg, mctx);
- else {
- LOGP(DLAPDM, LOGL_NOTICE, "unknown LAPDm format\n");
- msgb_free(msg);
- rc = -EINVAL;
- }
- return rc;
-}
-
-/* input into layer2 (from layer 1) */
-static int l2_ph_data_ind(struct msgb *msg, struct lapdm_entity *le, uint8_t chan_nr, uint8_t link_id)
-{
- uint8_t cbits = chan_nr >> 3;
- uint8_t sapi = link_id & 7;
- struct lapdm_msg_ctx mctx;
- int rc = 0;
-
- /* when we reach here, we have a msgb with l2h pointing to the raw
- * 23byte mac block. The l1h has already been purged. */
-
- mctx.dl = datalink_for_sapi(le, sapi);
- mctx.chan_nr = chan_nr;
- mctx.link_id = link_id;
- mctx.addr = mctx.ctrl = 0;
-
- /* G.2.1 No action schall be taken on frames containing an unallocated
- * SAPI.
- */
- if (!mctx.dl) {
- LOGP(DLAPDM, LOGL_NOTICE, "Received frame for unsupported "
- "SAPI %d!\n", sapi);
- return -EINVAL;
- msgb_free(msg);
- return -EIO;
- }
-
- /* check for L1 chan_nr/link_id and determine LAPDm hdr format */
- if (cbits == 0x10 || cbits == 0x12) {
- /* Format Bbis is used on BCCH and CCCH(PCH, NCH and AGCH) */
- mctx.lapdm_fmt = LAPDm_FMT_Bbis;
- mctx.n201 = N201_Bbis;
- } else {
- if (mctx.link_id & 0x40) {
- /* It was received from network on SACCH, thus
- * lapdm_fmt must be B4 */
- mctx.lapdm_fmt = LAPDm_FMT_B4;
- mctx.n201 = N201_B4;
- LOGP(DLAPDM, LOGL_INFO, "fmt=B4\n");
- /* SACCH frames have a two-byte L1 header that
- * OsmocomBB L1 doesn't strip */
- mctx.tx_power_ind = msg->l2h[0] & 0x1f;
- mctx.ta_ind = msg->l2h[1];
- msgb_pull(msg, 2);
- msg->l2h += 2;
- } else {
- mctx.lapdm_fmt = LAPDm_FMT_B;
- LOGP(DLAPDM, LOGL_INFO, "fmt=B\n");
- mctx.n201 = 23; // FIXME: select correct size by chan.
- }
- }
-
- switch (mctx.lapdm_fmt) {
- case LAPDm_FMT_A:
- case LAPDm_FMT_B:
- case LAPDm_FMT_B4:
- mctx.addr = msg->l2h[0];
- if (!(mctx.addr & 0x01)) {
- LOGP(DLAPDM, LOGL_ERROR, "we don't support "
- "multibyte addresses (discarding)\n");
- msgb_free(msg);
- return -EINVAL;
- }
- mctx.ctrl = msg->l2h[1];
- /* obtain SAPI from address field */
- mctx.link_id |= LAPDm_ADDR_SAPI(mctx.addr);
- rc = lapdm_ph_data_ind(msg, &mctx);
- break;
- case LAPDm_FMT_Bter:
- /* FIXME */
- msgb_free(msg);
- break;
- case LAPDm_FMT_Bbis:
- /* directly pass up to layer3 */
- LOGP(DLAPDM, LOGL_INFO, "fmt=Bbis UI\n");
- msg->l3h = msg->l2h;
- msgb_pull_l2h(msg);
- rc = send_rslms_rll_l3(RSL_MT_UNIT_DATA_IND, &mctx, msg);
- break;
- default:
- msgb_free(msg);
- }
-
- return rc;
-}
-
-/* input into layer2 (from layer 1) */
-static int l2_ph_rach_ind(struct lapdm_entity *le, uint8_t ra, uint32_t fn, uint8_t acc_delay)
-{
- struct abis_rsl_cchan_hdr *ch;
- struct gsm48_req_ref req_ref;
- struct gsm_time gt;
- struct msgb *msg = msgb_alloc_headroom(512, 64, "RSL CHAN RQD");
-
- msg->l2h = msgb_push(msg, sizeof(*ch));
- ch = (struct abis_rsl_cchan_hdr *)msg->l2h;
- rsl_init_cchan_hdr(ch, RSL_MT_CHAN_RQD);
- ch->chan_nr = RSL_CHAN_RACH;
-
- /* generate a RSL CHANNEL REQUIRED message */
- gsm_fn2gsmtime(&gt, fn);
- req_ref.ra = ra;
- req_ref.t1 = gt.t1; /* FIXME: modulo? */
- req_ref.t2 = gt.t2;
- req_ref.t3_low = gt.t3 & 7;
- req_ref.t3_high = gt.t3 >> 3;
-
- msgb_tv_fixed_put(msg, RSL_IE_REQ_REFERENCE, 3, (uint8_t *) &req_ref);
- msgb_tv_put(msg, RSL_IE_ACCESS_DELAY, acc_delay);
-
- return rslms_sendmsg(msg, le);
-}
-
-static int l2_ph_chan_conf(struct msgb *msg, struct lapdm_entity *le, uint32_t frame_nr);
-
-int lapdm_phsap_up(struct osmo_prim_hdr *oph, struct lapdm_entity *le)
-{
- struct osmo_phsap_prim *pp = (struct osmo_phsap_prim *) oph;
- int rc = 0;
-
- if (oph->sap != SAP_GSM_PH) {
- LOGP(DLAPDM, LOGL_ERROR, "primitive for unknown SAP %u\n",
- oph->sap);
- return -ENODEV;
- }
-
- switch (oph->primitive) {
- case PRIM_PH_DATA:
- if (oph->operation != PRIM_OP_INDICATION) {
- LOGP(DLAPDM, LOGL_ERROR, "PH_DATA is not INDICATION %u\n",
- oph->operation);
- return -ENODEV;
- }
- rc = l2_ph_data_ind(oph->msg, le, pp->u.data.chan_nr,
- pp->u.data.link_id);
- break;
- case PRIM_PH_RTS:
- if (oph->operation != PRIM_OP_INDICATION) {
- LOGP(DLAPDM, LOGL_ERROR, "PH_RTS is not INDICATION %u\n",
- oph->operation);
- return -ENODEV;
- }
- rc = l2_ph_data_conf(oph->msg, le);
- break;
- case PRIM_PH_RACH:
- switch (oph->operation) {
- case PRIM_OP_INDICATION:
- rc = l2_ph_rach_ind(le, pp->u.rach_ind.ra, pp->u.rach_ind.fn,
- pp->u.rach_ind.acc_delay);
- break;
- case PRIM_OP_CONFIRM:
- rc = l2_ph_chan_conf(oph->msg, le, pp->u.rach_ind.fn);
- break;
- default:
- return -EIO;
- }
- break;
- }
-
- return rc;
-}
-
-
-/* L3 -> L2 / RSLMS -> LAPDm */
-
-/* L3 requests establishment of data link */
-static int rslms_rx_rll_est_req(struct msgb *msg, struct lapdm_datalink *dl)
-{
- struct lapdm_entity *le = dl->entity;
- struct abis_rsl_rll_hdr *rllh = msgb_l2(msg);
- uint8_t chan_nr = rllh->chan_nr;
- uint8_t link_id = rllh->link_id;
- uint8_t sapi = rllh->link_id & 7;
- struct tlv_parsed tv;
- uint8_t length;
- uint8_t n201 = 23; //FIXME
-
- /* Set chan_nr and link_id for established connection */
- memset(&dl->mctx, 0, sizeof(dl->mctx));
- dl->mctx.dl = dl;
- dl->mctx.n201 = n201;
- dl->mctx.chan_nr = chan_nr;
- dl->mctx.link_id = link_id;
-
- rsl_tlv_parse(&tv, rllh->data, msgb_l2len(msg)-sizeof(*rllh));
- if (TLVP_PRESENT(&tv, RSL_IE_L3_INFO)) {
- msg->l3h = TLVP_VAL(&tv, RSL_IE_L3_INFO);
- /* contention resolution establishment procedure */
- if (sapi != 0) {
- /* According to clause 6, the contention resolution
- * procedure is only permitted with SAPI value 0 */
- LOGP(DLAPDM, LOGL_ERROR, "SAPI != 0 but contention"
- "resolution (discarding)\n");
- msgb_free(msg);
- return send_rll_simple(RSL_MT_REL_IND, &dl->mctx);
- }
- /* transmit a SABM command with the P bit set to "1". The SABM
- * command shall contain the layer 3 message unit */
- length = TLVP_LEN(&tv, RSL_IE_L3_INFO);
- LOGP(DLAPDM, LOGL_INFO, "perform establishment with content "
- "(SABM)\n");
- } else {
- /* normal establishment procedure */
- length = 0;
- LOGP(DLAPDM, LOGL_INFO, "perform normal establishm. (SABM)\n");
- }
-
- /* check if the layer3 message length exceeds N201 */
- if (length + 3 > 21) { /* FIXME: do we know the channel N201? */
- LOGP(DLAPDM, LOGL_ERROR, "frame too large: %d > N201(%d) "
- "(discarding)\n", length + 3, 21);
- msgb_free(msg);
- return send_rll_simple(RSL_MT_REL_IND, &dl->mctx);
- }
-
- /* Flush send-queue */
- /* Clear send-buffer */
- lapdm_dl_flush_send(dl);
-
- /* Discard partly received L3 message */
- if (dl->rcv_buffer) {
- msgb_free(dl->rcv_buffer);
- dl->rcv_buffer = NULL;
- }
-
- /* Remove RLL header from msgb */
- msgb_pull_l2h(msg);
-
- /* Push LAPDm header on msgb */
- msg->l2h = msgb_push(msg, 3);
- msg->l2h[0] = LAPDm_ADDR(LAPDm_LPD_NORMAL, sapi, le->cr.loc2rem.cmd);
- msg->l2h[1] = LAPDm_CTRL_U(LAPDm_U_SABM, 1);
- msg->l2h[2] = LAPDm_LEN(length);
- /* Transmit-buffer carries exactly one segment */
- memcpy(dl->tx_hist[0], msg->l2h, 3 + length);
- dl->tx_length[0] = 3 + length;
- /* set Vs to 0, because it is used as index when resending SABM */
- dl->V_send = 0;
-
- /* Set states */
- dl->own_busy = dl->peer_busy = 0;
- dl->retrans_ctr = 0;
- lapdm_dl_newstate(dl, LAPDm_STATE_SABM_SENT);
-
- /* Tramsmit and start T200 */
- osmo_timer_schedule(&dl->t200, T200);
- return tx_ph_data_enqueue(dl, msg, chan_nr, link_id, n201);
-}
-
-/* L3 requests transfer of unnumbered information */
-static int rslms_rx_rll_udata_req(struct msgb *msg, struct lapdm_datalink *dl)
-{
- struct lapdm_entity *le = dl->entity;
- struct abis_rsl_rll_hdr *rllh = msgb_l2(msg);
- uint8_t chan_nr = rllh->chan_nr;
- uint8_t link_id = rllh->link_id;
- uint8_t sapi = link_id & 7;
- struct tlv_parsed tv;
- int length;
- uint8_t n201 = 23; //FIXME
- uint8_t ta = 0, tx_power = 0;
-
- /* check if the layer3 message length exceeds N201 */
-
- rsl_tlv_parse(&tv, rllh->data, msgb_l2len(msg)-sizeof(*rllh));
-
- if (TLVP_PRESENT(&tv, RSL_IE_TIMING_ADVANCE)) {
- ta = *TLVP_VAL(&tv, RSL_IE_TIMING_ADVANCE);
- }
- if (TLVP_PRESENT(&tv, RSL_IE_MS_POWER)) {
- tx_power = *TLVP_VAL(&tv, RSL_IE_MS_POWER);
- }
- if (!TLVP_PRESENT(&tv, RSL_IE_L3_INFO)) {
- LOGP(DLAPDM, LOGL_ERROR, "unit data request without message "
- "error\n");
- msgb_free(msg);
- return -EINVAL;
- }
- msg->l3h = TLVP_VAL(&tv, RSL_IE_L3_INFO);
- length = TLVP_LEN(&tv, RSL_IE_L3_INFO);
- /* check if the layer3 message length exceeds N201 */
- if (length + 5 > 23) { /* FIXME: do we know the channel N201? */
- LOGP(DLAPDM, LOGL_ERROR, "frame too large: %d > N201(%d) "
- "(discarding)\n", length + 5, 23);
- msgb_free(msg);
- return -EIO;
- }
-
- LOGP(DLAPDM, LOGL_INFO, "sending unit data (tx_power=%d, ta=%d)\n",
- tx_power, ta);
-
- /* Remove RLL header from msgb */
- msgb_pull_l2h(msg);
-
- /* Push L1 + LAPDm header on msgb */
- msg->l2h = msgb_push(msg, 2 + 3);
- msg->l2h[0] = tx_power;
- msg->l2h[1] = ta;
- msg->l2h[2] = LAPDm_ADDR(LAPDm_LPD_NORMAL, sapi, le->cr.loc2rem.cmd);
- msg->l2h[3] = LAPDm_CTRL_U(LAPDm_U_UI, 0);
- msg->l2h[4] = LAPDm_LEN(length);
- // FIXME: short L2 header support
-
- /* Tramsmit */
- return tx_ph_data_enqueue(dl, msg, chan_nr, link_id, n201);
-}
-
-/* L3 requests transfer of acknowledged information */
-static int rslms_rx_rll_data_req(struct msgb *msg, struct lapdm_datalink *dl)
-{
- struct abis_rsl_rll_hdr *rllh = msgb_l2(msg);
- struct tlv_parsed tv;
-
- rsl_tlv_parse(&tv, rllh->data, msgb_l2len(msg)-sizeof(*rllh));
- if (!TLVP_PRESENT(&tv, RSL_IE_L3_INFO)) {
- LOGP(DLAPDM, LOGL_ERROR, "data request without message "
- "error\n");
- msgb_free(msg);
- return -EINVAL;
- }
- msg->l3h = TLVP_VAL(&tv, RSL_IE_L3_INFO);
-
- LOGP(DLAPDM, LOGL_INFO, "writing message to send-queue\n");
-
- /* Remove the RSL/RLL header */
- msgb_pull_l2h(msg);
-
- /* Write data into the send queue */
- msgb_enqueue(&dl->send_queue, msg);
-
- /* Send message, if possible */
- rslms_send_i(&dl->mctx, __LINE__);
- return 0;
-}
-
-/* Send next I frame from queued/buffered data */
-static int rslms_send_i(struct lapdm_msg_ctx *mctx, int line)
-{
- struct lapdm_datalink *dl = mctx->dl;
- struct lapdm_entity *le = dl->entity;
- uint8_t chan_nr = mctx->chan_nr;
- uint8_t link_id = mctx->link_id;
- uint8_t sapi = link_id & 7;
- int k = k_sapi[sapi];
- struct msgb *msg;
- int length, left;
- int rc = - 1; /* we sent nothing */
-
- LOGP(DLAPDM, LOGL_INFO, "%s() called from line %d\n", __func__, line);
-
- next_frame:
-
- if (dl->peer_busy) {
- LOGP(DLAPDM, LOGL_INFO, "peer busy, not sending\n");
- return rc;
- }
-
- if (dl->state == LAPDm_STATE_TIMER_RECOV) {
- LOGP(DLAPDM, LOGL_INFO, "timer recovery, not sending\n");
- return rc;
- }
-
- /* If the send state variable V(S) is equal to V(A) plus k
- * (where k is the maximum number of outstanding I frames - see
- * subclause 5.8.4), the data link layer entity shall not transmit any
- * new I frames, but shall retransmit an I frame as a result
- * of the error recovery procedures as described in subclauses 5.5.4 and
- * 5.5.7. */
- if (dl->V_send == add_mod8(dl->V_ack, k)) {
- LOGP(DLAPDM, LOGL_INFO, "k frames outstanding, not sending "
- "more (k=%u V(S)=%u V(A)=%u)\n", k, dl->V_send,
- dl->V_ack);
- return rc;
- }
-
- /* if we have no tx_hist yet, we create it */
- if (!dl->tx_length[dl->V_send]) {
- /* Get next message into send-buffer, if any */
- if (!dl->send_buffer) {
- next_message:
- dl->send_out = 0;
- dl->send_buffer = msgb_dequeue(&dl->send_queue);
- /* No more data to be sent */
- if (!dl->send_buffer)
- return rc;
- LOGP(DLAPDM, LOGL_INFO, "get message from "
- "send-queue\n");
- }
-
- /* How much is left in the send-buffer? */
- left = msgb_l3len(dl->send_buffer) - dl->send_out;
- /* Segment, if data exceeds N201 */
- length = left;
- if (length > mctx->n201 - 3)
- length = mctx->n201 - 3;
- LOGP(DLAPDM, LOGL_INFO, "msg-len %d sent %d left %d N201 %d "
- "length %d first byte %02x\n",
- msgb_l3len(dl->send_buffer), dl->send_out, left,
- mctx->n201, length, dl->send_buffer->l3h[0]);
- /* If message in send-buffer is completely sent */
- if (left == 0) {
- msgb_free(dl->send_buffer);
- dl->send_buffer = NULL;
- goto next_message;
- }
-
- LOGP(DLAPDM, LOGL_INFO, "send I frame %sV(S)=%d\n",
- (left > length) ? "segment " : "", dl->V_send);
-
- /* Create I frame (segment) and transmit-buffer content */
- msg = msgb_alloc_headroom(23+10, 10, "LAPDm I");
- msg->l2h = msgb_put(msg, 3 + length);
- msg->l2h[0] = LAPDm_ADDR(LAPDm_LPD_NORMAL, sapi, le->cr.loc2rem.cmd);
- msg->l2h[1] = LAPDm_CTRL_I(dl->V_recv, dl->V_send, 0);
- msg->l2h[2] = LAPDm_LEN(length);
- if (left > length)
- msg->l2h[2] |= LAPDm_MORE;
- memcpy(msg->l2h + 3, dl->send_buffer->l3h + dl->send_out,
- length);
- memcpy(dl->tx_hist[dl->V_send], msg->l2h, 3 + length);
- dl->tx_length[dl->V_send] = 3 + length;
- /* Add length to track how much is already in the tx buffer */
- dl->send_out += length;
- } else {
- LOGP(DLAPDM, LOGL_INFO, "resend I frame from tx buffer "
- "V(S)=%d\n", dl->V_send);
-
- /* Create I frame (segment) from tx_hist */
- length = dl->tx_length[dl->V_send];
- msg = msgb_alloc_headroom(23+10, 10, "LAPDm I");
- msg->l2h = msgb_put(msg, length);
- memcpy(msg->l2h, dl->tx_hist[dl->V_send], length);
- msg->l2h[1] = LAPDm_CTRL_I(dl->V_recv, dl->V_send, 0);
- }
-
- /* The value of the send state variable V(S) shall be incremented by 1
- * at the end of the transmission of the I frame */
- dl->V_send = inc_mod8(dl->V_send);
-
- /* If timer T200 is not running at the time right before transmitting a
- * frame, when the PH-READY-TO-SEND primitive is received from the
- * physical layer., it shall be set. */
- if (!osmo_timer_pending(&dl->t200))
- osmo_timer_schedule(&dl->t200, T200);
-
- tx_ph_data_enqueue(dl, msg, chan_nr, link_id, mctx->n201);
-
- rc = 0; /* we sent something */
- goto next_frame;
-}
-
-/* L3 requests suspension of data link */
-static int rslms_rx_rll_susp_req(struct msgb *msg, struct lapdm_datalink *dl)
-{
- struct abis_rsl_rll_hdr *rllh = msgb_l2(msg);
- uint8_t sapi = rllh->link_id & 7;
-
- if (sapi != 0) {
- LOGP(DLAPDM, LOGL_ERROR, "SAPI != 0 while suspending\n");
- msgb_free(msg);
- return -EINVAL;
- }
-
- LOGP(DLAPDM, LOGL_INFO, "perform suspension\n");
-
- /* put back the send-buffer to the send-queue (first position) */
- if (dl->send_buffer) {
- LOGP(DLAPDM, LOGL_INFO, "put frame in sendbuffer back to "
- "queue\n");
- llist_add(&dl->send_buffer->list, &dl->send_queue);
- dl->send_buffer = NULL;
- } else
- LOGP(DLAPDM, LOGL_INFO, "no frame in sendbuffer\n");
-
- /* Clear transmit buffer, but keep send buffer */
- lapdm_dl_flush_tx(dl);
-
- msgb_free(msg);
-
- return send_rll_simple(RSL_MT_SUSP_CONF, &dl->mctx);
-}
-
-/* L3 requests resume of data link */
-static int rslms_rx_rll_res_req(struct msgb *msg, struct lapdm_datalink *dl)
-{
- struct lapdm_entity *le = dl->entity;
- struct abis_rsl_rll_hdr *rllh = msgb_l2(msg);
- uint8_t chan_nr = rllh->chan_nr;
- uint8_t link_id = rllh->link_id;
- uint8_t sapi = rllh->link_id & 7;
- struct tlv_parsed tv;
- uint8_t length;
- uint8_t n201 = 23; //FIXME
-
- /* Set chan_nr and link_id for established connection */
- memset(&dl->mctx, 0, sizeof(dl->mctx));
- dl->mctx.dl = dl;
- dl->mctx.n201 = n201;
- dl->mctx.chan_nr = chan_nr;
- dl->mctx.link_id = link_id;
-
- rsl_tlv_parse(&tv, rllh->data, msgb_l2len(msg)-sizeof(*rllh));
- if (!TLVP_PRESENT(&tv, RSL_IE_L3_INFO)) {
- LOGP(DLAPDM, LOGL_ERROR, "resume without message error\n");
- msgb_free(msg);
- return send_rll_simple(RSL_MT_REL_IND, &dl->mctx);
- }
- length = TLVP_LEN(&tv, RSL_IE_L3_INFO);
-
- LOGP(DLAPDM, LOGL_INFO, "perform re-establishment (SABM) length=%d\n",
- length);
-
- /* Replace message in the send-buffer (reconnect) */
- if (dl->send_buffer)
- msgb_free(dl->send_buffer);
- dl->send_out = 0;
- if (length) {
- /* Remove the RSL/RLL header */
- msgb_pull_l2h(msg);
- /* Write data into the send buffer, to be sent first */
- dl->send_buffer = msg;
- }
-
- /* Discard partly received L3 message */
- if (dl->rcv_buffer) {
- msgb_free(dl->rcv_buffer);
- dl->rcv_buffer = NULL;
- }
-
- /* Create new msgb (old one is now free) */
- msg = msgb_alloc_headroom(23+10, 10, "LAPDm SABM");
- msg->l2h = msgb_put(msg, 3);
- msg->l2h[0] = LAPDm_ADDR(LAPDm_LPD_NORMAL, sapi, le->cr.loc2rem.cmd);
- msg->l2h[1] = LAPDm_CTRL_U(LAPDm_U_SABM, 1);
- msg->l2h[2] = LAPDm_LEN(0);
- /* Transmit-buffer carries exactly one segment */
- memcpy(dl->tx_hist[0], msg->l2h, 3);
- dl->tx_length[0] = 3;
- /* set Vs to 0, because it is used as index when resending SABM */
- dl->V_send = 0;
-
- /* Set states */
- dl->own_busy = dl->peer_busy = 0;
- dl->retrans_ctr = 0;
- lapdm_dl_newstate(dl, LAPDm_STATE_SABM_SENT);
-
- /* Tramsmit and start T200 */
- osmo_timer_schedule(&dl->t200, T200);
- return tx_ph_data_enqueue(dl, msg, chan_nr, link_id, n201);
-}
-
-/* L3 requests release of data link */
-static int rslms_rx_rll_rel_req(struct msgb *msg, struct lapdm_datalink *dl)
-{
- struct lapdm_entity *le = dl->entity;
- struct abis_rsl_rll_hdr *rllh = msgb_l2(msg);
- uint8_t chan_nr = rllh->chan_nr;
- uint8_t link_id = rllh->link_id;
- uint8_t sapi = rllh->link_id & 7;
- uint8_t mode = 0;
-
- /* get release mode */
- if (rllh->data[0] == RSL_IE_RELEASE_MODE)
- mode = rllh->data[1] & 1;
-
- /* local release */
- if (mode) {
- LOGP(DLAPDM, LOGL_INFO, "perform local release\n");
- msgb_free(msg);
- /* reset Timer T200 */
- osmo_timer_del(&dl->t200);
- /* enter idle state */
- lapdm_dl_newstate(dl, LAPDm_STATE_IDLE);
- /* flush buffers */
- lapdm_dl_flush_tx(dl);
- lapdm_dl_flush_send(dl);
- /* send notification to L3 */
- return send_rll_simple(RSL_MT_REL_CONF, &dl->mctx);
- }
-
- /* in case we are already disconnecting */
- if (dl->state == LAPDm_STATE_DISC_SENT)
- return -EBUSY;
-
- LOGP(DLAPDM, LOGL_INFO, "perform normal release (DISC)\n");
-
- /* Pull rllh */
- msgb_pull(msg, msg->tail - msg->l2h);
-
- /* Push LAPDm header on msgb */
- msg->l2h = msgb_push(msg, 3);
- msg->l2h[0] = LAPDm_ADDR(LAPDm_LPD_NORMAL, sapi, le->cr.loc2rem.cmd);
- msg->l2h[1] = LAPDm_CTRL_U(LAPDm_U_DISC, 1);
- msg->l2h[2] = LAPDm_LEN(0);
- /* Transmit-buffer carries exactly one segment */
- memcpy(dl->tx_hist[0], msg->l2h, 3);
- dl->tx_length[0] = 3;
-
- /* Set states */
- dl->own_busy = dl->peer_busy = 0;
- dl->retrans_ctr = 0;
- lapdm_dl_newstate(dl, LAPDm_STATE_DISC_SENT);
-
- /* Tramsmit and start T200 */
- osmo_timer_schedule(&dl->t200, T200);
- return tx_ph_data_enqueue(dl, msg, chan_nr, link_id, dl->mctx.n201);
-}
-
-/* L3 requests release in idle state */
-static int rslms_rx_rll_rel_req_idle(struct msgb *msg, struct lapdm_datalink *dl)
-{
- msgb_free(msg);
-
- /* send notification to L3 */
- return send_rll_simple(RSL_MT_REL_CONF, &dl->mctx);
-}
-
-/* L3 requests channel in idle state */
-static int rslms_rx_chan_rqd(struct lapdm_channel *lc, struct msgb *msg)
-{
- struct abis_rsl_cchan_hdr *cch = msgb_l2(msg);
- void *l1ctx = lc->lapdm_dcch.l1_ctx;
- struct osmo_phsap_prim pp;
-
- osmo_prim_init(&pp.oph, SAP_GSM_PH, PRIM_PH_RACH,
- PRIM_OP_REQUEST, NULL);
-
- if (msgb_l2len(msg) < sizeof(*cch) + 4 + 2 + 2) {
- LOGP(DRSL, LOGL_ERROR, "Message too short for CHAN RQD!\n");
- return -EINVAL;
- }
- if (cch->data[0] != RSL_IE_REQ_REFERENCE) {
- LOGP(DRSL, LOGL_ERROR, "Missing REQ REFERENCE IE\n");
- return -EINVAL;
- }
- pp.u.rach_req.ra = cch->data[1];
- pp.u.rach_req.offset = ((cch->data[2] & 0x7f) << 8) | cch->data[3];
- pp.u.rach_req.is_combined_ccch = cch->data[2] >> 7;
-
- if (cch->data[4] != RSL_IE_ACCESS_DELAY) {
- LOGP(DRSL, LOGL_ERROR, "Missing ACCESS_DELAY IE\n");
- return -EINVAL;
- }
- /* TA = 0 - delay */
- pp.u.rach_req.ta = 0 - cch->data[5];
-
- if (cch->data[6] != RSL_IE_MS_POWER) {
- LOGP(DRSL, LOGL_ERROR, "Missing MS POWER IE\n");
- return -EINVAL;
- }
- pp.u.rach_req.tx_power = cch->data[7];
-
- msgb_free(msg);
-
- return lc->lapdm_dcch.l1_prim_cb(&pp.oph, l1ctx);
-}
-
-/* L1 confirms channel request */
-static int l2_ph_chan_conf(struct msgb *msg, struct lapdm_entity *le, uint32_t frame_nr)
-{
- struct abis_rsl_cchan_hdr *ch;
- struct gsm_time tm;
- struct gsm48_req_ref *ref;
-
- gsm_fn2gsmtime(&tm, frame_nr);
-
- msgb_pull_l2h(msg);
- msg->l2h = msgb_push(msg, sizeof(*ch) + sizeof(*ref));
- ch = (struct abis_rsl_cchan_hdr *)msg->l2h;
- rsl_init_cchan_hdr(ch, RSL_MT_CHAN_CONF);
- ch->chan_nr = RSL_CHAN_RACH;
- ch->data[0] = RSL_IE_REQ_REFERENCE;
- ref = (struct gsm48_req_ref *) (ch->data + 1);
- ref->t1 = tm.t1;
- ref->t2 = tm.t2;
- ref->t3_low = tm.t3 & 0x7;
- ref->t3_high = tm.t3 >> 3;
-
- return rslms_sendmsg(msg, le);
-}
-
-const char *lapdm_state_names[] = {
- "LAPDm_STATE_NULL",
- "LAPDm_STATE_IDLE",
- "LAPDm_STATE_SABM_SENT",
- "LAPDm_STATE_MF_EST",
- "LAPDm_STATE_TIMER_RECOV",
- "LAPDm_STATE_DISC_SENT",
-};
-
-/* statefull handling for RSLms RLL messages from L3 */
-static struct l2downstate {
- uint32_t states;
- int type;
- int (*rout) (struct msgb *msg, struct lapdm_datalink *dl);
-} l2downstatelist[] = {
- /* create and send UI command */
- {ALL_STATES,
- RSL_MT_UNIT_DATA_REQ, rslms_rx_rll_udata_req},
-
- /* create and send SABM command */
- {SBIT(LAPDm_STATE_IDLE),
- RSL_MT_EST_REQ, rslms_rx_rll_est_req},
-
- /* create and send I command */
- {SBIT(LAPDm_STATE_MF_EST) |
- SBIT(LAPDm_STATE_TIMER_RECOV),
- RSL_MT_DATA_REQ, rslms_rx_rll_data_req},
-
- /* suspend datalink */
- {SBIT(LAPDm_STATE_MF_EST) |
- SBIT(LAPDm_STATE_TIMER_RECOV),
- RSL_MT_SUSP_REQ, rslms_rx_rll_susp_req},
-
- /* create and send SABM command (resume) */
- {SBIT(LAPDm_STATE_MF_EST) |
- SBIT(LAPDm_STATE_TIMER_RECOV),
- RSL_MT_RES_REQ, rslms_rx_rll_res_req},
-
- /* create and send SABM command (reconnect) */
- {SBIT(LAPDm_STATE_IDLE) |
- SBIT(LAPDm_STATE_MF_EST) |
- SBIT(LAPDm_STATE_TIMER_RECOV),
- RSL_MT_RECON_REQ, rslms_rx_rll_res_req},
-
- /* create and send DISC command */
- {SBIT(LAPDm_STATE_SABM_SENT) |
- SBIT(LAPDm_STATE_MF_EST) |
- SBIT(LAPDm_STATE_TIMER_RECOV) |
- SBIT(LAPDm_STATE_DISC_SENT),
- RSL_MT_REL_REQ, rslms_rx_rll_rel_req},
-
- /* release in idle state */
- {SBIT(LAPDm_STATE_IDLE),
- RSL_MT_REL_REQ, rslms_rx_rll_rel_req_idle},
-};
-
-#define L2DOWNSLLEN \
- (sizeof(l2downstatelist) / sizeof(struct l2downstate))
-
-/* incoming RSLms RLL message from L3 */
-static int rslms_rx_rll(struct msgb *msg, struct lapdm_channel *lc)
-{
- struct abis_rsl_rll_hdr *rllh = msgb_l2(msg);
- int msg_type = rllh->c.msg_type;
- uint8_t sapi = rllh->link_id & 7;
- struct lapdm_entity *le;
- struct lapdm_datalink *dl;
- int i, supported = 0;
- int rc = 0;
-
- if (msgb_l2len(msg) < sizeof(*rllh)) {
- LOGP(DRSL, LOGL_ERROR, "Message too short for RLL hdr!\n");
- return -EINVAL;
- }
-
- if (rllh->link_id & 0x40)
- le = &lc->lapdm_acch;
- else
- le = &lc->lapdm_dcch;
-
- /* G.2.1 No action schall be taken on frames containing an unallocated
- * SAPI.
- */
- dl = datalink_for_sapi(le, sapi);
- if (!dl) {
- LOGP(DRSL, LOGL_ERROR, "No instance for SAPI %d!\n", sapi);
- return -EINVAL;
- }
-
- LOGP(DRSL, LOGL_INFO, "(%p) RLL Message '%s' received in state %s\n",
- lc->name, rsl_msg_name(msg_type), lapdm_state_names[dl->state]);
-
- /* find function for current state and message */
- for (i = 0; i < L2DOWNSLLEN; i++) {
- if (msg_type == l2downstatelist[i].type)
- supported = 1;
- if ((msg_type == l2downstatelist[i].type)
- && ((1 << dl->state) & l2downstatelist[i].states))
- break;
- }
- if (!supported) {
- LOGP(DRSL, LOGL_NOTICE, "Message unsupported.\n");
- msgb_free(msg);
- return 0;
- }
- if (i == L2DOWNSLLEN) {
- LOGP(DRSL, LOGL_NOTICE, "Message unhandled at this state.\n");
- msgb_free(msg);
- return 0;
- }
-
- rc = l2downstatelist[i].rout(msg, dl);
-
- return rc;
-}
-
-/* incoming RSLms COMMON CHANNEL message from L3 */
-static int rslms_rx_com_chan(struct msgb *msg, struct lapdm_channel *lc)
-{
- struct abis_rsl_cchan_hdr *cch = msgb_l2(msg);
- int msg_type = cch->c.msg_type;
- int rc = 0;
-
- if (msgb_l2len(msg) < sizeof(*cch)) {
- LOGP(DRSL, LOGL_ERROR, "Message too short for COM CHAN hdr!\n");
- return -EINVAL;
- }
-
- switch (msg_type) {
- case RSL_MT_CHAN_RQD:
- /* create and send RACH request */
- rc = rslms_rx_chan_rqd(lc, msg);
- break;
- default:
- LOGP(DRSL, LOGL_NOTICE, "Unknown COMMON CHANNEL msg %d!\n",
- msg_type);
- msgb_free(msg);
- return 0;
- }
-
- return rc;
-}
-
-/* input into layer2 (from layer 3) */
-int lapdm_rslms_recvmsg(struct msgb *msg, struct lapdm_channel *lc)
-{
- struct abis_rsl_common_hdr *rslh = msgb_l2(msg);
- int rc = 0;
-
- if (msgb_l2len(msg) < sizeof(*rslh)) {
- LOGP(DRSL, LOGL_ERROR, "Message too short RSL hdr!\n");
- return -EINVAL;
- }
-
- switch (rslh->msg_discr & 0xfe) {
- case ABIS_RSL_MDISC_RLL:
- rc = rslms_rx_rll(msg, lc);
- break;
- case ABIS_RSL_MDISC_COM_CHAN:
- rc = rslms_rx_com_chan(msg, lc);
- break;
- default:
- LOGP(DRSL, LOGL_ERROR, "unknown RSLms message "
- "discriminator 0x%02x", rslh->msg_discr);
- msgb_free(msg);
- return -EINVAL;
- }
-
- return rc;
-}
-
-int lapdm_entity_set_mode(struct lapdm_entity *le, enum lapdm_mode mode)
-{
- switch (mode) {
- case LAPDM_MODE_MS:
- le->cr.loc2rem.cmd = CR_MS2BS_CMD;
- le->cr.loc2rem.resp = CR_MS2BS_RESP;
- le->cr.rem2loc.cmd = CR_BS2MS_CMD;
- le->cr.rem2loc.resp = CR_BS2MS_RESP;
- break;
- case LAPDM_MODE_BTS:
- le->cr.loc2rem.cmd = CR_BS2MS_CMD;
- le->cr.loc2rem.resp = CR_BS2MS_RESP;
- le->cr.rem2loc.cmd = CR_MS2BS_CMD;
- le->cr.rem2loc.resp = CR_MS2BS_RESP;
- break;
- default:
- return -EINVAL;
- }
-
- le->mode = mode;
-
- return 0;
-}
-
-int lapdm_channel_set_mode(struct lapdm_channel *lc, enum lapdm_mode mode)
-{
- int rc;
-
- rc = lapdm_entity_set_mode(&lc->lapdm_dcch, mode);
- if (rc < 0)
- return rc;
-
- return lapdm_entity_set_mode(&lc->lapdm_acch, mode);
-}
-
-void lapdm_channel_set_l1(struct lapdm_channel *lc, osmo_prim_cb cb, void *ctx)
-{
- lc->lapdm_dcch.l1_prim_cb = cb;
- lc->lapdm_acch.l1_prim_cb = cb;
- lc->lapdm_dcch.l1_ctx = ctx;
- lc->lapdm_acch.l1_ctx = ctx;
-}
-
-void lapdm_channel_set_l3(struct lapdm_channel *lc, lapdm_cb_t cb, void *ctx)
-{
- lc->lapdm_dcch.l3_cb = cb;
- lc->lapdm_acch.l3_cb = cb;
- lc->lapdm_dcch.l3_ctx = ctx;
- lc->lapdm_acch.l3_ctx = ctx;
-}
-
-void lapdm_entity_reset(struct lapdm_entity *le)
-{
- struct lapdm_datalink *dl;
- int i;
-
- for (i = 0; i < ARRAY_SIZE(le->datalink); i++) {
- dl = &le->datalink[i];
- if (dl->state == LAPDm_STATE_IDLE)
- continue;
- LOGP(DLAPDM, LOGL_INFO, "Resetting LAPDm instance\n");
- /* reset Timer T200 */
- osmo_timer_del(&dl->t200);
- /* enter idle state */
- dl->state = LAPDm_STATE_IDLE;
- /* flush buffer */
- lapdm_dl_flush_tx(dl);
- lapdm_dl_flush_send(dl);
- }
-}
-
-void lapdm_channel_reset(struct lapdm_channel *lc)
-{
- lapdm_entity_reset(&lc->lapdm_dcch);
- lapdm_entity_reset(&lc->lapdm_acch);
-}
-
-void lapdm_entity_set_flags(struct lapdm_entity *le, unsigned int flags)
-{
- le->flags = flags;
-}
-
-void lapdm_channel_set_flags(struct lapdm_channel *lc, unsigned int flags)
-{
- lapdm_entity_set_flags(&lc->lapdm_dcch, flags);
- lapdm_entity_set_flags(&lc->lapdm_acch, flags);
-}
diff --git a/Src/osmoconbb/src/host/layer23/src/common/logging.c b/Src/osmoconbb/src/host/layer23/src/common/logging.c
deleted file mode 100644
index 82ce914..0000000
--- a/Src/osmoconbb/src/host/layer23/src/common/logging.c
+++ /dev/null
@@ -1,136 +0,0 @@
-/* Logging/Debug support of the layer2/3 stack */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-
-#include <osmocom/core/utils.h>
-#include <osmocom/core/logging.h>
-#include <osmocom/bb/common/logging.h>
-
-static const struct log_info_cat default_categories[] = {
- [DRSL] = {
- .name = "DRSL",
- .description = "Radio Signalling Link (MS)",
- .color = "\033[1;35m",
- .enabled = 1, .loglevel = LOGL_NOTICE,
- },
- [DCS] = {
- .name = "DCS",
- .description = "Cell selection",
- .color = "\033[34m",
- .enabled = 1, .loglevel = LOGL_DEBUG,
- },
- [DNB] = {
- .name = "DNB",
- .description = "Neighbour cell measurement",
- .color = "\033[0;31m",
- .enabled = 1, .loglevel = LOGL_NOTICE,
- },
- [DPLMN] = {
- .name = "DPLMN",
- .description = "PLMN selection",
- .color = "\033[32m",
- .enabled = 1, .loglevel = LOGL_DEBUG,
- },
- [DRR] = {
- .name = "DRR",
- .description = "Radio Resource",
- .color = "\033[1;34m",
- .enabled = 1, .loglevel = LOGL_DEBUG,
- },
- [DMM] = {
- .name = "DMM",
- .description = "Mobility Management",
- .color = "\033[1;32m",
- .enabled = 1, .loglevel = LOGL_DEBUG,
- },
- [DCC] = {
- .name = "DCC",
- .description = "Call Control",
- .color = "\033[1;33m",
- .enabled = 1, .loglevel = LOGL_DEBUG,
- },
- [DSMS] = {
- .name = "DSMS",
- .description = "Short Message Service",
- .color = "\033[1;37m",
- .enabled = 1, .loglevel = LOGL_DEBUG,
- },
- [DMNCC] = {
- .name = "DMNCC",
- .description = "Mobile Network Call Control",
- .color = "\033[1;37m",
- .enabled = 1, .loglevel = LOGL_DEBUG,
- },
- [DMEAS] = {
- .name = "DMEAS",
- .description = "MEasurement Reporting",
- .enabled = 1, .loglevel = LOGL_DEBUG,
- },
- [DPAG] = {
- .name = "DPAG",
- .description = "Paging",
- .color = "\033[33m",
- .enabled = 1, .loglevel = LOGL_DEBUG,
- },
- [DLAPDM] = {
- .name = "DLAPDM",
- .description = "LAPDm Layer2",
- .enabled = 1, .loglevel = LOGL_NOTICE,
- },
- [DL1C] = {
- .name = "DL1C",
- .description = "Layer 1 Control",
- .color = "\033[1;31m",
- .enabled = 1, .loglevel = LOGL_NOTICE,
- },
- [DSAP] = {
- .name = "DSAP",
- .description = "SAP Control",
- .color = "\033[1;31m",
- .enabled = 1, .loglevel = LOGL_DEBUG,
- },
- [DSUM] = {
- .name = "DSUM",
- .description = "Summary of Process",
- .color = "\033[1;37m",
- .enabled = 1, .loglevel = LOGL_DEBUG,
- },
- [DSIM] = {
- .name = "DSIM",
- .description = "SIM client",
- .color = "\033[0;35m",
- .enabled = 1, .loglevel = LOGL_DEBUG,
- },
- [DGPS] = {
- .name = "DGPS",
- .description = "GPS",
- .color = "\033[1;35m",
- .enabled = 1, .loglevel = LOGL_DEBUG,
- },
-};
-
-const struct log_info log_info = {
- .filter_fn = NULL,
- .cat = default_categories,
- .num_cat = ARRAY_SIZE(default_categories),
-};
-
diff --git a/Src/osmoconbb/src/host/layer23/src/common/main.c b/Src/osmoconbb/src/host/layer23/src/common/main.c
deleted file mode 100644
index 751f95e..0000000
--- a/Src/osmoconbb/src/host/layer23/src/common/main.c
+++ /dev/null
@@ -1,289 +0,0 @@
-/* Main method of the layer2/3 stack */
-
-/* (C) 2010 by Holger Hans Peter Freyther
- * (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <osmocom/bb/common/osmocom_data.h>
-#include <osmocom/bb/common/l1ctl.h>
-#include <osmocom/bb/common/l1l2_interface.h>
-#include <osmocom/bb/common/sap_interface.h>
-#include <osmocom/bb/misc/layer3.h>
-#include <osmocom/bb/common/lapdm.h>
-#include <osmocom/bb/common/logging.h>
-#include <osmocom/bb/common/l23_app.h>
-
-#include <osmocom/core/msgb.h>
-#include <osmocom/core/talloc.h>
-#include <osmocom/core/select.h>
-#include <osmocom/core/linuxlist.h>
-#include <osmocom/core/gsmtap_util.h>
-#include <osmocom/core/gsmtap.h>
-#include <osmocom/core/utils.h>
-
-#include <arpa/inet.h>
-
-#define _GNU_SOURCE
-#include <getopt.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <signal.h>
-
-struct log_target *stderr_target;
-
-void *l23_ctx = NULL;
-
-static char *layer2_socket_path = "/tmp/osmocom_l2";
-static char *sap_socket_path = "/tmp/osmocom_sap";
-struct llist_head ms_list;
-static struct osmocom_ms *ms = NULL;
-static char *gsmtap_ip = NULL;
-
-unsigned short vty_port = 4247;
-int (*l23_app_work) (struct osmocom_ms *ms) = NULL;
-int (*l23_app_exit) (struct osmocom_ms *ms) = NULL;
-int quit = 0;
-struct gsmtap_inst *gsmtap_inst;
-
-const char *openbsc_copyright =
- "%s"
- "%s\n"
- "License GPLv2+: GNU GPL version 2 or later "
- "<http://gnu.org/licenses/gpl.html>\n"
- "This is free software: you are free to change and redistribute it.\n"
- "There is NO WARRANTY, to the extent permitted by law.\n\n";
-
-static void print_usage(const char *app)
-{
- printf("Usage: %s\n", app);
-}
-
-static void print_help()
-{
- int options = 0xff;
- struct l23_app_info *app = l23_app_info();
-
- if (app && app->cfg_supported != 0)
- options = app->cfg_supported();
-
- printf(" Some help...\n");
- printf(" -h --help this text\n");
- printf(" -s --socket /tmp/osmocom_l2. Path to the unix "
- "domain socket (l2)\n");
-
- if (options & L23_OPT_SAP)
- printf(" -S --sap /tmp/osmocom_sap. Path to the "
- "unix domain socket (BTSAP)\n");
-
- if (options & L23_OPT_ARFCN)
- printf(" -a --arfcn NR The ARFCN to be used for layer2.\n");
-
- if (options & L23_OPT_TAP)
- printf(" -i --gsmtap-ip The destination IP used for GSMTAP.\n");
-
- if (options & L23_OPT_VTY)
- printf(" -v --vty-port The VTY port number to telnet "
- "to. (default %u)\n", vty_port);
-
- if (options & L23_OPT_DBG)
- printf(" -d --debug Change debug flags.\n");
-
- if (app && app->cfg_print_help)
- app->cfg_print_help();
-}
-
-static void build_config(char **opt, struct option **option)
-{
- struct l23_app_info *app;
- struct option *app_opp = NULL;
- int app_len = 0, len;
-
- static struct option long_options[] = {
- {"help", 0, 0, 'h'},
- {"socket", 1, 0, 's'},
- {"sap", 1, 0, 'S'},
- {"arfcn", 1, 0, 'a'},
- {"gsmtap-ip", 1, 0, 'i'},
- {"vty-port", 1, 0, 'v'},
- {"debug", 1, 0, 'd'},
- };
-
-
- app = l23_app_info();
- *opt = talloc_asprintf(l23_ctx, "hs:S:a:i:v:d:%s",
- app && app->getopt_string ? app->getopt_string : "");
-
- len = ARRAY_SIZE(long_options);
- if (app && app->cfg_getopt_opt)
- app_len = app->cfg_getopt_opt(&app_opp);
-
- *option = talloc_zero_array(l23_ctx, struct option, len + app_len + 1);
- memcpy(*option, long_options, sizeof(long_options));
- memcpy(*option + len, app_opp, app_len * sizeof(struct option));
-}
-
-static void handle_options(int argc, char **argv)
-{
- struct l23_app_info *app = l23_app_info();
- struct option *long_options;
- char *opt;
-
- build_config(&opt, &long_options);
-
- while (1) {
- int option_index = 0, c;
-
- c = getopt_long(argc, argv, opt,
- long_options, &option_index);
- if (c == -1)
- break;
-
- switch (c) {
- case 'h':
- print_usage(argv[0]);
- print_help();
- exit(0);
- break;
- case 's':
- layer2_socket_path = talloc_strdup(l23_ctx, optarg);
- break;
- case 'S':
- sap_socket_path = talloc_strdup(l23_ctx, optarg);
- break;
- case 'a':
- ms->test_arfcn = atoi(optarg);
- break;
- case 'i':
- gsmtap_ip = optarg;
- break;
- case 'v':
- vty_port = atoi(optarg);
- break;
- case 'd':
- log_parse_category_mask(stderr_target, optarg);
- break;
- default:
- if (app && app->cfg_handle_opt)
- app->cfg_handle_opt(c, optarg);
- break;
- }
- }
-
- talloc_free(opt);
- talloc_free(long_options);
-}
-
-void sighandler(int sigset)
-{
- int rc = 0;
-
- if (sigset == SIGHUP || sigset == SIGPIPE)
- return;
-
- fprintf(stderr, "Signal %d recevied.\n", sigset);
- if (l23_app_exit)
- rc = l23_app_exit(ms);
-
- if (rc != -EBUSY)
- exit (0);
-}
-
-static void print_copyright()
-{
- struct l23_app_info *app;
- app = l23_app_info();
- printf(openbsc_copyright,
- app && app->copyright ? app->copyright : "",
- app && app->contribution ? app->contribution : "");
-}
-
-int main(int argc, char **argv)
-{
- int rc;
-
- INIT_LLIST_HEAD(&ms_list);
- log_init(&log_info, NULL);
- stderr_target = log_target_create_stderr();
- log_add_target(stderr_target);
- log_set_all_filter(stderr_target, 1);
-
- l23_ctx = talloc_named_const(NULL, 1, "layer2 context");
-
- ms = talloc_zero(l23_ctx, struct osmocom_ms);
- if (!ms) {
- fprintf(stderr, "Failed to allocate MS\n");
- exit(1);
- }
-
- print_copyright();
-
- llist_add_tail(&ms->entity, &ms_list);
-
- sprintf(ms->name, "1");
-
- ms->test_arfcn = 871;
-
- handle_options(argc, argv);
-
- rc = layer2_open(ms, layer2_socket_path);
- if (rc < 0) {
- fprintf(stderr, "Failed during layer2_open()\n");
- exit(1);
- }
-
- rc = sap_open(ms, sap_socket_path);
- if (rc < 0)
- fprintf(stderr, "Failed during sap_open(), no SIM reader\n");
-
- ms->lapdm_channel.lapdm_dcch.l1_ctx = ms;
- ms->lapdm_channel.lapdm_dcch.l3_ctx = ms;
- ms->lapdm_channel.lapdm_acch.l1_ctx = ms;
- ms->lapdm_channel.lapdm_acch.l3_ctx = ms;
- lapdm_channel_init(&ms->lapdm_channel, LAPDM_MODE_MS);
- lapdm_channel_set_l1(&ms->lapdm_channel, l1ctl_ph_prim_cb, ms);
-
- rc = l23_app_init(ms);
- if (rc < 0)
- exit(1);
-
- if (gsmtap_ip) {
- gsmtap_inst = gsmtap_source_init(gsmtap_ip, GSMTAP_UDP_PORT, 1);
- if (!gsmtap_inst) {
- fprintf(stderr, "Failed during gsmtap_init()\n");
- exit(1);
- }
- gsmtap_source_add_sink(gsmtap_inst);
- }
-
- signal(SIGINT, sighandler);
- signal(SIGHUP, sighandler);
- signal(SIGTERM, sighandler);
- signal(SIGPIPE, sighandler);
-
- while (!quit) {
- if (l23_app_work)
- l23_app_work(ms);
- osmo_select_main(0);
- }
-
- return 0;
-}
diff --git a/Src/osmoconbb/src/host/layer23/src/common/networks.c b/Src/osmoconbb/src/host/layer23/src/common/networks.c
deleted file mode 100644
index 63221f0..0000000
--- a/Src/osmoconbb/src/host/layer23/src/common/networks.c
+++ /dev/null
@@ -1,1986 +0,0 @@
-#include <string.h>
-#include <stdint.h>
-#include <stdio.h>
-
-#include <osmocom/bb/common/networks.h>
-
-/* list of networks */
-
-struct gsm_networks gsm_networks[] = {
- { 0x001, -1, "Test" },
- { 0x001, 0x01f, "Test" },
- { 0x412, -1, "Afghanistan" },
- { 0x412, 0x01f, "AWCC" },
- { 0x412, 0x20f, "Roshan" },
- { 0x412, 0x30f, "New1" },
- { 0x412, 0x40f, "Areeba" },
- { 0x412, 0x50f, "Etisalat" }, /* ? */
- { 0x412, 0x88f, "Afghan Telecom" },
- { 0x276, -1, "Albania" },
- { 0x276, 0x01f, "AMC" },
- { 0x276, 0x02f, "Vodafone" },
- { 0x276, 0x03f, "Eagle Mobile" },
- { 0x276, 0x04f, "Mobile 4 AL" },
- { 0x603, -1, "Algeria" },
- { 0x603, 0x01f, "Algerie Telecom" },
- { 0x603, 0x02f, "Orascom Telecom Algerie" },
- { 0x603, 0x03f, "Nedjma" }, /* ? */
- { 0x213, -1, "Andorra" },
- { 0x213, 0x03f, "Mobiland" },
- { 0x631, -1, "Angola" },
- { 0x631, 0x02f, "UNITEL" },
- { 0x365, -1, "Anguilla" },
- { 0x365, 0x010, "Weblinks Limited" },
- { 0x365, 0x840, "Cable & Wireless" }, /* ? */
- { 0x344, -1, "Antigua and Barbuda" },
- { 0x344, 0x030, "APUA PCS" },
- { 0x338, 0x050, "Digicel" }, /* ? */
- { 0x344, 0x920, "Cable & Wireless (Antigua)" },
- { 0x344, 0x930, "AT&T Wireless (Antigua)" },
- { 0x722, -1, "Argentina" },
- { 0x722, 0x010, "Companie de Radiocomunicatciones Moviles S.A." },
- { 0x722, 0x020, "Nextel Argentina srl" },
- { 0x722, 0x070, "Telefonica Communicationes Personales S.A." },
- { 0x722, 0x310, "CTI PCS S.A" },
- { 0x722, 0x320, "Compania de Telefonos del Interior Norte S.A." },
- { 0x722, 0x330, "Companie de Telefonos del Interior S.A." },
- { 0x722, 0x340, "Personal" }, /* ? */
- { 0x722, 0x341, "Telecom Personal S.A." },
- { 0x722, 0x350, "Hutchinson (PORT HABLE)" }, /* ? */
- { 0x283, -1, "Armenia" },
- { 0x283, 0x01f, "Beeline" },
- { 0x283, 0x05f, "VivaCell-MTS" },
- { 0x283, 0x10f, "Orange" },
- { 0x363, -1, "Aruba" },
- { 0x363, 0x01f, "SETAR" },
- { 0x363, 0x02f, "Digicel" }, /* ? */
- { 0x505, -1, "Australia" },
- { 0x505, 0x01f, "Telstra" },
- { 0x505, 0x02f, "Optus" },
- { 0x505, 0x03f, "Vodafone" },
- { 0x505, 0x04f, "Department of Defence" },
- { 0x505, 0x05f, "Ozitel" },
- { 0x505, 0x06f, "Hutchison 3G"},
- { 0x505, 0x07f, "Vodafone" },
- { 0x505, 0x08f, "One.Tel" },
- { 0x505, 0x09f, "Airnet" },
- { 0x505, 0x10f, "Norfolk Telecom" },
- { 0x505, 0x11f, "Telstra" },
- { 0x505, 0x12f, "3" },
- { 0x505, 0x13f, "Railcorp" },
- { 0x505, 0x14f, "AAPT" },
- { 0x505, 0x15f, "3GIS" },
- { 0x505, 0x16f, "Victorian Rail Track" },
- { 0x505, 0x17f, "Vivid Wireless Pty Ltd" },
- { 0x505, 0x18f, "Pactel International Pty Ltd" },
- { 0x505, 0x19f, "Lycamobile Pty Ltd" },
- { 0x505, 0x21f, "SOUL" }, /* ? */
- { 0x505, 0x24f, "Advanced Communications Technologies Pty. Ltd." },
- { 0x505, 0x38f, "Crazy John's" }, /* ? */
- { 0x505, 0x71f, "Telstra" },
- { 0x505, 0x72f, "Telstra" },
- { 0x505, 0x88f, "Localstar Holding Pty. Ltd." },
- { 0x505, 0x90f, "Optus" },
- { 0x505, 0x99f, "One.Tel" },
- { 0x232, -1, "Austria" },
- { 0x232, 0x01f, "A1" },
- { 0x232, 0x02f, "A1" },
- { 0x232, 0x03f, "T-Mobile" },
- { 0x232, 0x04f, "T-Mobile" },
- { 0x232, 0x05f, "Orange" },
- { 0x232, 0x06f, "Orange" },
- { 0x232, 0x07f, "T-Mobile (tele.ring)" },
- { 0x232, 0x09f, "Mobilkom Austria" },
- { 0x232, 0x10f, "Hutchison 3G Austria" },
- { 0x232, 0x11f, "Mobilkom Austria" },
- { 0x232, 0x12f, "Orange Austria" },
- { 0x232, 0x14f, "Hutchison 3G Austria" },
- { 0x232, 0x15f, "Barablu Mobile Austria" },
- { 0x232, 0x16f, "3" }, /* ? */
- { 0x232, 0x91f, "OBB - Infrastruktur Bau AG" },
- { 0x400, -1, "Azerbaijan" },
- { 0x400, 0x01f, "Azercell" },
- { 0x400, 0x02f, "Bakcell" },
- { 0x400, 0x03f, "Catel JV" },
- { 0x400, 0x04f, "Azerphone LLC" },
- { 0x364, -1, "Bahamas" },
- { 0x364, 0x390, "BaTelCo" },
- { 0x426, -1, "Bahrain" },
- { 0x426, 0x01f, "BHR Mobile Plus" },
- { 0x426, 0x02f, "zain BH" }, /* ? */
- { 0x426, 0x04f, "VIVA" }, /* ? */
- { 0x470, -1, "Bangladesh" },
- { 0x470, 0x01f, "Grameenphone" },
- { 0x470, 0x02f, "Aktel" },
- { 0x470, 0x03f, "Mobile 2000" },
- { 0x470, 0x04f, "TeleTalk" }, /* ? */
- { 0x470, 0x05f, "Citycell" }, /* ? */
- { 0x470, 0x06f, "Warid" }, /* ? */
- { 0x470, 0x07f, "WTBL" }, /* ? */
- { 0x342, -1, "Barbados" },
- { 0x342, 0x600, "Cable & Wireless (Barbados) Ltd." },
- { 0x342, 0x750, "Digicel" }, /* ? */
- { 0x342, 0x820, "Sunbeach Communications" },
- { 0x257, -1, "Belarus" },
- { 0x257, 0x01f, "MCD Velcom" },
- { 0x257, 0x02f, "MTS" },
- { 0x257, 0x04f, "life:)" }, /* ? */
- { 0x257, 0x03f, "DIALLOG" }, /* ? */
- { 0x206, -1, "Belgium" },
- { 0x206, 0x01f, "Proximus" },
- { 0x206, 0x02f, "SNCB GSM-R" }, /* ? */
- { 0x206, 0x10f, "Mobistar" },
- { 0x206, 0x20f, "BASE" },
- { 0x702, -1, "Belize" },
- { 0x702, 0x67f, "Belize Telemedia" },
- { 0x702, 0x68f, "International Telecommunications Ltd." },
- { 0x702, 0x00f, "Smart" }, /* ? */
- { 0x616, -1, "Benin" },
- { 0x616, 0x01f, "Libercom" },
- { 0x616, 0x02f, "Telecel" },
- { 0x616, 0x03f, "Spacetel Benin" },
- { 0x616, 0x04f, "BBCOM" }, /* ? */
- { 0x616, 0x05f, "Glo" }, /* ? */
- { 0x350, -1, "Bermuda" },
- { 0x350, 0x01f, "Digicel Bermuda" }, /* ? */
- { 0x350, 0x02f, "Mobility" }, /* ? */
- { 0x338, 0x050, "Digicel Bermuda" }, /* ? */
- { 0x310, 0x00f, "Cellular One" }, /* ? */
- { 0x402, -1, "Bhutan" },
- { 0x402, 0x11f, "Bhutan Telecom Ltd" },
- { 0x402, 0x77f, "B-Mobile" },
- { 0x736, -1, "Bolivia" },
- { 0x736, 0x01f, "Nuevatel" },
- { 0x736, 0x02f, "Entel" },
- { 0x736, 0x03f, "Telecel" },
- { 0x218, -1, "Bosnia and Herzegovina" },
- { 0x218, 0x03f, "HT-ERONET" },
- { 0x218, 0x05f, "MOBI'S" },
- { 0x218, 0x90f, "GSMBIH" },
- { 0x652, -1, "Botswana" },
- { 0x652, 0x01f, "Mascom" },
- { 0x652, 0x02f, "Orange" },
- { 0x652, 0x04f, "BTC Mobile" },
- { 0x724, -1, "Brazil" },
- { 0x724, 0x00f, "Telet" },
- { 0x724, 0x01f, "CRT Cellular" },
- { 0x724, 0x02f, "TIM" },
- { 0x724, 0x03f, "TIM" },
- { 0x724, 0x04f, "TIM" },
- { 0x724, 0x05f, "Claro" },
- { 0x724, 0x06f, "Vivo" },
- { 0x724, 0x07f, "CTBC Celular" },
- { 0x724, 0x08f, "TIM" },
- { 0x724, 0x10f, "Vivo" },
- { 0x724, 0x11f, "Vivo" },
- { 0x724, 0x15f, "Sercomtel" },
- { 0x724, 0x16f, "Oi / Brasil Telecom" },
- { 0x724, 0x23f, "Vivo" },
- { 0x724, 0x24f, "Oi / Amazonia Celular" },
- { 0x724, 0x31f, "Oi" },
- { 0x724, 0x32f, "CTBC Celular" },
- { 0x724, 0x33f, "CTBC Celular" },
- { 0x724, 0x34f, "CTBC Celular" },
- { 0x724, 0x35f, "TIM" },
- { 0x724, 0x37f, "aeiou" },
- { 0x724, 0x39f, "TIM" },
- { 0x724, 0x41f, "TIM" },
- { 0x724, 0x43f, "TIM" },
- { 0x724, 0x45f, "TIM" },
- { 0x724, 0x47f, "TIM" },
- { 0x724, 0x48f, "TIM" },
- { 0x724, 0x51f, "TIM" },
- { 0x724, 0x53f, "TIM" },
- { 0x724, 0x55f, "TIM" },
- { 0x724, 0x57f, "TIM" },
- { 0x724, 0x59f, "TIM" },
- { 0x724, 0x00f, "Nextel" },
- { 0x348, -1, "British Virgin Islands" },
- { 0x348, 0x170, "Cable & Wireless" },
- { 0x348, 0x370, "BVI Cable TV Ltd" },
- { 0x348, 0x570, "CCT Boatphone" },
- { 0x348, 0x770, "Digicel (BVI) Ltd" },
- { 0x528, -1, "Brunei" },
- { 0x528, 0x01f, "Jabatan Telekom" }, /* ? */
- { 0x528, 0x02f, "B-Mobile" }, /* ? */
- { 0x528, 0x11f, "DSTCom" },
- { 0x284, -1, "Bulgaria" },
- { 0x284, 0x01f, "M-Tel" },
- { 0x284, 0x03f, "Vivacom" }, /* ? */
- { 0x284, 0x05f, "GLOBUL" },
- { 0x613, -1, "Burkina Faso" },
- { 0x613, 0x01f, "Onatel" }, /* ? */
- { 0x613, 0x02f, "Celtel / Zain" },
- { 0x613, 0x03f, "Telecel Faso" },
- { 0x642, -1, "Burundi" },
- { 0x642, 0x01f, "Econet / Spacetel" },
- { 0x642, 0x02f, "Africell" },
- { 0x642, 0x03f, "Onamob" },
- { 0x642, 0x07f, "Lacell" },
- { 0x642, 0x08f, "Hits" },
- { 0x642, 0x82f, "U.COM / Onatel" },
- { 0x456, -1, "Cambodia" },
- { 0x456, 0x01f, "Mobitel" },
- { 0x456, 0x02f, "hello" },
- { 0x456, 0x03f, "S Telecom" },
- { 0x456, 0x04f, "Cadcomms / qb" },
- { 0x456, 0x05f, "Star-Cell" },
- { 0x456, 0x06f, "Smart" },
- { 0x456, 0x08f, "Viettel" },
- { 0x456, 0x18f, "Mfone" },
-// { 0x456, ?, "Excell" }, /* ? */
- { 0x456, 0x09f, "Beeline" }, /* ? */
- { 0x456, 0x08f, "Metfone" }, /* ? */
- { 0x624, -1, "Cameroon" },
- { 0x624, 0x01f, "MTN Cameroon" },
- { 0x624, 0x02f, "Orange" },
- { 0x302, -1, "Canada" },
- { 0x302, 0x220, "Telus" },
- { 0x302, 0x221, "Telus" },
- { 0x302, 0x290, "Airtel Wireless" },
- { 0x302, 0x350, "FIRST" },
- { 0x302, 0x360, "MiKe" },
- { 0x302, 0x361, "Telus" },
- { 0x302, 0x370, "Fido" },
- { 0x302, 0x380, "DMTS" },
- { 0x302, 0x490, "WIND Mobile" },
- { 0x302, 0x500, "Videotron" },
- { 0x302, 0x510, "Videotron" },
- { 0x302, 0x610, "Bell" },
- { 0x302, 0x620, "ICE Wireless" },
- { 0x302, 0x640, "Bell" },
- { 0x302, 0x651, "Bell" },
- { 0x302, 0x652, "BC Tel Mobility (Telus)" },
- { 0x302, 0x653, "Telus" },
- { 0x302, 0x655, "MTS" },
- { 0x302, 0x656, "TBay" },
- { 0x302, 0x657, "Telus" },
- { 0x302, 0x680, "SaskTel" },
- { 0x302, 0x701, "MB Tel Mobility" },
- { 0x302, 0x702, "MT&T Mobility (Aliant)" },
- { 0x302, 0x703, "New Tel Mobility (Aliant)" },
- { 0x302, 0x710, "Globalstar" },
- { 0x302, 0x720, "Rogers Wireless" },
- { 0x302, 0x780, "SaskTel" },
- { 0x302, 0x880, "Bell / Telus" },
- { 0x625, -1, "Cape Verde" },
- { 0x625, 0x01f, "CVMOVEL" },
- { 0x625, 0x02f, "T+" },
- { 0x346, -1, "Cayman Islands" },
- { 0x346, 0x140, "Cable & Wireless" },
- { 0x338, 0x050, "Digicel" }, /* ? */
- { 0x623, -1, "Central African Republic" },
- { 0x623, 0x01f, "CTP" },
- { 0x623, 0x02f, "TC" },
- { 0x623, 0x03f, "Celca / Socatel / Orange" },
- { 0x623, 0x04f, "Nationlink" }, /* ? */
- { 0x622, -1, "Chad" },
- { 0x622, 0x01f, "Celtel / Zain" },
- { 0x622, 0x02f, "Tchad Mobile" },
- { 0x622, 0x03f, "TIGO - Millicom" }, /* ? */
- { 0x622, 0x02f, "TAWALI" }, /* ? */
- { 0x622, 0x04f, "Salam" }, /* ? */
- { 0x730, -1, "Chile" },
- { 0x730, 0x01f, "Entel" },
- { 0x730, 0x02f, "movistar" },
- { 0x730, 0x03f, "Smartcom / Claro" },
- { 0x730, 0x04f, "Centennial Cayman Corp / Nextel" },
- { 0x730, 0x05f, "Multikom S.A." },
- { 0x730, 0x06f, "Blue Two Chile S.A." },
- { 0x730, 0x07f, "Telefonica" },
- { 0x730, 0x10f, "Entel" },
- { 0x730, 0x99f, "WILL" }, /* ? */
- { 0x460, -1, "China" },
- { 0x460, 0x00f, "China Mobile" },
- { 0x460, 0x01f, "China Unicom" },
- { 0x460, 0x02f, "China Mobile" },
- { 0x460, 0x03f, "China Unicom CMDA" },
- { 0x460, 0x04f, "China Satellite Global Star Network" },
- { 0x460, 0x05f, "China Telecom" }, /* ? */
- { 0x460, 0x06f, "China Unicom" }, /* ? */
- { 0x460, 0x20f, "China TIETONG" }, /* ? */
- { 0x732, -1, "Colombia" },
- { 0x732, 0x001, "Colombia Telecomunicaciones S.A." },
- { 0x732, 0x002, "Edatel" },
- { 0x732, 0x020, "Emtelsa" },
- { 0x732, 0x099, "Emcali" },
- { 0x732, 0x101, "Comcel" },
- { 0x732, 0x102, "Bellsouth / movistar" },
- { 0x732, 0x103, "Colombia Movil / Tigo" },
- { 0x732, 0x111, "Colombia Movil / Tigo" },
- { 0x732, 0x123, "movistar" },
- { 0x732, 0x12f, "movistar" }, /* ? */
- { 0x732, 0x130, "Avantel" },
- { 0x654, -1, "Comoros" },
- { 0x654, 0x01f, "HURI - SNPT" },
- { 0x629, -1, "Republic of the Congo" },
- { 0x629, 0x01f, "Celtel / Zain" },
- { 0x629, 0x10f, "Libertis Telecom" },
-// { 0x629, ?, "Warid Telecom" },
- { 0x548, -1, "Cook Islands" },
- { 0x548, 0x01f, "Telecom Cook" },
- { 0x712, -1, "Costa Rica" },
- { 0x712, 0x01f, "ICE" },
- { 0x712, 0x02f, "ICE" }, /* ? */
- { 0x712, 0x03f, "ICE" }, /* ? */
- { 0x219, -1, "Croatia" },
- { 0x219, 0x01f, "T-Mobile" },
- { 0x219, 0x02f, "Tele2" },
- { 0x219, 0x10f, "VIPnet" },
- { 0x368, -1, "Cuba" },
- { 0x368, 0x01f, "ETECSA" },
- { 0x280, -1, "Cyprus" },
- { 0x280, 0x01f, "Cytamobile-Vodafone" },
- { 0x280, 0x10f, "Scanacom / MTN" },
- { 0x230, -1, "Czech Republic" },
- { 0x230, 0x01f, "T-Mobile" },
- { 0x230, 0x02f, "O2" },
- { 0x230, 0x03f, "Vodafone" },
- { 0x230, 0x04f, "Mobilkom / U:fon" },
- { 0x230, 0x98f, "SZDC s.o." },
- { 0x230, 0x99f, "Vodafone" },
- { 0x630, -1, "Democratic Republic of the Congo" },
- { 0x630, 0x01f, "Vodacom" },
- { 0x630, 0x02f, "Zain" }, /* ? */
- { 0x630, 0x04f, "Cellco" }, /* ? */
- { 0x630, 0x05f, "Supercell" },
- { 0x630, 0x86f, "CCT" },
- { 0x630, 0x89f, "SAIT Telecom" }, /* ? */
-// { 0x630, ?, "Africell" },
- { 0x238, -1, "Denmark" },
- { 0x238, 0x01f, "TDC" },
- { 0x238, 0x02f, "Sonofon / Telenor" },
- { 0x238, 0x03f, "MIGway A/S" },
- { 0x238, 0x05f, "ApS KBUS" },
- { 0x238, 0x06f, "Hi3G" },
- { 0x238, 0x07f, "Lycamobile / Barablu Mobile" },
- { 0x238, 0x09f, "Dansk Beredskabskommunikation A/S" }, /* ? */
- { 0x238, 0x10f, "TDC" },
- { 0x238, 0x11f, "Dansk Beredskabskommunikation A/S" }, /* ? */
- { 0x238, 0x12f, "Lycamobile Denmark Ltd" },
- { 0x238, 0x20f, "Telia" },
- { 0x238, 0x30f, "Telia" },
- { 0x238, 0x40f, "Ericsson Danmark A/S" }, /* ? */
- { 0x238, 0x77f, "Tele2 / Telenor" },
- { 0x638, -1, "Djibouti" },
- { 0x638, 0x01f, "Evatis" },
- { 0x366, -1, "Dominica" },
- { 0x366, 0x020, "Digicel" }, /* ? */
- { 0x366, 0x110, "Cable & Wireless" }, /* ? */
- { 0x370, -1, "Dominican Republic" },
- { 0x370, 0x01f, "Orange" },
- { 0x370, 0x02f, "Verizon / Claro" },
- { 0x370, 0x03f, "Tricom" },
- { 0x370, 0x04f, "CentennialDominicana / Viva" },
- { 0x514, -1, "East Timor" },
- { 0x514, 0x02f, "Timor Telecom" }, /* ? */
- { 0x740, -1, "Ecuador" },
- { 0x740, 0x00f, "Otecel / Bellsouth / Movistar" },
- { 0x740, 0x01f, "Porta GSM" },
- { 0x740, 0x02f, "Telecsa / Alegro" },
- { 0x602, -1, "Egypt" },
- { 0x602, 0x01f, "Mobinil" },
- { 0x602, 0x02f, "Vodafone" },
- { 0x602, 0x03f, "Etisalat" },
- { 0x706, -1, "El Salvador" },
- { 0x706, 0x01f, "CTE Telecom Personal" },
- { 0x706, 0x02f, "digicel" },
- { 0x706, 0x03f, "Telemovil EL Salvador" },
- { 0x706, 0x04f, "movistar" }, /* ? */
- { 0x706, 0x10f, "Claro" }, /* ? */
- { 0x627, -1, "Equatorial Guinea" },
- { 0x627, 0x01f, "Orange GQ" },
- { 0x627, 0x03f, "Hits GQ" },
- { 0x657, -1, "Eritrea" },
- { 0x657, 0x01f, "Eritel" }, /* ? */
- { 0x248, -1, "Estonia" },
- { 0x248, 0x01f, "EMT" },
- { 0x248, 0x02f, "RLE / Elisa" },
- { 0x248, 0x03f, "Tele 2" },
- { 0x248, 0x04f, "OY Top Connect" },
- { 0x248, 0x05f, "AS Bravocom Mobiil" },
- { 0x248, 0x06f, "Pro Group Holding / ViaTel" },
- { 0x248, 0x07f, "Televorgu AS" },
- { 0x248, 0x71f, "Siseministeerium" },
- { 0x636, -1, "Ethiopia" },
- { 0x636, 0x01f, "ETMTN" },
- { 0x750, -1, "Falkland Islands (Malvinas)" },
- { 0x750, 0x001, "Touch" },
- { 0x288, -1, "Faroe Islands" },
- { 0x288, 0x01f, "Faroese Telecom" },
- { 0x288, 0x02f, "Kall / Vodafone" },
- { 0x274, 0x02f, "P/F Kall" },
- { 0x542, -1, "Fiji" },
- { 0x542, 0x01f, "Vodafone" },
- { 0x542, 0x02f, "Digicel" },
- { 0x542, 0x03f, "Telecom Fiji" },
- { 0x244, -1, "Finland" },
- { 0x244, 0x03f, "DNA" }, /* ? */
- { 0x244, 0x04f, "Finnet" },
- { 0x244, 0x05f, "Elisa" },
- { 0x244, 0x07f, "Nokia" },
- { 0x244, 0x08f, "Unknown" },
- { 0x244, 0x09f, "Finnet Group" },
- { 0x244, 0x10f, "TDC Oy" },
- { 0x244, 0x12f, "Finnet Networks / DNA" },
- { 0x244, 0x14f, "AMT" },
- { 0x244, 0x16f, "Oy Finland Tele2" },
- { 0x244, 0x21f, "Saunalahti" },
- { 0x244, 0x29f, "Scnl Truphone" }, /* ? */
- { 0x244, 0x91f, "Sonera" },
- { 0x208, -1, "France" },
- { 0x208, 0x00f, "Orange" }, /* ? */
- { 0x208, 0x01f, "Orange" },
- { 0x208, 0x02f, "Orange" },
- { 0x208, 0x05f, "Globalstar Europe" },
- { 0x208, 0x06f, "Globalstar Europe" },
- { 0x208, 0x07f, "Globalstar Europe" },
- { 0x208, 0x10f, "SFR" },
- { 0x208, 0x11f, "SFR" },
- { 0x208, 0x13f, "SFR" }, /* ? */
- { 0x208, 0x20f, "Bouygues" },
- { 0x208, 0x21f, "Bouygues" },
- { 0x208, 0x22f, "Transatel Mobile" },
- { 0x208, 0x88f, "Bouygues" },
- { 0x628, -1, "Gabon" },
- { 0x628, 0x01f, "Libertis" },
- { 0x628, 0x02f, "Moov (Telecel) Gabon S.A." },
- { 0x628, 0x03f, "Celtel / Zain" },
- { 0x628, 0x04f, "USAN Gabon" },
- { 0x607, -1, "Gambia" },
- { 0x607, 0x01f, "Gamcel" },
- { 0x607, 0x02f, "Africel" },
- { 0x607, 0x03f, "Comium" },
- { 0x607, 0x04f, "QCell" }, /* ? */
- { 0x282, -1, "Georgia" },
- { 0x282, 0x01f, "Geocell" },
- { 0x282, 0x02f, "MagtiCom" },
- { 0x282, 0x03f, "Iberiatel" },
- { 0x282, 0x04f, "Beeline" },
- { 0x282, 0x05f, "Silknet JSC" },
- { 0x289, 0x67f, "Aquafon" }, /* ? */
- { 0x289, 0x88f, "A-Mobile" }, /* ? */
- { 0x262, -1, "Germany" },
- { 0x262, 0x01f, "T-Mobile" },
- { 0x262, 0x02f, "Vodafone" },
- { 0x262, 0x03f, "E-Plus" },
- { 0x262, 0x04f, "Vodafone" },
- { 0x262, 0x05f, "E-Plus" },
- { 0x262, 0x06f, "T-Mobile" },
- { 0x262, 0x07f, "O2" },
- { 0x262, 0x08f, "O2" },
- { 0x262, 0x09f, "Vodafone" },
- { 0x262, 0x10f, "DB Systel GSM-R" },
- { 0x262, 0x11f, "O2" },
- { 0x262, 0x12f, "Dolphin Telecom" },
- { 0x262, 0x13f, "Mobilcom Multimedia" },
- { 0x262, 0x14f, "Group 3G UMTS" },
- { 0x262, 0x15f, "Airdata" },
- { 0x262, 0x16f, "Vistream" }, /* ? */
- { 0x262, 0x42f, "OpenBSC" }, /* ? */
- { 0x262, 0x60f, "DB Telematik" },
- { 0x262, 0x76f, "Siemens AG" },
- { 0x262, 0x77f, "E-Plus" },
- { 0x262, 0x901, "Debitel" }, /* ? */
- { 0x620, -1, "Ghana" },
- { 0x620, 0x01f, "Spacefon / MTN" },
- { 0x620, 0x02f, "Ghana Telecom Mobile / Vodafone" },
- { 0x620, 0x03f, "Mobiltel / tiGO" },
- { 0x620, 0x04f, "Kasapa / Hutchison Telecom" },
- { 0x620, 0x06f, "Zain" }, /* ? */
- { 0x620, 0x10f, "Netafriques" }, /* ? */
- { 0x266, -1, "Gibraltar" },
- { 0x266, 0x01f, "GibTel" },
- { 0x266, 0x06f, "CTS Mobile" },
- { 0x266, 0x09f, "Cloud9 Mobile Communications" },
- { 0x202, -1, "Greece" },
- { 0x202, 0x01f, "Cosmote" },
- { 0x202, 0x05f, "Vodafone" },
- { 0x202, 0x09f, "Infoquest / Wind" },
- { 0x202, 0x10f, "Wind" },
- { 0x290, -1, "Greenland" },
- { 0x290, 0x01f, "TELE Greenland A/S" },
- { 0x352, -1, "Grenada" },
- { 0x352, 0x030, "Digicel" },
- { 0x352, 0x110, "Cable & Wireless" },
- { 0x340, -1, "Guadeloupe" },
- { 0x340, 0x01f, "Orange" },
- { 0x340, 0x02f, "Outremer" },
- { 0x340, 0x03f, "Telcell" },
- { 0x340, 0x08f, "MIO GSM" },
- { 0x340, 0x10f, "Guadeloupe Telephone Mobile" },
- { 0x340, 0x20f, "Digicel" },
- { 0x310, -1, "United States of America" },
- { 0x310, 0x010, "Verizon Wireless" },
- { 0x310, 0x012, "Verizon Wireless" },
- { 0x310, 0x013, "Verizon Wireless" },
- { 0x310, 0x016, "Cricket Communications" },
- { 0x310, 0x017, "North Sight Communications Inc." },
- { 0x310, 0x020, "Union Telephone Company" },
- { 0x310, 0x030, "Centennial Communications" },
- { 0x310, 0x035, "ETEX Communications dba ETEX Wireless" },
- { 0x310, 0x040, "MTA Communications dba MTA Wireless" },
- { 0x310, 0x050, "ACS Wireless Inc." },
- { 0x310, 0x060, "Consolidated Telecom" },
- { 0x310, 0x070, "Cingular Wireless" },
- { 0x310, 0x080, "Corr Wireless Communications LLC" },
- { 0x310, 0x090, "Cingular Wireless" },
- { 0x310, 0x100, "New Mexicu RSA 4 East Ltd. Partnership" },
- { 0x310, 0x110, "Pacific Telecom Inc." },
- { 0x310, 0x130, "Carolina West Wireless" },
- { 0x310, 0x140, "GTA Wireless LLC" },
- { 0x310, 0x150, "Cingular Wireless" },
- { 0x310, 0x160, "T-Mobile USA" },
- { 0x310, 0x170, "Cingular Wireless" },
- { 0x310, 0x180, "West Central Wireless" },
- { 0x310, 0x190, "Alaska Wireless Communications LLC" },
- { 0x310, 0x200, "T-Mobile USA" },
- { 0x310, 0x210, "T-Mobile USA" },
- { 0x310, 0x220, "T-Mobile USA" },
- { 0x310, 0x230, "T-Mobile USA" },
- { 0x310, 0x240, "T-Mobile USA" },
- { 0x310, 0x250, "T-Mobile USA" },
- { 0x310, 0x260, "T-Mobile USA" },
- { 0x310, 0x270, "T-Mobile USA" },
- { 0x310, 0x280, "Contennial Puerto Rio License Corp." },
- { 0x310, 0x290, "Nep Cellcorp Inc." },
- { 0x310, 0x300, "Blanca Telephone Company" },
- { 0x310, 0x310, "T-Mobile USA" },
- { 0x310, 0x320, "Simth Bagley Inc, dba Cellular One" },
- { 0x310, 0x340, "High Plains Midwest LLC, dba Wetlink Communications" },
- { 0x310, 0x350, "Mohave Cellular L.P." },
- { 0x310, 0x360, "Cellular Network Partnership dba Pioneer Cellular" },
- { 0x310, 0x370, "Guamcell Cellular and Paging" },
- { 0x310, 0x380, "New Cingular Wireless PCS, LLC" },
- { 0x310, 0x390, "TX-11 Acquisition LLC" },
- { 0x310, 0x400, "Wave Runner LLC" },
- { 0x310, 0x410, "Cingular Wireless" },
- { 0x310, 0x420, "Cincinnati Bell Wireless LLC" },
- { 0x310, 0x430, "Alaska Digital LLC" },
- { 0x310, 0x440, "Numerex Corp" },
- { 0x310, 0x450, "North East Cellular Inc" },
- { 0x310, 0x460, "TMP Corporation" },
- { 0x310, 0x470, "nTELOS Communications Inc" },
- { 0x310, 0x480, "Choice Phone LLC" },
- { 0x310, 0x490, "T-Mobile USA" },
- { 0x310, 0x500, "Public Service Cellular, Inc." },
- { 0x310, 0x520, "Transactions Network Services" },
- { 0x310, 0x530, "Iowa Wireless Services LLC" },
- { 0x310, 0x540, "Oklahoma Western Telephone Company" },
- { 0x310, 0x550, "Wireless Solutions International" },
- { 0x310, 0x560, "Cingular Wireless" },
- { 0x310, 0x570, "MTPCS LLC" },
- { 0x310, 0x580, "Inland Celluar Telephone Company" },
- { 0x310, 0x590, "Western Wireless Corporation" },
- { 0x310, 0x600, "New Cell Inc. dba Cellcom" },
- { 0x310, 0x610, "Elkhart Telephone Co. Inc. dba Epic Touch Co." },
- { 0x310, 0x620, "Coleman County Telecommunications Inc. (Trans Texas PCS)" },
- { 0x310, 0x640, "Airadigm Communications" },
- { 0x310, 0x650, "Jasper Wireless Inc." },
- { 0x310, 0x660, "T-Mobile USA" },
- { 0x310, 0x670, "AT&T Mobility Vanguard Services" },
- { 0x310, 0x680, "Cingular Wireless" },
- { 0x310, 0x690, "Keystane Wireless LLC" },
- { 0x310, 0x700, "Cross Valiant Cellular Partnership" },
- { 0x310, 0x710, "Arctic Slope Telephone Association Cooperative" },
- { 0x310, 0x720, "Wireless Solutions International Inc." },
- { 0x310, 0x730, "US Cellular" },
- { 0x310, 0x740, "Convey Communications Inc" },
- { 0x310, 0x750, "East Kentucky Network LLC dba Appalachian Wireless" },
- { 0x310, 0x760, "Lynch 3G Communcations Corporation" },
- { 0x310, 0x770, "Iowa Wireless Services LLC dba I Wireless" },
- { 0x310, 0x780, "Connect Net Inc" },
- { 0x310, 0x790, "PinPoint Communications Inc."},
- { 0x310, 0x800, "T-Mobile USA" },
- { 0x310, 0x810, "LCFR LLC" },
- { 0x310, 0x820, "South Canaan Cellular Communications Co. LP" },
- { 0x310, 0x830, "Caprock Cellular Ltd. Partnership" },
- { 0x310, 0x840, "Telecom North America Mobile Inc" },
- { 0x310, 0x850, "Aeris Communications Inc." },
- { 0x310, 0x860, "TX RSA 15B2, LP dba Five Star Wireless" },
- { 0x310, 0x870, "Kaplan Telephone Company, Inc" },
- { 0x310, 0x890, "Rural Cellular Corporation" },
- { 0x310, 0x900, "Cable & Communications Corporation dba Mid-Rivers Wireless" },
- { 0x310, 0x910, "Verizon Wireless" },
- { 0x310, 0x930, "Copper Valley Wireless" },
- { 0x310, 0x940, "Iris Wireless LLC" },
- { 0x310, 0x950, "Texas RSA 1 dba XIT Wireless" },
- { 0x310, 0x960, "UBET Wireless" },
- { 0x310, 0x970, "Globalstar USA" },
- { 0x310, 0x980, "Texas RSA 7B3 dba Peoples Wireless Services" },
- { 0x310, 0x99, "Worldcall Interconnect" },
-
- { 0x704, -1, "Guatemala" },
- { 0x704, 0x01f, "Claro" },
- { 0x704, 0x02f, "Comcel / Tigo" },
- { 0x704, 0x03f, "movistar" },
-// { 0x704, ?, "digicel" },
- { 0x234, -1, "Guernsey" },
- { 0x234, 0x55f, "Sure Mobile" },
- { 0x234, 0x50f, "Wave Telecom" },
- { 0x234, 0x03f, "Airtel Vodafone" },
- { 0x611, -1, "Guinea" },
- { 0x611, 0x01f, "Orange / Spacetel" },
- { 0x611, 0x02f, "Sotelgui / Lagui" },
- { 0x611, 0x03f, "Telecel Guinee" }, /* ? */
- { 0x611, 0x04f, "MTN" }, /* ? */
- { 0x611, 0x05f, "Cellcom Guinee" },
- { 0x632, -1, "Guinea-Bissau" },
- { 0x632, 0x01f, "Guinetel" },
- { 0x632, 0x02f, "Spacetel / Areeba" },
- { 0x632, 0x03f, "Orange" },
- { 0x738, -1, "Guyana" },
- { 0x738, 0x01f, "Digicel" },
- { 0x738, 0x02f, "GT&T Cellink Plus" }, /* ? */
- { 0x372, -1, "Haiti" },
- { 0x372, 0x01f, "Comcel / Voila" },
- { 0x338, 0x050, "Digicel" },
- { 0x338, 0x03f, "Rectel" },
- { 0x708, -1, "Honduras" },
- { 0x708, 0x01f, "Claro" },
- { 0x708, 0x02f, "Celtel / Tigo" },
- { 0x708, 0x30f, "Hondutel" }, /* ? */
- { 0x708, 0x40f, "DIGICEL" },
- { 0x454, -1, "Hong Kong" },
- { 0x454, 0x00f, "1O1O and One2Free" },
- { 0x454, 0x01f, "CITIC Telecom 1616" },
- { 0x454, 0x02f, "CSL Limited" },
- { 0x454, 0x03f, "3 (3G)" },
- { 0x454, 0x04f, "3 DualBand (2G)" },
- { 0x454, 0x05f, "3 CDMA" },
- { 0x454, 0x06f, "SmarTone-Vodafone" },
- { 0x454, 0x07f, "China Unicom (Hong Kong) Limited" },
- { 0x454, 0x08f, "Trident" },
- { 0x454, 0x09f, "China Motion Telecom" },
- { 0x454, 0x10f, "New World Mobility" },
- { 0x454, 0x11f, "China-Hongkong Telecom" },
- { 0x454, 0x12f, "CMCC HK" },
- { 0x454, 0x14f, "Hutchison Telecom" },
- { 0x454, 0x15f, "SmarTone Mobile Communications Limited" },
- { 0x454, 0x16f, "PCCW Mobile (2G)" },
- { 0x454, 0x17f, "SmarTone Mobile Communications Limited" },
- { 0x454, 0x18f, "CSL Limited" },
- { 0x454, 0x19f, "Sunday3G" },
- { 0x454, 0x19f, "PCCW Mobile (3G)" },
- { 0x454, 0x29f, "PCCW Mobile (CDMA)" },
- { 0x216, -1, "Hungary" },
- { 0x216, 0x01f, "Pannon GSM" },
- { 0x216, 0x30f, "Westel 900" },
- { 0x216, 0x70f, "Vodafone" },
- { 0x274, -1, "Iceland" },
- { 0x274, 0x01f, "Siminn" },
- { 0x274, 0x02f, "Vodafone" },
- { 0x274, 0x03f, "Vodafone" },
- { 0x274, 0x04f, "IMC Viking" },
- { 0x274, 0x06f, "N?ll n?u ehf" }, /* ? */
- { 0x274, 0x07f, "IceCell" },
- { 0x274, 0x08f, "On-waves" },
- { 0x274, 0x11f, "Nova" },
- /* FIXME: update the list from here below */
- { 0x404, -1, "India" },
- { 0x404, 0x01f, "Vodafone IN" },
- { 0x404, 0x02f, "AirTel" },
- { 0x404, 0x04f, "IDEA" },
- { 0x404, 0x05f, "Vodafone IN" },
- { 0x404, 0x07f, "IDEA" },
- { 0x404, 0x09f, "Reliance" },
- { 0x404, 0x10f, "AirTel" },
- { 0x404, 0x11f, "Vodafone IN" },
- { 0x404, 0x12f, "IDEA" },
- { 0x404, 0x13f, "Vodafone IN" },
- { 0x404, 0x14f, "IDEA" },
- { 0x404, 0x15f, "Vodafone IN" },
- { 0x404, 0x17f, "AIRCEL" },
- { 0x404, 0x19f, "IDEA" },
- { 0x404, 0x20f, "Vodafone IN" },
- { 0x404, 0x21f, "Loop Mobile" },
- { 0x404, 0x22f, "IDEA" },
- { 0x404, 0x24f, "IDEA" },
- { 0x404, 0x27f, "Vodafone IN" },
- { 0x404, 0x28f, "AIRCEL" },
- { 0x404, 0x29f, "AIRCEL" },
- { 0x404, 0x30f, "Vodafone IN" },
- { 0x404, 0x31f, "AirTel" },
- { 0x404, 0x34f, "CellOne" },
- { 0x404, 0x36f, "Reliance" },
- { 0x404, 0x37f, "Aircel" },
- { 0x404, 0x38f, "CellOne" },
- { 0x404, 0x41f, "Aircel" },
- { 0x404, 0x42f, "Aircel" },
- { 0x404, 0x44f, "IDEA" },
- { 0x404, 0x45f, "Airtel" },
- { 0x404, 0x51f, "CellOne" },
- { 0x404, 0x52f, "Reliance" },
- { 0x404, 0x53f, "CellOne" },
- { 0x404, 0x54f, "CellOne" },
- { 0x404, 0x55f, "CellOne" },
- { 0x404, 0x56f, "IDEA" },
- { 0x404, 0x57f, "CellOne" },
- { 0x404, 0x58f, "CellOne" },
- { 0x404, 0x59f, "CellOne" },
- { 0x404, 0x60f, "Vodafone IN" },
- { 0x404, 0x62f, "CellOne" },
- { 0x404, 0x64f, "CellOne" },
- { 0x404, 0x66f, "CellOne" },
- { 0x404, 0x67f, "Reliance GSM" },
- { 0x404, 0x68f, "DOLPHIN" },
- { 0x404, 0x69f, "DOLPHIN" },
- { 0x404, 0x72f, "CellOne" },
- { 0x404, 0x74f, "CellOne" },
- { 0x404, 0x76f, "CellOne" },
- { 0x404, 0x78f, "Idea Cellular Ltd" },
- { 0x404, 0x80f, "BSNL MOBILE" },
- { 0x404, 0x81f, "CellOne" },
- { 0x404, 0x82f, "Idea" },
- { 0x404, 0x83f, "Reliance Smart GSM" },
- { 0x404, 0x84f, "Vodafone IN" },
- { 0x404, 0x85f, "Reliance" },
- { 0x404, 0x86f, "Vodafone IN" },
- { 0x404, 0x90f, "AirTel" },
- { 0x404, 0x91f, "AIRCEL" },
- { 0x404, 0x92f, "AirTel" },
- { 0x404, 0x93f, "AirTel" },
- { 0x404, 0x96f, "AirTel" },
- { 0x405, 0x05f, "Reliance" },
- { 0x405, 0x10f, "Reliance" },
- { 0x405, 0x13f, "Reliance" },
- { 0x405, 0x025, "TATA DOCOMO" },
- { 0x405, 0x026, "TATA DOCOMO" },
- { 0x405, 0x027, "TATA DOCOMO" },
- { 0x405, 0x029, "TATA DOCOMO" },
- { 0x405, 0x030, "TATA DOCOMO" },
- { 0x405, 0x031, "TATA DOCOMO" },
- { 0x405, 0x032, "TATA DOCOMO" },
- { 0x405, 0x034, "TATA DOCOMO" },
- { 0x405, 0x035, "TATA DOCOMO" },
- { 0x405, 0x036, "TATA DOCOMO" },
- { 0x405, 0x037, "TATA DOCOMO" },
- { 0x405, 0x038, "TATA DOCOMO" },
- { 0x405, 0x039, "TATA DOCOMO" },
- { 0x405, 0x041, "TATA DOCOMO" },
- { 0x405, 0x042, "TATA DOCOMO" },
- { 0x405, 0x043, "TATA DOCOMO" },
- { 0x405, 0x044, "TATA DOCOMO" },
- { 0x405, 0x045, "TATA DOCOMO" },
- { 0x405, 0x046, "TATA DOCOMO" },
- { 0x405, 0x047, "TATA DOCOMO" },
- { 0x405, 0x51f, "AirTel" },
- { 0x405, 0x52f, "AirTel" },
- { 0x405, 0x54f, "AirTel" },
- { 0x405, 0x56f, "AirTel" },
- { 0x405, 0x66f, "Vodafone IN" },
- { 0x405, 0x70f, "IDEA" },
- { 0x405, 0x750, "Vodafone IN" },
- { 0x405, 0x751, "Vodafone IN" },
- { 0x405, 0x752, "Vodafone IN" },
- { 0x405, 0x753, "Vodafone IN" },
- { 0x405, 0x754, "Vodafone IN" },
- { 0x405, 0x755, "Vodafone IN" },
- { 0x405, 0x756, "Vodafone IN" },
- { 0x405, 0x799, "IDEA" },
- { 0x405, 0x800, "AIRCEL" },
- { 0x405, 0x801, "AIRCEL" },
- { 0x405, 0x802, "AIRCEL" },
- { 0x405, 0x803, "AIRCEL" },
- { 0x405, 0x804, "AIRCEL" },
- { 0x405, 0x805, "AIRCEL" },
- { 0x405, 0x806, "AIRCEL" },
- { 0x405, 0x807, "AIRCEL" },
- { 0x405, 0x808, "AIRCEL" },
- { 0x405, 0x809, "AIRCEL" },
- { 0x405, 0x810, "AIRCEL" },
- { 0x405, 0x811, "AIRCEL" },
- { 0x405, 0x812, "AIRCEL" },
- { 0x405, 0x819, "Uninor" },
- { 0x405, 0x818, "[Uninor]" },
- { 0x405, 0x820, "Uninor" },
- { 0x405, 0x821, "Uninor" },
- { 0x405, 0x822, "Uninor" },
- { 0x405, 0x880, "Uninor" },
- { 0x405, 0x824, "Videocon Datacom" },
- { 0x405, 0x834, "Videocon Datacom" },
- { 0x405, 0x844, "Uninor" },
- { 0x405, 0x845, "IDEA" },
- { 0x405, 0x848, "IDEA" },
- { 0x405, 0x850, "IDEA" },
- { 0x405, 0x855, "Loop Mobile" },
- { 0x405, 0x864, "Loop Mobile" },
- { 0x405, 0x865, "Loop Mobile" },
- { 0x405, 0x875, "Uninor" },
- { 0x405, 0x881, "S Tel" },
- { 0x405, 0x912, "Etisalat DB" },
- { 0x405, 0x913, "Etisalat DB" },
- { 0x405, 0x917, "Etisalat DB" },
- { 0x405, 0x929, "Uninor" },
- { 0x510, -1, "Indonesia" },
- { 0x510, 0x00f, "PSN" },
- { 0x510, 0x01f, "INDOSAT" },
- { 0x510, 0x03f, "StarOne" },
- { 0x510, 0x07f, "TelkomFlexi" },
- { 0x510, 0x08f, "AXIS" },
- { 0x510, 0x09f, "SMART" },
- { 0x510, 0x10f, "Telkomsel" },
- { 0x510, 0x11f, "XL" },
- { 0x510, 0x20f, "TELKOMMobile" },
- { 0x510, 0x21f, "IM3" },
- { 0x510, 0x27f, "Ceria" },
- { 0x510, 0x28f, "Fren/Hepi" },
- { 0x510, 0x89f, "3" },
- { 0x510, 0x99f, "Esia " },
- { 0x432, -1, "Iran" },
- { 0x432, 0x11f, "MCI" },
- { 0x432, 0x14f, "TKC" },
- { 0x432, 0x19f, "MTCE" },
- { 0x432, 0x32f, "Taliya" },
- { 0x432, 0x35f, "Irancell" },
- { 0x418, -1, "Iraq" },
- { 0x418, 0x20f, "Zain IQ" },
- { 0x418, 0x30f, "Zain IQ" },
- { 0x418, 0x05f, "Asia Cell" },
- { 0x418, 0x40f, "Korek" },
- { 0x418, 0x08f, "SanaTel" },
-// { 0x418, ?, "IRAQNA" },
- { 0x272, -1, "Ireland" },
- { 0x272, 0x01f, "Vodafone" },
- { 0x272, 0x02f, "O2" },
- { 0x272, 0x03f, "Meteor" },
- { 0x272, 0x04f, "Access Telecom" },
- { 0x272, 0x05f, "3" },
- { 0x272, 0x07f, "Eircom" },
- { 0x272, 0x09f, "Clever Communications" },
- { 0x234, -1, "Isle of Man" },
- { 0x234, 0x58f, "Pronto GSM" },
- { 0x425, -1, "Israel" },
- { 0x425, 0x01f, "Orange" },
- { 0x425, 0x02f, "Cellcom" },
- { 0x425, 0x03f, "Pelephone" },
- { 0x425, 0x77f, "Mirs" },
- { 0x222, -1, "Italy" },
- { 0x222, 0x01f, "TIM" },
- { 0x222, 0x02f, "Elsacom" },
- { 0x222, 0x10f, "Vodafone" },
- { 0x222, 0x30f, "RFI" },
- { 0x222, 0x77f, "IPSE 2000" },
- { 0x222, 0x88f, "Wind" },
- { 0x222, 0x98f, "Blu" },
- { 0x222, 0x99f, "3 Italia" },
- { 0x612, -1, "Ivory Coast" },
- { 0x612, 0x01f, "Cora de Comstar" },
- { 0x612, 0x02f, "Moov" },
- { 0x612, 0x03f, "Orange" },
- { 0x612, 0x04f, "KoZ" },
- { 0x612, 0x05f, "MTN" },
- { 0x612, 0x06f, "ORICEL" },
- { 0x338, -1, "Jamaica" },
- { 0x338, 0x020, "LIME (formerly known as Cable & Wireless)" },
- { 0x338, 0x050, "Digicel" },
- { 0x338, 0x070, "Claro" },
- { 0x338, 0x180, "LIME (formerly known as Cable & Wireless)" },
- { 0x440, -1, "Japan" },
- { 0x440, 0x00f, "eMobile" },
- { 0x440, 0x01f, "NTT docomo" },
- { 0x440, 0x02f, "NTT docomo" },
- { 0x440, 0x03f, "NTT docomo" },
- { 0x440, 0x04f, "SoftBank" },
- { 0x440, 0x06f, "SoftBank" },
- { 0x440, 0x07f, "KDDI" },
- { 0x440, 0x08f, "KDDI" },
- { 0x440, 0x09f, "NTT docomo" },
- { 0x440, 0x10f, "NTT docomo" },
- { 0x440, 0x11f, "NTT docomo" },
- { 0x440, 0x12f, "NTT docomo" },
- { 0x440, 0x13f, "NTT docomo" },
- { 0x440, 0x14f, "NTT docomo" },
- { 0x440, 0x15f, "NTT docomo" },
- { 0x440, 0x16f, "NTT docomo" },
- { 0x440, 0x17f, "NTT docomo" },
- { 0x440, 0x18f, "NTT docomo" },
- { 0x440, 0x19f, "NTT docomo" },
- { 0x440, 0x20f, "SoftBank" },
- { 0x440, 0x21f, "NTT docomo" },
- { 0x440, 0x22f, "NTT docomo" },
- { 0x440, 0x23f, "DoCoMo" },
- { 0x440, 0x24f, "DoCoMo" },
- { 0x440, 0x25f, "DoCoMo" },
- { 0x440, 0x26f, "DoCoMo" },
- { 0x440, 0x27f, "DoCoMo" },
- { 0x440, 0x28f, "DoCoMo" },
- { 0x440, 0x29f, "DoCoMo" },
- { 0x440, 0x30f, "DoCoMo" },
- { 0x440, 0x31f, "DoCoMo" },
- { 0x440, 0x32f, "DoCoMo" },
- { 0x440, 0x33f, "DoCoMo" },
- { 0x440, 0x34f, "DoCoMo" },
- { 0x440, 0x35f, "DoCoMo" },
- { 0x440, 0x36f, "DoCoMo" },
- { 0x440, 0x37f, "DoCoMo" },
- { 0x440, 0x38f, "DoCoMo" },
- { 0x440, 0x39f, "DoCoMo" },
- { 0x440, 0x40f, "SoftBank" },
- { 0x440, 0x41f, "SoftBank" },
- { 0x440, 0x42f, "SoftBank" },
- { 0x440, 0x43f, "SoftBank" },
- { 0x440, 0x44f, "SoftBank" },
- { 0x440, 0x45f, "SoftBank" },
- { 0x440, 0x46f, "SoftBank" },
- { 0x440, 0x47f, "SoftBank" },
- { 0x440, 0x48f, "SoftBank" },
- { 0x440, 0x49f, "DoCoMo" },
- { 0x440, 0x50f, "KDDI" },
- { 0x440, 0x51f, "KDDI" },
- { 0x440, 0x52f, "KDDI" },
- { 0x440, 0x53f, "KDDI" },
- { 0x440, 0x54f, "KDDI" },
- { 0x440, 0x55f, "KDDI" },
- { 0x440, 0x56f, "KDDI" },
- { 0x440, 0x58f, "DoCoMo" },
- { 0x440, 0x60f, "DoCoMo" },
- { 0x440, 0x61f, "DoCoMo" },
- { 0x440, 0x62f, "DoCoMo" },
- { 0x440, 0x63f, "DoCoMo" },
- { 0x440, 0x64f, "DoCoMo" },
- { 0x440, 0x65f, "DoCoMo" },
- { 0x440, 0x66f, "DoCoMo" },
- { 0x440, 0x67f, "DoCoMo" },
- { 0x440, 0x68f, "DoCoMo" },
- { 0x440, 0x69f, "DoCoMo" },
- { 0x440, 0x70f, "au" },
- { 0x440, 0x71f, "KDDI" },
- { 0x440, 0x72f, "KDDI" },
- { 0x440, 0x73f, "KDDI" },
- { 0x440, 0x74f, "KDDI" },
- { 0x440, 0x75f, "KDDI" },
- { 0x440, 0x76f, "KDDI" },
- { 0x440, 0x77f, "KDDI" },
- { 0x440, 0x78f, "Okinawa Cellular Telephone" },
- { 0x440, 0x79f, "KDDI" },
- { 0x440, 0x80f, "TU-KA" },
- { 0x440, 0x81f, "TU-KA" },
- { 0x440, 0x82f, "TU-KA" },
- { 0x440, 0x83f, "TU-KA" },
- { 0x440, 0x84f, "TU-KA" },
- { 0x440, 0x85f, "TU-KA" },
- { 0x440, 0x86f, "TU-KA" },
- { 0x440, 0x87f, "DoCoMo" },
- { 0x440, 0x88f, "KDDI" },
- { 0x440, 0x89f, "KDDI" },
- { 0x440, 0x90f, "SoftBank" },
- { 0x440, 0x92f, "SoftBank" },
- { 0x440, 0x93f, "SoftBank" },
- { 0x440, 0x94f, "SoftBank" },
- { 0x440, 0x95f, "SoftBank" },
- { 0x440, 0x96f, "SoftBank" },
- { 0x440, 0x97f, "SoftBank" },
- { 0x440, 0x98f, "SoftBank" },
- { 0x440, 0x99f, "DoCoMo" },
- { 0x234, -1, "Jersey" },
- { 0x234, 0x50f, "JT-Wave" },
- { 0x234, 0x55f, "Sure Mobile" },
- { 0x234, 0x03f, "Airtel Vodafone" },
- { 0x416, -1, "Jordan" },
- { 0x416, 0x01f, "zain JO" },
- { 0x416, 0x02f, "XPress Telecom" },
- { 0x416, 0x03f, "Umniah" },
- { 0x416, 0x77f, "Orange" },
- { 0x401, -1, "Kazakhstan" },
- { 0x401, 0x01f, "Beeline" },
- { 0x401, 0x02f, "Kcell" },
- { 0x401, 0x07f, "Dalacom" },
- { 0x401, 0x77f, "Mobile Telecom Service" },
- { 0x639, -1, "Kenya" },
- { 0x639, 0x02f, "Safaricom" },
- { 0x639, 0x03f, "Zain" },
- { 0x639, 0x07f, "Orange Kenya" },
- { 0x545, -1, "Kiribati" },
- { 0x545, 0x09f, "Kiribati Frigate" },
- { 0x467, -1, "North Korea" },
- { 0x467, 0x193, "SUN NET" },
- { 0x450, -1, "South Korea" },
- { 0x450, 0x02f, "KT" },
- { 0x450, 0x03f, "Power 017" },
- { 0x450, 0x04f, "KT" },
- { 0x450, 0x05f, "SKT" },
- { 0x450, 0x06f, "LGT" },
- { 0x450, 0x08f, "KT SHOW" },
- { 0x212, -1, "Kosovo" },
- { 0x212, 0x01f, "Vala" },
- { 0x293, 0x41f, "iPKO" },
- { 0x293, 0x41f, "D3 Mobile" },
- { 0x212, 0x01f, "Z Mobile" },
- { 0x419, -1, "Kuwait" },
- { 0x419, 0x02f, "zain KW" },
- { 0x419, 0x03f, "Wataniya" },
- { 0x419, 0x04f, "Viva" },
- { 0x437, -1, "Kyrgyzstan" },
- { 0x437, 0x01f, "Beeline" },
- { 0x437, 0x05f, "MegaCom" },
- { 0x437, 0x09f, "O!" },
- { 0x457, -1, "Laos" },
- { 0x457, 0x01f, "LaoTel" },
- { 0x457, 0x02f, "ETL" },
- { 0x457, 0x03f, "Unitel" },
- { 0x457, 0x08f, "Tigo" },
- { 0x247, -1, "Latvia" },
- { 0x247, 0x01f, "LMT" },
- { 0x247, 0x02f, "Tele2" },
- { 0x247, 0x03f, "TRIATEL" },
- { 0x247, 0x05f, "Bite" },
- { 0x247, 0x06f, "Rigatta" },
- { 0x247, 0x07f, "MTS" },
- { 0x247, 0x08f, "IZZI" },
- { 0x247, 0x09f, "Camel Mobile" },
- { 0x415, -1, "Lebanon" },
- { 0x415, 0x01f, "Alfa" },
- { 0x415, 0x03f, "MTC-Touch" },
- { 0x651, -1, "Lesotho" },
- { 0x651, 0x01f, "Vodacom" },
- { 0x651, 0x02f, "Econet Ezin-cel" },
- { 0x618, -1, "Liberia" },
- { 0x618, 0x01f, "Lonestar Cell" },
- { 0x618, 0x04f, "Comium" },
- { 0x618, 0x20f, "LIBTELCO" },
- { 0x606, -1, "Libya" },
- { 0x606, 0x00f, "Libyana" },
- { 0x606, 0x01f, "Madar" },
- { 0x295, -1, "Liechtenstein" },
- { 0x295, 0x01f, "Swisscom" },
- { 0x295, 0x02f, "Orange" },
- { 0x295, 0x05f, "FL1" },
- { 0x295, 0x77f, "Tele 2" },
- { 0x246, -1, "Lithuania" },
- { 0x246, 0x01f, "Omnitel" },
- { 0x246, 0x02f, "BITE" },
- { 0x246, 0x03f, "Tele 2" },
- { 0x270, -1, "Luxembourg" },
- { 0x270, 0x01f, "LuxGSM" },
- { 0x270, 0x77f, "Tango" },
- { 0x270, 0x99f, "Orange" },
- { 0x455, -1, "Macau" },
- { 0x455, 0x00f, "SmarTone" },
- { 0x455, 0x01f, "CTM" },
- { 0x455, 0x02f, "China Telecom" },
- { 0x455, 0x03f, "3" },
- { 0x455, 0x04f, "CTM" },
- { 0x455, 0x05f, "3" },
- { 0x294, -1, "Republic of Macedonia" },
- { 0x294, 0x01f, "T-Mobile MK" },
- { 0x294, 0x02f, "ONE" },
- { 0x294, 0x03f, "Vip MK" },
- { 0x646, -1, "Madagascar" },
- { 0x646, 0x01f, "Zain" },
- { 0x646, 0x02f, "Orange" },
- { 0x646, 0x03f, "Sacel" },
- { 0x646, 0x04f, "Telma" },
- { 0x650, -1, "Malawi" },
- { 0x650, 0x01f, "TNM" },
- { 0x650, 0x10f, "Zain" },
- { 0x502, -1, "Malaysia" },
- { 0x502, 0x12f, "Maxis" },
- { 0x502, 0x13f, "Celcom" },
- { 0x502, 0x16f, "DiGi" },
- { 0x502, 0x17f, "Maxis" },
- { 0x502, 0x18f, "U Mobile" },
- { 0x502, 0x19f, "Celcom" },
- { 0x472, -1, "Maldives" },
- { 0x472, 0x01f, "Dhiraagu" },
- { 0x472, 0x02f, "Wataniya" },
- { 0x610, -1, "Mali" },
- { 0x610, 0x01f, "Malitel" },
- { 0x610, 0x02f, "Orange" },
- { 0x278, -1, "Malta" },
- { 0x278, 0x01f, "Vodafone" },
- { 0x278, 0x21f, "GO" },
- { 0x278, 0x77f, "Melita" },
- { 0x000, -1, "Marshall Islands" },
-// { 0x000, ?, "?" },
- { 0x340, -1, "Martinique" },
- { 0x340, 0x01f, "Orange" },
- { 0x340, 0x02f, "Outremer" },
- { 0x340, 0x20f, "Digicel" },
- { 0x609, -1, "Mauritania" },
- { 0x609, 0x01f, "Mattel" },
- { 0x609, 0x10f, "Mauritel" },
- { 0x617, -1, "Mauritius" },
- { 0x617, 0x01f, "Orange" },
- { 0x617, 0x02f, "MTML" },
- { 0x617, 0x10f, "Emtel" },
- { 0x334, -1, "Mexico" },
- { 0x334, 0x01f, "Nextel" },
- { 0x334, 0x02f, "Telcel" },
- { 0x334, 0x03f, "movistar" },
- { 0x334, 0x04f, "Iusacell / Unefon" },
- { 0x550, -1, "Federated States of Micronesia" },
- { 0x550, 0x01f, "FSM Telecom" },
- { 0x259, -1, "Moldova" },
- { 0x259, 0x01f, "Orange" },
- { 0x259, 0x02f, "Moldcell" },
- { 0x259, 0x03f, "IDC" },
- { 0x259, 0x03f, "Unit?" },
- { 0x259, 0x04f, "Eventis" },
- { 0x259, 0x05f, "Unit?" },
- { 0x212, -1, "Monaco" },
- { 0x212, 0x01f, "Office des Telephones" },
- { 0x428, -1, "Mongolia" },
- { 0x428, 0x99f, "MobiCom" },
- { 0x428, 0x88f, "Unitel" },
- { 0x428, 0x91f, "Skytel" },
- { 0x428, 0x98f, "G.Mobile" },
- { 0x297, -1, "Montenegro" },
- { 0x297, 0x01f, "Telenor" },
- { 0x297, 0x02f, "T-Mobile" },
- { 0x297, 0x03f, "m:tel CG" },
- { 0x604, -1, "Morocco" },
- { 0x604, 0x00f, "Moditel" },
- { 0x604, 0x01f, "IAM" },
- { 0x604, 0x02f, "INWI" },
- { 0x605, 0x03f, "yassine" },
- { 0x643, -1, "Mozambique" },
- { 0x643, 0x01f, "mCel" },
- { 0x643, 0x04f, "Vodacom" },
- { 0x414, -1, "Myanmar" },
- { 0x414, 0x01f, "MPT" },
- { 0x649, -1, "Namibia" },
- { 0x649, 0x01f, "MTC" },
- { 0x649, 0x02f, "switch" },
- { 0x649, 0x03f, "Leo" },
- { 0x536, -1, "Nauru" },
- { 0x429, -1, "Nepal" },
- { 0x429, 0x01f, "Namaste / NT Mobile" },
- { 0x429, 0x02f, "Ncell" },
- { 0x429, 0x03f, "Sky/C-Phone" },
- { 0x204, -1, "Netherlands" },
- { 0x204, 0x01f, "OneFoon" },
- { 0x204, 0x02f, "Tele2" },
- { 0x204, 0x03f, "Blyk" },
- { 0x204, 0x04f, "Vodafone" },
- { 0x204, 0x05f, "Elephant Talk" },
- { 0x204, 0x06f, "Barablu Mobile" },
- { 0x204, 0x07f, "Teleena" },
- { 0x204, 0x08f, "KPN" },
- { 0x204, 0x09f, "Lycamobile" },
- { 0x204, 0x10f, "KPN" },
- { 0x204, 0x12f, "Telfort" },
- { 0x204, 0x14f, "6Gmobile" },
- { 0x204, 0x16f, "T-Mobile" },
- { 0x204, 0x18f, "Telfort" },
- { 0x204, 0x20f, "Orange Nederland" },
- { 0x204, 0x21f, "NS Railinfrabeheer B.V." },
- { 0x204, 0x67f, "RadioAccess" },
- { 0x204, 0x69f, "KPN Mobile" },
- { 0x362, -1, "Netherlands Antilles" },
- { 0x362, 0x51f, "Telcell" },
- { 0x362, 0x69f, "Digicel" },
- { 0x362, 0x91f, "UTS" },
- { 0x362, 0x00f, "East Caribbean Cellular" },
- { 0x362, 0x00f, "Antiliano Por N.V." },
- { 0x362, 0x95f, "MIO" },
- { 0x362, 0x94f, "Bay?s" },
- { 0x546, -1, "New Caledonia" },
- { 0x546, 0x01f, "Mobilis" },
- { 0x530, -1, "New Zealand" },
- { 0x530, 0x00f, "Telecom" },
- { 0x530, 0x01f, "Vodafone" },
- { 0x530, 0x02f, "Telecom" },
- { 0x530, 0x03f, "Woosh" },
- { 0x530, 0x04f, "TelstraClear" },
- { 0x530, 0x05f, "XT Mobile Network" },
- { 0x530, 0x12f, "360" },
- { 0x530, 0x24f, "2degrees" },
- { 0x710, -1, "Nicaragua" },
- { 0x710, 0x21f, "Claro" },
- { 0x710, 0x30f, "movistar" },
- { 0x710, 0x73f, "SERCOM" },
- { 0x614, -1, "Niger" },
- { 0x614, 0x01f, "SahelCom" },
- { 0x614, 0x02f, "Zain" },
- { 0x614, 0x03f, "Telecel" },
- { 0x614, 0x04f, "Orange" },
- { 0x621, -1, "Nigeria" },
- { 0x621, 0x20f, "Zain" },
- { 0x621, 0x30f, "MTN" },
- { 0x621, 0x40f, "M-Tel" },
- { 0x621, 0x50f, "Glo" },
- { 0x621, 0x60f, "Etisalat" },
- { 0x242, -1, "Norway" },
- { 0x242, 0x01f, "Telenor" },
- { 0x242, 0x02f, "NetCom" },
- { 0x242, 0x03f, "Teletopia" },
- { 0x242, 0x04f, "Tele2" },
- { 0x242, 0x05f, "Network Norway" },
- { 0x242, 0x06f, "Ice" },
- { 0x242, 0x07f, "Ventelo" },
- { 0x242, 0x08f, "TDC Mobil AS" },
- { 0x242, 0x09f, "Barablu Mobile Norway Ltd" },
- { 0x242, 0x20f, "Jernbaneverket AS" },
- { 0x422, -1, "Oman" },
- { 0x422, 0x02f, "Oman Mobile" },
- { 0x422, 0x03f, "Nawras" },
- { 0x410, -1, "Pakistan" },
- { 0x410, 0x01f, "Mobilink" },
- { 0x410, 0x03f, "Ufone" },
- { 0x410, 0x04f, "Zong" },
- { 0x410, 0x06f, "Telenor" },
- { 0x410, 0x07f, "Warid" },
- { 0x552, -1, "Palau" },
- { 0x552, 0x01f, "PNCC" },
- { 0x552, 0x80f, "Palau Mobile" },
- { 0x423, -1, "Palestinian Authority" },
- { 0x423, 0x05f, "Jawwal" },
- { 0x423, 0x06f, "Wataniya" },
- { 0x714, -1, "Panama" },
- { 0x714, 0x01f, "Cable & Wireless" },
- { 0x714, 0x02f, "movistar" },
- { 0x714, 0x04f, "Digicel" },
- { 0x714, 0x03f, "Claro" },
- { 0x537, -1, "Papua New Guinea" },
- { 0x537, 0x01f, "B-Mobile" },
- { 0x537, 0x03f, "Digicel" },
- { 0x744, -1, "Paraguay" },
- { 0x744, 0x01f, "VOX" },
- { 0x744, 0x02f, "Claro" },
- { 0x744, 0x04f, "Tigo" },
- { 0x744, 0x05f, "Personal" },
- { 0x716, -1, "Peru" },
- { 0x716, 0x06f, "movistar" },
- { 0x716, 0x10f, "Claro" },
- { 0x716, 0x17f, "NEXTEL" },
- { 0x515, -1, "Philippines" },
- { 0x515, 0x01f, "Islacom" },
- { 0x515, 0x02f, "Globe" },
- { 0x515, 0x03f, "Smart" },
- { 0x515, 0x05f, "Sun" },
- { 0x515, 0x11f, "PLDT via ACeS Philippines" },
- { 0x515, 0x18f, "Cure" },
- { 0x515, 0x88f, "Nextel" },
- { 0x260, -1, "Poland" },
- { 0x260, 0x01f, "Plus" },
- { 0x260, 0x02f, "Era" },
- { 0x260, 0x03f, "Orange" },
- { 0x260, 0x04f, "Netia S.A." },
- { 0x260, 0x05f, "Polska Telefonia Kom?rkowa Centertel Sp. z o.o." },
- { 0x260, 0x06f, "Play" },
- { 0x260, 0x07f, "Netia" },
- { 0x260, 0x08f, "E-Telko Sp. z o.o." },
- { 0x260, 0x09f, "Telekomunikacja Kolejowa Sp. z o.o." },
- { 0x260, 0x10f, "Sferia" },
- { 0x260, 0x11f, "Nordisk Polska" },
- { 0x260, 0x12f, "Cyfrowy Polsat" },
- { 0x260, 0x13f, "Sferia" },
- { 0x260, 0x14f, "Sferia" },
- { 0x260, 0x15f, "CenterNet" },
- { 0x260, 0x16f, "Mobyland" },
- { 0x260, 0x17f, "Aero2" },
- { 0x268, -1, "Portugal" },
- { 0x268, 0x01f, "Vodafone" },
- { 0x268, 0x03f, "Optimus" },
- { 0x268, 0x06f, "TMN" },
- { 0x268, 0x21f, "Zapp" },
- { 0x330, -1, "Puerto Rico" },
- { 0x330, 0x11f, "Claro" },
- { 0x427, -1, "Qatar" },
- { 0x427, 0x01f, "Qatarnet" },
- { 0x427, 0x02f, "Vodafone Qatar" },
- { 0x647, -1, "R&?union" },
- { 0x647, 0x00f, "Orange" },
- { 0x647, 0x02f, "Outremer" },
- { 0x647, 0x10f, "SFR Reunion" },
- { 0x226, -1, "Romania" },
- { 0x226, 0x01f, "Vodafone" },
- { 0x226, 0x02f, "Romtelecom" },
- { 0x226, 0x03f, "Cosmote" },
- { 0x226, 0x04f, "Cosmote" },
- { 0x226, 0x05f, "Digi.Mobil" },
- { 0x226, 0x06f, "Cosmote" },
- { 0x226, 0x10f, "Orange" },
- { 0x250, -1, "Russian Federation" },
- { 0x250, 0x01f, "MTS" },
- { 0x250, 0x02f, "MegaFon" },
- { 0x250, 0x03f, "NCC" },
- { 0x250, 0x04f, "Sibchallenge" },
- { 0x250, 0x05f, "ETK" },
- { 0x250, 0x06f, "Skylink" },
- { 0x250, 0x07f, "SMARTS" },
- { 0x250, 0x09f, "Skylink" },
- { 0x250, 0x10f, "DTC" },
- { 0x250, 0x11f, "Orensot" },
- { 0x250, 0x12f, "Baykalwestcom" },
- { 0x250, 0x12f, "Akos" },
- { 0x250, 0x13f, "KUGSM" },
- { 0x250, 0x15f, "SMARTS" },
- { 0x250, 0x16f, "NTC" },
- { 0x250, 0x17f, "Utel" },
- { 0x250, 0x19f, "INDIGO" },
- { 0x250, 0x20f, "Tele2" },
- { 0x250, 0x23f, "Mobicom - Novosibirsk" },
- { 0x250, 0x28f, "Beeline" },
- { 0x250, 0x35f, "MOTIV" },
- { 0x250, 0x38f, "Tambov GSM" },
- { 0x250, 0x39f, "Utel" },
- { 0x250, 0x44f, "Stavtelesot / North Caucasian GSM" },
- { 0x250, 0x92f, "Primtelefon" },
- { 0x250, 0x93f, "Telecom XXI" },
- { 0x250, 0x99f, "Beeline" },
-// { 0x250, ?, "SkyLink/MTS/the Moscow Cellular communication" },
- { 0x635, -1, "Rwanda" },
- { 0x635, 0x10f, "MTN" },
- { 0x635, 0x13f, "Tigo" },
- { 0x356, -1, "Saint Kitts and Nevis" },
- { 0x356, 0x050, "Digicel" },
- { 0x356, 0x110, "Cable & Wireless" },
- { 0x358, -1, "Saint Lucia" },
- { 0x358, 0x050, "Digicel" },
- { 0x358, 0x110, "Cable & Wireless" },
- { 0x308, -1, "Saint Pierre and Miquelon" },
- { 0x308, 0x01f, "Ameris" },
- { 0x360, -1, "Saint Vincent and the Grenadines" },
- { 0x360, 0x070, "Digicel" },
- { 0x360, 0x100, "Cingular Wireless" },
- { 0x360, 0x110, "Cable & Wireless" },
- { 0x549, -1, "Samoa" },
- { 0x549, 0x01f, "Digicel" },
- { 0x549, 0x27f, "SamoaTel" },
- { 0x292, -1, "San Marino" },
- { 0x292, 0x01f, "PRIMA" },
- { 0x626, -1, "Sao Tome and Principe" },
- { 0x626, 0x01f, "CSTmovel" },
- { 0x420, -1, "Saudi Arabia" },
- { 0x420, 0x01f, "Al Jawal" },
- { 0x420, 0x03f, "Mobily" },
- { 0x420, 0x07f, "EAE" },
- { 0x420, 0x04f, "Zain SA" },
- { 0x608, -1, "Senegal" },
- { 0x608, 0x01f, "Orange (telecommunications)" },
- { 0x608, 0x02f, "Tigo" },
- { 0x608, 0x03f, "Expresso" },
- { 0x220, -1, "Serbia" },
- { 0x220, 0x01f, "Telenor" },
- { 0x220, 0x03f, "mt:s" },
- { 0x220, 0x05f, "VIP" },
- { 0x633, -1, "Seychelles" },
- { 0x633, 0x01f, "Cable & Wireless" },
- { 0x633, 0x02f, "Mediatech International" },
- { 0x633, 0x10f, "Airtel" },
- { 0x619, -1, "Sierra Leone" },
- { 0x619, 0x01f, "Zain" },
- { 0x619, 0x02f, "Millicom" },
- { 0x619, 0x03f, "Datatel" },
- { 0x619, 0x04f, "Comium" },
- { 0x619, 0x05f, "Africell" },
- { 0x619, 0x25f, "Mobitel" },
-// { 0x619, ?, "LeoneCel" },
- { 0x525, -1, "Singapore" },
- { 0x525, 0x01f, "SingTel" },
- { 0x525, 0x02f, "SingTel-G18" },
- { 0x525, 0x03f, "M1" },
- { 0x525, 0x05f, "StarHub" },
- { 0x525, 0x12f, "Digital Trunked Radio Network" },
- { 0x231, -1, "Slovakia" },
- { 0x231, 0x01f, "Orange" },
- { 0x231, 0x02f, "T-Mobile" },
- { 0x231, 0x03f, "Unient Communications" },
- { 0x231, 0x04f, "T-Mobile" },
- { 0x231, 0x05f, "Mobile Entertainment Company" },
- { 0x231, 0x06f, "O2" },
- { 0x231, 0x99f, "?SR" },
- { 0x293, -1, "Slovenia" },
- { 0x293, 0x40f, "Si.mobil" },
- { 0x293, 0x41f, "Mobitel" },
- { 0x293, 0x64f, "T-2" },
- { 0x293, 0x70f, "Tu?mobil" },
- { 0x540, -1, "Solomon Islands" },
- { 0x637, -1, "Somalia" },
- { 0x637, 0x01f, "Telesom" },
- { 0x637, 0x04f, "Somafone" },
- { 0x637, 0x10f, "Nationlink" },
- { 0x637, 0x25f, "Hormuud" },
- { 0x637, 0x30f, "Golis" },
- { 0x637, 0x82f, "Telcom" },
- { 0x655, -1, "South Africa" },
- { 0x655, 0x01f, "Vodacom" },
- { 0x655, 0x06f, "Sentech" },
- { 0x655, 0x07f, "Cell C" },
- { 0x655, 0x10f, "MTN" },
- { 0x655, 0x11f, "SAPS Gauteng" },
- { 0x655, 0x13f, "Neotel" },
- { 0x655, 0x21f, "Cape Town Metropolitan Council" },
- { 0x655, 0x30f, "Bokamoso Consortium" },
- { 0x655, 0x31f, "Karabo Telecoms (Pty) Ltd." },
- { 0x655, 0x32f, "Ilizwi Telecommunications" },
- { 0x655, 0x33f, "Thinta Thinta Telecommunications" },
- { 0x655, 0x02f, "Telkom" },
- { 0x214, -1, "Spain" },
- { 0x214, 0x01f, "Vodafone" },
- { 0x214, 0x03f, "Orange" },
- { 0x214, 0x04f, "Yoigo" },
- { 0x214, 0x05f, "TME" },
- { 0x214, 0x06f, "Vodafone" },
- { 0x214, 0x07f, "movistar" },
- { 0x214, 0x08f, "Euskaltel" },
- { 0x214, 0x09f, "Orange" },
- { 0x214, 0x15f, "BT" },
- { 0x214, 0x16f, "TeleCable" },
- { 0x214, 0x17f, "M?bil R" },
- { 0x214, 0x18f, "ONO" },
- { 0x214, 0x19f, "Simyo" },
- { 0x214, 0x21f, "Jazztel" },
- { 0x214, 0x22f, "DigiMobil" },
- { 0x214, 0x23f, "Barablu" },
- { 0x413, -1, "Sri Lanka" },
- { 0x413, 0x01f, "Mobitel" },
- { 0x413, 0x02f, "Dialog" },
- { 0x413, 0x03f, "Etisalat" },
- { 0x413, 0x05f, "Airtel" },
- { 0x413, 0x08f, "Hutch" },
- { 0x413, 0x00f, "RTEC Mobile" },
- { 0x634, -1, "Sudan" },
- { 0x634, 0x01f, "Zain SD" },
- { 0x634, 0x02f, "MTN" },
- { 0x634, 0x05f, "Vivacell" },
- { 0x746, -1, "Suriname" },
- { 0x746, 0x05f, "Telesur" },
- { 0x653, -1, "Swaziland" },
- { 0x653, 0x10f, "Swazi MTN" },
- { 0x240, -1, "Sweden" },
- { 0x240, 0x01f, "Telia" },
- { 0x240, 0x02f, "3" },
- { 0x240, 0x03f, "Ice.net" },
- { 0x240, 0x04f, "3G Infrastructure Services" },
- { 0x240, 0x05f, "Sweden 3G" },
- { 0x240, 0x06f, "Telenor" },
- { 0x240, 0x07f, "Tele2" },
- { 0x240, 0x08f, "Telenor" },
- { 0x240, 0x09f, "djuice" },
- { 0x240, 0x10f, "Spring Mobil" },
- { 0x240, 0x11f, "Lindholmen Science Park" },
- { 0x240, 0x12f, "Barablu Mobile Scandinavia" },
- { 0x240, 0x13f, "Ventelo Sverige" },
- { 0x240, 0x14f, "TDC Mobil" },
- { 0x240, 0x15f, "Wireless Maingate Nordic" },
- { 0x240, 0x16f, "42IT" },
- { 0x240, 0x17f, "G?talandsn?tet" },
- { 0x240, 0x20f, "Wireless Maingate Message Services" },
- { 0x240, 0x21f, "MobiSir" },
- { 0x240, 0x25f, "DigiTelMobile" },
- { 0x228, -1, "Switzerland" },
- { 0x228, 0x01f, "Swisscom" },
- { 0x228, 0x02f, "Sunrise" },
- { 0x228, 0x03f, "Orange" },
- { 0x228, 0x05f, "Togewanet AG (Comfone)" },
- { 0x228, 0x06f, "SBB AG" },
- { 0x228, 0x07f, "IN&Phone" },
- { 0x228, 0x08f, "Tele2" },
- { 0x228, 0x50f, "3G Mobile AG" },
- { 0x228, 0x51f, "BebbiCell AG" },
- { 0x417, -1, "Syria" },
- { 0x417, 0x01f, "Syriatel" },
- { 0x417, 0x02f, "MTN" },
- { 0x466, -1, "Taiwan" },
- { 0x466, 0x01f, "FarEasTone" },
- { 0x466, 0x02f, "APTG" },
- { 0x466, 0x06f, "Tuntex" },
- { 0x466, 0x11f, "Chunghwa LDM" },
- { 0x466, 0x88f, "KG Telecom" },
- { 0x466, 0x89f, "VIBO" },
- { 0x466, 0x92f, "Chungwa" },
- { 0x466, 0x93f, "MobiTai" },
- { 0x466, 0x97f, "Taiwan Mobile" },
- { 0x466, 0x99f, "TransAsia" },
- { 0x436, -1, "Tajikistan" },
- { 0x436, 0x01f, "Tcell" },
- { 0x436, 0x02f, "Indigo" },
- { 0x436, 0x03f, "MLT" },
- { 0x436, 0x04f, "Babilon-M" },
- { 0x436, 0x05f, "Beeline" },
- { 0x640, -1, "Tanzania" },
- { 0x640, 0x06f, "SasaTel" },
- { 0x640, 0x02f, "tiGO" },
- { 0x640, 0x03f, "Zantel" },
- { 0x640, 0x04f, "Vodacom" },
- { 0x640, 0x05f, "Zain" },
- { 0x520, -1, "Thailand" },
- { 0x520, 0x00f, "Hutch" },
- { 0x520, 0x01f, "AIS" },
- { 0x520, 0x02f, "CAT CDMA" },
- { 0x520, 0x10f, "?" },
- { 0x520, 0x15f, "Thai Mobile" },
- { 0x520, 0x15f, "TOT 3G" },
- { 0x520, 0x18f, "dtac" },
- { 0x520, 0x23f, "AIS GSM 1800" },
- { 0x520, 0x99f, "True Move" },
- { 0x520, 0x00f, "WE PCT" },
- { 0x615, -1, "Togo" },
- { 0x615, 0x01f, "Togo Cell" },
- { 0x615, 0x03f, "Moov" },
- { 0x539, -1, "Tonga" },
- { 0x539, 0x01f, "Tonga Communications Corporation" },
- { 0x539, 0x43f, "Shoreline Communication" },
- { 0x539, 0x88f, "Digicel" },
- { 0x374, -1, "Trinidad and Tobago" },
- { 0x374, 0x12f, "bmobile" },
- { 0x374, 0x13f, "Digicel" },
- { 0x605, -1, "Tunisia" },
- { 0x605, 0x01f, "Orange" },
- { 0x605, 0x02f, "Tunicell" },
- { 0x605, 0x03f, "Tunisiana" },
- { 0x286, -1, "Turkey" },
- { 0x286, 0x01f, "Turkcell" },
- { 0x286, 0x02f, "Vodafone" },
- { 0x286, 0x03f, "Avea" },
- { 0x286, 0x04f, "Aycell" },
- { 0x438, -1, "Turkmenistan" },
- { 0x438, 0x01f, "MTS" },
- { 0x438, 0x02f, "TM-Cell" },
- { 0x376, -1, "Turks and Caicos Islands" },
- { 0x376, 0x350, "C&W" },
- { 0x376, 0x352, "Islandcom" },
- { 0x338, 0x05f, "Digicel" },
- { 0x553, -1, "Tuvalu" },
- { 0x553, 0x01f, "TTC" },
- { 0x641, -1, "Uganda" },
- { 0x641, 0x01f, "Zain" },
- { 0x641, 0x10f, "MTN" },
- { 0x641, 0x11f, "Uganda Telecom Ltd." },
- { 0x641, 0x22f, "Warid Telecom" },
- { 0x641, 0x14f, "Orange" },
- { 0x255, -1, "Ukraine" },
- { 0x255, 0x01f, "MTS" },
- { 0x255, 0x02f, "Beeline" },
- { 0x255, 0x03f, "Kyivstar" },
- { 0x255, 0x04f, "IT" },
- { 0x255, 0x05f, "Golden Telecom" },
- { 0x255, 0x06f, "life:)" },
- { 0x255, 0x07f, "Ukrtelecom" },
- { 0x255, 0x21f, "PEOPLEnet" },
- { 0x255, 0x23f, "CDMA Ukraine" },
- { 0x424, -1, "United Arab Emirates" },
- { 0x424, 0x02f, "Etisalat" },
- { 0x424, 0x03f, "du" },
- { 0x234, -1, "United Kingdom" },
- { 0x234, 0x00f, "BT" },
- { 0x234, 0x01f, "UK01" },
- { 0x234, 0x02f, "O2" },
- { 0x234, 0x03f, "Airtel-Vodafone" },
- { 0x234, 0x04f, "FMS Solutions Ltd" },
- { 0x234, 0x07f, "Cable and Wireless UK" },
- { 0x234, 0x08f, "OnePhone Ltd" },
- { 0x234, 0x10f, "O2" },
- { 0x234, 0x11f, "O2" },
- { 0x234, 0x12f, "Railtrack" },
- { 0x234, 0x14f, "Hay Systems Ltd" },
- { 0x234, 0x15f, "Vodafone" },
- { 0x234, 0x16f, "Opal Telecom Ltd" },
- { 0x234, 0x18f, "Cloud9" },
- { 0x234, 0x19f, "Teleware" },
- { 0x234, 0x20f, "3" },
- { 0x234, 0x22f, "RoutoMessaging" },
- { 0x234, 0x25f, "Truphone" },
- { 0x234, 0x30f, "T-Mobile" },
- { 0x234, 0x31f, "Virgin" },
- { 0x234, 0x32f, "Virgin" },
- { 0x234, 0x33f, "Orange" },
- { 0x234, 0x34f, "Orange" },
- { 0x234, 0x50f, "JT-Wave" },
- { 0x234, 0x55f, "Cable & Wireless Guernsey / Sure Mobile (Jersey)" },
- { 0x234, 0x58f, "Manx Telecom" },
- { 0x234, 0x75f, "Inquam" },
- { 0x234, 0x77f, "BT" },
- { 0x200, -1, "United States of America" },
- { 0x200, 0x053, "Virgin Mobile US" },
- { 0x200, 0x054, "Alltel US" },
- { 0x200, 0x066, "U.S. Cellular" },
- /* 0x310 taken from Annex to ITU Operational Bulletin No. 958 – 15.VI.2010 */
- { 0x310, 0x00f, "nTelos" },
- { 0x310, 0x000, "Mid-Tex Cellular" },
- { 0x310, 0x004, "Verizon" },
- { 0x310, 0x010, "MCI" },
- { 0x310, 0x012, "Verizon" },
- { 0x310, 0x013, "MobileTel" },
- { 0x310, 0x014, "Testing" },
- { 0x310, 0x016, "Cricket Communications" },
- { 0x310, 0x017, "North Sight Communications Inc." },
- { 0x310, 0x020, "Union Telephone Company" },
- { 0x310, 0x026, "T-Mobile" },
- { 0x310, 0x030, "Centennial" },
- { 0x310, 0x034, "Airpeak" },
- { 0x310, 0x038, "AT&T" },
- { 0x310, 0x040, "Concho" },
- { 0x310, 0x046, "SIMMETRY" },
- { 0x310, 0x060, "Consolidated Telcom" },
- { 0x310, 0x070, "Highland Cellular" },
- { 0x310, 0x080, "Corr" },
- { 0x310, 0x090, "AT&T" },
- { 0x310, 0x100, "Plateau Wireless" },
- { 0x310, 0x110, "PTI Pacifica" },
- { 0x310, 0x120, "Sprint" },
- { 0x310, 0x150, "AT&T" },
- { 0x310, 0x160, "T-Mobile" },
- { 0x310, 0x170, "T-Mobile" },
- { 0x310, 0x180, "West Central" },
- { 0x310, 0x190, "Dutch Harbor" },
- { 0x310, 0x200, "T-Mobile" },
- { 0x310, 0x210, "T-Mobile" },
- { 0x310, 0x220, "T-Mobile" },
- { 0x310, 0x230, "T-Mobile" },
- { 0x310, 0x240, "T-Mobile" },
- { 0x310, 0x250, "T-Mobile" },
- { 0x310, 0x260, "T-Mobile" },
- { 0x310, 0x270, "T-Mobile" },
- { 0x310, 0x280, "T-Mobile" },
- { 0x310, 0x290, "T-Mobile" },
- { 0x310, 0x300, "iSmart Mobile" },
- { 0x310, 0x310, "T-Mobile" },
- { 0x310, 0x311, "Farmers Wireless" },
- { 0x310, 0x320, "Cellular One" },
- { 0x310, 0x330, "T-Mobile" },
- { 0x310, 0x340, "Westlink" },
- { 0x310, 0x350, "Carolina Phone" },
- { 0x310, 0x380, "AT&T Mobility" },
- { 0x310, 0x390, "Cellular One of East Texas" },
- { 0x310, 0x400, "i CAN_GSM" },
- { 0x310, 0x410, "AT&T" },
- { 0x310, 0x420, "Cincinnati Bell" },
- { 0x310, 0x430, "Alaska Digitel" },
- { 0x310, 0x440, "Cellular One" },
- { 0x310, 0x450, "Viaero" },
- { 0x310, 0x460, "Simmetry" },
- { 0x310, 0x480, "Choice Phone" },
- { 0x310, 0x490, "T-Mobile" },
- { 0x310, 0x500, "Alltel" },
- { 0x310, 0x510, "Airtel" },
- { 0x310, 0x520, "VeriSign" },
- { 0x310, 0x530, "West Virginia Wireless" },
- { 0x310, 0x540, "Oklahoma Western" },
- { 0x310, 0x560, "AT&T" },
- { 0x310, 0x570, "Cellular One" },
- { 0x310, 0x580, "T-Mobile" },
- { 0x310, 0x590, "Alltel" },
- { 0x310, 0x610, "Epic Touch" },
- { 0x310, 0x620, "Coleman County Telecom" },
- { 0x310, 0x630, "AmeriLink PCS" },
- { 0x310, 0x640, "Airadigm" },
- { 0x310, 0x650, "Jasper" },
- { 0x310, 0x660, "T-Mobile" },
- { 0x310, 0x670, "Northstar" },
- { 0x310, 0x680, "AT&T" },
- { 0x310, 0x690, "Conestoga" },
- { 0x310, 0x730, "SeaMobile" },
- { 0x310, 0x740, "Convey" },
- { 0x310, 0x760, "Panhandle" },
- { 0x310, 0x770, "i wireless" },
- { 0x310, 0x780, "Airlink PCS" },
- { 0x310, 0x790, "PinPoint" },
- { 0x310, 0x800, "T-Mobile" },
- { 0x310, 0x830, "Caprock" },
- { 0x310, 0x850, "Aeris" },
- { 0x310, 0x870, "PACE" },
- { 0x310, 0x880, "Advantage" },
- { 0x310, 0x890, "Unicel" },
- { 0x310, 0x900, "Mid-Rivers Wireless" },
- { 0x310, 0x910, "First Cellular" },
- { 0x310, 0x940, "Iris Wireless LLC" },
- { 0x310, 0x950, "XIT Wireless" },
- { 0x310, 0x960, "Plateau Wireless" },
- { 0x310, 0x970, "Globalstar" },
- { 0x310, 0x980, "AT&T Mobility" },
- { 0x310, 0x990, "AT&T Mobility" },
- { 0x311, 0x000, "Mid-Tex Cellular" },
- { 0x311, 0x010, "Chariton Valley" },
- { 0x311, 0x020, "Missouri RSA 5 Partnership" },
- { 0x311, 0x030, "Indigo Wireless" },
- { 0x311, 0x040, "Commnet Wireless" },
- { 0x311, 0x050, "Wikes Cellular" },
- { 0x311, 0x060, "Farmers Cellular" },
- { 0x311, 0x070, "Easterbrooke" },
- { 0x311, 0x080, "Pine Cellular" },
- { 0x311, 0x090, "Long Lines Wireless" },
- { 0x311, 0x100, "High Plains Wireless" },
- { 0x311, 0x110, "High Plains Wireless" },
- { 0x311, 0x120, "Choice Phone" },
- { 0x311, 0x130, "Cell One Amarillo" },
- { 0x311, 0x140, "Sprocket" },
- { 0x311, 0x150, "Wilkes Cellular" },
- { 0x311, 0x160, "Endless Mountains Wireless" },
- { 0x311, 0x170, "PetroCom" },
- { 0x311, 0x180, "Cingular Wireless" },
- { 0x311, 0x190, "Cellular Properties" },
- { 0x311, 0x210, "Farmers Cellular" },
- { 0x316, 0x010, "Nextel" },
- { 0x316, 0x011, "Southern Communications Services" },
- { 0x748, -1, "Uruguay" },
- { 0x748, 0x00f, "Ancel" },
- { 0x748, 0x01f, "Ancel" },
- { 0x748, 0x07f, "Movistar" },
- { 0x748, 0x10f, "Claro" },
- { 0x434, -1, "Uzbekistan" },
- { 0x434, 0x01f, "Buztel" },
- { 0x434, 0x02f, "Uzmacom" },
- { 0x434, 0x04f, "Beeline" },
- { 0x434, 0x05f, "Ucell" },
- { 0x434, 0x06f, "Perfectum Mobile" },
- { 0x434, 0x07f, "MTS" },
- { 0x541, -1, "Vanuatu" },
- { 0x541, 0x01f, "SMILE" },
- { 0x225, -1, "Vatican" },
- { 0x734, -1, "Venezuela" },
- { 0x734, 0x01f, "Digitel" },
- { 0x734, 0x02f, "Digitel" },
- { 0x734, 0x03f, "Digitel" },
- { 0x734, 0x04f, "movistar" },
- { 0x734, 0x06f, "Movilnet" },
- { 0x452, -1, "Vietnam" },
- { 0x452, 0x01f, "MobiFone" },
- { 0x452, 0x02f, "Vinaphone" },
- { 0x452, 0x03f, "S-Fone" },
- { 0x452, 0x04f, "Viettel Mobile" },
- { 0x452, 0x05f, "Vietnamobile" },
- { 0x452, 0x06f, "E-Mobile" },
- { 0x452, 0x07f, "Beeline VN" },
- { 0x421, -1, "Yemen" },
- { 0x421, 0x01f, "SabaFon" },
- { 0x421, 0x02f, "MTN" },
- { 0x421, 0x03f, "Yemen Mobile" },
- { 0x421, 0x04f, "HiTS-UNITEL" },
- { 0x645, -1, "Zambia" },
- { 0x645, 0x01f, "Zain" },
- { 0x645, 0x02f, "MTN" },
- { 0x645, 0x03f, "ZAMTEL" },
- { 0x648, -1, "Zimbabwe" },
- { 0x648, 0x01f, "Net*One" },
- { 0x648, 0x03f, "Telecel" },
- { 0x648, 0x04f, "Econet" },
- { 0x901, -1, "International" },
- { 0x901, 0x01f, "ICO" },
- { 0x901, 0x02f, "Sense Communications International" },
- { 0x901, 0x03f, "Iridium" },
- { 0x901, 0x04f, "Globalstar" },
- { 0x901, 0x05f, "Thuraya RMSS Network" },
- { 0x901, 0x06f, "Thuraya Satellite Telecommunications Company" },
- { 0x901, 0x07f, "Ellipso" },
- { 0x901, 0x08f, "" },
- { 0x901, 0x09f, "Tele1 Europe" },
- { 0x901, 0x10f, "ACeS" },
- { 0x901, 0x11f, "Inmarsat" },
- { 0x901, 0x12f, "MCP" },
- { 0x901, 0x13f, "GSM.AQ" },
- { 0x901, 0x14f, "AeroMobile AS" },
- { 0x901, 0x15f, "OnAir Switzerland Sarl" },
- { 0x901, 0x16f, "Jasper Systems" },
- { 0x901, 0x17f, "Navitas" },
- { 0x901, 0x18f, "Cellular @Sea" },
- { 0x901, 0x19f, "Vodafone Malta Maritime" },
- { 0x901, 0x21f, "Seanet" },
- { 0x901, 0x24f, "iNum" },
- { 0x901, 0x29f, "Telenor" },
- { 0, 0, NULL }
-};
-
-/* GSM 03.22 Annex A */
-int gsm_match_mcc(uint16_t mcc, char *imsi)
-{
- uint16_t sim_mcc;
-
- sim_mcc = ((imsi[0] - '0') << 8)
- + ((imsi[1] - '0') << 4)
- + imsi[2] - '0';
-
- return (mcc == sim_mcc);
-}
-
-/* GSM 03.22 Annex A */
-int gsm_match_mnc(uint16_t mcc, uint8_t mnc, char *imsi)
-{
- uint16_t sim_mnc;
-
- /* 1. SIM-MCC = BCCH-MCC */
- if (!gsm_match_mcc(mcc, imsi))
- return 0;
-
- /* 2. 3rd digit of BCCH-MNC is not 0xf */
- if ((mnc & 0x00f) != 0x00f) {
- /* 3. 3 digit SIM-MNC = BCCH-MNC */
- sim_mnc = ((imsi[3] - '0') << 8)
- + ((imsi[4] - '0') << 4)
- + imsi[5] - '0';
-
- return (mnc == sim_mnc);
- }
-
- /* 4. BCCH-MCC in the range 310-316 */
- if (mcc >= 310 && mcc <= 316) {
- /* 5. 3rd diit of SIM-MNC is 0 */
- if (imsi[5] != 0)
- return 0;
- }
-
- /* 6. 1st 2 digits of SIM-MNC and BCCH-MNC match */
- sim_mnc = ((imsi[3] - '0') << 8)
- + ((imsi[4] - '0') << 4)
- + 0x00f;
-
- return (mnc == sim_mnc);
-}
-
-const char *gsm_print_mcc(uint16_t mcc)
-{
- static char string[5] = "000";
-
- snprintf(string, 4, "%03x", mcc);
- return string;
-}
-
-const char *gsm_print_mnc(uint16_t mnc)
-{
- static char string[7];
-
- /* invalid format: return hex value */
- if ((mnc & 0xf000)
- || (mnc & 0x0f00) > 0x0900
- || (mnc & 0x00f0) > 0x0090
- || ((mnc & 0x000f) > 0x0009 && (mnc & 0x000f) < 0x000f)) {
- snprintf(string, 6, "0x%03x", mnc);
- return string;
- }
-
- /* two digits */
- if ((mnc & 0x000f) == 0x000f) {
- snprintf(string, 6, "%02x", mnc >> 4);
- return string;
- }
-
- /* three digits */
- snprintf(string, 6, "%03x", mnc);
- return string;
-}
-
-const uint16_t gsm_input_mcc(char *string)
-{
- uint16_t mcc;
-
- if (strlen(string) != 3)
- return GSM_INPUT_INVALID;
- if (string[0] < '0' || string [0] > '9'
- || string[1] < '0' || string [1] > '9'
- || string[2] < '0' || string [2] > '9')
- return GSM_INPUT_INVALID;
-
- mcc = ((string[0] - '0') << 8)
- | ((string[1] - '0') << 4)
- | ((string[2] - '0'));
-
- if (mcc == 0x000)
- return GSM_INPUT_INVALID;
-
- return mcc;
-}
-
-const uint16_t gsm_input_mnc(char *string)
-{
- uint16_t mnc = 0;
-
- if (strlen(string) == 2) {
- if (string[0] < '0' || string [0] > '9'
- || string[1] < '0' || string [1] > '9')
- return GSM_INPUT_INVALID;
-
- mnc = ((string[0] - '0') << 8)
- | ((string[1] - '0') << 4)
- | 0x00f;
- } else
- if (strlen(string) == 3) {
- if (string[0] < '0' || string [0] > '9'
- || string[1] < '0' || string [1] > '9'
- || string[2] < '0' || string [2] > '9')
- return GSM_INPUT_INVALID;
-
- mnc = ((string[0] - '0') << 8)
- | ((string[1] - '0') << 4)
- | ((string[2] - '0'));
- }
-
- return mnc;
-}
-
-const char *gsm_get_mcc(uint16_t mcc)
-{
- int i;
-
- for (i = 0; gsm_networks[i].name; i++)
- if (gsm_networks[i].mnc < 0 && gsm_networks[i].mcc == mcc)
- return gsm_networks[i].name;
-
- return gsm_print_mcc(mcc);
-}
-
-const char *gsm_get_mnc(uint16_t mcc, uint16_t mnc)
-{
- int i;
-
- for (i = 0; gsm_networks[i].name; i++)
- if (gsm_networks[i].mcc == mcc && gsm_networks[i].mnc == mnc)
- return gsm_networks[i].name;
-
- return gsm_print_mnc(mnc);
-}
-
-/* get MCC from IMSI */
-const char *gsm_imsi_mcc(char *imsi)
-{
- int i, found = 0;
- uint16_t mcc;
-
- mcc = ((imsi[0] - '0') << 8)
- | ((imsi[1] - '0') << 4)
- | ((imsi[2] - '0'));
-
- for (i = 0; gsm_networks[i].name; i++) {
- if (gsm_networks[i].mcc == mcc) {
- found = 1;
- break;
- }
- }
- if (found == 0)
- return "Unknown";
-
- return gsm_networks[i].name;
-}
-
-/* get MNC from IMSI */
-const char *gsm_imsi_mnc(char *imsi)
-{
- int i, found = 0, position = 0;
- uint16_t mcc, mnc2, mnc3;
-
- mcc = ((imsi[0] - '0') << 8)
- | ((imsi[1] - '0') << 4)
- | ((imsi[2] - '0'));
- mnc2 = ((imsi[3] - '0') << 8)
- + ((imsi[4] - '0') << 4)
- + 0x00f;
- mnc3 = ((imsi[3] - '0') << 8)
- + ((imsi[4] - '0') << 4)
- + imsi[5] - '0';
-
- for (i = 0; gsm_networks[i].name; i++) {
- if (gsm_networks[i].mcc != mcc)
- continue;
- if ((gsm_networks[i].mnc & 0x00f) == 0x00f) {
- if (mnc2 == gsm_networks[i].mnc) {
- found++;
- position = i;
- }
- } else {
- if (mnc3 == gsm_networks[i].mnc) {
- found++;
- position = i;
- }
- }
- }
-
- if (found == 0)
- return "Unknown";
- if (found > 1)
- return "Ambiguous";
- return gsm_networks[position].name;
-}
-
-
diff --git a/Src/osmoconbb/src/host/layer23/src/common/sap_interface.c b/Src/osmoconbb/src/host/layer23/src/common/sap_interface.c
deleted file mode 100644
index fd5cdc3..0000000
--- a/Src/osmoconbb/src/host/layer23/src/common/sap_interface.c
+++ /dev/null
@@ -1,189 +0,0 @@
-/* BTSAP socket interface of layer2/3 stack */
-
-/* (C) 2010 by Holger Hans Peter Freyther
- * (C) 2010 by Harald Welte <laforge@gnumonks.org>
- * (C) 2010 by Andreas Eversberg <jolly@eversberg.eu>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <osmocom/bb/common/osmocom_data.h>
-#include <osmocom/bb/common/logging.h>
-#include <osmocom/bb/common/sap_interface.h>
-
-#include <osmocom/core/utils.h>
-
-#include <sys/socket.h>
-#include <sys/un.h>
-
-#include <arpa/inet.h>
-
-#define _GNU_SOURCE
-#include <unistd.h>
-#include <errno.h>
-#include <string.h>
-#include <stdlib.h>
-
-#define GSM_SAP_LENGTH 300
-#define GSM_SAP_HEADROOM 32
-
-static int sap_read(struct osmo_fd *fd)
-{
- struct msgb *msg;
- u_int16_t len;
- int rc;
- struct osmocom_ms *ms = (struct osmocom_ms *) fd->data;
-
- msg = msgb_alloc_headroom(GSM_SAP_LENGTH+GSM_SAP_HEADROOM, GSM_SAP_HEADROOM, "Layer2");
- if (!msg) {
- LOGP(DSAP, LOGL_ERROR, "Failed to allocate msg.\n");
- return -ENOMEM;
- }
-
- rc = read(fd->fd, &len, sizeof(len));
- if (rc < sizeof(len)) {
- fprintf(stderr, "SAP socket failed\n");
- msgb_free(msg);
- if (rc >= 0)
- rc = -EIO;
- sap_close(ms);
- return rc;
- }
-
- len = ntohs(len);
- if (len > GSM_SAP_LENGTH) {
- LOGP(DSAP, LOGL_ERROR, "Length is too big: %u\n", len);
- msgb_free(msg);
- return -EINVAL;
- }
-
-
- msg->l1h = msgb_put(msg, len);
- rc = read(fd->fd, msg->l1h, msgb_l1len(msg));
- if (rc != msgb_l1len(msg)) {
- LOGP(DSAP, LOGL_ERROR, "Can not read data: len=%d rc=%d "
- "errno=%d\n", len, rc, errno);
- msgb_free(msg);
- return rc;
- }
-
- if (ms->sap_entity.msg_handler)
- ms->sap_entity.msg_handler(msg, ms);
-
- return 0;
-}
-
-static int sap_write(struct osmo_fd *fd, struct msgb *msg)
-{
- int rc;
-
- if (fd->fd <= 0)
- return -EINVAL;
-
- rc = write(fd->fd, msg->data, msg->len);
- if (rc != msg->len) {
- LOGP(DSAP, LOGL_ERROR, "Failed to write data: rc: %d\n", rc);
- return rc;
- }
-
- return 0;
-}
-
-int sap_open(struct osmocom_ms *ms, const char *socket_path)
-{
- int rc;
- struct sockaddr_un local;
-
- ms->sap_wq.bfd.fd = socket(AF_UNIX, SOCK_STREAM, 0);
- if (ms->sap_wq.bfd.fd < 0) {
- fprintf(stderr, "Failed to create unix domain socket.\n");
- return ms->sap_wq.bfd.fd;
- }
-
- local.sun_family = AF_UNIX;
- strncpy(local.sun_path, socket_path, sizeof(local.sun_path));
- local.sun_path[sizeof(local.sun_path) - 1] = '\0';
-
- rc = connect(ms->sap_wq.bfd.fd, (struct sockaddr *) &local,
- sizeof(local.sun_family) + strlen(local.sun_path));
- if (rc < 0) {
- fprintf(stderr, "Failed to connect to '%s'.\n", local.sun_path);
- close(ms->sap_wq.bfd.fd);
- return rc;
- }
-
- osmo_wqueue_init(&ms->sap_wq, 100);
- ms->sap_wq.bfd.data = ms;
- ms->sap_wq.bfd.when = BSC_FD_READ;
- ms->sap_wq.read_cb = sap_read;
- ms->sap_wq.write_cb = sap_write;
-
- rc = osmo_fd_register(&ms->sap_wq.bfd);
- if (rc != 0) {
- fprintf(stderr, "Failed to register fd.\n");
- return rc;
- }
-
- return 0;
-}
-
-int sap_close(struct osmocom_ms *ms)
-{
- if (ms->sap_wq.bfd.fd <= 0)
- return -EINVAL;
-
- close(ms->sap_wq.bfd.fd);
- ms->sap_wq.bfd.fd = -1;
- osmo_fd_unregister(&ms->sap_wq.bfd);
-
- return 0;
-}
-
-int osmosap_send(struct osmocom_ms *ms, struct msgb *msg)
-{
- uint16_t *len;
-
- if (ms->sap_wq.bfd.fd <= 0)
- return -EINVAL;
-
- DEBUGP(DSAP, "Sending: '%s'\n", osmo_hexdump(msg->data, msg->len));
-
- if (msg->l1h != msg->data)
- LOGP(DSAP, LOGL_ERROR, "Message SAP header != Message Data\n");
-
- /* prepend 16bit length before sending */
- len = (uint16_t *) msgb_push(msg, sizeof(*len));
- *len = htons(msg->len - sizeof(*len));
-
- if (osmo_wqueue_enqueue(&ms->sap_wq, msg) != 0) {
- LOGP(DSAP, LOGL_ERROR, "Failed to enqueue msg.\n");
- msgb_free(msg);
- return -1;
- }
-
- return 0;
-}
-
-/* register message handler for messages that are sent from L2->L3 */
-int osmosap_register_handler(struct osmocom_ms *ms, osmosap_cb_t cb)
-{
- ms->sap_entity.msg_handler = cb;
-
- return 0;
-}
-
diff --git a/Src/osmoconbb/src/host/layer23/src/common/sim.c b/Src/osmoconbb/src/host/layer23/src/common/sim.c
deleted file mode 100644
index 3aca693..0000000
--- a/Src/osmoconbb/src/host/layer23/src/common/sim.c
+++ /dev/null
@@ -1,1236 +0,0 @@
-/*
- * (C) 2010 by Andreas Eversberg <jolly@eversberg.eu>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <errno.h>
-#include <arpa/inet.h>
-#include <osmocom/core/talloc.h>
-#include <osmocom/core/utils.h>
-
-#include <osmocom/bb/common/logging.h>
-#include <osmocom/bb/common/osmocom_data.h>
-#include <osmocom/bb/common/l1ctl.h>
-
-extern void *l23_ctx;
-static int sim_process_job(struct osmocom_ms *ms);
-
-/*
- * support
- */
-
-uint32_t new_handle = 1;
-
-static struct gsm1111_df_name {
- uint16_t file;
- const char *name;
-} gsm1111_df_name[] = {
- { 0x3f00, "MF" },
- { 0x7f20, "DFgsm" },
- { 0x7f10, "DFtelecom" },
- { 0x7f22, "DFis-41" },
- { 0x7f23, "DFfp-cts" },
- { 0x5f50, "DFgraphics" },
- { 0x5f30, "DFiridium" },
- { 0x5f31, "DFglobst" },
- { 0x5f32, "DFico" },
- { 0x5f33, "DFaces" },
- { 0x5f40, "DFeia/tia-553" },
- { 0x5f60, "DFcts" },
- { 0x5f70, "DFsolsa" },
- { 0x5f3c, "DFmexe" },
- { 0, NULL }
-};
-
-static const char *get_df_name(uint16_t fid)
-{
- int i;
- static char text[7];
-
- for (i = 0; gsm1111_df_name[i].file; i++)
- if (gsm1111_df_name[i].file == fid)
- break;
- if (gsm1111_df_name[i].file)
- return gsm1111_df_name[i].name;
-
- sprintf(text, "0x%04x", fid);
- return text;
-}
-
-static struct gsm_sim_handler *sim_get_handler(struct gsm_sim *sim,
- uint32_t handle)
-{
- struct gsm_sim_handler *handler;
-
- llist_for_each_entry(handler, &sim->handlers, entry)
- if (handler->handle == handle)
- return handler;
-
- return NULL;
-}
-
-/*
- * messages
- */
-
-static const struct value_string sim_job_names[] = {
- { SIM_JOB_READ_BINARY, "SIM_JOB_READ_BINARY" },
- { SIM_JOB_UPDATE_BINARY, "SIM_JOB_UPDATE_BINARY" },
- { SIM_JOB_READ_RECORD, "SIM_JOB_READ_RECORD" },
- { SIM_JOB_UPDATE_RECORD, "SIM_JOB_UPDATE_RECORD" },
- { SIM_JOB_SEEK_RECORD, "SIM_JOB_SEEK_RECORD" },
- { SIM_JOB_INCREASE, "SIM_JOB_INCREASE" },
- { SIM_JOB_INVALIDATE, "SIM_JOB_INVALIDATE" },
- { SIM_JOB_REHABILITATE, "SIM_JOB_REHABILITATE" },
- { SIM_JOB_RUN_GSM_ALGO, "SIM_JOB_RUN_GSM_ALGO" },
- { SIM_JOB_PIN1_UNLOCK, "SIM_JOB_PIN1_UNLOCK" },
- { SIM_JOB_PIN1_CHANGE, "SIM_JOB_PIN1_CHANGE" },
- { SIM_JOB_PIN1_DISABLE, "SIM_JOB_PIN1_DISABLE" },
- { SIM_JOB_PIN1_ENABLE, "SIM_JOB_PIN1_ENABLE" },
- { SIM_JOB_PIN1_UNBLOCK, "SIM_JOB_PIN1_UNBLOCK" },
- { SIM_JOB_PIN2_UNLOCK, "SIM_JOB_PIN2_UNLOCK" },
- { SIM_JOB_PIN2_CHANGE, "SIM_JOB_PIN2_CHANGE" },
- { SIM_JOB_PIN2_UNBLOCK, "SIM_JOB_PIN2_UNBLOCK" },
- { SIM_JOB_OK, "SIM_JOB_OK" },
- { SIM_JOB_ERROR, "SIM_JOB_ERROR" },
- { 0, NULL }
-};
-
-static const char *get_job_name(int value)
-{
- return get_value_string(sim_job_names, value);
-}
-
-/* allocate sim client message (upper layer) */
-struct msgb *gsm_sim_msgb_alloc(uint32_t handle, uint8_t job_type)
-{
- struct msgb *msg;
- struct sim_hdr *nsh;
-
- msg = msgb_alloc_headroom(SIM_ALLOC_SIZE+SIM_ALLOC_HEADROOM,
- SIM_ALLOC_HEADROOM, "SIM");
- if (!msg)
- return NULL;
-
- nsh = (struct sim_hdr *) msgb_put(msg, sizeof(*nsh));
- nsh->handle = handle;
- nsh->job_type = job_type;
-
- return msg;
-}
-
-/* reply to job, after it is done. reuse the msgb in the job */
-void gsm_sim_reply(struct osmocom_ms *ms, uint8_t result_type, uint8_t *result,
- uint16_t result_len)
-{
- struct gsm_sim *sim = &ms->sim;
- struct msgb *msg = sim->job_msg;
- struct sim_hdr *sh;
- uint8_t *payload;
- uint16_t payload_len;
- struct gsm_sim_handler *handler;
-
- LOGP(DSIM, LOGL_INFO, "sending result to callback function "
- "(type=%d)\n", result_type);
-
- /* if no handler, or no callback, just free the job */
- sh = (struct sim_hdr *)msg->data;
- handler = sim_get_handler(sim, sh->handle);
- if (!handler || !handler->cb) {
- LOGP(DSIM, LOGL_INFO, "no callback or no handler, "
- "dropping result\n");
- msgb_free(sim->job_msg);
- sim->job_msg = NULL;
- sim->job_state = SIM_JST_IDLE;
- return;
- }
-
- payload = msg->data + sizeof(*sh);
- payload_len = msg->len - sizeof(*sh);
-
- /* remove data */
- msg->tail -= payload_len;
- msg->len -= payload_len;
-
- /* add reply data */
- sh->job_type = result_type;
- if (result_len)
- memcpy(msgb_put(msg, result_len), result, result_len);
-
- /* callback */
- sim->job_state = SIM_JST_IDLE;
- sim->job_msg = NULL;
- handler->cb(ms, msg);
-}
-
-/* send APDU to card reader */
-static int sim_apdu_send(struct osmocom_ms *ms, uint8_t *data, uint16_t length)
-{
- LOGP(DSIM, LOGL_INFO, "sending APDU (class 0x%02x, ins 0x%02x)\n",
- data[0], data[1]);
- l1ctl_tx_sim_req(ms, data, length);
- return 0;
-}
-
-/* dequeue messages (RSL-SAP) */
-int gsm_sim_job_dequeue(struct osmocom_ms *ms)
-{
- struct gsm_sim *sim = &ms->sim;
- struct sim_hdr *sh;
- struct msgb *msg;
- struct gsm_sim_handler *handler;
-
- /* already have a job */
- if (sim->job_msg)
- return 0;
-
- /* get next job */
- while ((msg = msgb_dequeue(&sim->jobs))) {
- /* resolve handler */
- sh = (struct sim_hdr *) msg->data;
- LOGP(DSIM, LOGL_INFO, "got new job: %s (handle=%08x)\n",
- get_job_name(sh->job_type), sh->handle);
- handler = sim_get_handler(sim, sh->handle);
- if (!handler) {
- LOGP(DSIM, LOGL_INFO, "no handler, ignoring job\n");
- /* does not exist anymore */
- msgb_free(msg);
- continue;
- }
-
- /* init job */
- sim->job_state = SIM_JST_IDLE;
- sim->job_msg = msg;
- sim->job_handle = sh->handle;
-
- /* process current job, message is freed there */
- sim_process_job(ms);
- return 1; /* work done */
- }
-
- return 0;
-}
-
-
-/*
- * SIM commands
- */
-
-/* 9.2.1 */
-static int gsm1111_tx_select(struct osmocom_ms *ms, uint16_t fid)
-{
- uint8_t buffer[5 + 2];
-
- LOGP(DSIM, LOGL_INFO, "SELECT (file=0x%04x)\n", fid);
- buffer[0] = GSM1111_CLASS_GSM;
- buffer[1] = GSM1111_INST_SELECT;
- buffer[2] = 0x00;
- buffer[3] = 0x00;
- buffer[4] = 2;
- buffer[5] = fid >> 8;
- buffer[6] = fid;
-
- return sim_apdu_send(ms, buffer, 5 + 2);
-}
-
-#if 0
-/* 9.2.2 */
-static int gsm1111_tx_status(struct osmocom_ms *ms)
-{
- uint8_t buffer[5];
-
- LOGP(DSIM, LOGL_INFO, "STATUS\n");
- buffer[0] = GSM1111_CLASS_GSM;
- buffer[1] = GSM1111_INST_STATUS;
- buffer[2] = 0x00;
- buffer[3] = 0x00;
- buffer[4] = 0;
-
- return sim_apdu_send(ms, buffer, 5);
-}
-#endif
-
-/* 9.2.3 */
-static int gsm1111_tx_read_binary(struct osmocom_ms *ms, uint16_t offset,
- uint8_t length)
-{
- uint8_t buffer[5];
-
- LOGP(DSIM, LOGL_INFO, "READ BINARY (offset=%d len=%d)\n", offset,
- length);
- buffer[0] = GSM1111_CLASS_GSM;
- buffer[1] = GSM1111_INST_READ_BINARY;
- buffer[2] = offset >> 8;
- buffer[3] = offset;
- buffer[4] = length;
-
- return sim_apdu_send(ms, buffer, 5);
-}
-
-/* 9.2.4 */
-static int gsm1111_tx_update_binary(struct osmocom_ms *ms, uint16_t offset,
- uint8_t *data, uint8_t length)
-{
- uint8_t buffer[5 + length];
-
- LOGP(DSIM, LOGL_INFO, "UPDATE BINARY (offset=%d len=%d)\n", offset,
- length);
- buffer[0] = GSM1111_CLASS_GSM;
- buffer[1] = GSM1111_INST_UPDATE_BINARY;
- buffer[2] = offset >> 8;
- buffer[3] = offset;
- buffer[4] = length;
- memcpy(buffer + 5, data, length);
-
- return sim_apdu_send(ms, buffer, 5 + length);
-}
-
-/* 9.2.5 */
-static int gsm1111_tx_read_record(struct osmocom_ms *ms, uint8_t rec_no,
- uint8_t mode, uint8_t length)
-{
- uint8_t buffer[5];
-
- LOGP(DSIM, LOGL_INFO, "READ RECORD (rec_no=%d mode=%d len=%d)\n",
- rec_no, mode, length);
- buffer[0] = GSM1111_CLASS_GSM;
- buffer[1] = GSM1111_INST_READ_RECORD;
- buffer[2] = rec_no;
- buffer[3] = mode;
- buffer[4] = length;
-
- return sim_apdu_send(ms, buffer, 5);
-}
-
-/* 9.2.6 */
-static int gsm1111_tx_update_record(struct osmocom_ms *ms, uint8_t rec_no,
- uint8_t mode, uint8_t *data, uint8_t length)
-{
- uint8_t buffer[5 + length];
-
- LOGP(DSIM, LOGL_INFO, "UPDATE RECORD (rec_no=%d mode=%d len=%d)\n",
- rec_no, mode, length);
- buffer[0] = GSM1111_CLASS_GSM;
- buffer[1] = GSM1111_INST_UPDATE_RECORD;
- buffer[2] = rec_no;
- buffer[3] = mode;
- buffer[4] = length;
- memcpy(buffer + 5, data, length);
-
- return sim_apdu_send(ms, buffer, 5 + length);
-}
-
-/* 9.2.7 */
-static int gsm1111_tx_seek(struct osmocom_ms *ms, uint8_t type_mode,
- uint8_t *pattern, uint8_t length)
-{
- uint8_t buffer[5 + length];
- uint8_t type = type_mode >> 4;
- uint8_t mode = type_mode & 0x0f;
-
- LOGP(DSIM, LOGL_INFO, "SEEK (type=%d mode=%d len=%d)\n", type, mode,
- length);
- buffer[0] = GSM1111_CLASS_GSM;
- buffer[1] = GSM1111_INST_SEEK;
- buffer[2] = 0x00;
- buffer[3] = type_mode;
- buffer[4] = length;
- memcpy(buffer + 5, pattern, length);
-
- return sim_apdu_send(ms, buffer, 5 + length);
-}
-
-/* 9.2.8 */
-static int gsm1111_tx_increase(struct osmocom_ms *ms, uint32_t value)
-{
- uint8_t buffer[5 + 3];
-
- LOGP(DSIM, LOGL_INFO, "INCREASE (value=%d)\n", value);
- buffer[0] = GSM1111_CLASS_GSM;
- buffer[1] = GSM1111_INST_INCREASE;
- buffer[2] = 0x00;
- buffer[3] = 0x00;
- buffer[4] = 3;
- buffer[5] = value >> 16;
- buffer[6] = value >> 8;
- buffer[7] = value;
-
- return sim_apdu_send(ms, buffer, 5 + 3);
-}
-
-/* 9.2.9 */
-static int gsm1111_tx_verify_chv(struct osmocom_ms *ms, uint8_t chv_no,
- uint8_t *chv, uint8_t length)
-{
- uint8_t buffer[5 + 8];
- int i;
-
- LOGP(DSIM, LOGL_INFO, "VERIFY CHV (CHV%d)\n", chv_no);
- buffer[0] = GSM1111_CLASS_GSM;
- buffer[1] = GSM1111_INST_VERIFY_CHV;
- buffer[2] = 0x00;
- buffer[3] = chv_no;
- buffer[4] = 8;
- for (i = 0; i < 8; i++) {
- if (i < length)
- buffer[5 + i] = chv[i];
- else
- buffer[5 + i] = 0xff;
- }
-
- return sim_apdu_send(ms, buffer, 5 + 8);
-}
-
-/* 9.2.10 */
-static int gsm1111_tx_change_chv(struct osmocom_ms *ms, uint8_t chv_no,
- uint8_t *chv_old, uint8_t length_old, uint8_t *chv_new,
- uint8_t length_new)
-{
- uint8_t buffer[5 + 16];
- int i;
-
- LOGP(DSIM, LOGL_INFO, "CHANGE CHV (CHV%d)\n", chv_no);
- buffer[0] = GSM1111_CLASS_GSM;
- buffer[1] = GSM1111_INST_CHANGE_CHV;
- buffer[2] = 0x00;
- buffer[3] = chv_no;
- buffer[4] = 16;
- for (i = 0; i < 8; i++) {
- if (i < length_old)
- buffer[5 + i] = chv_old[i];
- else
- buffer[5 + i] = 0xff;
- if (i < length_new)
- buffer[13 + i] = chv_new[i];
- else
- buffer[13 + i] = 0xff;
- }
-
- return sim_apdu_send(ms, buffer, 5 + 16);
-}
-
-/* 9.2.11 */
-static int gsm1111_tx_disable_chv(struct osmocom_ms *ms, uint8_t *chv,
- uint8_t length)
-{
- uint8_t buffer[5 + 8];
- int i;
-
- LOGP(DSIM, LOGL_INFO, "DISABLE CHV (CHV1)\n");
- buffer[0] = GSM1111_CLASS_GSM;
- buffer[1] = GSM1111_INST_DISABLE_CHV;
- buffer[2] = 0x00;
- buffer[3] = 0x01;
- buffer[4] = 8;
- for (i = 0; i < 8; i++) {
- if (i < length)
- buffer[5 + i] = chv[i];
- else
- buffer[5 + i] = 0xff;
- }
-
- return sim_apdu_send(ms, buffer, 5 + 8);
-}
-
-/* 9.2.12 */
-static int gsm1111_tx_enable_chv(struct osmocom_ms *ms, uint8_t *chv,
- uint8_t length)
-{
- uint8_t buffer[5 + 8];
- int i;
-
- LOGP(DSIM, LOGL_INFO, "ENABLE CHV (CHV1)\n");
- buffer[0] = GSM1111_CLASS_GSM;
- buffer[1] = GSM1111_INST_ENABLE_CHV;
- buffer[2] = 0x00;
- buffer[3] = 0x01;
- buffer[4] = 8;
- for (i = 0; i < 8; i++) {
- if (i < length)
- buffer[5 + i] = chv[i];
- else
- buffer[5 + i] = 0xff;
- }
-
- return sim_apdu_send(ms, buffer, 5 + 8);
-}
-
-/* 9.2.13 */
-static int gsm1111_tx_unblock_chv(struct osmocom_ms *ms, uint8_t chv_no,
- uint8_t *chv_unblk, uint8_t length_unblk, uint8_t *chv_new,
- uint8_t length_new)
-{
- uint8_t buffer[5 + 16];
- int i;
-
- LOGP(DSIM, LOGL_INFO, "UNBLOCK CHV (CHV%d)\n", (chv_no == 2) ? 2 : 1);
- buffer[0] = GSM1111_CLASS_GSM;
- buffer[1] = GSM1111_INST_UNBLOCK_CHV;
- buffer[2] = 0x00;
- buffer[3] = (chv_no == 1) ? 0 : chv_no;
- buffer[4] = 16;
- for (i = 0; i < 8; i++) {
- if (i < length_unblk)
- buffer[5 + i] = chv_unblk[i];
- else
- buffer[5 + i] = 0xff;
- if (i < length_new)
- buffer[13 + i] = chv_new[i];
- else
- buffer[13 + i] = 0xff;
- }
-
- return sim_apdu_send(ms, buffer, 5 + 16);
-}
-
-/* 9.2.14 */
-static int gsm1111_tx_invalidate(struct osmocom_ms *ms)
-{
- uint8_t buffer[5];
-
- LOGP(DSIM, LOGL_INFO, "INVALIDATE\n");
- buffer[0] = GSM1111_CLASS_GSM;
- buffer[1] = GSM1111_INST_INVALIDATE;
- buffer[2] = 0x00;
- buffer[3] = 0x00;
- buffer[4] = 0;
-
- return sim_apdu_send(ms, buffer, 5);
-}
-
-/* 9.2.15 */
-static int gsm1111_tx_rehabilitate(struct osmocom_ms *ms)
-{
- uint8_t buffer[5];
-
- LOGP(DSIM, LOGL_INFO, "REHABILITATE\n");
- buffer[0] = GSM1111_CLASS_GSM;
- buffer[1] = GSM1111_INST_REHABLILITATE;
- buffer[2] = 0x00;
- buffer[3] = 0x00;
- buffer[4] = 0;
-
- return sim_apdu_send(ms, buffer, 5);
-}
-
-/* 9.2.16 */
-static int gsm1111_tx_run_gsm_algo(struct osmocom_ms *ms, uint8_t *rand)
-{
- uint8_t buffer[5 + 16];
-
- LOGP(DSIM, LOGL_INFO, "RUN GSM ALGORITHM\n");
- buffer[0] = GSM1111_CLASS_GSM;
- buffer[1] = GSM1111_INST_RUN_GSM_ALGO;
- buffer[2] = 0x00;
- buffer[3] = 0x00;
- buffer[4] = 16;
- memcpy(buffer + 5, rand, 16);
-
- return sim_apdu_send(ms, buffer, 5 + 16);
-}
-
-#if 0
-/* 9.2.17 */
-static int gsm1111_tx_sleep(struct osmocom_ms *ms)
-{
- uint8_t buffer[5];
-
- LOGP(DSIM, LOGL_INFO, "\n");
- buffer[0] = GSM1111_CLASS_GSM;
- buffer[1] = GSM1111_INST_SLEEP;
- buffer[2] = 0x00;
- buffer[3] = 0x00;
- buffer[4] = 0;
-
- return sim_apdu_send(ms, buffer, 5);
-}
-#endif
-
-/* 9.2.18 */
-static int gsm1111_tx_get_response(struct osmocom_ms *ms, uint8_t length)
-{
- uint8_t buffer[5];
-
- LOGP(DSIM, LOGL_INFO, "GET RESPONSE (len=%d)\n", length);
- buffer[0] = GSM1111_CLASS_GSM;
- buffer[1] = GSM1111_INST_GET_RESPONSE;
- buffer[2] = 0x00;
- buffer[3] = 0x00;
- buffer[4] = length;
-
- return sim_apdu_send(ms, buffer, 5);
-}
-
-#if 0
-/* 9.2.19 */
-static int gsm1111_tx_terminal_profile(struct osmocom_ms *ms, uint8_t *data,
- uint8_t length)
-{
- uint8_t buffer[5 + length];
-
- LOGP(DSIM, LOGL_INFO, "TERMINAL PROFILE (len=%d)\n", length);
- buffer[0] = GSM1111_CLASS_GSM;
- buffer[1] = GSM1111_INST_TERMINAL_PROFILE;
- buffer[2] = 0x00;
- buffer[3] = 0x00;
- buffer[4] = length;
- memcpy(buffer + 5, data, length);
-
- return sim_apdu_send(ms, buffer, 5 + length);
-}
-
-/* 9.2.20 */
-static int gsm1111_tx_envelope(struct osmocom_ms *ms, uint8_t *data,
- uint8_t length)
-{
- uint8_t buffer[5 + length];
-
- LOGP(DSIM, LOGL_INFO, "ENVELOPE (len=%d)\n", length);
- buffer[0] = GSM1111_CLASS_GSM;
- buffer[1] = GSM1111_INST_ENVELOPE;
- buffer[2] = 0x00;
- buffer[3] = 0x00;
- buffer[4] = length;
- memcpy(buffer + 5, data, length);
-
- return sim_apdu_send(ms, buffer, 5 + length);
-}
-
-/* 9.2.21 */
-static int gsm1111_tx_fetch(struct osmocom_ms *ms, uint8_t length)
-{
- uint8_t buffer[5];
-
- LOGP(DSIM, LOGL_INFO, "FETCH (len=%d)\n", length);
- buffer[0] = GSM1111_CLASS_GSM;
- buffer[1] = GSM1111_INST_FETCH;
- buffer[2] = 0x00;
- buffer[3] = 0x00;
- buffer[4] = length;
-
- return sim_apdu_send(ms, buffer, 5);
-}
-
-/* 9.2.22 */
-static int gsm1111_tx_terminal_response(struct osmocom_ms *ms, uint8_t *data,
- uint8_t length)
-{
- uint8_t buffer[5 + length];
-
- LOGP(DSIM, LOGL_INFO, "TERMINAL RESPONSE (len=%d)\n", length);
- buffer[0] = GSM1111_CLASS_GSM;
- buffer[1] = GSM1111_INST_TERMINAL_RESPONSE;
- buffer[2] = 0x00;
- buffer[3] = 0x00;
- buffer[4] = length;
- memcpy(buffer + 5, data, length);
-
- return sim_apdu_send(ms, buffer, 5 + length);
-}
-#endif
-
-/*
- * SIM state machine
- */
-
-/* process job */
-static int sim_process_job(struct osmocom_ms *ms)
-{
- struct gsm_sim *sim = &ms->sim;
- uint8_t *payload, *payload2;
- uint16_t payload_len, payload_len2;
- struct sim_hdr *sh;
- uint8_t cause;
- int i;
-
- /* no current */
- if (!sim->job_msg)
- return 0;
-
- sh = (struct sim_hdr *)sim->job_msg->data;
- payload = sim->job_msg->data + sizeof(*sh);
- payload_len = sim->job_msg->len - sizeof(*sh);
-
- /* do reset before sim reading */
- if (!sim->reset) {
- sim->reset = 1;
- // FIXME: send reset command to L1
- }
-
- /* navigate to right DF */
- switch (sh->job_type) {
- case SIM_JOB_READ_BINARY:
- case SIM_JOB_UPDATE_BINARY:
- case SIM_JOB_READ_RECORD:
- case SIM_JOB_UPDATE_RECORD:
- case SIM_JOB_SEEK_RECORD:
- case SIM_JOB_INCREASE:
- case SIM_JOB_INVALIDATE:
- case SIM_JOB_REHABILITATE:
- case SIM_JOB_RUN_GSM_ALGO:
- /* check MF / DF */
- i = 0;
- while (sh->path[i] && sim->path[i]) {
- if (sh->path[i] != sim->path[i])
- break;
- i++;
- }
- /* if path in message is shorter or if paths are different */
- if (sim->path[i]) {
- LOGP(DSIM, LOGL_INFO, "go MF\n");
- sim->job_state = SIM_JST_SELECT_MFDF;
- /* go MF */
- sim->path[0] = 0;
- return gsm1111_tx_select(ms, 0x3f00);
- }
- /* if path in message is longer */
- if (sh->path[i]) {
- LOGP(DSIM, LOGL_INFO, "requested path is longer, go "
- "child %s\n", get_df_name(sh->path[i]));
- sim->job_state = SIM_JST_SELECT_MFDF;
- /* select child */
- sim->path[i] = sh->path[i];
- sim->path[i + 1] = 0;
- return gsm1111_tx_select(ms, sh->path[i]);
- }
- /* if paths are equal, continue */
- }
-
- /* set state and trigger SIM process */
- switch (sh->job_type) {
- case SIM_JOB_READ_BINARY:
- case SIM_JOB_UPDATE_BINARY:
- case SIM_JOB_READ_RECORD:
- case SIM_JOB_UPDATE_RECORD:
- case SIM_JOB_SEEK_RECORD:
- case SIM_JOB_INCREASE:
- case SIM_JOB_INVALIDATE:
- case SIM_JOB_REHABILITATE:
- sim->job_state = SIM_JST_SELECT_EF;
- sim->file = sh->file;
- return gsm1111_tx_select(ms, sh->file);
- case SIM_JOB_RUN_GSM_ALGO:
- if (payload_len != 16) {
- LOGP(DSIM, LOGL_ERROR, "random not 16 bytes\n");
- break;
- }
- sim->job_state = SIM_JST_RUN_GSM_ALGO;
- return gsm1111_tx_run_gsm_algo(ms, payload);
- case SIM_JOB_PIN1_UNLOCK:
- payload_len = strlen((char *)payload);
- if (payload_len < 4 || payload_len > 8) {
- LOGP(DSIM, LOGL_ERROR, "key not in range 4..8\n");
- break;
- }
- sim->job_state = SIM_JST_PIN1_UNLOCK;
- return gsm1111_tx_verify_chv(ms, 0x01, payload, payload_len);
- case SIM_JOB_PIN2_UNLOCK:
- payload_len = strlen((char *)payload);
- if (payload_len < 4 || payload_len > 8) {
- LOGP(DSIM, LOGL_ERROR, "key not in range 4..8\n");
- break;
- }
- sim->job_state = SIM_JST_PIN2_UNLOCK;
- return gsm1111_tx_verify_chv(ms, 0x02, payload, payload_len);
- case SIM_JOB_PIN1_CHANGE:
- payload_len = strlen((char *)payload);
- payload2 = payload + payload_len + 1;
- payload_len2 = strlen((char *)payload2);
- if (payload_len < 4 || payload_len > 8) {
- LOGP(DSIM, LOGL_ERROR, "key1 not in range 4..8\n");
- break;
- }
- if (payload_len2 < 4 || payload_len2 > 8) {
- LOGP(DSIM, LOGL_ERROR, "key2 not in range 4..8\n");
- break;
- }
- sim->job_state = SIM_JST_PIN1_CHANGE;
- return gsm1111_tx_change_chv(ms, 0x01, payload, payload_len,
- payload2, payload_len2);
- case SIM_JOB_PIN2_CHANGE:
- payload_len = strlen((char *)payload);
- payload2 = payload + payload_len + 1;
- payload_len2 = strlen((char *)payload2);
- if (payload_len < 4 || payload_len > 8) {
- LOGP(DSIM, LOGL_ERROR, "key1 not in range 4..8\n");
- break;
- }
- if (payload_len2 < 4 || payload_len2 > 8) {
- LOGP(DSIM, LOGL_ERROR, "key2 not in range 4..8\n");
- break;
- }
- sim->job_state = SIM_JST_PIN2_CHANGE;
- return gsm1111_tx_change_chv(ms, 0x02, payload, payload_len,
- payload2, payload_len2);
- case SIM_JOB_PIN1_DISABLE:
- payload_len = strlen((char *)payload);
- if (payload_len < 4 || payload_len > 8) {
- LOGP(DSIM, LOGL_ERROR, "key not in range 4..8\n");
- break;
- }
- sim->job_state = SIM_JST_PIN1_DISABLE;
- return gsm1111_tx_disable_chv(ms, payload, payload_len);
- case SIM_JOB_PIN1_ENABLE:
- payload_len = strlen((char *)payload);
- if (payload_len < 4 || payload_len > 8) {
- LOGP(DSIM, LOGL_ERROR, "key not in range 4..8\n");
- break;
- }
- sim->job_state = SIM_JST_PIN1_ENABLE;
- return gsm1111_tx_enable_chv(ms, payload, payload_len);
- case SIM_JOB_PIN1_UNBLOCK:
- payload_len = strlen((char *)payload);
- payload2 = payload + payload_len + 1;
- payload_len2 = strlen((char *)payload2);
- if (payload_len != 8) {
- LOGP(DSIM, LOGL_ERROR, "key1 not 8 digits\n");
- break;
- }
- if (payload_len2 < 4 || payload_len2 > 8) {
- LOGP(DSIM, LOGL_ERROR, "key2 not in range 4..8\n");
- break;
- }
- sim->job_state = SIM_JST_PIN1_UNBLOCK;
- /* NOTE: CHV1 is coded 0x00 here */
- return gsm1111_tx_unblock_chv(ms, 0x00, payload, payload_len,
- payload2, payload_len2);
- case SIM_JOB_PIN2_UNBLOCK:
- payload_len = strlen((char *)payload);
- payload2 = payload + payload_len + 1;
- payload_len2 = strlen((char *)payload2);
- if (payload_len != 8) {
- LOGP(DSIM, LOGL_ERROR, "key1 not 8 digits\n");
- break;
- }
- if (payload_len2 < 4 || payload_len2 > 8) {
- LOGP(DSIM, LOGL_ERROR, "key2 not in range 4..8\n");
- break;
- }
- sim->job_state = SIM_JST_PIN2_UNBLOCK;
- return gsm1111_tx_unblock_chv(ms, 0x02, payload, payload_len,
- payload2, payload_len2);
- }
-
- LOGP(DSIM, LOGL_ERROR, "unknown job %x, please fix\n", sh->job_type);
- cause = SIM_CAUSE_REQUEST_ERROR;
- gsm_sim_reply(ms, SIM_JOB_ERROR, &cause, 1);
-
- return 0;
-}
-
-/* receive SIM response */
-int sim_apdu_resp(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm_sim *sim = &ms->sim;
- uint8_t *payload;
- uint16_t payload_len;
- uint8_t *data = msg->data;
- int length = msg->len, ef_len;
- uint8_t sw1, sw2;
- uint8_t cause;
- uint8_t pin_cause[2];
- struct sim_hdr *sh;
- struct gsm1111_response_ef *ef;
- struct gsm1111_response_mfdf *mfdf;
- struct gsm1111_response_mfdf_gsm *mfdf_gsm;
- int i;
-
- /* ignore, if current job already gone */
- if (!sim->job_msg) {
- LOGP(DSIM, LOGL_ERROR, "received APDU but no job, "
- "please fix!\n");
- msgb_free(msg);
- return 0;
- }
-
- sh = (struct sim_hdr *)sim->job_msg->data;
- payload = sim->job_msg->data + sizeof(*sh);
- payload_len = sim->job_msg->len - sizeof(*sh);
-
- /* process status */
- if (length < 2) {
- msgb_free(msg);
- return 0;
- }
- sw1 = data[length - 2];
- sw2 = data[length - 1];
- length -= 2;
- LOGP(DSIM, LOGL_INFO, "received APDU (len=%d sw1=0x%02x sw2=0x%02x)\n",
- length, sw1, sw2);
-
- switch (sw1) {
- case GSM1111_STAT_SECURITY:
- LOGP(DSIM, LOGL_NOTICE, "SIM Security\n");
- /* error */
- if (sw2 != GSM1111_SEC_NO_ACCESS && sw2 != GSM1111_SEC_BLOCKED)
- goto sim_error;
-
- /* select the right remaining counter an cause */
- // FIXME: read status to replace "*_remain"-counters
- switch (sim->job_state) {
- case SIM_JST_PIN1_UNBLOCK:
- if (sw2 == GSM1111_SEC_NO_ACCESS) {
- pin_cause[0] = SIM_CAUSE_PIN1_BLOCKED;
- pin_cause[1] = --sim->unblk1_remain;
- } else {
- pin_cause[0] = SIM_CAUSE_PUC_BLOCKED;
- pin_cause[1] = 0;
- }
- break;
- case SIM_JST_PIN2_UNLOCK:
- case SIM_JST_PIN2_CHANGE:
- if (sw2 == GSM1111_SEC_NO_ACCESS && sim->chv2_remain) {
- pin_cause[0] = SIM_CAUSE_PIN2_REQUIRED;
- pin_cause[1] = sim->chv2_remain--;
- } else {
- pin_cause[0] = SIM_CAUSE_PIN2_BLOCKED;
- pin_cause[1] = sim->unblk2_remain;
- }
- break;
- case SIM_JST_PIN2_UNBLOCK:
- if (sw2 == GSM1111_SEC_NO_ACCESS) {
- pin_cause[0] = SIM_CAUSE_PIN2_BLOCKED;
- pin_cause[1] = --sim->unblk2_remain;
- } else {
- pin_cause[0] = SIM_CAUSE_PUC_BLOCKED;
- pin_cause[1] = 0;
- }
- case SIM_JST_PIN1_UNLOCK:
- case SIM_JST_PIN1_CHANGE:
- case SIM_JST_PIN1_DISABLE:
- case SIM_JST_PIN1_ENABLE:
- default:
- if (sw2 == GSM1111_SEC_NO_ACCESS && sim->chv1_remain) {
- pin_cause[0] = SIM_CAUSE_PIN1_REQUIRED;
- pin_cause[1] = sim->chv1_remain--;
- } else {
- pin_cause[0] = SIM_CAUSE_PIN1_BLOCKED;
- pin_cause[1] = sim->unblk1_remain;
- }
- break;
- }
- gsm_sim_reply(ms, SIM_JOB_ERROR, pin_cause, 2);
- msgb_free(msg);
- return 0;
- case GSM1111_STAT_MEM_PROBLEM:
- if (sw2 >= 0x40) {
- LOGP(DSIM, LOGL_NOTICE, "memory of SIM failed\n");
- sim_error:
- cause = SIM_CAUSE_SIM_ERROR;
- gsm_sim_reply(ms, SIM_JOB_ERROR, &cause, 1);
- msgb_free(msg);
- return 0;
- }
- LOGP(DSIM, LOGL_NOTICE, "memory of SIM is bad (write took %d "
- "times to succeed)\n", sw2);
- /* fall through */
- case GSM1111_STAT_NORMAL:
- case GSM1111_STAT_PROACTIVE:
- case GSM1111_STAT_DL_ERROR:
- case GSM1111_STAT_RESPONSE:
- case GSM1111_STAT_RESPONSE_TOO:
- LOGP(DSIM, LOGL_INFO, "command successfull\n");
- break;
- default:
- LOGP(DSIM, LOGL_INFO, "command failed\n");
- request_error:
- cause = SIM_CAUSE_REQUEST_ERROR;
- gsm_sim_reply(ms, SIM_JOB_ERROR, &cause, 1);
- msgb_free(msg);
- return 0;
- }
-
-
- switch (sim->job_state) {
- /* step 1: after selecting MF / DF, request the response */
- case SIM_JST_SELECT_MFDF:
- /* not enough data */
- if (sw2 < 22) {
- LOGP(DSIM, LOGL_NOTICE, "expecting minimum 22 bytes\n");
- goto sim_error;
- }
- /* request response */
- sim->job_state = SIM_JST_SELECT_MFDF_RESP;
- gsm1111_tx_get_response(ms, sw2);
- msgb_free(msg);
- return 0;
- /* step 2: after getting response of selecting MF / DF, continue
- * to "process_job".
- */
- case SIM_JST_SELECT_MFDF_RESP:
- if (length < 22) {
- LOGP(DSIM, LOGL_NOTICE, "expecting minimum 22 bytes\n");
- goto sim_error;
- }
- mfdf = (struct gsm1111_response_mfdf *)data;
- mfdf_gsm = (struct gsm1111_response_mfdf_gsm *)(data + 13);
- sim->chv1_remain = mfdf_gsm->chv1_remain;
- sim->chv2_remain = mfdf_gsm->chv2_remain;
- sim->unblk1_remain = mfdf_gsm->unblk1_remain;
- sim->unblk2_remain = mfdf_gsm->unblk2_remain;
- /* if MF was selected */
- if (sim->path[0] == 0) {
- /* if MF was selected, but MF is not indicated */
- if (ntohs(mfdf->file_id) != 0x3f00) {
- LOGP(DSIM, LOGL_NOTICE, "Not MF\n");
- goto sim_error;
- }
- /* if MF was selected, but type is not indicated */
- if (mfdf->tof != GSM1111_TOF_MF) {
- LOGP(DSIM, LOGL_NOTICE, "MF %02x != %02x "
- "%04x\n", mfdf->tof, GSM1111_TOF_MF,
- sim->path[0]);
- goto sim_error;
- }
- /* now continue */
- msgb_free(msg);
- return sim_process_job(ms);
- }
- /* if DF was selected, but this DF is not indicated */
- i = 0;
- while (sim->path[i + 1])
- i++;
- if (ntohs(mfdf->file_id) != sim->path[i]) {
- LOGP(DSIM, LOGL_NOTICE, "Path %04x != %04x\n",
- ntohs(mfdf->file_id), sim->path[i]);
- goto sim_error;
- }
- /* if DF was selected, but type is not indicated */
- if (mfdf->tof != GSM1111_TOF_DF) {
- LOGP(DSIM, LOGL_NOTICE, "TOF error\n");
- goto sim_error;
- }
- /* now continue */
- msgb_free(msg);
- return sim_process_job(ms);
- /* step 1: after selecting EF, request response of SELECT */
- case SIM_JST_SELECT_EF:
- /* not enough data */
- if (sw2 < 14) {
- LOGP(DSIM, LOGL_NOTICE, "expecting minimum 14 bytes\n");
- goto sim_error;
- }
- /* request response */
- sim->job_state = SIM_JST_SELECT_EF_RESP;
- gsm1111_tx_get_response(ms, sw2);
- msgb_free(msg);
- return 0;
- /* step 2: after getting response of selecting EF, do file command */
- case SIM_JST_SELECT_EF_RESP:
- if (length < 14) {
- LOGP(DSIM, LOGL_NOTICE, "expecting minimum 14 bytes\n");
- goto sim_error;
- }
- ef = (struct gsm1111_response_ef *)data;
- /* if EF was selected, but type is not indicated */
- if (ntohs(ef->file_id) != sim->file) {
- LOGP(DSIM, LOGL_NOTICE, "EF ID %04x != %04x\n",
- ntohs(ef->file_id), sim->file);
- goto sim_error;
- }
- /* get length of file */
- ef_len = ntohs(ef->file_size);
- /* do file command */
- sim->job_state = SIM_JST_WAIT_FILE;
- switch (sh->job_type) {
- case SIM_JOB_READ_BINARY:
- // FIXME: do chunks when greater or equal 256 bytes */
- gsm1111_tx_read_binary(ms, 0, ef_len);
- break;
- case SIM_JOB_UPDATE_BINARY:
- // FIXME: do chunks when greater or equal 256 bytes */
- if (ef_len < payload_len) {
- LOGP(DSIM, LOGL_NOTICE, "selected file is "
- "smaller (%d) than data to update "
- "(%d)\n", ef_len, payload_len);
- goto request_error;
- }
- gsm1111_tx_update_binary(ms, 0, payload, payload_len);
- break;
- case SIM_JOB_READ_RECORD:
- gsm1111_tx_read_record(ms, sh->rec_no, sh->rec_mode,
- ef_len);
- break;
- case SIM_JOB_UPDATE_RECORD:
- if (ef_len != payload_len) {
- LOGP(DSIM, LOGL_NOTICE, "selected file length "
- "(%d) does not equal record to update "
- "(%d)\n", ef_len, payload_len);
- goto request_error;
- }
- gsm1111_tx_update_record(ms, sh->rec_no, sh->rec_mode,
- payload, payload_len);
- break;
- case SIM_JOB_SEEK_RECORD:
- gsm1111_tx_seek(ms, sh->seek_type_mode, data, length);
- break;
- case SIM_JOB_INCREASE:
- if (length != 4) {
- LOGP(DSIM, LOGL_ERROR, "expecting uint32_t as "
- "value lenght, but got %d bytes\n",
- length);
- goto request_error;
- }
- gsm1111_tx_increase(ms, *((uint32_t *)data));
- break;
- case SIM_JOB_INVALIDATE:
- gsm1111_tx_invalidate(ms);
- break;
- case SIM_JOB_REHABILITATE:
- gsm1111_tx_rehabilitate(ms);
- break;
- }
- msgb_free(msg);
- return 0;
- /* step 3: after processing file command, job is done */
- case SIM_JST_WAIT_FILE:
- /* reply job with data */
- gsm_sim_reply(ms, SIM_JOB_OK, data, length);
- msgb_free(msg);
- return 0;
- /* step 1: after running GSM algorithm, request response */
- case SIM_JST_RUN_GSM_ALGO:
- /* not enough data */
- if (sw2 < 12) {
- LOGP(DSIM, LOGL_NOTICE, "expecting minimum 12 bytes\n");
- goto sim_error;
- }
- /* request response */
- sim->job_state = SIM_JST_RUN_GSM_ALGO_RESP;
- gsm1111_tx_get_response(ms, sw2);
- msgb_free(msg);
- return 0;
- /* step 2: after processing GSM command, job is done */
- case SIM_JST_RUN_GSM_ALGO_RESP:
- /* reply job with data */
- gsm_sim_reply(ms, SIM_JOB_OK, data, length);
- msgb_free(msg);
- return 0;
- case SIM_JST_PIN1_UNLOCK:
- case SIM_JST_PIN1_CHANGE:
- case SIM_JST_PIN1_DISABLE:
- case SIM_JST_PIN1_ENABLE:
- case SIM_JST_PIN1_UNBLOCK:
- case SIM_JST_PIN2_UNLOCK:
- case SIM_JST_PIN2_CHANGE:
- case SIM_JST_PIN2_UNBLOCK:
- /* reply job with data */
- gsm_sim_reply(ms, SIM_JOB_OK, data, length);
- msgb_free(msg);
- return 0;
- }
-
- LOGP(DSIM, LOGL_ERROR, "unknown state %u, please fix!\n",
- sim->job_state);
- goto request_error;
-}
-
-/*
- * API
- */
-
-/* open access to sim */
-uint32_t sim_open(struct osmocom_ms *ms,
- void (*cb)(struct osmocom_ms *ms, struct msgb *msg))
-{
- struct gsm_sim *sim = &ms->sim;
- struct gsm_sim_handler *handler;
-
- /* create handler and attach */
- handler = talloc_zero(l23_ctx, struct gsm_sim_handler);
- if (!handler)
- return 0;
- handler->handle = new_handle++;
- handler->cb = cb;
- llist_add_tail(&handler->entry, &sim->handlers);
-
- return handler->handle;
-}
-
-/* close access to sim */
-void sim_close(struct osmocom_ms *ms, uint32_t handle)
-{
- struct gsm_sim *sim = &ms->sim;
- struct gsm_sim_handler *handler;
-
- handler = sim_get_handler(sim, handle);
- if (!handle)
- return;
-
- /* kill ourself */
- llist_del(&handler->entry);
- talloc_free(handler);
-}
-
-/* send job */
-void sim_job(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm_sim *sim = &ms->sim;
-
- msgb_enqueue(&sim->jobs, msg);
-}
-
-/*
- * init
- */
-
-int gsm_sim_init(struct osmocom_ms *ms)
-{
- struct gsm_sim *sim = &ms->sim;
-
- /* current path is undefined, forching MF */
- sim->path[0] = 0x0bad;
- sim->path[1] = 0;
- sim->file = 0;
-
- INIT_LLIST_HEAD(&sim->handlers);
- INIT_LLIST_HEAD(&sim->jobs);
-
- LOGP(DSIM, LOGL_INFO, "init SIM client\n");
-
- return 0;
-}
-
-int gsm_sim_exit(struct osmocom_ms *ms)
-{
- struct gsm_sim *sim = &ms->sim;
- struct gsm_sim_handler *handler, *handler2;
- struct msgb *msg;
-
- LOGP(DSIM, LOGL_INFO, "exit SIM client\n");
-
- /* remove pending job msg */
- if (sim->job_msg) {
- msgb_free(sim->job_msg);
- sim->job_msg = NULL;
- }
- /* flush handlers */
- llist_for_each_entry_safe(handler, handler2, &sim->handlers, entry)
- sim_close(ms, handler->handle);
- /* flush jobs */
- while ((msg = msgb_dequeue(&sim->jobs)))
- msgb_free(msg);
-
- return 0;
-}
-
-
-
-
diff --git a/Src/osmoconbb/src/host/layer23/src/common/sysinfo.c b/Src/osmoconbb/src/host/layer23/src/common/sysinfo.c
deleted file mode 100644
index b26bfe2..0000000
--- a/Src/osmoconbb/src/host/layer23/src/common/sysinfo.c
+++ /dev/null
@@ -1,859 +0,0 @@
-/*
- * (C) 2010 by Andreas Eversberg <jolly@eversberg.eu>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdio.h>
-#include <stdint.h>
-#include <string.h>
-#include <arpa/inet.h>
-
-#include <osmocom/core/bitvec.h>
-
-#include <osmocom/bb/common/osmocom_data.h>
-#include <osmocom/bb/common/networks.h>
-#include <osmocom/bb/common/logging.h>
-#include <osmocom/bb/common/sysinfo.h>
-
-#define MIN(a, b) ((a < b) ? a : b)
-
-/*
- * dumping
- */
-
-// FIXME: move to libosmocore
-char *gsm_print_arfcn(uint16_t arfcn)
-{
- static char text[10];
-
- sprintf(text, "%d", arfcn & 1023);
- if ((arfcn & ARFCN_PCS))
- strcat(text, "(PCS)");
- else if (arfcn >= 512 && arfcn <= 885)
- strcat(text, "(DCS)");
-
- return text;
-}
-
-/* check if the cell 'talks' about DCS (0) or PCS (1) */
-uint8_t gsm_refer_pcs(uint16_t arfcn, struct gsm48_sysinfo *s)
-{
- /* If ARFCN is PCS band, the cell refers to PCS */
- if ((arfcn & ARFCN_PCS))
- return 1;
-
- /* If no SI1 is available, we assume DCS. Be sure to call this
- * function only if SI 1 is available. */
- if (!s->si1)
- return 0;
-
- /* If band indicator indicates PCS band, the cell refers to PCSThe */
- return s->band_ind;
-}
-
-int gsm48_sysinfo_dump(struct gsm48_sysinfo *s, uint16_t arfcn,
- void (*print)(void *, const char *, ...), void *priv, uint8_t *freq_map)
-{
- char buffer[81];
- int i, j, k, index;
- int refer_pcs = gsm_refer_pcs(arfcn, s);
-
- /* available sysinfos */
- print(priv, "ARFCN = %s channels 512+ refer to %s\n",
- gsm_print_arfcn(arfcn),
- (refer_pcs) ? "PCS (1900)" : "DCS (1800)");
- print(priv, "Available SYSTEM INFORMATIONS =");
- if (s->si1)
- print(priv, " 1");
- if (s->si2)
- print(priv, " 2");
- if (s->si2bis)
- print(priv, " 2bis");
- if (s->si2ter)
- print(priv, " 2ter");
- if (s->si3)
- print(priv, " 3");
- if (s->si4)
- print(priv, " 4");
- if (s->si5)
- print(priv, " 5");
- if (s->si5bis)
- print(priv, " 5bis");
- if (s->si5ter)
- print(priv, " 5ter");
- if (s->si6)
- print(priv, " 6");
- print(priv, "\n");
- print(priv, "\n");
-
- /* frequency list */
- j = 0; k = 0;
- for (i = 0; i < 1024; i++) {
- if ((s->freq[i].mask & FREQ_TYPE_SERV)) {
- if (!k) {
- sprintf(buffer, "serv. cell : ");
- j = strlen(buffer);
- }
- if (j >= 75) {
- buffer[j - 1] = '\0';
- print(priv, "%s\n", buffer);
- sprintf(buffer, " ");
- j = strlen(buffer);
- }
- sprintf(buffer + j, "%d,", i);
- j = strlen(buffer);
- k++;
- }
- }
- if (j) {
- buffer[j - 1] = '\0';
- print(priv, "%s\n", buffer);
- }
- j = 0; k = 0;
- for (i = 0; i < 1024; i++) {
- if ((s->freq[i].mask & FREQ_TYPE_NCELL)) {
- if (!k) {
- sprintf(buffer, "SI2 (neigh.) BA=%d: ",
- s->nb_ba_ind_si2);
- j = strlen(buffer);
- }
- if (j >= 70) {
- buffer[j - 1] = '\0';
- print(priv, "%s\n", buffer);
- sprintf(buffer, " ");
- j = strlen(buffer);
- }
- sprintf(buffer + j, "%d,", i);
- j = strlen(buffer);
- k++;
- }
- }
- if (j) {
- buffer[j - 1] = '\0';
- print(priv, "%s\n", buffer);
- }
- j = 0; k = 0;
- for (i = 0; i < 1024; i++) {
- if ((s->freq[i].mask & FREQ_TYPE_REP)) {
- if (!k) {
- sprintf(buffer, "SI5 (report) BA=%d: ",
- s->nb_ba_ind_si5);
- j = strlen(buffer);
- }
- if (j >= 70) {
- buffer[j - 1] = '\0';
- print(priv, "%s\n", buffer);
- sprintf(buffer, " ");
- j = strlen(buffer);
- }
- sprintf(buffer + j, "%d,", i);
- j = strlen(buffer);
- k++;
- }
- }
- if (j) {
- buffer[j - 1] = '\0';
- print(priv, "%s\n", buffer);
- }
- print(priv, "\n");
-
- /* frequency map */
- for (i = 0; i < 1024; i += 64) {
- sprintf(buffer, " %3d ", i);
- for (j = 0; j < 64; j++) {
- index = i+j;
- if (refer_pcs && index >= 512 && index <= 885)
- index = index-512+1024;
- if ((s->freq[i+j].mask & FREQ_TYPE_SERV))
- buffer[j + 5] = 'S';
- else if ((s->freq[i+j].mask & FREQ_TYPE_NCELL)
- && (s->freq[i+j].mask & FREQ_TYPE_REP))
- buffer[j + 5] = 'b';
- else if ((s->freq[i+j].mask & FREQ_TYPE_NCELL))
- buffer[j + 5] = 'n';
- else if ((s->freq[i+j].mask & FREQ_TYPE_REP))
- buffer[j + 5] = 'r';
- else if (!freq_map || (freq_map[index >> 3]
- & (1 << (index & 7))))
- buffer[j + 5] = '.';
- else
- buffer[j + 5] = ' ';
- }
- for (; j < 64; j++)
- buffer[j + 5] = ' ';
- sprintf(buffer + 69, " %d", i + 63);
- print(priv, "%s\n", buffer);
- }
- print(priv, " 'S' = serv. cell 'n' = SI2 (neigh.) 'r' = SI5 (rep.) "
- "'b' = SI2+SI5\n\n");
-
- /* serving cell */
- print(priv, "Serving Cell:\n");
- print(priv, " BSIC = %d,%d MCC = %s MNC = %s LAC = 0x%04x Cell ID "
- "= 0x%04x\n", s->bsic >> 3, s->bsic & 0x7,
- gsm_print_mcc(s->mcc), gsm_print_mnc(s->mnc), s->lac,
- s->cell_id);
- print(priv, " Country = %s Network Name = %s\n", gsm_get_mcc(s->mcc),
- gsm_get_mnc(s->mcc, s->mnc));
- print(priv, " MAX_RETRANS = %d TX_INTEGER = %d re-establish = %s\n",
- s->max_retrans, s->tx_integer,
- (s->reest_denied) ? "denied" : "allowed");
- print(priv, " Cell barred = %s barred classes =",
- (s->cell_barr ? "yes" : "no"));
- for (i = 0; i < 16; i++) {
- if ((s->class_barr & (1 << i)))
- print(priv, " C%d", i);
- }
- print(priv, "\n");
- if (s->sp)
- print(priv, " CBQ = %d CRO = %d TEMP_OFFSET = %d "
- "PENALTY_TIME = %d\n", s->sp_cbq, s->sp_cro, s->sp_to,
- s->sp_pt);
- if (s->nb_ncc_permitted_si2) {
- print(priv, "NCC Permitted BCCH =");
- for (i = 0; i < 8; i++)
- if ((s->nb_ncc_permitted_si2 & (1 << i)))
- print(priv, " %d", i);
- print(priv, "\n");
- }
- if (s->nb_ncc_permitted_si6) {
- print(priv, "NCC Permitted SACCH/TCH =");
- for (i = 0; i < 8; i++)
- if ((s->nb_ncc_permitted_si6 & (1 << i)))
- print(priv, " %d", i);
- print(priv, "\n");
- }
- print(priv, "\n");
-
- /* neighbor cell */
- print(priv, "Neighbor Cell:\n");
- print(priv, " MAX_RETRANS = %d TX_INTEGER = %d re-establish = %s\n",
- s->nb_max_retrans, s->nb_tx_integer,
- (s->nb_reest_denied) ? "denied" : "allowed");
- print(priv, " Cell barred = %s barred classes =",
- (s->nb_cell_barr ? "yes" : "no"));
- for (i = 0; i < 16; i++) {
- if ((s->nb_class_barr & (1 << i)))
- print(priv, " C%d", i);
- }
- print(priv, "\n");
- print(priv, "\n");
-
- /* cell selection */
- print(priv, "MX_TXPWR_MAX_CCCH = %d CRH = %d RXLEV_MIN = %d "
- "NECI = %d ACS = %d\n", s->ms_txpwr_max_cch,
- s->cell_resel_hyst_db, s->rxlev_acc_min_db, s->neci, s->acs);
-
- /* bcch options */
- print(priv, "BCCH link timeout = %d DTX = %d PWRC = %d\n",
- s->bcch_radio_link_timeout, s->bcch_dtx, s->bcch_pwrc);
-
- /* sacch options */
- print(priv, "SACCH link timeout = %d DTX = %d PWRC = %d\n",
- s->sacch_radio_link_timeout, s->sacch_dtx, s->sacch_pwrc);
-
- /* control channel */
- switch(s->ccch_conf) {
- case 0:
- case 2:
- case 4:
- case 6:
- print(priv, "CCCH Config = %d CCCH", (s->ccch_conf >> 1) + 1);
- break;
- case 1:
- print(priv, "CCCH Config = 1 CCCH + SDCCH");
- break;
- default:
- print(priv, "CCCH Config = reserved");
- }
- print(priv, " BS-PA-MFMS = %d Attachment = %s\n",
- s->pag_mf_periods, (s->att_allowed) ? "allowed" : "denied");
- print(priv, "BS-AG_BLKS_RES = %d ", s->bs_ag_blks_res);
- if (s->t3212)
- print(priv, "T3212 = %d sec.\n", s->t3212);
- else
- print(priv, "T3212 = disabled\n", s->t3212);
-
- /* channel description */
- if (s->h)
- print(priv, "chan_nr = 0x%02x TSC = %d MAIO = %d HSN = %d\n",
- s->chan_nr, s->tsc, s->maio, s->hsn);
- else
- print(priv, "chan_nr = 0x%02x TSC = %d ARFCN = %d\n",
- s->chan_nr, s->tsc, s->arfcn);
- print(priv, "\n");
-
- return 0;
-}
-
-/*
- * decoding
- */
-
-int gsm48_decode_lai(struct gsm48_loc_area_id *lai, uint16_t *mcc,
- uint16_t *mnc, uint16_t *lac)
-{
- *mcc = ((lai->digits[0] & 0x0f) << 8)
- | (lai->digits[0] & 0xf0)
- | (lai->digits[1] & 0x0f);
- *mnc = ((lai->digits[2] & 0x0f) << 8)
- | (lai->digits[2] & 0xf0)
- | ((lai->digits[1] & 0xf0) >> 4);
- *lac = ntohs(lai->lac);
-
- return 0;
-}
-
-int gsm48_decode_chan_h0(struct gsm48_chan_desc *cd, uint8_t *tsc,
- uint16_t *arfcn)
-{
- *tsc = cd->h0.tsc;
- *arfcn = cd->h0.arfcn_low | (cd->h0.arfcn_high << 8);
-
- return 0;
-}
-
-int gsm48_decode_chan_h1(struct gsm48_chan_desc *cd, uint8_t *tsc,
- uint8_t *maio, uint8_t *hsn)
-{
- *tsc = cd->h1.tsc;
- *maio = cd->h1.maio_low | (cd->h1.maio_high << 2);
- *hsn = cd->h1.hsn;
-
- return 0;
-}
-
-/* decode "Cell Channel Description" (10.5.2.1b) and other frequency lists */
-static int decode_freq_list(struct gsm_sysinfo_freq *f, uint8_t *cd,
- uint8_t len, uint8_t mask, uint8_t frqt)
-{
-#if 0
- /* only Bit map 0 format for P-GSM */
- if ((cd[0] & 0xc0 & mask) != 0x00 &&
- (set->p_gsm && !set->e_gsm && !set->r_gsm && !set->dcs))
- return 0;
-#endif
-
- return gsm48_decode_freq_list(f, cd, len, mask, frqt);
-}
-
-/* decode "Cell Selection Parameters" (10.5.2.4) */
-static int gsm48_decode_cell_sel_param(struct gsm48_sysinfo *s,
- struct gsm48_cell_sel_par *cs)
-{
- s->ms_txpwr_max_cch = cs->ms_txpwr_max_ccch;
- s->cell_resel_hyst_db = cs->cell_resel_hyst * 2;
- s->rxlev_acc_min_db = cs->rxlev_acc_min - 110;
- s->neci = cs->neci;
- s->acs = cs->acs;
-
- return 0;
-}
-
-/* decode "Cell Options (BCCH)" (10.5.2.3) */
-static int gsm48_decode_cellopt_bcch(struct gsm48_sysinfo *s,
- struct gsm48_cell_options *co)
-{
- s->bcch_radio_link_timeout = (co->radio_link_timeout + 1) * 4;
- s->bcch_dtx = co->dtx;
- s->bcch_pwrc = co->pwrc;
-
- return 0;
-}
-
-/* decode "Cell Options (SACCH)" (10.5.2.3a) */
-static int gsm48_decode_cellopt_sacch(struct gsm48_sysinfo *s,
- struct gsm48_cell_options *co)
-{
- s->sacch_radio_link_timeout = (co->radio_link_timeout + 1) * 4;
- s->sacch_dtx = co->dtx;
- s->sacch_pwrc = co->pwrc;
-
- return 0;
-}
-
-/* decode "Control Channel Description" (10.5.2.11) */
-static int gsm48_decode_ccd(struct gsm48_sysinfo *s,
- struct gsm48_control_channel_descr *cc)
-{
- s->ccch_conf = cc->ccch_conf;
- s->bs_ag_blks_res = cc->bs_ag_blks_res;
- s->att_allowed = cc->att;
- s->pag_mf_periods = cc->bs_pa_mfrms + 2;
- s->t3212 = cc->t3212 * 360; /* convert deci-hours to seconds */
-
- return 0;
-}
-
-/* decode "Mobile Allocation" (10.5.2.21) */
-int gsm48_decode_mobile_alloc(struct gsm_sysinfo_freq *freq,
- uint8_t *ma, uint8_t len, uint16_t *hopping, uint8_t *hopp_len, int si4)
-{
- int i, j = 0;
- uint16_t f[len << 3];
-
- /* not more than 64 hopping indexes allowed in IE */
- if (len > 8)
- return -EINVAL;
-
- /* tabula rasa */
- *hopp_len = 0;
- if (si4) {
- for (i = 0; i < 1024; i++)
- freq[i].mask &= ~FREQ_TYPE_HOPP;
- }
-
- /* generating list of all frequencies (1..1023,0) */
- for (i = 1; i <= 1024; i++) {
- if ((freq[i & 1023].mask & FREQ_TYPE_SERV)) {
- LOGP(DRR, LOGL_INFO, "Serving cell ARFCN #%d: %d\n",
- j, i & 1023);
- f[j++] = i & 1023;
- if (j == (len << 3))
- break;
- }
- }
-
- /* fill hopping table with frequency index given by IE
- * and set hopping type bits
- */
- for (i = 0; i < (len << 3); i++) {
- /* if bit is set, this frequency index is used for hopping */
- if ((ma[len - 1 - (i >> 3)] & (1 << (i & 7)))) {
- LOGP(DRR, LOGL_INFO, "Hopping ARFCN: %d (bit %d)\n",
- i, f[i]);
- /* index higher than entries in list ? */
- if (i >= j) {
- LOGP(DRR, LOGL_NOTICE, "Mobile Allocation "
- "hopping index %d exceeds maximum "
- "number of cell frequencies. (%d)\n",
- i + 1, j);
- break;
- }
- hopping[(*hopp_len)++] = f[i];
- if (si4)
- freq[f[i]].mask |= FREQ_TYPE_HOPP;
- }
- }
-
- return 0;
-}
-
-/* Rach Control decode tables */
-static uint8_t gsm48_max_retrans[4] = {
- 1, 2, 4, 7
-};
-static uint8_t gsm48_tx_integer[16] = {
- 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 20, 25, 32, 50
-};
-
-/* decode "RACH Control Parameter" (10.5.2.29) */
-static int gsm48_decode_rach_ctl_param(struct gsm48_sysinfo *s,
- struct gsm48_rach_control *rc)
-{
- s->reest_denied = rc->re;
- s->cell_barr = rc->cell_bar;
- s->tx_integer = gsm48_tx_integer[rc->tx_integer];
- s->max_retrans = gsm48_max_retrans[rc->max_trans];
- s->class_barr = (rc->t2 << 8) | rc->t3;
-
- return 0;
-}
-static int gsm48_decode_rach_ctl_neigh(struct gsm48_sysinfo *s,
- struct gsm48_rach_control *rc)
-{
- s->nb_reest_denied = rc->re;
- s->nb_cell_barr = rc->cell_bar;
- s->nb_tx_integer = gsm48_tx_integer[rc->tx_integer];
- s->nb_max_retrans = gsm48_max_retrans[rc->max_trans];
- s->nb_class_barr = (rc->t2 << 8) | rc->t3;
-
- return 0;
-}
-
-/* decode "SI 1 Rest Octets" (10.5.2.32) */
-static int gsm48_decode_si1_rest(struct gsm48_sysinfo *s, uint8_t *si,
- uint8_t len)
-{
- struct bitvec bv;
-
- memset(&bv, 0, sizeof(bv));
- bv.data_len = len;
- bv.data = si;
-
- /* Optional Selection Parameters */
- if (bitvec_get_bit_high(&bv) == H) {
- s->nch = 1;
- s->nch_position = bitvec_get_uint(&bv, 5);
- } else
- s->nch = 0;
- if (bitvec_get_bit_high(&bv) == H)
- s->band_ind = 1;
- else
- s->band_ind = 0;
-
- return 0;
-}
-
-/* decode "SI 3 Rest Octets" (10.5.2.34) */
-static int gsm48_decode_si3_rest(struct gsm48_sysinfo *s, uint8_t *si,
- uint8_t len)
-{
- struct bitvec bv;
-
- memset(&bv, 0, sizeof(bv));
- bv.data_len = len;
- bv.data = si;
-
- /* Optional Selection Parameters */
- if (bitvec_get_bit_high(&bv) == H) {
- s->sp = 1;
- s->sp_cbq = bitvec_get_uint(&bv, 1);
- s->sp_cro = bitvec_get_uint(&bv, 6);
- s->sp_to = bitvec_get_uint(&bv, 3);
- s->sp_pt = bitvec_get_uint(&bv, 5);
- } else
- s->sp = 0;
- /* Optional Power Offset */
- if (bitvec_get_bit_high(&bv) == H) {
- s->po = 1;
- s->po_value = bitvec_get_uint(&bv, 3);
- } else
- s->po = 0;
- /* System Onformation 2ter Indicator */
- if (bitvec_get_bit_high(&bv) == H)
- s->si2ter_ind = 1;
- else
- s->si2ter_ind = 0;
- /* Early Classark Sending Control */
- if (bitvec_get_bit_high(&bv) == H)
- s->ecsm = 1;
- else
- s->ecsm = 0;
- /* Scheduling if and where */
- if (bitvec_get_bit_high(&bv) == H) {
- s->sched = 1;
- s->sched_where = bitvec_get_uint(&bv, 3);
- } else
- s->sched = 0;
- /* GPRS Indicator */
- if (bitvec_get_bit_high(&bv) == H) {
- s->gprs = 1;
- s->gprs_ra_colour = bitvec_get_uint(&bv, 3);
- s->gprs_si13_pos = bitvec_get_uint(&bv, 1);
- } else
- s->gprs = 0;
-
- return 0;
-}
-
-/* decode "SI 4 Rest Octets" (10.5.2.35) */
-static int gsm48_decode_si4_rest(struct gsm48_sysinfo *s, uint8_t *si,
- uint8_t len)
-{
- struct bitvec bv;
-
- memset(&bv, 0, sizeof(bv));
- bv.data_len = len;
- bv.data = si;
-
- /* Optional Selection Parameters */
- if (bitvec_get_bit_high(&bv) == H) {
- s->sp = 1;
- s->sp_cbq = bitvec_get_uint(&bv, 1);
- s->sp_cro = bitvec_get_uint(&bv, 6);
- s->sp_to = bitvec_get_uint(&bv, 3);
- s->sp_pt = bitvec_get_uint(&bv, 5);
- } else
- s->sp = 0;
- /* Optional Power Offset */
- if (bitvec_get_bit_high(&bv) == H) {
- s->po = 1;
- s->po_value = bitvec_get_uint(&bv, 3);
- } else
- s->po = 0;
- /* GPRS Indicator */
- if (bitvec_get_bit_high(&bv) == H) {
- s->gprs = 1;
- s->gprs_ra_colour = bitvec_get_uint(&bv, 3);
- s->gprs_si13_pos = bitvec_get_uint(&bv, 1);
- } else
- s->gprs = 0;
- // todo: more rest octet bits
-
- return 0;
-}
-
-/* decode "SI 6 Rest Octets" (10.5.2.35a) */
-static int gsm48_decode_si6_rest(struct gsm48_sysinfo *s, uint8_t *si,
- uint8_t len)
-{
- return 0;
-}
-
-int gsm48_decode_sysinfo1(struct gsm48_sysinfo *s,
- struct gsm48_system_information_type_1 *si, int len)
-{
- int payload_len = len - sizeof(*si);
-
- memcpy(s->si1_msg, si, MIN(len, sizeof(s->si1_msg)));
-
- /* Cell Channel Description */
- decode_freq_list(s->freq, si->cell_channel_description,
- sizeof(si->cell_channel_description), 0xce, FREQ_TYPE_SERV);
- /* RACH Control Parameter */
- gsm48_decode_rach_ctl_param(s, &si->rach_control);
- /* SI 1 Rest Octets */
- if (payload_len)
- gsm48_decode_si1_rest(s, si->rest_octets, payload_len);
-
- s->si1 = 1;
-
- if (s->si4) {
- LOGP(DRR, LOGL_NOTICE, "Now updating previously received "
- "SYSTEM INFORMATION 4\n");
- gsm48_decode_sysinfo4(s,
- (struct gsm48_system_information_type_4 *) s->si4_msg,
- sizeof(s->si4_msg));
- }
-
- return 0;
-}
-
-int gsm48_decode_sysinfo2(struct gsm48_sysinfo *s,
- struct gsm48_system_information_type_2 *si, int len)
-{
- memcpy(s->si2_msg, si, MIN(len, sizeof(s->si2_msg)));
-
- /* Neighbor Cell Description */
- s->nb_ext_ind_si2 = (si->bcch_frequency_list[0] >> 6) & 1;
- s->nb_ba_ind_si2 = (si->bcch_frequency_list[0] >> 5) & 1;
- decode_freq_list(s->freq, si->bcch_frequency_list,
- sizeof(si->bcch_frequency_list), 0xce, FREQ_TYPE_NCELL_2);
- /* NCC Permitted */
- s->nb_ncc_permitted_si2 = si->ncc_permitted;
- /* RACH Control Parameter */
- gsm48_decode_rach_ctl_neigh(s, &si->rach_control);
-
- s->si2 = 1;
-
- return 0;
-}
-
-int gsm48_decode_sysinfo2bis(struct gsm48_sysinfo *s,
- struct gsm48_system_information_type_2bis *si, int len)
-{
- memcpy(s->si2b_msg, si, MIN(len, sizeof(s->si2b_msg)));
-
- /* Neighbor Cell Description */
- s->nb_ext_ind_si2bis = (si->bcch_frequency_list[0] >> 6) & 1;
- s->nb_ba_ind_si2bis = (si->bcch_frequency_list[0] >> 5) & 1;
- decode_freq_list(s->freq, si->bcch_frequency_list,
- sizeof(si->bcch_frequency_list), 0xce, FREQ_TYPE_NCELL_2bis);
- /* RACH Control Parameter */
- gsm48_decode_rach_ctl_neigh(s, &si->rach_control);
-
- s->si2bis = 1;
-
- return 0;
-}
-
-int gsm48_decode_sysinfo2ter(struct gsm48_sysinfo *s,
- struct gsm48_system_information_type_2ter *si, int len)
-{
- memcpy(s->si2t_msg, si, MIN(len, sizeof(s->si2t_msg)));
-
- /* Neighbor Cell Description 2 */
- s->nb_multi_rep_si2ter = (si->ext_bcch_frequency_list[0] >> 6) & 3;
- s->nb_ba_ind_si2ter = (si->ext_bcch_frequency_list[0] >> 5) & 1;
- decode_freq_list(s->freq, si->ext_bcch_frequency_list,
- sizeof(si->ext_bcch_frequency_list), 0x8e,
- FREQ_TYPE_NCELL_2ter);
-
- s->si2ter = 1;
-
- return 0;
-}
-
-int gsm48_decode_sysinfo3(struct gsm48_sysinfo *s,
- struct gsm48_system_information_type_3 *si, int len)
-{
- int payload_len = len - sizeof(*si);
-
- memcpy(s->si3_msg, si, MIN(len, sizeof(s->si3_msg)));
-
- /* Cell Identity */
- s->cell_id = ntohs(si->cell_identity);
- /* LAI */
- gsm48_decode_lai(&si->lai, &s->mcc, &s->mnc, &s->lac);
- /* Control Channel Description */
- gsm48_decode_ccd(s, &si->control_channel_desc);
- /* Cell Options (BCCH) */
- gsm48_decode_cellopt_bcch(s, &si->cell_options);
- /* Cell Selection Parameters */
- gsm48_decode_cell_sel_param(s, &si->cell_sel_par);
- /* RACH Control Parameter */
- gsm48_decode_rach_ctl_param(s, &si->rach_control);
- /* SI 3 Rest Octets */
- if (payload_len >= 4)
- gsm48_decode_si3_rest(s, si->rest_octets, payload_len);
-
- LOGP(DRR, LOGL_INFO, "New SYSTEM INFORMATION 3 (mcc %s mnc %s "
- "lac 0x%04x)\n", gsm_print_mcc(s->mcc),
- gsm_print_mnc(s->mnc), s->lac);
-
- s->si3 = 1;
-
- return 0;
-}
-
-int gsm48_decode_sysinfo4(struct gsm48_sysinfo *s,
- struct gsm48_system_information_type_4 *si, int len)
-{
- int payload_len = len - sizeof(*si);
-
- uint8_t *data = si->data;
- struct gsm48_chan_desc *cd;
-
- memcpy(s->si4_msg, si, MIN(len, sizeof(s->si4_msg)));
-
- /* LAI */
- gsm48_decode_lai(&si->lai, &s->mcc, &s->mnc, &s->lac);
- /* Cell Selection Parameters */
- gsm48_decode_cell_sel_param(s, &si->cell_sel_par);
- /* RACH Control Parameter */
- gsm48_decode_rach_ctl_param(s, &si->rach_control);
-
- /* CBCH Channel Description */
- if (payload_len >= 1 && data[0] == GSM48_IE_CBCH_CHAN_DESC) {
- if (payload_len < 4) {
-short_read:
- LOGP(DRR, LOGL_NOTICE, "Short read!\n");
- return -EIO;
- }
- cd = (struct gsm48_chan_desc *) (data + 1);
- s->chan_nr = cd->chan_nr;
- if (cd->h0.h) {
- s->h = 1;
- gsm48_decode_chan_h1(cd, &s->tsc, &s->maio, &s->hsn);
- } else {
- s->h = 0;
- gsm48_decode_chan_h0(cd, &s->tsc, &s->arfcn);
- }
- payload_len -= 4;
- data += 4;
- }
- /* CBCH Mobile Allocation */
- if (payload_len >= 1 && data[0] == GSM48_IE_CBCH_MOB_AL) {
- if (payload_len < 1 || payload_len < 2 + data[1])
- goto short_read;
- if (!s->si1) {
- LOGP(DRR, LOGL_NOTICE, "Ignoring CBCH allocation of "
- "SYSTEM INFORMATION 4 until SI 1 is "
- "received.\n");
- gsm48_decode_mobile_alloc(s->freq, data + 2, data[1],
- s->hopping, &s->hopp_len, 1);
- }
- payload_len -= 2 + data[1];
- data += 2 + data[1];
- }
- /* SI 4 Rest Octets */
- if (payload_len > 0)
- gsm48_decode_si4_rest(s, data, payload_len);
-
- s->si4 = 1;
-
- return 0;
-}
-
-int gsm48_decode_sysinfo5(struct gsm48_sysinfo *s,
- struct gsm48_system_information_type_5 *si, int len)
-{
- memcpy(s->si5_msg, si, MIN(len, sizeof(s->si5_msg)));
-
- /* Neighbor Cell Description */
- s->nb_ext_ind_si5 = (si->bcch_frequency_list[0] >> 6) & 1;
- s->nb_ba_ind_si5 = (si->bcch_frequency_list[0] >> 5) & 1;
- decode_freq_list(s->freq, si->bcch_frequency_list,
- sizeof(si->bcch_frequency_list), 0xce, FREQ_TYPE_REP_5);
-
- s->si5 = 1;
-
- return 0;
-}
-
-int gsm48_decode_sysinfo5bis(struct gsm48_sysinfo *s,
- struct gsm48_system_information_type_5bis *si, int len)
-{
- memcpy(s->si5b_msg, si, MIN(len, sizeof(s->si5b_msg)));
-
- /* Neighbor Cell Description */
- s->nb_ext_ind_si5bis = (si->bcch_frequency_list[0] >> 6) & 1;
- s->nb_ba_ind_si5bis = (si->bcch_frequency_list[0] >> 5) & 1;
- decode_freq_list(s->freq, si->bcch_frequency_list,
- sizeof(si->bcch_frequency_list), 0xce, FREQ_TYPE_REP_5bis);
-
- s->si5bis = 1;
-
- return 0;
-}
-
-int gsm48_decode_sysinfo5ter(struct gsm48_sysinfo *s,
- struct gsm48_system_information_type_5ter *si, int len)
-{
- memcpy(s->si5t_msg, si, MIN(len, sizeof(s->si5t_msg)));
-
- /* Neighbor Cell Description */
- s->nb_multi_rep_si5ter = (si->bcch_frequency_list[0] >> 6) & 3;
- s->nb_ba_ind_si5ter = (si->bcch_frequency_list[0] >> 5) & 1;
- decode_freq_list(s->freq, si->bcch_frequency_list,
- sizeof(si->bcch_frequency_list), 0x8e, FREQ_TYPE_REP_5ter);
-
- s->si5ter = 1;
-
- return 0;
-}
-
-int gsm48_decode_sysinfo6(struct gsm48_sysinfo *s,
- struct gsm48_system_information_type_6 *si, int len)
-{
- int payload_len = len - sizeof(*si);
-
- memcpy(s->si6_msg, si, MIN(len, sizeof(s->si6_msg)));
-
- /* Cell Identity */
- if (s->si6 && s->cell_id != ntohs(si->cell_identity))
- LOGP(DRR, LOGL_INFO, "Cell ID on SI 6 differs from previous "
- "read.\n");
- s->cell_id = ntohs(si->cell_identity);
- /* LAI */
- gsm48_decode_lai(&si->lai, &s->mcc, &s->mnc, &s->lac);
- /* Cell Options (SACCH) */
- gsm48_decode_cellopt_sacch(s, &si->cell_options);
- /* NCC Permitted */
- s->nb_ncc_permitted_si6 = si->ncc_permitted;
- /* SI 6 Rest Octets */
- if (payload_len >= 4)
- gsm48_decode_si6_rest(s, si->rest_octets, payload_len);
-
- s->si6 = 1;
-
- return 0;
-}
-
diff --git a/Src/osmoconbb/src/host/layer23/src/misc/Makefile.am b/Src/osmoconbb/src/host/layer23/src/misc/Makefile.am
deleted file mode 100644
index a4cabac..0000000
--- a/Src/osmoconbb/src/host/layer23/src/misc/Makefile.am
+++ /dev/null
@@ -1,16 +0,0 @@
-INCLUDES = $(all_includes) -I$(top_srcdir)/include
-AM_CFLAGS = -Wall $(LIBOSMOCORE_CFLAGS) $(LIBOSMOGSM_CFLAGS)
-LDADD = ../common/liblayer23.a $(LIBOSMOCORE_LIBS) $(LIBOSMOGSM_LIBS) $(LIBOSMOCODEC_LIBS)
-
-bin_PROGRAMS = bcch_scan ccch_scan echo_test cell_log cbch_sniff catcher
-
-bcch_scan_SOURCES = ../common/main.c app_bcch_scan.c bcch_scan.c
-ccch_scan_SOURCES = ../common/main.c app_ccch_scan.c rslms.c
-echo_test_SOURCES = ../common/main.c app_echo_test.c
-cell_log_LDADD = $(LDADD) -lm
-cell_log_SOURCES = ../common/main.c app_cell_log.c cell_log.c \
- ../../../gsmmap/geo.c
-cbch_sniff_SOURCES = ../common/main.c app_cbch_sniff.c
-catcher_LDADD = $(LDADD) -lm
-catcher_SOURCES = ../common/main.c app_catcher.c catcher.c \
- ../../../gsmmap/geo.c
diff --git a/Src/osmoconbb/src/host/layer23/src/misc/app_bcch_scan.c b/Src/osmoconbb/src/host/layer23/src/misc/app_bcch_scan.c
deleted file mode 100644
index 4c31f1a..0000000
--- a/Src/osmoconbb/src/host/layer23/src/misc/app_bcch_scan.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/* "Application" code of the layer2/3 stack */
-
-/* (C) 2010 by Holger Hans Peter Freyther
- * (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <osmocom/bb/common/osmocom_data.h>
-#include <osmocom/bb/common/l1ctl.h>
-#include <osmocom/bb/common/lapdm.h>
-#include <osmocom/bb/common/logging.h>
-#include <osmocom/bb/common/l23_app.h>
-#include <osmocom/bb/misc/layer3.h>
-
-#include <osmocom/core/msgb.h>
-#include <osmocom/core/talloc.h>
-#include <osmocom/core/select.h>
-#include <osmocom/core/signal.h>
-
-#include <l1ctl_proto.h>
-
-static int signal_cb(unsigned int subsys, unsigned int signal,
- void *handler_data, void *signal_data)
-{
- struct osmocom_ms *ms;
-
- if (subsys != SS_L1CTL)
- return 0;
-
- switch (signal) {
- case S_L1CTL_RESET:
- ms = signal_data;
- return fps_start(ms);
- }
- return 0;
-}
-
-int l23_app_init(struct osmocom_ms *ms)
-{
- /* don't do layer3_init() as we don't want an actualy L3 */
- fps_init(ms);
- l1ctl_tx_reset_req(ms, L1CTL_RES_T_FULL);
- return osmo_signal_register_handler(SS_L1CTL, &signal_cb, NULL);
-}
-
-static struct l23_app_info info = {
- .copyright = "Copyright (C) 2010 Harald Welte <laforge@gnumonks.org>\n",
- .contribution = "Contributions by Holger Hans Peter Freyther\n",
-};
-
-struct l23_app_info *l23_app_info()
-{
- return &info;
-}
diff --git a/Src/osmoconbb/src/host/layer23/src/misc/app_catcher.c b/Src/osmoconbb/src/host/layer23/src/misc/app_catcher.c
deleted file mode 100644
index 27290be..0000000
--- a/Src/osmoconbb/src/host/layer23/src/misc/app_catcher.c
+++ /dev/null
@@ -1,195 +0,0 @@
-/* "Application" code of the layer2/3 stack */
-
-/* (C) 2010 by Andreas Eversberg <jolly@eversberg.eu>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <signal.h>
-#include <stdlib.h>
-#include <time.h>
-#include <getopt.h>
-
-#include <osmocom/bb/common/osmocom_data.h>
-#include <osmocom/bb/common/l1ctl.h>
-#include <osmocom/bb/common/l23_app.h>
-#include <osmocom/bb/common/logging.h>
-#include <osmocom/bb/common/gps.h>
-#include <osmocom/bb/misc/cell_log.h>
-
-#include <osmocom/core/talloc.h>
-#include <osmocom/core/utils.h>
-
-#include <l1ctl_proto.h>
-
-extern struct log_target *stderr_target;
-extern void *l23_ctx;
-
-char *logname = "/var/log/osmocom.log";
-int RACH_MAX = 2;
-
-int _scan_work(struct osmocom_ms *ms)
-{
- return 0;
-}
-
-int _scan_exit(struct osmocom_ms *ms)
-{
- /* in case there is a lockup during exit */
- signal(SIGINT, SIG_DFL);
- signal(SIGHUP, SIG_DFL);
- signal(SIGTERM, SIG_DFL);
- signal(SIGPIPE, SIG_DFL);
-
- scan_exit();
-
- return 0;
-}
-
-int l23_app_init(struct osmocom_ms *ms)
-{
- int rc;
-
- srand(time(NULL));
-
-// log_parse_category_mask(stderr_target, "DL1C:DRSL:DRR:DGPS:DSUM");
- log_parse_category_mask(stderr_target, "DSUM");
- log_set_log_level(stderr_target, LOGL_INFO);
-
- l23_app_work = _scan_work;
- l23_app_exit = _scan_exit;
-
- rc = scan_init(ms);
- if (rc)
- return rc;
-
- l1ctl_tx_reset_req(ms, L1CTL_RES_T_FULL);
- printf("Mobile initialized, please start phone now!\n");
- return 0;
-}
-
-static int l23_cfg_supported()
-{
- return L23_OPT_TAP | L23_OPT_DBG;
-}
-
-static int l23_getopt_options(struct option **options)
-{
- static struct option opts [] = {
- {"logfile", 1, 0, 'l'},
- {"rach", 1, 0, 'r'},
- {"no-rach", 1, 0, 'n'},
-#ifdef _HAVE_GPSD
- {"gpsd-host", 1, 0, 'g'},
- {"gpsd-port", 1, 0, 'p'},
-#endif
- {"gps", 1, 0, 'g'},
- {"baud", 1, 0, 'b'}
- };
-
- *options = opts;
- return ARRAY_SIZE(opts);
-}
-
-static int l23_cfg_print_help()
-{
- printf("\nApplication specific\n");
- printf(" -l --logfile LOGFILE Logfile for the cell log.\n");
- printf(" -r --rach RACH Nr. of RACH bursts to send.\n");
- printf(" -n --no-rach Send no rach bursts.\n");
- printf(" -g --gpsd-host HOST 127.0.0.1. gpsd host.\n");
- printf(" -p --port PORT 2947. gpsd port\n");
- printf(" -f --gps DEVICE /dev/ttyACM0. GPS serial device.\n");
- printf(" -b --baud BAUDRAT The baud rate of the GPS device\n");
-
- return 0;
-}
-
-static int l23_cfg_handle(int c, const char *optarg)
-{
- switch (c) {
- case 'l':
- logname = talloc_strdup(l23_ctx, optarg);
- break;
- case 'r':
- RACH_MAX = atoi(optarg);
- break;
- case 'n':
- RACH_MAX = 0;
- break;
- case 'g':
-#ifdef _HAVE_GPSD
- snprintf(g.gpsd_host, ARRAY_SIZE(g.gpsd_host), "%s", optarg);
- /* force string terminator */
- g.gpsd_host[ARRAY_SIZE(g.gpsd_host) - 1] = '\0';
- if (g.gps_type != GPS_TYPE_UNDEF)
- goto cmd_line_error;
- g.gps_type = GPS_TYPE_GPSD;
- LOGP(DGPS, LOGL_INFO, "Using gpsd host %s\n", g.gpsd_host);
-#else
- printf("Gpsd support not compiled.\n");
- exit(1);
-#endif
- break;
- case 'p':
-#ifdef _HAVE_GPSD
- snprintf(g.gpsd_port, ARRAY_SIZE(g.gpsd_port), "%s", optarg);
- /* force string terminator */
- g.gpsd_port[ARRAY_SIZE(g.gpsd_port) - 1] = '\0';
- g.gps_type = GPS_TYPE_GPSD;
- LOGP(DGPS, LOGL_INFO, "Using gpsd port %s\n", g.gpsd_port);
-#else
- printf("Gpsd support not compiled.\n");
- exit(1);
-#endif
- break;
- case 'f':
- snprintf(g.device, ARRAY_SIZE(g.device), "%s", optarg);
- /* force string terminator */
- g.device[ARRAY_SIZE(g.device) - 1] = '\0';
- if (g.gps_type != GPS_TYPE_UNDEF)
- goto cmd_line_error;
- g.gps_type = GPS_TYPE_SERIAL;
- LOGP(DGPS, LOGL_INFO, "Using GPS serial device %s\n", g.device);
- break;
- case 'b':
- g.baud = atoi(optarg);
- g.gps_type = GPS_TYPE_SERIAL;
- LOGP(DGPS, LOGL_INFO, "Setting GPS baudrate to %u\n", g.baud);
- break;
- }
- return 0;
-
-cmd_line_error:
- printf("\nYou can't specify both gpsd and serial gps!!\n\n");
- exit(1);
-}
-
-static struct l23_app_info info = {
- .copyright = "Copyright (C) 2010 Andreas Eversberg\n",
- .getopt_string = "g:p:l:r:nf:b:",
- .cfg_supported = l23_cfg_supported,
- .cfg_getopt_opt = l23_getopt_options,
- .cfg_handle_opt = l23_cfg_handle,
- .cfg_print_help = l23_cfg_print_help,
-};
-
-struct l23_app_info *l23_app_info()
-{
- return &info;
-}
diff --git a/Src/osmoconbb/src/host/layer23/src/misc/app_cbch_sniff.c b/Src/osmoconbb/src/host/layer23/src/misc/app_cbch_sniff.c
deleted file mode 100644
index fb043db..0000000
--- a/Src/osmoconbb/src/host/layer23/src/misc/app_cbch_sniff.c
+++ /dev/null
@@ -1,202 +0,0 @@
-/* CBCH passive sniffer */
-
-/* (C) 2010 by Holger Hans Peter Freyther
- * (C) 2010 by Harald Welte <laforge@gnumonks.org>
- * (C) 2010 by Alex Badea <vamposdecampos@gmail.com>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <osmocom/bb/common/osmocom_data.h>
-#include <osmocom/bb/common/l1ctl.h>
-#include <osmocom/bb/common/lapdm.h>
-#include <osmocom/bb/common/logging.h>
-#include <osmocom/bb/common/l23_app.h>
-#include <osmocom/bb/misc/layer3.h>
-
-#include <osmocom/core/msgb.h>
-#include <osmocom/core/talloc.h>
-#include <osmocom/core/select.h>
-#include <osmocom/core/signal.h>
-#include <osmocom/gsm/rsl.h>
-
-#include <l1ctl_proto.h>
-
-struct osmocom_ms *g_ms;
-struct gsm48_sysinfo g_sysinfo = {};
-
-static int try_cbch(struct osmocom_ms *ms, struct gsm48_sysinfo *s)
-{
- if (!s->si1 || !s->si4)
- return 0;
- if (!s->chan_nr) {
- LOGP(DRR, LOGL_INFO, "no CBCH chan_nr found\n");
- return 0;
- }
-
- if (s->h) {
- LOGP(DRR, LOGL_INFO, "chan_nr = 0x%02x TSC = %d MAIO = %d "
- "HSN = %d hseq (%d): %s\n",
- s->chan_nr, s->tsc, s->maio, s->hsn,
- s->hopp_len,
- osmo_hexdump((unsigned char *) s->hopping, s->hopp_len * 2));
- return l1ctl_tx_dm_est_req_h1(ms,
- s->maio, s->hsn, s->hopping, s->hopp_len,
- s->chan_nr, s->tsc,
- GSM48_CMODE_SIGN, 0);
- } else {
- LOGP(DRR, LOGL_INFO, "chan_nr = 0x%02x TSC = %d ARFCN = %d\n",
- s->chan_nr, s->tsc, s->arfcn);
- return l1ctl_tx_dm_est_req_h0(ms, s->arfcn,
- s->chan_nr, s->tsc, GSM48_CMODE_SIGN, 0);
- }
-}
-
-
-/* receive BCCH at RR layer */
-static int bcch(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_system_information_type_header *sih = msgb_l3(msg);
- struct gsm48_sysinfo *s = &g_sysinfo;
-
- if (msgb_l3len(msg) != 23) {
- LOGP(DRR, LOGL_NOTICE, "Invalid BCCH message length\n");
- return -EINVAL;
- }
- switch (sih->system_information) {
- case GSM48_MT_RR_SYSINFO_1:
- LOGP(DRR, LOGL_INFO, "New SYSTEM INFORMATION 1\n");
- gsm48_decode_sysinfo1(s,
- (struct gsm48_system_information_type_1 *) sih,
- msgb_l3len(msg));
- return try_cbch(ms, s);
- case GSM48_MT_RR_SYSINFO_4:
- LOGP(DRR, LOGL_INFO, "New SYSTEM INFORMATION 4\n");
- gsm48_decode_sysinfo4(s,
- (struct gsm48_system_information_type_4 *) sih,
- msgb_l3len(msg));
- return try_cbch(ms, s);
- default:
- return 0;
- }
-}
-
-static int unit_data_ind(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct abis_rsl_rll_hdr *rllh = msgb_l2(msg);
- struct tlv_parsed tv;
- uint8_t ch_type, ch_subch, ch_ts;
-
- DEBUGP(DRSL, "RSLms UNIT DATA IND chan_nr=0x%02x link_id=0x%02x\n",
- rllh->chan_nr, rllh->link_id);
-
- rsl_tlv_parse(&tv, rllh->data, msgb_l2len(msg)-sizeof(*rllh));
- if (!TLVP_PRESENT(&tv, RSL_IE_L3_INFO)) {
- DEBUGP(DRSL, "UNIT_DATA_IND without L3 INFO ?!?\n");
- return -EIO;
- }
- msg->l3h = (uint8_t *) TLVP_VAL(&tv, RSL_IE_L3_INFO);
-
- rsl_dec_chan_nr(rllh->chan_nr, &ch_type, &ch_subch, &ch_ts);
- switch (ch_type) {
- case RSL_CHAN_BCCH:
- return bcch(ms, msg);
- default:
- return 0;
- }
-}
-
-static int rcv_rll(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct abis_rsl_rll_hdr *rllh = msgb_l2(msg);
- int msg_type = rllh->c.msg_type;
-
- if (msg_type == RSL_MT_UNIT_DATA_IND) {
- unit_data_ind(ms, msg);
- } else
- LOGP(DRSL, LOGL_NOTICE, "RSLms message unhandled\n");
-
- msgb_free(msg);
-
- return 0;
-}
-
-static int rcv_rsl(struct msgb *msg, struct lapdm_entity *le, void *l3ctx)
-{
- struct osmocom_ms *ms = l3ctx;
- struct abis_rsl_common_hdr *rslh = msgb_l2(msg);
- int rc = 0;
-
- switch (rslh->msg_discr & 0xfe) {
- case ABIS_RSL_MDISC_RLL:
- rc = rcv_rll(ms, msg);
- break;
- default:
- LOGP(DRSL, LOGL_NOTICE, "unknown RSLms msg_discr 0x%02x\n",
- rslh->msg_discr);
- msgb_free(msg);
- rc = -EINVAL;
- break;
- }
-
- return rc;
-}
-
-static int signal_cb(unsigned int subsys, unsigned int signal,
- void *handler_data, void *signal_data)
-{
- struct osmocom_ms *ms;
-
- if (subsys != SS_L1CTL)
- return 0;
-
- switch (signal) {
- case S_L1CTL_RESET:
- case S_L1CTL_FBSB_ERR:
- ms = g_ms;
- return l1ctl_tx_fbsb_req(ms, ms->test_arfcn,
- L1CTL_FBSB_F_FB01SB, 100, 0, CCCH_MODE_COMBINED);
- case S_L1CTL_FBSB_RESP:
- return 0;
- }
- return 0;
-}
-
-int l23_app_init(struct osmocom_ms *ms)
-{
- /* don't do layer3_init() as we don't want an actualy L3 */
-
- g_ms = ms;
- lapdm_channel_set_l3(&ms->lapdm_channel, &rcv_rsl, ms);
-
- l1ctl_tx_reset_req(ms, L1CTL_RES_T_FULL);
- /* FIXME: L1CTL_RES_T_FULL doesn't reset dedicated mode
- * (if previously set), so we release it here. */
- l1ctl_tx_dm_rel_req(ms);
- return osmo_signal_register_handler(SS_L1CTL, &signal_cb, NULL);
-}
-
-static struct l23_app_info info = {
- .copyright = "Copyright (C) 2010 Harald Welte <laforge@gnumonks.org>\n",
- .contribution = "Contributions by Holger Hans Peter Freyther\n",
-};
-
-struct l23_app_info *l23_app_info()
-{
- return &info;
-}
diff --git a/Src/osmoconbb/src/host/layer23/src/misc/app_ccch_scan.c b/Src/osmoconbb/src/host/layer23/src/misc/app_ccch_scan.c
deleted file mode 100644
index 2f60505..0000000
--- a/Src/osmoconbb/src/host/layer23/src/misc/app_ccch_scan.c
+++ /dev/null
@@ -1,483 +0,0 @@
-/* CCCH passive sniffer */
-/* (C) 2010-2011 by Holger Hans Peter Freyther
- * (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <errno.h>
-#include <stdio.h>
-
-#include <osmocom/core/msgb.h>
-#include <osmocom/gsm/rsl.h>
-#include <osmocom/gsm/tlv.h>
-#include <osmocom/gsm/gsm48_ie.h>
-#include <osmocom/gsm/gsm48.h>
-#include <osmocom/core/signal.h>
-#include <osmocom/gsm/protocol/gsm_04_08.h>
-
-#include <osmocom/bb/common/logging.h>
-#include <osmocom/bb/common/lapdm.h>
-#include <osmocom/bb/misc/rslms.h>
-#include <osmocom/bb/misc/layer3.h>
-#include <osmocom/bb/common/osmocom_data.h>
-#include <osmocom/bb/common/l1ctl.h>
-#include <osmocom/bb/common/l23_app.h>
-
-#include <l1ctl_proto.h>
-
-static struct {
- int has_si1;
- int ccch_mode;
- int ccch_enabled;
- int rach_count;
- struct gsm_sysinfo_freq cell_arfcns[1024];
-} app_state;
-
-
-static void dump_bcch(struct osmocom_ms *ms, uint8_t tc, const uint8_t *data)
-{
- struct gsm48_system_information_type_header *si_hdr;
- si_hdr = (struct gsm48_system_information_type_header *) data;
-
- /* GSM 05.02 §6.3.1.3 Mapping of BCCH data */
- switch (si_hdr->system_information) {
- case GSM48_MT_RR_SYSINFO_1:
-#ifdef BCCH_TC_CHECK
- if (tc != 0)
- LOGP(DRR, LOGL_ERROR, "SI1 on the wrong TC: %d\n", tc);
-#endif
- if (!app_state.has_si1) {
- struct gsm48_system_information_type_1 *si1 =
- (struct gsm48_system_information_type_1 *)data;
-
- gsm48_decode_freq_list(app_state.cell_arfcns,
- si1->cell_channel_description,
- sizeof(si1->cell_channel_description),
- 0xff, 0x01);
-
- app_state.has_si1 = 1;
- LOGP(DRR, LOGL_ERROR, "SI1 received.\n");
- }
- break;
- case GSM48_MT_RR_SYSINFO_2:
-#ifdef BCCH_TC_CHECK
- if (tc != 1)
- LOGP(DRR, LOGL_ERROR, "SI2 on the wrong TC: %d\n", tc);
-#endif
- break;
- case GSM48_MT_RR_SYSINFO_3:
-#ifdef BCCH_TC_CHECK
- if (tc != 2 && tc != 6)
- LOGP(DRR, LOGL_ERROR, "SI3 on the wrong TC: %d\n", tc);
-#endif
- if (app_state.ccch_mode == CCCH_MODE_NONE) {
- struct gsm48_system_information_type_3 *si3 =
- (struct gsm48_system_information_type_3 *)data;
-
- if (si3->control_channel_desc.ccch_conf == RSL_BCCH_CCCH_CONF_1_C)
- app_state.ccch_mode = CCCH_MODE_COMBINED;
- else
- app_state.ccch_mode = CCCH_MODE_NON_COMBINED;
-
- l1ctl_tx_ccch_mode_req(ms, app_state.ccch_mode);
- }
- break;
- case GSM48_MT_RR_SYSINFO_4:
-#ifdef BCCH_TC_CHECK
- if (tc != 3 && tc != 7)
- LOGP(DRR, LOGL_ERROR, "SI4 on the wrong TC: %d\n", tc);
-#endif
- break;
- case GSM48_MT_RR_SYSINFO_5:
- break;
- case GSM48_MT_RR_SYSINFO_6:
- break;
- case GSM48_MT_RR_SYSINFO_7:
-#ifdef BCCH_TC_CHECK
- if (tc != 7)
- LOGP(DRR, LOGL_ERROR, "SI7 on the wrong TC: %d\n", tc);
-#endif
- break;
- case GSM48_MT_RR_SYSINFO_8:
-#ifdef BCCH_TC_CHECK
- if (tc != 3)
- LOGP(DRR, LOGL_ERROR, "SI8 on the wrong TC: %d\n", tc);
-#endif
- break;
- case GSM48_MT_RR_SYSINFO_9:
-#ifdef BCCH_TC_CHECK
- if (tc != 4)
- LOGP(DRR, LOGL_ERROR, "SI9 on the wrong TC: %d\n", tc);
-#endif
- break;
- case GSM48_MT_RR_SYSINFO_13:
-#ifdef BCCH_TC_CHECK
- if (tc != 4 && tc != 0)
- LOGP(DRR, LOGL_ERROR, "SI13 on the wrong TC: %d\n", tc);
-#endif
- break;
- case GSM48_MT_RR_SYSINFO_16:
-#ifdef BCCH_TC_CHECK
- if (tc != 6)
- LOGP(DRR, LOGL_ERROR, "SI16 on the wrong TC: %d\n", tc);
-#endif
- break;
- case GSM48_MT_RR_SYSINFO_17:
-#ifdef BCCH_TC_CHECK
- if (tc != 2)
- LOGP(DRR, LOGL_ERROR, "SI17 on the wrong TC: %d\n", tc);
-#endif
- break;
- case GSM48_MT_RR_SYSINFO_2bis:
-#ifdef BCCH_TC_CHECK
- if (tc != 5)
- LOGP(DRR, LOGL_ERROR, "SI2bis on the wrong TC: %d\n", tc);
-#endif
- break;
- case GSM48_MT_RR_SYSINFO_2ter:
-#ifdef BCCH_TC_CHECK
- if (tc != 5 && tc != 4)
- LOGP(DRR, LOGL_ERROR, "SI2ter on the wrong TC: %d\n", tc);
-#endif
- break;
- case GSM48_MT_RR_SYSINFO_5bis:
- break;
- case GSM48_MT_RR_SYSINFO_5ter:
- break;
- default:
- fprintf(stderr, "\tUnknown SI");
- break;
- };
-}
-
-
-/**
- * This method used to send a l1ctl_tx_dm_est_req_h0 or
- * a l1ctl_tx_dm_est_req_h1 to the layer1 to follow this
- * assignment. The code has been removed.
- */
-static int gsm48_rx_imm_ass(struct msgb *msg, struct osmocom_ms *ms)
-{
- struct gsm48_imm_ass *ia = msgb_l3(msg);
- uint8_t ch_type, ch_subch, ch_ts;
-
- /* Discard packet TBF assignement */
- if (ia->page_mode & 0xf0)
- return 0;
-
- /* FIXME: compare RA and GSM time with when we sent RACH req */
-
- rsl_dec_chan_nr(ia->chan_desc.chan_nr, &ch_type, &ch_subch, &ch_ts);
-
- if (!ia->chan_desc.h0.h) {
- /* Non-hopping */
- uint16_t arfcn;
-
- arfcn = ia->chan_desc.h0.arfcn_low | (ia->chan_desc.h0.arfcn_high << 8);
-
- LOGP(DRR, LOGL_NOTICE, "GSM48 IMM ASS (ra=0x%02x, chan_nr=0x%02x, "
- "ARFCN=%u, TS=%u, SS=%u, TSC=%u) ", ia->req_ref.ra,
- ia->chan_desc.chan_nr, arfcn, ch_ts, ch_subch,
- ia->chan_desc.h0.tsc);
-
- } else {
- /* Hopping */
- uint8_t maio, hsn, ma_len;
- uint16_t ma[64], arfcn;
- int i, j, k;
-
- hsn = ia->chan_desc.h1.hsn;
- maio = ia->chan_desc.h1.maio_low | (ia->chan_desc.h1.maio_high << 2);
-
- LOGP(DRR, LOGL_NOTICE, "GSM48 IMM ASS (ra=0x%02x, chan_nr=0x%02x, "
- "HSN=%u, MAIO=%u, TS=%u, SS=%u, TSC=%u) ", ia->req_ref.ra,
- ia->chan_desc.chan_nr, hsn, maio, ch_ts, ch_subch,
- ia->chan_desc.h1.tsc);
-
- /* decode mobile allocation */
- ma_len = 0;
- for (i=1, j=0; i<=1024; i++) {
- arfcn = i & 1023;
- if (app_state.cell_arfcns[arfcn].mask & 0x01) {
- k = ia->mob_alloc_len - (j>>3) - 1;
- if (ia->mob_alloc[k] & (1 << (j&7))) {
- ma[ma_len++] = arfcn;
- }
- j++;
- }
- }
- }
-
- LOGPC(DRR, LOGL_NOTICE, "\n");
- return 0;
-}
-
-static const char *pag_print_mode(int mode)
-{
- switch (mode) {
- case 0:
- return "Normal paging";
- case 1:
- return "Extended paging";
- case 2:
- return "Paging reorganization";
- case 3:
- return "Same as before";
- default:
- return "invalid";
- }
-}
-
-static char *chan_need(int need)
-{
- switch (need) {
- case 0:
- return "any";
- case 1:
- return "sdch";
- case 2:
- return "tch/f";
- case 3:
- return "tch/h";
- default:
- return "invalid";
- }
-}
-
-static char *mi_type_to_string(int type)
-{
- switch (type) {
- case GSM_MI_TYPE_NONE:
- return "none";
- case GSM_MI_TYPE_IMSI:
- return "imsi";
- case GSM_MI_TYPE_IMEI:
- return "imei";
- case GSM_MI_TYPE_IMEISV:
- return "imeisv";
- case GSM_MI_TYPE_TMSI:
- return "tmsi";
- default:
- return "invalid";
- }
-}
-
-/**
- * This can contain two MIs. The size checking is a bit of a mess.
- */
-static int gsm48_rx_paging_p1(struct msgb *msg, struct osmocom_ms *ms)
-{
- struct gsm48_paging1 *pag;
- int len1, len2, mi_type, tag;
- char mi_string[GSM48_MI_SIZE];
-
- /* is there enough room for the header + LV? */
- if (msgb_l3len(msg) < sizeof(*pag) + 2) {
- LOGP(DRR, LOGL_ERROR, "PagingRequest is too short.\n");
- return -1;
- }
-
- pag = msgb_l3(msg);
- len1 = pag->data[0];
- mi_type = pag->data[1] & GSM_MI_TYPE_MASK;
-
- if (msgb_l3len(msg) < sizeof(*pag) + 2 + len1) {
- LOGP(DRR, LOGL_ERROR, "PagingRequest with wrong MI\n");
- return -1;
- }
-
- if (mi_type != GSM_MI_TYPE_NONE) {
- gsm48_mi_to_string(mi_string, sizeof(mi_string), &pag->data[1], len1);
- LOGP(DRR, LOGL_NOTICE, "Paging1: %s chan %s to %s M(%s) \n",
- pag_print_mode(pag->pag_mode),
- chan_need(pag->cneed1),
- mi_type_to_string(mi_type),
- mi_string);
- }
-
- /* check if we have a MI type in here */
- if (msgb_l3len(msg) < sizeof(*pag) + 2 + len1 + 3)
- return 0;
-
- tag = pag->data[2 + len1 + 0];
- len2 = pag->data[2 + len1 + 1];
- mi_type = pag->data[2 + len1 + 2] & GSM_MI_TYPE_MASK;
- if (tag == GSM48_IE_MOBILE_ID && mi_type != GSM_MI_TYPE_NONE) {
- if (msgb_l3len(msg) < sizeof(*pag) + 2 + len1 + 3 + len2) {
- LOGP(DRR, LOGL_ERROR, "Optional MI does not fit here.\n");
- return -1;
- }
-
- gsm48_mi_to_string(mi_string, sizeof(mi_string), &pag->data[2 + len1 + 2], len2);
- LOGP(DRR, LOGL_NOTICE, "Paging2: %s chan %s to %s M(%s) \n",
- pag_print_mode(pag->pag_mode),
- chan_need(pag->cneed2),
- mi_type_to_string(mi_type),
- mi_string);
- }
- return 0;
-}
-
-static int gsm48_rx_paging_p2(struct msgb *msg, struct osmocom_ms *ms)
-{
- struct gsm48_paging2 *pag;
- int tag, len, mi_type;
- char mi_string[GSM48_MI_SIZE];
-
- if (msgb_l3len(msg) < sizeof(*pag)) {
- LOGP(DRR, LOGL_ERROR, "Paging2 message is too small.\n");
- return -1;
- }
-
- pag = msgb_l3(msg);
- LOGP(DRR, LOGL_NOTICE, "Paging1: %s chan %s to TMSI M(0x%x) \n",
- pag_print_mode(pag->pag_mode),
- chan_need(pag->cneed1), pag->tmsi1);
- LOGP(DRR, LOGL_NOTICE, "Paging2: %s chan %s to TMSI M(0x%x) \n",
- pag_print_mode(pag->pag_mode),
- chan_need(pag->cneed1), pag->tmsi2);
-
- /* no optional element */
- if (msgb_l3len(msg) < sizeof(*pag) + 3)
- return 0;
-
- tag = pag->data[0];
- len = pag->data[1];
- mi_type = pag->data[2] & GSM_MI_TYPE_MASK;
-
- if (tag != GSM48_IE_MOBILE_ID)
- return 0;
-
- if (msgb_l3len(msg) < sizeof(*pag) + 3 + len) {
- LOGP(DRR, LOGL_ERROR, "Optional MI does not fit in here\n");
- return -1;
- }
-
- gsm48_mi_to_string(mi_string, sizeof(mi_string), &pag->data[2], len);
- LOGP(DRR, LOGL_NOTICE, "Paging3: %s chan %s to %s M(%s) \n",
- pag_print_mode(pag->pag_mode),
- "n/a ",
- mi_type_to_string(mi_type),
- mi_string);
-
- return 0;
-}
-
-int gsm48_rx_ccch(struct msgb *msg, struct osmocom_ms *ms)
-{
- struct gsm48_system_information_type_header *sih = msgb_l3(msg);
- int rc = 0;
-
- if (sih->rr_protocol_discriminator != GSM48_PDISC_RR)
- LOGP(DRR, LOGL_ERROR, "PCH pdisc != RR\n");
-
- switch (sih->system_information) {
- case GSM48_MT_RR_PAG_REQ_1:
- gsm48_rx_paging_p1(msg, ms);
- break;
- case GSM48_MT_RR_PAG_REQ_2:
- gsm48_rx_paging_p2(msg, ms);
- break;
- case GSM48_MT_RR_PAG_REQ_3:
- LOGP(DRR, LOGL_ERROR, "PAGING of type 3 is not implemented.\n");
- break;
- case GSM48_MT_RR_IMM_ASS:
- gsm48_rx_imm_ass(msg, ms);
- break;
- case GSM48_MT_RR_NOTIF_NCH:
- /* notification for voice call groups and such */
- break;
- case 0x07:
- /* wireshark know that this is SI2 quater and for 3G interop */
- break;
- default:
- LOGP(DRR, LOGL_NOTICE, "unknown PCH/AGCH type 0x%02x\n",
- sih->system_information);
- rc = -EINVAL;
- }
-
- return rc;
-}
-
-int gsm48_rx_bcch(struct msgb *msg, struct osmocom_ms *ms)
-{
- /* FIXME: we have lost the gsm frame time until here, need to store it
- * in some msgb context */
- //dump_bcch(dl->time.tc, ccch->data);
- dump_bcch(ms, 0, msg->l3h);
-
- /* Req channel logic */
- if (app_state.ccch_enabled && (app_state.rach_count < 2)) {
- l1ctl_tx_rach_req(ms, app_state.rach_count, 0,
- app_state.ccch_mode == CCCH_MODE_COMBINED);
- app_state.rach_count++;
- }
-
- return 0;
-}
-
-void layer3_app_reset(void)
-{
- /* Reset state */
- app_state.has_si1 = 0;
- app_state.ccch_mode = CCCH_MODE_NONE;
- app_state.ccch_enabled = 0;
- app_state.rach_count = 0;
-
- memset(&app_state.cell_arfcns, 0x00, sizeof(app_state.cell_arfcns));
-}
-
-static int signal_cb(unsigned int subsys, unsigned int signal,
- void *handler_data, void *signal_data)
-{
- struct osmocom_ms *ms;
-
- if (subsys != SS_L1CTL)
- return 0;
-
- switch (signal) {
- case S_L1CTL_RESET:
- ms = signal_data;
- layer3_app_reset();
- return l1ctl_tx_fbsb_req(ms, ms->test_arfcn,
- L1CTL_FBSB_F_FB01SB, 100, 0,
- CCCH_MODE_NONE);
- break;
- }
- return 0;
-}
-
-
-int l23_app_init(struct osmocom_ms *ms)
-{
- osmo_signal_register_handler(SS_L1CTL, &signal_cb, NULL);
- l1ctl_tx_reset_req(ms, L1CTL_RES_T_FULL);
- return layer3_init(ms);
-}
-
-static struct l23_app_info info = {
- .copyright = "Copyright (C) 2010 Harald Welte <laforge@gnumonks.org>\n",
- .contribution = "Contributions by Holger Hans Peter Freyther\n",
-};
-
-struct l23_app_info *l23_app_info()
-{
- return &info;
-}
diff --git a/Src/osmoconbb/src/host/layer23/src/misc/app_cell_log.c b/Src/osmoconbb/src/host/layer23/src/misc/app_cell_log.c
deleted file mode 100644
index 27290be..0000000
--- a/Src/osmoconbb/src/host/layer23/src/misc/app_cell_log.c
+++ /dev/null
@@ -1,195 +0,0 @@
-/* "Application" code of the layer2/3 stack */
-
-/* (C) 2010 by Andreas Eversberg <jolly@eversberg.eu>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <signal.h>
-#include <stdlib.h>
-#include <time.h>
-#include <getopt.h>
-
-#include <osmocom/bb/common/osmocom_data.h>
-#include <osmocom/bb/common/l1ctl.h>
-#include <osmocom/bb/common/l23_app.h>
-#include <osmocom/bb/common/logging.h>
-#include <osmocom/bb/common/gps.h>
-#include <osmocom/bb/misc/cell_log.h>
-
-#include <osmocom/core/talloc.h>
-#include <osmocom/core/utils.h>
-
-#include <l1ctl_proto.h>
-
-extern struct log_target *stderr_target;
-extern void *l23_ctx;
-
-char *logname = "/var/log/osmocom.log";
-int RACH_MAX = 2;
-
-int _scan_work(struct osmocom_ms *ms)
-{
- return 0;
-}
-
-int _scan_exit(struct osmocom_ms *ms)
-{
- /* in case there is a lockup during exit */
- signal(SIGINT, SIG_DFL);
- signal(SIGHUP, SIG_DFL);
- signal(SIGTERM, SIG_DFL);
- signal(SIGPIPE, SIG_DFL);
-
- scan_exit();
-
- return 0;
-}
-
-int l23_app_init(struct osmocom_ms *ms)
-{
- int rc;
-
- srand(time(NULL));
-
-// log_parse_category_mask(stderr_target, "DL1C:DRSL:DRR:DGPS:DSUM");
- log_parse_category_mask(stderr_target, "DSUM");
- log_set_log_level(stderr_target, LOGL_INFO);
-
- l23_app_work = _scan_work;
- l23_app_exit = _scan_exit;
-
- rc = scan_init(ms);
- if (rc)
- return rc;
-
- l1ctl_tx_reset_req(ms, L1CTL_RES_T_FULL);
- printf("Mobile initialized, please start phone now!\n");
- return 0;
-}
-
-static int l23_cfg_supported()
-{
- return L23_OPT_TAP | L23_OPT_DBG;
-}
-
-static int l23_getopt_options(struct option **options)
-{
- static struct option opts [] = {
- {"logfile", 1, 0, 'l'},
- {"rach", 1, 0, 'r'},
- {"no-rach", 1, 0, 'n'},
-#ifdef _HAVE_GPSD
- {"gpsd-host", 1, 0, 'g'},
- {"gpsd-port", 1, 0, 'p'},
-#endif
- {"gps", 1, 0, 'g'},
- {"baud", 1, 0, 'b'}
- };
-
- *options = opts;
- return ARRAY_SIZE(opts);
-}
-
-static int l23_cfg_print_help()
-{
- printf("\nApplication specific\n");
- printf(" -l --logfile LOGFILE Logfile for the cell log.\n");
- printf(" -r --rach RACH Nr. of RACH bursts to send.\n");
- printf(" -n --no-rach Send no rach bursts.\n");
- printf(" -g --gpsd-host HOST 127.0.0.1. gpsd host.\n");
- printf(" -p --port PORT 2947. gpsd port\n");
- printf(" -f --gps DEVICE /dev/ttyACM0. GPS serial device.\n");
- printf(" -b --baud BAUDRAT The baud rate of the GPS device\n");
-
- return 0;
-}
-
-static int l23_cfg_handle(int c, const char *optarg)
-{
- switch (c) {
- case 'l':
- logname = talloc_strdup(l23_ctx, optarg);
- break;
- case 'r':
- RACH_MAX = atoi(optarg);
- break;
- case 'n':
- RACH_MAX = 0;
- break;
- case 'g':
-#ifdef _HAVE_GPSD
- snprintf(g.gpsd_host, ARRAY_SIZE(g.gpsd_host), "%s", optarg);
- /* force string terminator */
- g.gpsd_host[ARRAY_SIZE(g.gpsd_host) - 1] = '\0';
- if (g.gps_type != GPS_TYPE_UNDEF)
- goto cmd_line_error;
- g.gps_type = GPS_TYPE_GPSD;
- LOGP(DGPS, LOGL_INFO, "Using gpsd host %s\n", g.gpsd_host);
-#else
- printf("Gpsd support not compiled.\n");
- exit(1);
-#endif
- break;
- case 'p':
-#ifdef _HAVE_GPSD
- snprintf(g.gpsd_port, ARRAY_SIZE(g.gpsd_port), "%s", optarg);
- /* force string terminator */
- g.gpsd_port[ARRAY_SIZE(g.gpsd_port) - 1] = '\0';
- g.gps_type = GPS_TYPE_GPSD;
- LOGP(DGPS, LOGL_INFO, "Using gpsd port %s\n", g.gpsd_port);
-#else
- printf("Gpsd support not compiled.\n");
- exit(1);
-#endif
- break;
- case 'f':
- snprintf(g.device, ARRAY_SIZE(g.device), "%s", optarg);
- /* force string terminator */
- g.device[ARRAY_SIZE(g.device) - 1] = '\0';
- if (g.gps_type != GPS_TYPE_UNDEF)
- goto cmd_line_error;
- g.gps_type = GPS_TYPE_SERIAL;
- LOGP(DGPS, LOGL_INFO, "Using GPS serial device %s\n", g.device);
- break;
- case 'b':
- g.baud = atoi(optarg);
- g.gps_type = GPS_TYPE_SERIAL;
- LOGP(DGPS, LOGL_INFO, "Setting GPS baudrate to %u\n", g.baud);
- break;
- }
- return 0;
-
-cmd_line_error:
- printf("\nYou can't specify both gpsd and serial gps!!\n\n");
- exit(1);
-}
-
-static struct l23_app_info info = {
- .copyright = "Copyright (C) 2010 Andreas Eversberg\n",
- .getopt_string = "g:p:l:r:nf:b:",
- .cfg_supported = l23_cfg_supported,
- .cfg_getopt_opt = l23_getopt_options,
- .cfg_handle_opt = l23_cfg_handle,
- .cfg_print_help = l23_cfg_print_help,
-};
-
-struct l23_app_info *l23_app_info()
-{
- return &info;
-}
diff --git a/Src/osmoconbb/src/host/layer23/src/misc/app_echo_test.c b/Src/osmoconbb/src/host/layer23/src/misc/app_echo_test.c
deleted file mode 100644
index 3d937d2..0000000
--- a/Src/osmoconbb/src/host/layer23/src/misc/app_echo_test.c
+++ /dev/null
@@ -1,66 +0,0 @@
-/* TEST code, regularly transmit ECHO REQ packet to L1 */
-
-/* (C) 2010 by Holger Hans Peter Freyther
- * (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <osmocom/bb/common/osmocom_data.h>
-#include <osmocom/bb/common/l1ctl.h>
-#include <osmocom/bb/common/lapdm.h>
-#include <osmocom/bb/common/logging.h>
-#include <osmocom/bb/common/l23_app.h>
-#include <osmocom/bb/misc/layer3.h>
-
-#include <osmocom/core/msgb.h>
-#include <osmocom/core/talloc.h>
-#include <osmocom/core/select.h>
-
-
-static struct {
- struct osmo_timer_list timer;
-} test_data;
-
-static void test_tmr_cb(void *data)
-{
- struct osmocom_ms *ms = data;
-
- l1ctl_tx_echo_req(ms, 62);
- osmo_timer_schedule(&test_data.timer, 1, 0);
-}
-
-int l23_app_init(struct osmocom_ms *ms)
-{
- test_data.timer.cb = &test_tmr_cb;
- test_data.timer.data = ms;
-
- osmo_timer_schedule(&test_data.timer, 1, 0);
-
- return 0;
-}
-
-static struct l23_app_info info = {
- .copyright = "Copyright (C) 2010 Harald Welte <laforge@gnumonks.org>\n",
- .contribution = "Contributions by Holger Hans Peter Freyther\n",
-};
-
-struct l23_app_info *l23_app_info()
-{
- return &info;
-}
diff --git a/Src/osmoconbb/src/host/layer23/src/misc/bcch_scan.c b/Src/osmoconbb/src/host/layer23/src/misc/bcch_scan.c
deleted file mode 100644
index ddd0eea..0000000
--- a/Src/osmoconbb/src/host/layer23/src/misc/bcch_scan.c
+++ /dev/null
@@ -1,318 +0,0 @@
-/* BCCH Scanning code for OsmocomBB */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdio.h>
-#include <stdint.h>
-#include <string.h>
-#include <errno.h>
-
-#include <l1ctl_proto.h>
-
-#include <osmocom/core/logging.h>
-#include <osmocom/core/talloc.h>
-#include <osmocom/core/signal.h>
-#include <osmocom/core/timer.h>
-#include <osmocom/core/msgb.h>
-#include <osmocom/gsm/tlv.h>
-#include <osmocom/gsm/gsm_utils.h>
-#include <osmocom/gsm/protocol/gsm_04_08.h>
-#include <osmocom/gsm/protocol/gsm_08_58.h>
-#include <osmocom/gsm/rsl.h>
-
-#include <osmocom/bb/common/l1ctl.h>
-#include <osmocom/bb/common/osmocom_data.h>
-#include <osmocom/bb/common/lapdm.h>
-#include <osmocom/bb/common/logging.h>
-
-/* somewhere in 05.08 */
-#define MAX_CELLS_IN_BA 32
-
-/* Information about a single cell / BCCH */
-struct cell_info {
- struct llist_head list;
-
- uint16_t band_arfcn;
- uint8_t bsic;
- uint8_t rxlev;
-
- struct {
- uint16_t mcc; /* Mobile Country Code */
- uint16_t mnc; /* Mobile Network Code */
- uint16_t lac; /* Location Area Code */
- uint16_t rac; /* Routing Area Code */
- uint16_t cid; /* Cell ID */
- } id;
- uint16_t ba_arfcn[MAX_CELLS_IN_BA];
- uint8_t ba_arfcn_num;
-
- struct {
- int32_t fn_delta; /* delta to current L1 fn */
- int16_t qbit_delta;
- int16_t afc_delta;
- } l1_sync;
-};
-
-#define AFS_F_PM_DONE 0x01
-#define AFS_F_TESTED 0x02
-#define AFS_F_BCCH 0x04
-struct arfcn_state {
- uint8_t rxlev;
- uint8_t flags;
-};
-
-enum bscan_state {
- BSCAN_S_NONE,
- BSCAN_S_WAIT_DATA,
- BSCAN_S_DONE,
-};
-
-enum fps_state {
- FPS_S_NONE,
- FPS_S_PM_GSM900,
- FPS_S_PM_EGSM900,
- FPS_S_PM_GSM1800,
- FPS_S_BINFO,
-};
-
-struct full_power_scan {
- /* Full Power Scan */
- enum fps_state fps_state;
- struct arfcn_state arfcn_state[1024];
-
- struct osmocom_ms *ms;
-
- /* BCCH info part */
- enum bscan_state state;
- struct llist_head cell_list;
- struct cell_info *cur_cell;
- uint16_t cur_arfcn;
- struct osmo_timer_list timer;
-};
-
-static struct full_power_scan fps;
-
-static int get_next_arfcn(struct full_power_scan *fps)
-{
- unsigned int i;
- uint8_t best_rxlev = 0;
- int best_arfcn = -1;
-
- for (i = 0; i < ARRAY_SIZE(fps->arfcn_state); i++) {
- struct arfcn_state *af = &fps->arfcn_state[i];
- /* skip ARFCN's where we don't have a PM */
- if (!(af->flags & AFS_F_PM_DONE))
- continue;
- /* skip ARFCN's that we already tested */
- if (af->flags & AFS_F_TESTED)
- continue;
- /* if current arfcn_state is better than best so far,
- * select it */
- if (af->rxlev > best_rxlev) {
- best_rxlev = af->rxlev;
- best_arfcn = i;
- }
- }
- printf("arfcn=%d rxlev=%u\n", best_arfcn, best_rxlev);
- return best_arfcn;
-}
-
-static struct cell_info *cell_info_alloc(void)
-{
- struct cell_info *ci = talloc_zero(NULL, struct cell_info);
- return ci;
-}
-
-static void cell_info_free(struct cell_info *ci)
-{
- talloc_free(ci);
-}
-
-/* start to scan for one ARFCN */
-static int _cinfo_start_arfcn(unsigned int band_arfcn)
-{
- int rc;
-
- /* ask L1 to try to tune to new ARFCN */
- /* FIXME: decode band */
- rc = l1ctl_tx_fbsb_req(fps.ms, band_arfcn,
- L1CTL_FBSB_F_FB01SB, 100, 0, CCCH_MODE_COMBINED);
- if (rc < 0)
- return rc;
-
- /* allocate new cell info structure */
- fps.cur_cell = cell_info_alloc();
- fps.cur_arfcn = band_arfcn;
- fps.cur_cell->band_arfcn = band_arfcn;
- /* FIXME: start timer in case we never get a sync */
- fps.state = BSCAN_S_WAIT_DATA;
- osmo_timer_schedule(&fps.timer, 2, 0);
-
- return 0;
-}
-
-
-static void cinfo_next_cell(void *data)
-{
- int rc;
-
- /* we've been waiting for BCCH info */
- fps.arfcn_state[fps.cur_arfcn].flags |= AFS_F_TESTED;
- /* if there is a BCCH, we need to add the collected BCCH
- * information to our list */
-
- if (fps.arfcn_state[fps.cur_arfcn].flags & AFS_F_BCCH)
- llist_add(&fps.cur_cell->list, &fps.cell_list);
- else
- cell_info_free(fps.cur_cell);
-
- rc = get_next_arfcn(&fps);
- if (rc < 0) {
- fps.state = BSCAN_S_DONE;
- return;
- }
- /* start syncing to the next ARFCN */
- _cinfo_start_arfcn(rc);
-}
-
-static void cinfo_timer_cb(void *data)
-{
- switch (fps.state) {
- case BSCAN_S_WAIT_DATA:
- cinfo_next_cell(data);
- break;
- }
-}
-
-/* Update cell_info for current cell with received BCCH info */
-static int rx_bcch_info(const uint8_t *data)
-{
- struct cell_info *ci = fps.cur_cell;
- struct gsm48_system_information_type_header *si_hdr;
- si_hdr = (struct gsm48_system_information_type_header *) data;;
-
- /* we definitely have a BCCH on this channel */
- fps.arfcn_state[ci->band_arfcn].flags |= AFS_F_BCCH;
-
- switch (si_hdr->system_information) {
- case GSM48_MT_RR_SYSINFO_1:
- /* FIXME: CA, RACH control */
- break;
- case GSM48_MT_RR_SYSINFO_2:
- /* FIXME: BA, NCC, RACH control */
- break;
- case GSM48_MT_RR_SYSINFO_3:
- /* FIXME: cell_id, LAI */
- break;
- case GSM48_MT_RR_SYSINFO_4:
- /* FIXME: LAI */
- break;
- }
- return 0;
-}
-
-/* Update L1/SCH information (AFC/QBIT/FN offset, BSIC) */
-static int rx_sch_info()
-{
- /* FIXME */
-}
-
-static int bscan_sig_cb(unsigned int subsys, unsigned int signal,
- void *handler_data, void *signal_data)
-{
- struct cell_info *ci = fps.cur_cell;
- struct osmocom_ms *ms;
- struct osmobb_meas_res *mr;
- uint16_t arfcn;
- int rc;
-
- if (subsys != SS_L1CTL)
- return 0;
-
- switch (signal) {
- case S_L1CTL_PM_RES:
- mr = signal_data;
- /* check if PM result is for same MS */
- if (fps.ms != mr->ms)
- return 0;
- arfcn = mr->band_arfcn & 0x3ff;
- /* update RxLev and notice that PM was done */
- fps.arfcn_state[arfcn].rxlev = mr->rx_lev;
- fps.arfcn_state[arfcn].flags |= AFS_F_PM_DONE;
- break;
- case S_L1CTL_PM_DONE:
- ms = signal_data;
- switch (fps.fps_state) {
- case FPS_S_PM_GSM900:
- fps.fps_state = FPS_S_PM_EGSM900;
- return l1ctl_tx_pm_req_range(ms, 955, 1023);
- case FPS_S_PM_EGSM900:
- fps.fps_state = FPS_S_PM_GSM1800;
- return l1ctl_tx_pm_req_range(ms, 512, 885);
- case FPS_S_PM_GSM1800:
- /* power measurement has finished, we can start
- * to actually iterate over the ARFCN's and try
- * to sync to BCCHs */
- fps.fps_state = FPS_S_BINFO;
- rc = get_next_arfcn(&fps);
- if (rc < 0) {
- fps.state = BSCAN_S_DONE;
- return;
- }
- _cinfo_start_arfcn(rc);
- break;
- }
- break;
- case S_L1CTL_FBSB_RESP:
- /* We actually got a FCCH/SCH burst */
-#if 0
- fps.arfcn_state[ci->band_arfcn].flags |= AFS_F_BCCH;
- /* fallthrough */
-#else
- break;
-#endif
- case S_L1CTL_FBSB_ERR:
- /* We timed out, move on */
- if (fps.state == BSCAN_S_WAIT_DATA)
- cinfo_next_cell(NULL);
- break;
- }
- return 0;
-}
-
-/* start the full power scan */
-int fps_start(struct osmocom_ms *ms)
-{
- memset(&fps, 0, sizeof(fps));
- fps.ms = ms;
-
- fps.timer.cb = cinfo_timer_cb;
- fps.timer.data = &fps;
-
- /* Start by scanning the good old GSM900 band */
- fps.fps_state = FPS_S_PM_GSM900;
- return l1ctl_tx_pm_req_range(ms, 0, 124);
-}
-
-int fps_init(void)
-{
- return osmo_signal_register_handler(SS_L1CTL, &bscan_sig_cb, NULL);
-}
diff --git a/Src/osmoconbb/src/host/layer23/src/misc/catcher.c b/Src/osmoconbb/src/host/layer23/src/misc/catcher.c
deleted file mode 100644
index 1a9c33c..0000000
--- a/Src/osmoconbb/src/host/layer23/src/misc/catcher.c
+++ /dev/null
@@ -1,820 +0,0 @@
-/* Cell Scanning code for OsmocomBB */
-
-/* (C) 2010 by Andreas Eversberg <jolly@eversberg.eu>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdio.h>
-#include <stdint.h>
-#include <string.h>
-#include <stdlib.h>
-#include <time.h>
-#include <errno.h>
-
-#include <l1ctl_proto.h>
-
-#include <osmocom/core/logging.h>
-#include <osmocom/core/timer.h>
-#include <osmocom/core/signal.h>
-#include <osmocom/core/msgb.h>
-#include <osmocom/gsm/gsm_utils.h>
-#include <osmocom/gsm/protocol/gsm_04_08.h>
-#include <osmocom/gsm/rsl.h>
-
-#include <osmocom/bb/common/l1ctl.h>
-#include <osmocom/bb/common/osmocom_data.h>
-#include <osmocom/bb/common/lapdm.h>
-#include <osmocom/bb/common/logging.h>
-#include <osmocom/bb/common/networks.h>
-#include <osmocom/bb/common/gps.h>
-#include <osmocom/bb/misc/cell_log.h>
-#include "../../../gsmmap/geo.h"
-
-#define READ_WAIT 2, 0
-#define RACH_WAIT 0, 900000
-#define MIN_RXLEV -106
-#define MAX_DIST 2000
-
-enum {
- SCAN_STATE_PM,
- SCAN_STATE_SYNC,
- SCAN_STATE_READ,
- SCAN_STATE_RACH,
-};
-
-/* ranges of bands */
-static uint16_t band_range[][2] = {{0, 124}, {512, 885}, {955, 1023}, {0, 0}};
-
-#define INFO_FLG_PM 1
-#define INFO_FLG_SYNC 2
-#define INFO_FLG_SI1 4
-#define INFO_FLG_SI2 8
-#define INFO_FLG_SI2bis 16
-#define INFO_FLG_SI2ter 32
-#define INFO_FLG_SI3 64
-#define INFO_FLG_SI4 128
-
-static struct osmocom_ms *ms;
-static struct osmo_timer_list timer;
-
-static struct pm_info {
- uint16_t flags;
- int8_t rxlev;
-} pm[1024];
-
-static int started = 0;
-static int state;
-static int8_t min_rxlev = MIN_RXLEV;
-static int sync_count;
-static int pm_index, pm_gps_valid;
-static double pm_gps_x, pm_gps_y, pm_gps_z;
-static int arfcn;
-static int rach_count;
-static FILE *logfp = NULL;
-extern char *logname;
-extern int RACH_MAX;
-
-
-static struct gsm48_sysinfo sysinfo;
-
-static struct log_si {
- uint16_t flags;
- uint8_t bsic;
- int8_t rxlev;
- uint16_t mcc, mnc, lac, cellid;
- uint8_t ta;
- double latitude, longitude;
-} log_si;
-
-struct rach_ref {
- uint8_t valid;
- uint8_t cr;
- uint8_t t1, t2, t3;
-} rach_ref;
-
-#define LOGFILE(fmt, args...) \
- fprintf(logfp, fmt, ## args);
-#define LOGFLUSH() \
- fflush(logfp);
-
-static void start_sync(void);
-static void start_rach(void);
-static void start_pm(void);
-
-static void log_gps(void)
-{
- if (!g.enable || !g.valid)
- return;
- LOGFILE("position %.8f %.8f\n", g.longitude, g.latitude);
-}
-
-static void log_time(void)
-{
- time_t now;
-
- if (g.enable && g.valid)
- now = g.gmt;
- else
- time(&now);
- LOGFILE("time %lu\n", now);
-}
-
-static void log_frame(char *tag, uint8_t *data)
-{
- int i;
-
- LOGFILE("%s", tag);
- for (i = 0; i < 23; i++)
- LOGFILE(" %02x", *data++);
- LOGFILE("\n");
-}
-
-static void log_pm(void)
-{
- int count = 0, i;
-
- LOGFILE("[power]\n");
- log_time();
- log_gps();
- for (i = 0; i <= 1023; i++) {
- if ((pm[i].flags & INFO_FLG_PM)) {
- if (!count)
- LOGFILE("arfcn %d", i);
- LOGFILE(" %d", pm[i].rxlev);
- count++;
- if (count == 12) {
- LOGFILE("\n");
- count = 0;
- }
- } else {
- if (count) {
- LOGFILE("\n");
- count = 0;
- }
- }
- }
- if (count)
- LOGFILE("\n");
-
- LOGFILE("\n");
- LOGFLUSH();
-}
-
-static void log_sysinfo(void)
-{
- struct rx_meas_stat *meas = &ms->meas;
- struct gsm48_sysinfo *s = &sysinfo;
- int8_t rxlev;
- char ta_str[32] = "";
-
- if (log_si.ta != 0xff)
- sprintf(ta_str, " TA=%d", log_si.ta);
-
- LOGP(DSUM, LOGL_INFO, "Cell: ARFCN=%d MCC=%s MNC=%s (%s, %s)%s\n",
- arfcn, gsm_print_mcc(s->mcc), gsm_print_mnc(s->mnc),
- gsm_get_mcc(s->mcc), gsm_get_mnc(s->mcc, s->mnc), ta_str);
-
- LOGFILE("[sysinfo]\n");
- LOGFILE("arfcn %d\n", s->arfcn);
- log_time();
- log_gps();
- LOGFILE("bsic %d,%d\n", s->bsic >> 3, s->bsic & 7);
- rxlev = meas->rxlev / meas->frames - 110;
- LOGFILE("rxlev %d\n", rxlev);
- if (s->si1)
- log_frame("si1", s->si1_msg);
- if (s->si2)
- log_frame("si2", s->si2_msg);
- if (s->si2bis)
- log_frame("si2bis", s->si2b_msg);
- if (s->si2ter)
- log_frame("si2ter", s->si2t_msg);
- if (s->si3)
- log_frame("si3", s->si3_msg);
- if (s->si4)
- log_frame("si4", s->si4_msg);
- if (log_si.ta != 0xff)
- LOGFILE("ta %d\n", log_si.ta);
-
- LOGFILE("\n");
- LOGFLUSH();
-}
-
-static void timeout_cb(void *arg)
-{
- switch (state) {
- case SCAN_STATE_READ:
- LOGP(DRR, LOGL_INFO, "Timeout reading BCCH\n");
- start_sync();
- break;
- case SCAN_STATE_RACH:
- LOGP(DRR, LOGL_INFO, "Timeout on RACH\n");
- rach_count++;
- start_rach();
- break;
- }
-}
-
-static void stop_timer(void)
-{
- if (osmo_timer_pending(&timer))
- osmo_timer_del(&timer);
-}
-
-static void start_timer(int sec, int micro)
-{
- stop_timer();
- timer.cb = timeout_cb;
- timer.data = ms;
- osmo_timer_schedule(&timer, sec, micro);
-}
-
-static void start_rach(void)
-{
- struct gsm48_sysinfo *s = &sysinfo;
- uint8_t chan_req_val, chan_req_mask;
- struct msgb *nmsg;
- struct abis_rsl_cchan_hdr *ncch;
-
- if (rach_count == RACH_MAX) {
- log_sysinfo();
- start_sync();
- return;
- }
-
- state = SCAN_STATE_RACH;
-
- if (s->neci) {
- chan_req_mask = 0x0f;
- chan_req_val = 0x01;
- LOGP(DRR, LOGL_INFO, "CHANNEL REQUEST: %02x "
- "(OTHER with NECI)\n", chan_req_val);
- } else {
- chan_req_mask = 0x1f;
- chan_req_val = 0xe0;
- LOGP(DRR, LOGL_INFO, "CHANNEL REQUEST: %02x (OTHER no NECI)\n",
- chan_req_val);
- }
-
- rach_ref.valid = 0;
- rach_ref.cr = random();
- rach_ref.cr &= chan_req_mask;
- rach_ref.cr |= chan_req_val;
-
- nmsg = msgb_alloc_headroom(RSL_ALLOC_SIZE+RSL_ALLOC_HEADROOM,
- RSL_ALLOC_HEADROOM, "GSM 04.06 RSL");
- if (!nmsg)
- return;
- nmsg->l2h = nmsg->data;
- ncch = (struct abis_rsl_cchan_hdr *) msgb_put(nmsg, sizeof(*ncch)
- + 4 + 2 + 2);
- rsl_init_cchan_hdr(ncch, RSL_MT_CHAN_RQD);
- ncch->chan_nr = RSL_CHAN_RACH;
- ncch->data[0] = RSL_IE_REQ_REFERENCE;
- ncch->data[1] = rach_ref.cr;
- ncch->data[2] = (s->ccch_conf == 1) << 7;
- ncch->data[3] = 0;
- ncch->data[4] = RSL_IE_ACCESS_DELAY;
- ncch->data[5] = 0; /* no delay */
- ncch->data[6] = RSL_IE_MS_POWER;
- ncch->data[7] = 0; /* full power */
-
- start_timer(RACH_WAIT);
-
- lapdm_rslms_recvmsg(nmsg, &ms->lapdm_channel);
-}
-
-static void start_sync(void)
-{
- int rxlev = -128;
- int i, dist = 0;
- char dist_str[32] = "";
-
- arfcn = 0xffff;
- for (i = 0; i <= 1023; i++) {
- if ((pm[i].flags & INFO_FLG_PM)
- && !(pm[i].flags & INFO_FLG_SYNC)) {
- if (pm[i].rxlev > rxlev) {
- rxlev = pm[i].rxlev;
- arfcn = i;
- }
- }
- }
- /* if GPS becomes valid, like after exitting a tunnel */
- if (!pm_gps_valid && g.valid) {
- pm_gps_valid = 1;
- geo2space(&pm_gps_x, &pm_gps_y, &pm_gps_z, g.longitude,
- g.latitude);
- }
- if (pm_gps_valid && g.valid) {
- double x, y, z;
-
- geo2space(&x, &y, &z, g.longitude, g.latitude);
- dist = distinspace(pm_gps_x, pm_gps_y, pm_gps_z, x, y, z);
- sprintf(dist_str, " dist %d", (int)dist);
- }
- if (dist > MAX_DIST || arfcn == 0xffff || rxlev < min_rxlev) {
- memset(pm, 0, sizeof(pm));
- pm_index = 0;
- sync_count = 0;
- start_pm();
- return;
- }
- pm[arfcn].flags |= INFO_FLG_SYNC;
- LOGP(DSUM, LOGL_INFO, "Sync ARFCN %d (rxlev %d, %d syncs "
- "left)%s\n", arfcn, pm[arfcn].rxlev, sync_count--, dist_str);
- memset(&sysinfo, 0, sizeof(sysinfo));
- sysinfo.arfcn = arfcn;
- state = SCAN_STATE_SYNC;
- l1ctl_tx_reset_req(ms, L1CTL_RES_T_FULL);
- l1ctl_tx_fbsb_req(ms, arfcn, L1CTL_FBSB_F_FB01SB, 100, 0,
- CCCH_MODE_NONE);
-}
-
-static void start_pm(void)
-{
- uint16_t from, to;
-
- state = SCAN_STATE_PM;
- from = band_range[pm_index][0];
- to = band_range[pm_index][1];
-
- if (from == 0 && to == 0) {
- LOGP(DSUM, LOGL_INFO, "Measurement done\n");
- pm_gps_valid = g.enable && g.valid;
- if (pm_gps_valid)
- geo2space(&pm_gps_x, &pm_gps_y, &pm_gps_z,
- g.longitude, g.latitude);
- log_pm();
- start_sync();
- return;
- }
- LOGP(DSUM, LOGL_INFO, "Measure from %d to %d\n", from, to);
- l1ctl_tx_reset_req(ms, L1CTL_RES_T_FULL);
- l1ctl_tx_pm_req_range(ms, from, to);
-}
-
-static int signal_cb(unsigned int subsys, unsigned int signal,
- void *handler_data, void *signal_data)
-{
- struct osmobb_meas_res *mr;
- struct osmobb_fbsb_res *fr;
- uint16_t index;
-
- if (subsys != SS_L1CTL)
- return 0;
-
- switch (signal) {
- case S_L1CTL_PM_RES:
- mr = signal_data;
- index = mr->band_arfcn & 0x3ff;
- pm[index].flags |= INFO_FLG_PM;
- pm[index].rxlev = mr->rx_lev - 110;
- if (pm[index].rxlev >= min_rxlev)
- sync_count++;
-// printf("rxlev %d = %d (sync_count %d)\n", index, pm[index].rxlev, sync_count);
- break;
- case S_L1CTL_PM_DONE:
- pm_index++;
- start_pm();
- break;
- case S_L1CTL_FBSB_RESP:
- fr = signal_data;
- sysinfo.bsic = fr->bsic;
- state = SCAN_STATE_READ;
- memset(&ms->meas, 0, sizeof(ms->meas));
- memset(&log_si, 0, sizeof(log_si));
- log_si.flags |= INFO_FLG_SYNC;
- log_si.ta = 0xff; /* invalid */
- start_timer(READ_WAIT);
- LOGP(DRR, LOGL_INFO, "Synchronized, start reading\n");
- break;
- case S_L1CTL_FBSB_ERR:
- LOGP(DRR, LOGL_INFO, "Sync failed\n");
- start_sync();
- break;
- case S_L1CTL_RESET:
- if (started)
- break;
- started = 1;
- memset(pm, 0, sizeof(pm));
- pm_index = 0;
- sync_count = 0;
- start_pm();
- }
- return 0;
-}
-
-static int ta_result(uint8_t ta)
-{
- stop_timer();
-
- if (ta == 0xff)
- LOGP(DSUM, LOGL_INFO, "Got assignment reject\n");
- else {
- LOGP(DSUM, LOGL_DEBUG, "Got assignment TA = %d\n", ta);
- log_si.ta = ta;
- }
-
- log_sysinfo();
- start_sync();
-
- return 0;
-}
-
-/* match request reference agains request */
-static int match_ra(struct osmocom_ms *ms, struct gsm48_req_ref *ref)
-{
- uint8_t ia_t1, ia_t2, ia_t3;
-
- /* filter confirmed RACH requests only */
- if (rach_ref.valid && ref->ra == rach_ref.cr) {
- ia_t1 = ref->t1;
- ia_t2 = ref->t2;
- ia_t3 = (ref->t3_high << 3) | ref->t3_low;
- if (ia_t1 == rach_ref.t1 && ia_t2 == rach_ref.t2
- && ia_t3 == rach_ref.t3) {
- LOGP(DRR, LOGL_INFO, "request %02x matches "
- "(fn=%d,%d,%d)\n", ref->ra, ia_t1, ia_t2,
- ia_t3);
- return 1;
- } else
- LOGP(DRR, LOGL_INFO, "request %02x matches but not "
- "frame number (IMM.ASS fn=%d,%d,%d != RACH "
- "fn=%d,%d,%d)\n", ref->ra, ia_t1, ia_t2, ia_t3,
- rach_ref.t1, rach_ref.t2, rach_ref.t3);
- }
-
- return 0;
-}
-
-/* 9.1.18 IMMEDIATE ASSIGNMENT is received */
-static int imm_ass(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_imm_ass *ia = msgb_l3(msg);
-
- LOGP(DRR, LOGL_INFO, "IMMEDIATE ASSIGNMENT:\n");
-
- if (state != SCAN_STATE_RACH) {
- LOGP(DRR, LOGL_INFO, "Not for us, no request.\n");
- return 0;
- }
-
- /* request ref */
- if (match_ra(ms, &ia->req_ref)) {
- return ta_result(ia->timing_advance);
- }
- LOGP(DRR, LOGL_INFO, "Request, but not for us.\n");
-
- return 0;
-}
-
-/* 9.1.19 IMMEDIATE ASSIGNMENT EXTENDED is received */
-static int imm_ass_ext(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_imm_ass_ext *ia = msgb_l3(msg);
-
- LOGP(DRR, LOGL_INFO, "IMMEDIATE ASSIGNMENT EXTENDED:\n");
-
- if (state != SCAN_STATE_RACH) {
- LOGP(DRR, LOGL_INFO, "Not for us, no request.\n");
- return 0;
- }
-
- /* request ref 1 */
- if (match_ra(ms, &ia->req_ref1)) {
- return ta_result(ia->timing_advance1);
- }
- /* request ref 2 */
- if (match_ra(ms, &ia->req_ref2)) {
- return ta_result(ia->timing_advance2);
- }
- LOGP(DRR, LOGL_INFO, "Request, but not for us.\n");
-
- return 0;
-}
-
-/* 9.1.20 IMMEDIATE ASSIGNMENT REJECT is received */
-static int imm_ass_rej(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_imm_ass_rej *ia = msgb_l3(msg);
- int i;
- struct gsm48_req_ref *req_ref;
-
- LOGP(DRR, LOGL_INFO, "IMMEDIATE ASSIGNMENT REJECT:\n");
-
- if (state != SCAN_STATE_RACH) {
- LOGP(DRR, LOGL_INFO, "Not for us, no request.\n");
- return 0;
- }
-
- for (i = 0; i < 4; i++) {
- /* request reference */
- req_ref = (struct gsm48_req_ref *)
- (((uint8_t *)&ia->req_ref1) + i * 4);
- LOGP(DRR, LOGL_INFO, "IMMEDIATE ASSIGNMENT REJECT "
- "(ref 0x%02x)\n", req_ref->ra);
- if (match_ra(ms, req_ref)) {
- return ta_result(0xff);
- }
- }
-
- return 0;
-}
-
-/* receive CCCH at RR layer */
-static int pch_agch(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_system_information_type_header *sih = msgb_l3(msg);
-
- switch (sih->system_information) {
- case GSM48_MT_RR_PAG_REQ_1:
- case GSM48_MT_RR_PAG_REQ_2:
- case GSM48_MT_RR_PAG_REQ_3:
- return 0;
- case GSM48_MT_RR_IMM_ASS:
- return imm_ass(ms, msg);
- case GSM48_MT_RR_IMM_ASS_EXT:
- return imm_ass_ext(ms, msg);
- case GSM48_MT_RR_IMM_ASS_REJ:
- return imm_ass_rej(ms, msg);
- default:
- return -EINVAL;
- }
-}
-
-/* check if sysinfo is complete, change to RACH state */
-static int new_sysinfo(void)
-{
- struct gsm48_sysinfo *s = &sysinfo;
-
- /* restart timer */
- start_timer(READ_WAIT);
-
- /* mandatory */
- if (!s->si1 || !s->si2 || !s->si3 || !s->si4) {
- LOGP(DRR, LOGL_INFO, "not all mandatory SI received\n");
- return 0;
- }
-
- /* extended band */
- if (s->nb_ext_ind_si2 && !s->si2bis) {
- LOGP(DRR, LOGL_INFO, "extended ba, but si2bis not received\n");
- return 0;
- }
-
- /* 2ter */
- if (s->si2ter_ind && !s->si2ter) {
- LOGP(DRR, LOGL_INFO, "si2ter_ind, but si2ter not received\n");
- return 0;
- }
-
- LOGP(DRR, LOGL_INFO, "Sysinfo complete\n");
-
- stop_timer();
-
- rach_count = 0;
- start_rach();
-
- return 0;
-}
-
-/* receive BCCH at RR layer */
-static int bcch(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_sysinfo *s = &sysinfo;
- struct gsm48_system_information_type_header *sih = msgb_l3(msg);
- uint8_t ccch_mode;
-
- if (msgb_l3len(msg) != 23) {
- LOGP(DRR, LOGL_NOTICE, "Invalid BCCH message length\n");
- return -EINVAL;
- }
- switch (sih->system_information) {
- case GSM48_MT_RR_SYSINFO_1:
- if (!memcmp(sih, s->si1_msg, sizeof(s->si1_msg)))
- return 0;
- LOGP(DRR, LOGL_INFO, "New SYSTEM INFORMATION 1\n");
- gsm48_decode_sysinfo1(s,
- (struct gsm48_system_information_type_1 *) sih,
- msgb_l3len(msg));
- return new_sysinfo();
- case GSM48_MT_RR_SYSINFO_2:
- if (!memcmp(sih, s->si2_msg, sizeof(s->si2_msg)))
- return 0;
- LOGP(DRR, LOGL_INFO, "New SYSTEM INFORMATION 2\n");
- gsm48_decode_sysinfo2(s,
- (struct gsm48_system_information_type_2 *) sih,
- msgb_l3len(msg));
- return new_sysinfo();
- case GSM48_MT_RR_SYSINFO_2bis:
- if (!memcmp(sih, s->si2b_msg, sizeof(s->si2b_msg)))
- return 0;
- LOGP(DRR, LOGL_INFO, "New SYSTEM INFORMATION 2bis\n");
- gsm48_decode_sysinfo2bis(s,
- (struct gsm48_system_information_type_2bis *) sih,
- msgb_l3len(msg));
- return new_sysinfo();
- case GSM48_MT_RR_SYSINFO_2ter:
- if (!memcmp(sih, s->si2t_msg, sizeof(s->si2t_msg)))
- return 0;
- LOGP(DRR, LOGL_INFO, "New SYSTEM INFORMATION 2ter\n");
- gsm48_decode_sysinfo2ter(s,
- (struct gsm48_system_information_type_2ter *) sih,
- msgb_l3len(msg));
- return new_sysinfo();
- case GSM48_MT_RR_SYSINFO_3:
- if (!memcmp(sih, s->si3_msg, sizeof(s->si3_msg)))
- return 0;
- LOGP(DRR, LOGL_INFO, "New SYSTEM INFORMATION 3\n");
- gsm48_decode_sysinfo3(s,
- (struct gsm48_system_information_type_3 *) sih,
- msgb_l3len(msg));
- ccch_mode = (s->ccch_conf == 1) ? CCCH_MODE_COMBINED :
- CCCH_MODE_NON_COMBINED;
- LOGP(DRR, LOGL_INFO, "Changing CCCH_MODE to %d\n", ccch_mode);
- l1ctl_tx_ccch_mode_req(ms, ccch_mode);
- return new_sysinfo();
- case GSM48_MT_RR_SYSINFO_4:
- if (!memcmp(sih, s->si4_msg, sizeof(s->si4_msg)))
- return 0;
- LOGP(DRR, LOGL_INFO, "New SYSTEM INFORMATION 4\n");
- gsm48_decode_sysinfo4(s,
- (struct gsm48_system_information_type_4 *) sih,
- msgb_l3len(msg));
- return new_sysinfo();
- default:
- return -EINVAL;
- }
-}
-
-static int unit_data_ind(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct abis_rsl_rll_hdr *rllh = msgb_l2(msg);
- struct tlv_parsed tv;
- uint8_t ch_type, ch_subch, ch_ts;
-
- DEBUGP(DRSL, "RSLms UNIT DATA IND chan_nr=0x%02x link_id=0x%02x\n",
- rllh->chan_nr, rllh->link_id);
-
- rsl_tlv_parse(&tv, rllh->data, msgb_l2len(msg)-sizeof(*rllh));
- if (!TLVP_PRESENT(&tv, RSL_IE_L3_INFO)) {
- DEBUGP(DRSL, "UNIT_DATA_IND without L3 INFO ?!?\n");
- return -EIO;
- }
- msg->l3h = (uint8_t *) TLVP_VAL(&tv, RSL_IE_L3_INFO);
-
- if (state != SCAN_STATE_READ && state != SCAN_STATE_RACH) {
- return -EINVAL;
- }
-
- rsl_dec_chan_nr(rllh->chan_nr, &ch_type, &ch_subch, &ch_ts);
- switch (ch_type) {
- case RSL_CHAN_PCH_AGCH:
- return pch_agch(ms, msg);
- case RSL_CHAN_BCCH:
- return bcch(ms, msg);
-#if 0
- case RSL_CHAN_Bm_ACCHs:
- case RSL_CHAN_Lm_ACCHs:
- case RSL_CHAN_SDCCH4_ACCH:
- case RSL_CHAN_SDCCH8_ACCH:
- return rx_acch(ms, msg);
-#endif
- default:
- LOGP(DRSL, LOGL_NOTICE, "RSL with chan_nr 0x%02x unknown.\n",
- rllh->chan_nr);
- return -EINVAL;
- }
-}
-
-static int rcv_rll(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct abis_rsl_rll_hdr *rllh = msgb_l2(msg);
- int msg_type = rllh->c.msg_type;
-
- if (msg_type == RSL_MT_UNIT_DATA_IND) {
- unit_data_ind(ms, msg);
- } else
- LOGP(DRSL, LOGL_NOTICE, "RSLms message unhandled\n");
-
- msgb_free(msg);
-
- return 0;
-}
-
-int chan_conf(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct abis_rsl_cchan_hdr *ch = msgb_l2(msg);
- struct gsm48_req_ref *ref = (struct gsm48_req_ref *) (ch->data + 1);
-
- if (msgb_l2len(msg) < sizeof(*ch) + sizeof(*ref)) {
- LOGP(DRR, LOGL_ERROR, "CHAN_CNF too slort\n");
- return -EINVAL;
- }
-
- rach_ref.valid = 1;
- rach_ref.t1 = ref->t1;
- rach_ref.t2 = ref->t2;
- rach_ref.t3 = ref->t3_low | (ref->t3_high << 3);
-
- return 0;
-}
-
-static int rcv_cch(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct abis_rsl_cchan_hdr *ch = msgb_l2(msg);
- int msg_type = ch->c.msg_type;
- int rc;
-
- LOGP(DRSL, LOGL_INFO, "Received '%s' from layer1\n",
- rsl_msg_name(msg_type));
-
- if (state == SCAN_STATE_RACH && msg_type == RSL_MT_CHAN_CONF) {
- rc = chan_conf(ms, msg);
- msgb_free(msg);
- return rc;
- }
-
- LOGP(DRSL, LOGL_NOTICE, "RSLms message unhandled\n");
- msgb_free(msg);
- return 0;
-}
-
-static int rcv_rsl(struct msgb *msg, struct lapdm_entity *le, void *l3ctx)
-{
- struct osmocom_ms *ms = l3ctx;
- struct abis_rsl_common_hdr *rslh = msgb_l2(msg);
- int rc = 0;
-
- switch (rslh->msg_discr & 0xfe) {
- case ABIS_RSL_MDISC_RLL:
- rc = rcv_rll(ms, msg);
- break;
- case ABIS_RSL_MDISC_COM_CHAN:
- rc = rcv_cch(ms, msg);
- break;
- default:
- LOGP(DRSL, LOGL_NOTICE, "unknown RSLms msg_discr 0x%02x\n",
- rslh->msg_discr);
- msgb_free(msg);
- rc = -EINVAL;
- break;
- }
-
- return rc;
-}
-
-int scan_init(struct osmocom_ms *_ms)
-{
- ms = _ms;
- osmo_signal_register_handler(SS_L1CTL, &signal_cb, NULL);
- memset(&timer, 0, sizeof(timer));
- lapdm_channel_set_l3(&ms->lapdm_channel, &rcv_rsl, ms);
- g.enable = 1;
- osmo_gps_init();
- if (osmo_gps_open())
- g.enable = 0;
-
- if (!strcmp(logname, "-"))
- logfp = stdout;
- else
- logfp = fopen(logname, "a");
- if (!logfp) {
- fprintf(stderr, "Failed to open logfile '%s'\n", logname);
- scan_exit();
- return -errno;
- }
- LOGP(DSUM, LOGL_INFO, "Scanner initialized\n");
-
- return 0;
-}
-
-int scan_exit(void)
-{
- LOGP(DSUM, LOGL_INFO, "Scanner exit\n");
- if (g.valid)
- osmo_gps_close();
- if (logfp)
- fclose(logfp);
- osmo_signal_unregister_handler(SS_L1CTL, &signal_cb, NULL);
- stop_timer();
-
- return 0;
-}
diff --git a/Src/osmoconbb/src/host/layer23/src/misc/cell_log.c b/Src/osmoconbb/src/host/layer23/src/misc/cell_log.c
deleted file mode 100644
index 1a9c33c..0000000
--- a/Src/osmoconbb/src/host/layer23/src/misc/cell_log.c
+++ /dev/null
@@ -1,820 +0,0 @@
-/* Cell Scanning code for OsmocomBB */
-
-/* (C) 2010 by Andreas Eversberg <jolly@eversberg.eu>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdio.h>
-#include <stdint.h>
-#include <string.h>
-#include <stdlib.h>
-#include <time.h>
-#include <errno.h>
-
-#include <l1ctl_proto.h>
-
-#include <osmocom/core/logging.h>
-#include <osmocom/core/timer.h>
-#include <osmocom/core/signal.h>
-#include <osmocom/core/msgb.h>
-#include <osmocom/gsm/gsm_utils.h>
-#include <osmocom/gsm/protocol/gsm_04_08.h>
-#include <osmocom/gsm/rsl.h>
-
-#include <osmocom/bb/common/l1ctl.h>
-#include <osmocom/bb/common/osmocom_data.h>
-#include <osmocom/bb/common/lapdm.h>
-#include <osmocom/bb/common/logging.h>
-#include <osmocom/bb/common/networks.h>
-#include <osmocom/bb/common/gps.h>
-#include <osmocom/bb/misc/cell_log.h>
-#include "../../../gsmmap/geo.h"
-
-#define READ_WAIT 2, 0
-#define RACH_WAIT 0, 900000
-#define MIN_RXLEV -106
-#define MAX_DIST 2000
-
-enum {
- SCAN_STATE_PM,
- SCAN_STATE_SYNC,
- SCAN_STATE_READ,
- SCAN_STATE_RACH,
-};
-
-/* ranges of bands */
-static uint16_t band_range[][2] = {{0, 124}, {512, 885}, {955, 1023}, {0, 0}};
-
-#define INFO_FLG_PM 1
-#define INFO_FLG_SYNC 2
-#define INFO_FLG_SI1 4
-#define INFO_FLG_SI2 8
-#define INFO_FLG_SI2bis 16
-#define INFO_FLG_SI2ter 32
-#define INFO_FLG_SI3 64
-#define INFO_FLG_SI4 128
-
-static struct osmocom_ms *ms;
-static struct osmo_timer_list timer;
-
-static struct pm_info {
- uint16_t flags;
- int8_t rxlev;
-} pm[1024];
-
-static int started = 0;
-static int state;
-static int8_t min_rxlev = MIN_RXLEV;
-static int sync_count;
-static int pm_index, pm_gps_valid;
-static double pm_gps_x, pm_gps_y, pm_gps_z;
-static int arfcn;
-static int rach_count;
-static FILE *logfp = NULL;
-extern char *logname;
-extern int RACH_MAX;
-
-
-static struct gsm48_sysinfo sysinfo;
-
-static struct log_si {
- uint16_t flags;
- uint8_t bsic;
- int8_t rxlev;
- uint16_t mcc, mnc, lac, cellid;
- uint8_t ta;
- double latitude, longitude;
-} log_si;
-
-struct rach_ref {
- uint8_t valid;
- uint8_t cr;
- uint8_t t1, t2, t3;
-} rach_ref;
-
-#define LOGFILE(fmt, args...) \
- fprintf(logfp, fmt, ## args);
-#define LOGFLUSH() \
- fflush(logfp);
-
-static void start_sync(void);
-static void start_rach(void);
-static void start_pm(void);
-
-static void log_gps(void)
-{
- if (!g.enable || !g.valid)
- return;
- LOGFILE("position %.8f %.8f\n", g.longitude, g.latitude);
-}
-
-static void log_time(void)
-{
- time_t now;
-
- if (g.enable && g.valid)
- now = g.gmt;
- else
- time(&now);
- LOGFILE("time %lu\n", now);
-}
-
-static void log_frame(char *tag, uint8_t *data)
-{
- int i;
-
- LOGFILE("%s", tag);
- for (i = 0; i < 23; i++)
- LOGFILE(" %02x", *data++);
- LOGFILE("\n");
-}
-
-static void log_pm(void)
-{
- int count = 0, i;
-
- LOGFILE("[power]\n");
- log_time();
- log_gps();
- for (i = 0; i <= 1023; i++) {
- if ((pm[i].flags & INFO_FLG_PM)) {
- if (!count)
- LOGFILE("arfcn %d", i);
- LOGFILE(" %d", pm[i].rxlev);
- count++;
- if (count == 12) {
- LOGFILE("\n");
- count = 0;
- }
- } else {
- if (count) {
- LOGFILE("\n");
- count = 0;
- }
- }
- }
- if (count)
- LOGFILE("\n");
-
- LOGFILE("\n");
- LOGFLUSH();
-}
-
-static void log_sysinfo(void)
-{
- struct rx_meas_stat *meas = &ms->meas;
- struct gsm48_sysinfo *s = &sysinfo;
- int8_t rxlev;
- char ta_str[32] = "";
-
- if (log_si.ta != 0xff)
- sprintf(ta_str, " TA=%d", log_si.ta);
-
- LOGP(DSUM, LOGL_INFO, "Cell: ARFCN=%d MCC=%s MNC=%s (%s, %s)%s\n",
- arfcn, gsm_print_mcc(s->mcc), gsm_print_mnc(s->mnc),
- gsm_get_mcc(s->mcc), gsm_get_mnc(s->mcc, s->mnc), ta_str);
-
- LOGFILE("[sysinfo]\n");
- LOGFILE("arfcn %d\n", s->arfcn);
- log_time();
- log_gps();
- LOGFILE("bsic %d,%d\n", s->bsic >> 3, s->bsic & 7);
- rxlev = meas->rxlev / meas->frames - 110;
- LOGFILE("rxlev %d\n", rxlev);
- if (s->si1)
- log_frame("si1", s->si1_msg);
- if (s->si2)
- log_frame("si2", s->si2_msg);
- if (s->si2bis)
- log_frame("si2bis", s->si2b_msg);
- if (s->si2ter)
- log_frame("si2ter", s->si2t_msg);
- if (s->si3)
- log_frame("si3", s->si3_msg);
- if (s->si4)
- log_frame("si4", s->si4_msg);
- if (log_si.ta != 0xff)
- LOGFILE("ta %d\n", log_si.ta);
-
- LOGFILE("\n");
- LOGFLUSH();
-}
-
-static void timeout_cb(void *arg)
-{
- switch (state) {
- case SCAN_STATE_READ:
- LOGP(DRR, LOGL_INFO, "Timeout reading BCCH\n");
- start_sync();
- break;
- case SCAN_STATE_RACH:
- LOGP(DRR, LOGL_INFO, "Timeout on RACH\n");
- rach_count++;
- start_rach();
- break;
- }
-}
-
-static void stop_timer(void)
-{
- if (osmo_timer_pending(&timer))
- osmo_timer_del(&timer);
-}
-
-static void start_timer(int sec, int micro)
-{
- stop_timer();
- timer.cb = timeout_cb;
- timer.data = ms;
- osmo_timer_schedule(&timer, sec, micro);
-}
-
-static void start_rach(void)
-{
- struct gsm48_sysinfo *s = &sysinfo;
- uint8_t chan_req_val, chan_req_mask;
- struct msgb *nmsg;
- struct abis_rsl_cchan_hdr *ncch;
-
- if (rach_count == RACH_MAX) {
- log_sysinfo();
- start_sync();
- return;
- }
-
- state = SCAN_STATE_RACH;
-
- if (s->neci) {
- chan_req_mask = 0x0f;
- chan_req_val = 0x01;
- LOGP(DRR, LOGL_INFO, "CHANNEL REQUEST: %02x "
- "(OTHER with NECI)\n", chan_req_val);
- } else {
- chan_req_mask = 0x1f;
- chan_req_val = 0xe0;
- LOGP(DRR, LOGL_INFO, "CHANNEL REQUEST: %02x (OTHER no NECI)\n",
- chan_req_val);
- }
-
- rach_ref.valid = 0;
- rach_ref.cr = random();
- rach_ref.cr &= chan_req_mask;
- rach_ref.cr |= chan_req_val;
-
- nmsg = msgb_alloc_headroom(RSL_ALLOC_SIZE+RSL_ALLOC_HEADROOM,
- RSL_ALLOC_HEADROOM, "GSM 04.06 RSL");
- if (!nmsg)
- return;
- nmsg->l2h = nmsg->data;
- ncch = (struct abis_rsl_cchan_hdr *) msgb_put(nmsg, sizeof(*ncch)
- + 4 + 2 + 2);
- rsl_init_cchan_hdr(ncch, RSL_MT_CHAN_RQD);
- ncch->chan_nr = RSL_CHAN_RACH;
- ncch->data[0] = RSL_IE_REQ_REFERENCE;
- ncch->data[1] = rach_ref.cr;
- ncch->data[2] = (s->ccch_conf == 1) << 7;
- ncch->data[3] = 0;
- ncch->data[4] = RSL_IE_ACCESS_DELAY;
- ncch->data[5] = 0; /* no delay */
- ncch->data[6] = RSL_IE_MS_POWER;
- ncch->data[7] = 0; /* full power */
-
- start_timer(RACH_WAIT);
-
- lapdm_rslms_recvmsg(nmsg, &ms->lapdm_channel);
-}
-
-static void start_sync(void)
-{
- int rxlev = -128;
- int i, dist = 0;
- char dist_str[32] = "";
-
- arfcn = 0xffff;
- for (i = 0; i <= 1023; i++) {
- if ((pm[i].flags & INFO_FLG_PM)
- && !(pm[i].flags & INFO_FLG_SYNC)) {
- if (pm[i].rxlev > rxlev) {
- rxlev = pm[i].rxlev;
- arfcn = i;
- }
- }
- }
- /* if GPS becomes valid, like after exitting a tunnel */
- if (!pm_gps_valid && g.valid) {
- pm_gps_valid = 1;
- geo2space(&pm_gps_x, &pm_gps_y, &pm_gps_z, g.longitude,
- g.latitude);
- }
- if (pm_gps_valid && g.valid) {
- double x, y, z;
-
- geo2space(&x, &y, &z, g.longitude, g.latitude);
- dist = distinspace(pm_gps_x, pm_gps_y, pm_gps_z, x, y, z);
- sprintf(dist_str, " dist %d", (int)dist);
- }
- if (dist > MAX_DIST || arfcn == 0xffff || rxlev < min_rxlev) {
- memset(pm, 0, sizeof(pm));
- pm_index = 0;
- sync_count = 0;
- start_pm();
- return;
- }
- pm[arfcn].flags |= INFO_FLG_SYNC;
- LOGP(DSUM, LOGL_INFO, "Sync ARFCN %d (rxlev %d, %d syncs "
- "left)%s\n", arfcn, pm[arfcn].rxlev, sync_count--, dist_str);
- memset(&sysinfo, 0, sizeof(sysinfo));
- sysinfo.arfcn = arfcn;
- state = SCAN_STATE_SYNC;
- l1ctl_tx_reset_req(ms, L1CTL_RES_T_FULL);
- l1ctl_tx_fbsb_req(ms, arfcn, L1CTL_FBSB_F_FB01SB, 100, 0,
- CCCH_MODE_NONE);
-}
-
-static void start_pm(void)
-{
- uint16_t from, to;
-
- state = SCAN_STATE_PM;
- from = band_range[pm_index][0];
- to = band_range[pm_index][1];
-
- if (from == 0 && to == 0) {
- LOGP(DSUM, LOGL_INFO, "Measurement done\n");
- pm_gps_valid = g.enable && g.valid;
- if (pm_gps_valid)
- geo2space(&pm_gps_x, &pm_gps_y, &pm_gps_z,
- g.longitude, g.latitude);
- log_pm();
- start_sync();
- return;
- }
- LOGP(DSUM, LOGL_INFO, "Measure from %d to %d\n", from, to);
- l1ctl_tx_reset_req(ms, L1CTL_RES_T_FULL);
- l1ctl_tx_pm_req_range(ms, from, to);
-}
-
-static int signal_cb(unsigned int subsys, unsigned int signal,
- void *handler_data, void *signal_data)
-{
- struct osmobb_meas_res *mr;
- struct osmobb_fbsb_res *fr;
- uint16_t index;
-
- if (subsys != SS_L1CTL)
- return 0;
-
- switch (signal) {
- case S_L1CTL_PM_RES:
- mr = signal_data;
- index = mr->band_arfcn & 0x3ff;
- pm[index].flags |= INFO_FLG_PM;
- pm[index].rxlev = mr->rx_lev - 110;
- if (pm[index].rxlev >= min_rxlev)
- sync_count++;
-// printf("rxlev %d = %d (sync_count %d)\n", index, pm[index].rxlev, sync_count);
- break;
- case S_L1CTL_PM_DONE:
- pm_index++;
- start_pm();
- break;
- case S_L1CTL_FBSB_RESP:
- fr = signal_data;
- sysinfo.bsic = fr->bsic;
- state = SCAN_STATE_READ;
- memset(&ms->meas, 0, sizeof(ms->meas));
- memset(&log_si, 0, sizeof(log_si));
- log_si.flags |= INFO_FLG_SYNC;
- log_si.ta = 0xff; /* invalid */
- start_timer(READ_WAIT);
- LOGP(DRR, LOGL_INFO, "Synchronized, start reading\n");
- break;
- case S_L1CTL_FBSB_ERR:
- LOGP(DRR, LOGL_INFO, "Sync failed\n");
- start_sync();
- break;
- case S_L1CTL_RESET:
- if (started)
- break;
- started = 1;
- memset(pm, 0, sizeof(pm));
- pm_index = 0;
- sync_count = 0;
- start_pm();
- }
- return 0;
-}
-
-static int ta_result(uint8_t ta)
-{
- stop_timer();
-
- if (ta == 0xff)
- LOGP(DSUM, LOGL_INFO, "Got assignment reject\n");
- else {
- LOGP(DSUM, LOGL_DEBUG, "Got assignment TA = %d\n", ta);
- log_si.ta = ta;
- }
-
- log_sysinfo();
- start_sync();
-
- return 0;
-}
-
-/* match request reference agains request */
-static int match_ra(struct osmocom_ms *ms, struct gsm48_req_ref *ref)
-{
- uint8_t ia_t1, ia_t2, ia_t3;
-
- /* filter confirmed RACH requests only */
- if (rach_ref.valid && ref->ra == rach_ref.cr) {
- ia_t1 = ref->t1;
- ia_t2 = ref->t2;
- ia_t3 = (ref->t3_high << 3) | ref->t3_low;
- if (ia_t1 == rach_ref.t1 && ia_t2 == rach_ref.t2
- && ia_t3 == rach_ref.t3) {
- LOGP(DRR, LOGL_INFO, "request %02x matches "
- "(fn=%d,%d,%d)\n", ref->ra, ia_t1, ia_t2,
- ia_t3);
- return 1;
- } else
- LOGP(DRR, LOGL_INFO, "request %02x matches but not "
- "frame number (IMM.ASS fn=%d,%d,%d != RACH "
- "fn=%d,%d,%d)\n", ref->ra, ia_t1, ia_t2, ia_t3,
- rach_ref.t1, rach_ref.t2, rach_ref.t3);
- }
-
- return 0;
-}
-
-/* 9.1.18 IMMEDIATE ASSIGNMENT is received */
-static int imm_ass(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_imm_ass *ia = msgb_l3(msg);
-
- LOGP(DRR, LOGL_INFO, "IMMEDIATE ASSIGNMENT:\n");
-
- if (state != SCAN_STATE_RACH) {
- LOGP(DRR, LOGL_INFO, "Not for us, no request.\n");
- return 0;
- }
-
- /* request ref */
- if (match_ra(ms, &ia->req_ref)) {
- return ta_result(ia->timing_advance);
- }
- LOGP(DRR, LOGL_INFO, "Request, but not for us.\n");
-
- return 0;
-}
-
-/* 9.1.19 IMMEDIATE ASSIGNMENT EXTENDED is received */
-static int imm_ass_ext(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_imm_ass_ext *ia = msgb_l3(msg);
-
- LOGP(DRR, LOGL_INFO, "IMMEDIATE ASSIGNMENT EXTENDED:\n");
-
- if (state != SCAN_STATE_RACH) {
- LOGP(DRR, LOGL_INFO, "Not for us, no request.\n");
- return 0;
- }
-
- /* request ref 1 */
- if (match_ra(ms, &ia->req_ref1)) {
- return ta_result(ia->timing_advance1);
- }
- /* request ref 2 */
- if (match_ra(ms, &ia->req_ref2)) {
- return ta_result(ia->timing_advance2);
- }
- LOGP(DRR, LOGL_INFO, "Request, but not for us.\n");
-
- return 0;
-}
-
-/* 9.1.20 IMMEDIATE ASSIGNMENT REJECT is received */
-static int imm_ass_rej(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_imm_ass_rej *ia = msgb_l3(msg);
- int i;
- struct gsm48_req_ref *req_ref;
-
- LOGP(DRR, LOGL_INFO, "IMMEDIATE ASSIGNMENT REJECT:\n");
-
- if (state != SCAN_STATE_RACH) {
- LOGP(DRR, LOGL_INFO, "Not for us, no request.\n");
- return 0;
- }
-
- for (i = 0; i < 4; i++) {
- /* request reference */
- req_ref = (struct gsm48_req_ref *)
- (((uint8_t *)&ia->req_ref1) + i * 4);
- LOGP(DRR, LOGL_INFO, "IMMEDIATE ASSIGNMENT REJECT "
- "(ref 0x%02x)\n", req_ref->ra);
- if (match_ra(ms, req_ref)) {
- return ta_result(0xff);
- }
- }
-
- return 0;
-}
-
-/* receive CCCH at RR layer */
-static int pch_agch(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_system_information_type_header *sih = msgb_l3(msg);
-
- switch (sih->system_information) {
- case GSM48_MT_RR_PAG_REQ_1:
- case GSM48_MT_RR_PAG_REQ_2:
- case GSM48_MT_RR_PAG_REQ_3:
- return 0;
- case GSM48_MT_RR_IMM_ASS:
- return imm_ass(ms, msg);
- case GSM48_MT_RR_IMM_ASS_EXT:
- return imm_ass_ext(ms, msg);
- case GSM48_MT_RR_IMM_ASS_REJ:
- return imm_ass_rej(ms, msg);
- default:
- return -EINVAL;
- }
-}
-
-/* check if sysinfo is complete, change to RACH state */
-static int new_sysinfo(void)
-{
- struct gsm48_sysinfo *s = &sysinfo;
-
- /* restart timer */
- start_timer(READ_WAIT);
-
- /* mandatory */
- if (!s->si1 || !s->si2 || !s->si3 || !s->si4) {
- LOGP(DRR, LOGL_INFO, "not all mandatory SI received\n");
- return 0;
- }
-
- /* extended band */
- if (s->nb_ext_ind_si2 && !s->si2bis) {
- LOGP(DRR, LOGL_INFO, "extended ba, but si2bis not received\n");
- return 0;
- }
-
- /* 2ter */
- if (s->si2ter_ind && !s->si2ter) {
- LOGP(DRR, LOGL_INFO, "si2ter_ind, but si2ter not received\n");
- return 0;
- }
-
- LOGP(DRR, LOGL_INFO, "Sysinfo complete\n");
-
- stop_timer();
-
- rach_count = 0;
- start_rach();
-
- return 0;
-}
-
-/* receive BCCH at RR layer */
-static int bcch(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_sysinfo *s = &sysinfo;
- struct gsm48_system_information_type_header *sih = msgb_l3(msg);
- uint8_t ccch_mode;
-
- if (msgb_l3len(msg) != 23) {
- LOGP(DRR, LOGL_NOTICE, "Invalid BCCH message length\n");
- return -EINVAL;
- }
- switch (sih->system_information) {
- case GSM48_MT_RR_SYSINFO_1:
- if (!memcmp(sih, s->si1_msg, sizeof(s->si1_msg)))
- return 0;
- LOGP(DRR, LOGL_INFO, "New SYSTEM INFORMATION 1\n");
- gsm48_decode_sysinfo1(s,
- (struct gsm48_system_information_type_1 *) sih,
- msgb_l3len(msg));
- return new_sysinfo();
- case GSM48_MT_RR_SYSINFO_2:
- if (!memcmp(sih, s->si2_msg, sizeof(s->si2_msg)))
- return 0;
- LOGP(DRR, LOGL_INFO, "New SYSTEM INFORMATION 2\n");
- gsm48_decode_sysinfo2(s,
- (struct gsm48_system_information_type_2 *) sih,
- msgb_l3len(msg));
- return new_sysinfo();
- case GSM48_MT_RR_SYSINFO_2bis:
- if (!memcmp(sih, s->si2b_msg, sizeof(s->si2b_msg)))
- return 0;
- LOGP(DRR, LOGL_INFO, "New SYSTEM INFORMATION 2bis\n");
- gsm48_decode_sysinfo2bis(s,
- (struct gsm48_system_information_type_2bis *) sih,
- msgb_l3len(msg));
- return new_sysinfo();
- case GSM48_MT_RR_SYSINFO_2ter:
- if (!memcmp(sih, s->si2t_msg, sizeof(s->si2t_msg)))
- return 0;
- LOGP(DRR, LOGL_INFO, "New SYSTEM INFORMATION 2ter\n");
- gsm48_decode_sysinfo2ter(s,
- (struct gsm48_system_information_type_2ter *) sih,
- msgb_l3len(msg));
- return new_sysinfo();
- case GSM48_MT_RR_SYSINFO_3:
- if (!memcmp(sih, s->si3_msg, sizeof(s->si3_msg)))
- return 0;
- LOGP(DRR, LOGL_INFO, "New SYSTEM INFORMATION 3\n");
- gsm48_decode_sysinfo3(s,
- (struct gsm48_system_information_type_3 *) sih,
- msgb_l3len(msg));
- ccch_mode = (s->ccch_conf == 1) ? CCCH_MODE_COMBINED :
- CCCH_MODE_NON_COMBINED;
- LOGP(DRR, LOGL_INFO, "Changing CCCH_MODE to %d\n", ccch_mode);
- l1ctl_tx_ccch_mode_req(ms, ccch_mode);
- return new_sysinfo();
- case GSM48_MT_RR_SYSINFO_4:
- if (!memcmp(sih, s->si4_msg, sizeof(s->si4_msg)))
- return 0;
- LOGP(DRR, LOGL_INFO, "New SYSTEM INFORMATION 4\n");
- gsm48_decode_sysinfo4(s,
- (struct gsm48_system_information_type_4 *) sih,
- msgb_l3len(msg));
- return new_sysinfo();
- default:
- return -EINVAL;
- }
-}
-
-static int unit_data_ind(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct abis_rsl_rll_hdr *rllh = msgb_l2(msg);
- struct tlv_parsed tv;
- uint8_t ch_type, ch_subch, ch_ts;
-
- DEBUGP(DRSL, "RSLms UNIT DATA IND chan_nr=0x%02x link_id=0x%02x\n",
- rllh->chan_nr, rllh->link_id);
-
- rsl_tlv_parse(&tv, rllh->data, msgb_l2len(msg)-sizeof(*rllh));
- if (!TLVP_PRESENT(&tv, RSL_IE_L3_INFO)) {
- DEBUGP(DRSL, "UNIT_DATA_IND without L3 INFO ?!?\n");
- return -EIO;
- }
- msg->l3h = (uint8_t *) TLVP_VAL(&tv, RSL_IE_L3_INFO);
-
- if (state != SCAN_STATE_READ && state != SCAN_STATE_RACH) {
- return -EINVAL;
- }
-
- rsl_dec_chan_nr(rllh->chan_nr, &ch_type, &ch_subch, &ch_ts);
- switch (ch_type) {
- case RSL_CHAN_PCH_AGCH:
- return pch_agch(ms, msg);
- case RSL_CHAN_BCCH:
- return bcch(ms, msg);
-#if 0
- case RSL_CHAN_Bm_ACCHs:
- case RSL_CHAN_Lm_ACCHs:
- case RSL_CHAN_SDCCH4_ACCH:
- case RSL_CHAN_SDCCH8_ACCH:
- return rx_acch(ms, msg);
-#endif
- default:
- LOGP(DRSL, LOGL_NOTICE, "RSL with chan_nr 0x%02x unknown.\n",
- rllh->chan_nr);
- return -EINVAL;
- }
-}
-
-static int rcv_rll(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct abis_rsl_rll_hdr *rllh = msgb_l2(msg);
- int msg_type = rllh->c.msg_type;
-
- if (msg_type == RSL_MT_UNIT_DATA_IND) {
- unit_data_ind(ms, msg);
- } else
- LOGP(DRSL, LOGL_NOTICE, "RSLms message unhandled\n");
-
- msgb_free(msg);
-
- return 0;
-}
-
-int chan_conf(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct abis_rsl_cchan_hdr *ch = msgb_l2(msg);
- struct gsm48_req_ref *ref = (struct gsm48_req_ref *) (ch->data + 1);
-
- if (msgb_l2len(msg) < sizeof(*ch) + sizeof(*ref)) {
- LOGP(DRR, LOGL_ERROR, "CHAN_CNF too slort\n");
- return -EINVAL;
- }
-
- rach_ref.valid = 1;
- rach_ref.t1 = ref->t1;
- rach_ref.t2 = ref->t2;
- rach_ref.t3 = ref->t3_low | (ref->t3_high << 3);
-
- return 0;
-}
-
-static int rcv_cch(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct abis_rsl_cchan_hdr *ch = msgb_l2(msg);
- int msg_type = ch->c.msg_type;
- int rc;
-
- LOGP(DRSL, LOGL_INFO, "Received '%s' from layer1\n",
- rsl_msg_name(msg_type));
-
- if (state == SCAN_STATE_RACH && msg_type == RSL_MT_CHAN_CONF) {
- rc = chan_conf(ms, msg);
- msgb_free(msg);
- return rc;
- }
-
- LOGP(DRSL, LOGL_NOTICE, "RSLms message unhandled\n");
- msgb_free(msg);
- return 0;
-}
-
-static int rcv_rsl(struct msgb *msg, struct lapdm_entity *le, void *l3ctx)
-{
- struct osmocom_ms *ms = l3ctx;
- struct abis_rsl_common_hdr *rslh = msgb_l2(msg);
- int rc = 0;
-
- switch (rslh->msg_discr & 0xfe) {
- case ABIS_RSL_MDISC_RLL:
- rc = rcv_rll(ms, msg);
- break;
- case ABIS_RSL_MDISC_COM_CHAN:
- rc = rcv_cch(ms, msg);
- break;
- default:
- LOGP(DRSL, LOGL_NOTICE, "unknown RSLms msg_discr 0x%02x\n",
- rslh->msg_discr);
- msgb_free(msg);
- rc = -EINVAL;
- break;
- }
-
- return rc;
-}
-
-int scan_init(struct osmocom_ms *_ms)
-{
- ms = _ms;
- osmo_signal_register_handler(SS_L1CTL, &signal_cb, NULL);
- memset(&timer, 0, sizeof(timer));
- lapdm_channel_set_l3(&ms->lapdm_channel, &rcv_rsl, ms);
- g.enable = 1;
- osmo_gps_init();
- if (osmo_gps_open())
- g.enable = 0;
-
- if (!strcmp(logname, "-"))
- logfp = stdout;
- else
- logfp = fopen(logname, "a");
- if (!logfp) {
- fprintf(stderr, "Failed to open logfile '%s'\n", logname);
- scan_exit();
- return -errno;
- }
- LOGP(DSUM, LOGL_INFO, "Scanner initialized\n");
-
- return 0;
-}
-
-int scan_exit(void)
-{
- LOGP(DSUM, LOGL_INFO, "Scanner exit\n");
- if (g.valid)
- osmo_gps_close();
- if (logfp)
- fclose(logfp);
- osmo_signal_unregister_handler(SS_L1CTL, &signal_cb, NULL);
- stop_timer();
-
- return 0;
-}
diff --git a/Src/osmoconbb/src/host/layer23/src/misc/rslms.c b/Src/osmoconbb/src/host/layer23/src/misc/rslms.c
deleted file mode 100644
index 68956f9..0000000
--- a/Src/osmoconbb/src/host/layer23/src/misc/rslms.c
+++ /dev/null
@@ -1,151 +0,0 @@
-/* RSLms - GSM 08.58 like protocol between L2 and L3 of GSM Um interface */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <errno.h>
-#include <stdio.h>
-
-#include <osmocom/core/msgb.h>
-#include <osmocom/gsm/rsl.h>
-#include <osmocom/gsm/tlv.h>
-#include <osmocom/gsm/protocol/gsm_04_08.h>
-
-#include <osmocom/bb/common/logging.h>
-#include <osmocom/bb/common/lapdm.h>
-#include <osmocom/bb/misc/rslms.h>
-#include <osmocom/bb/misc/layer3.h>
-#include <osmocom/bb/common/osmocom_data.h>
-#include <osmocom/bb/common/l1ctl.h>
-
-/* Send a 'simple' RLL request to L2 */
-int rslms_tx_rll_req(struct osmocom_ms *ms, uint8_t msg_type,
- uint8_t chan_nr, uint8_t link_id)
-{
- struct msgb *msg;
-
- msg = rsl_rll_simple(msg_type, chan_nr, link_id, 1);
-
- return lapdm_rslms_recvmsg(msg, &ms->lapdm_channel);
-}
-
-/* Send a RLL request (including L3 info) to L2 */
-int rslms_tx_rll_req_l3(struct osmocom_ms *ms, uint8_t msg_type,
- uint8_t chan_nr, uint8_t link_id, struct msgb *msg)
-{
- rsl_rll_push_l3(msg, msg_type, chan_nr, link_id, 1);
-
- return lapdm_rslms_recvmsg(msg, &ms->lapdm_channel);
-}
-
-static int rslms_rx_udata_ind(struct msgb *msg, struct osmocom_ms *ms)
-{
- struct abis_rsl_rll_hdr *rllh = msgb_l2(msg);
- struct tlv_parsed tv;
- int rc = 0;
-
- DEBUGP(DRSL, "RSLms UNIT DATA IND chan_nr=0x%02x link_id=0x%02x\n",
- rllh->chan_nr, rllh->link_id);
-
- rsl_tlv_parse(&tv, rllh->data, msgb_l2len(msg)-sizeof(*rllh));
- if (!TLVP_PRESENT(&tv, RSL_IE_L3_INFO)) {
- DEBUGP(DRSL, "UNIT_DATA_IND without L3 INFO ?!?\n");
- return -EIO;
- }
- msg->l3h = (uint8_t *) TLVP_VAL(&tv, RSL_IE_L3_INFO);
-
- if (rllh->chan_nr == RSL_CHAN_PCH_AGCH) {
- rc = gsm48_rx_ccch(msg, ms);
- } else if (rllh->chan_nr == RSL_CHAN_BCCH) {
- rc = gsm48_rx_bcch(msg, ms);
- }
-
- return rc;
-}
-
-static int rslms_rx_rll(struct msgb *msg, struct osmocom_ms *ms)
-{
- struct abis_rsl_rll_hdr *rllh = msgb_l2(msg);
- int rc = 0;
-
- switch (rllh->c.msg_type) {
- case RSL_MT_DATA_IND:
- DEBUGP(DRSL, "RSLms DATA IND\n");
- /* FIXME: implement this */
- break;
- case RSL_MT_UNIT_DATA_IND:
- rc = rslms_rx_udata_ind(msg, ms);
- break;
- case RSL_MT_EST_IND:
- DEBUGP(DRSL, "RSLms EST IND\n");
- /* FIXME: implement this */
- break;
- case RSL_MT_EST_CONF:
- DEBUGP(DRSL, "RSLms EST CONF\n");
- /* FIXME: implement this */
- break;
- case RSL_MT_REL_CONF:
- DEBUGP(DRSL, "RSLms REL CONF\n");
- /* FIXME: implement this */
- break;
- case RSL_MT_ERROR_IND:
- DEBUGP(DRSL, "RSLms ERR IND\n");
- /* FIXME: implement this */
- break;
- default:
- LOGP(DRSL, LOGL_NOTICE, "unknown RSLms message type "
- "0x%02x\n", rllh->c.msg_type);
- rc = -EINVAL;
- break;
- }
- msgb_free(msg);
- return rc;
-}
-
-/* input function that L2 calls when sending messages up to L3 */
-static int layer3_from_layer2(struct msgb *msg, struct lapdm_entity *le, void *ctx)
-{
- struct osmocom_ms *ms = ctx;
- struct abis_rsl_common_hdr *rslh = msgb_l2(msg);
- int rc = 0;
-
- switch (rslh->msg_discr & 0xfe) {
- case ABIS_RSL_MDISC_RLL:
- rc = rslms_rx_rll(msg, ms);
- break;
- default:
- /* FIXME: implement this */
- LOGP(DRSL, LOGL_NOTICE, "unknown RSLms msg_discr 0x%02x\n",
- rslh->msg_discr);
- msgb_free(msg);
- rc = -EINVAL;
- break;
- }
-
- return rc;
-}
-
-int layer3_init(struct osmocom_ms *ms)
-{
- lapdm_channel_set_l3(&ms->lapdm_channel, &layer3_from_layer2, ms);
-
- return 0;
-}
diff --git a/Src/osmoconbb/src/host/layer23/src/mobile/Makefile.am b/Src/osmoconbb/src/host/layer23/src/mobile/Makefile.am
deleted file mode 100644
index e5cf76a..0000000
--- a/Src/osmoconbb/src/host/layer23/src/mobile/Makefile.am
+++ /dev/null
@@ -1,15 +0,0 @@
-INCLUDES = $(all_includes) -I$(top_srcdir)/include
-AM_CFLAGS = -Wall $(LIBOSMOCORE_CFLAGS) $(LIBOSMOGSM_CFLAGS)
-LDADD = ../common/liblayer23.a $(LIBOSMOCORE_LIBS) $(LIBOSMOVTY_LIBS) $(LIBOSMOGSM_LIBS) $(LIBOSMOCODEC_LIBS)
-
-noinst_LIBRARIES = libmobile.a
-libmobile_a_SOURCES = gsm322.c gsm48_cc.c gsm48_mm.c gsm48_rr.c \
- mnccms.c settings.c subscriber.c support.c \
- transaction.c vty_interface.c voice.c
-
-bin_PROGRAMS = mobile
-
-mobile_SOURCES = main.c app_mobile.c
-mobile_LDADD = libmobile.a $(LDADD)
-
-
diff --git a/Src/osmoconbb/src/host/layer23/src/mobile/app_mobile.c b/Src/osmoconbb/src/host/layer23/src/mobile/app_mobile.c
deleted file mode 100644
index 8b3b552..0000000
--- a/Src/osmoconbb/src/host/layer23/src/mobile/app_mobile.c
+++ /dev/null
@@ -1,404 +0,0 @@
-/* "Application" code of the layer2/3 stack */
-
-/* (C) 2010 by Holger Hans Peter Freyther
- * (C) 2010 by Harald Welte <laforge@gnumonks.org>
- * (C) 2010 by Andreas Eversberg <jolly@eversberg.eu>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <errno.h>
-#include <signal.h>
-
-#include <osmocom/bb/common/osmocom_data.h>
-#include <osmocom/bb/common/l1l2_interface.h>
-#include <osmocom/bb/common/l1ctl.h>
-#include <osmocom/bb/common/lapdm.h>
-#include <osmocom/bb/common/logging.h>
-#include <osmocom/bb/common/gps.h>
-#include <osmocom/bb/mobile/gsm48_rr.h>
-#include <osmocom/bb/mobile/vty.h>
-#include <osmocom/bb/mobile/app_mobile.h>
-#include <osmocom/bb/mobile/mncc.h>
-#include <osmocom/bb/mobile/voice.h>
-#include <osmocom/vty/telnet_interface.h>
-
-#include <osmocom/core/msgb.h>
-#include <osmocom/core/talloc.h>
-#include <osmocom/core/select.h>
-#include <osmocom/core/signal.h>
-
-#include <l1ctl_proto.h>
-
-extern void *l23_ctx;
-extern struct llist_head ms_list;
-extern int vty_reading;
-
-int mncc_recv_mobile(struct osmocom_ms *ms, int msg_type, void *arg);
-int mncc_recv_dummy(struct osmocom_ms *ms, int msg_type, void *arg);
-int (*mncc_recv_app)(struct osmocom_ms *ms, int, void *);
-static int quit;
-
-/* handle ms instance */
-int mobile_work(struct osmocom_ms *ms)
-{
- int work = 0, w;
-
- do {
- w = 0;
- w |= gsm48_rsl_dequeue(ms);
- w |= gsm48_rr_dequeue(ms);
- w |= gsm48_mmxx_dequeue(ms);
- w |= gsm48_mmr_dequeue(ms);
- w |= gsm48_mmevent_dequeue(ms);
- w |= gsm322_plmn_dequeue(ms);
- w |= gsm322_cs_dequeue(ms);
- w |= gsm_sim_job_dequeue(ms);
- w |= mncc_dequeue(ms);
- if (w)
- work = 1;
- } while (w);
- return work;
-}
-
-/* run ms instance, if layer1 is available */
-int mobile_signal_cb(unsigned int subsys, unsigned int signal,
- void *handler_data, void *signal_data)
-{
- struct osmocom_ms *ms;
- struct gsm_settings *set;
- struct msgb *nmsg;
-
- if (subsys != SS_L1CTL)
- return 0;
-
- switch (signal) {
- case S_L1CTL_RESET:
- ms = signal_data;
- set = &ms->settings;
-
- if (ms->started)
- break;
-
- /* insert test card, if enabled */
- switch (set->sim_type) {
- case GSM_SIM_TYPE_READER:
- /* trigger sim card reader process */
- gsm_subscr_simcard(ms);
- break;
- case GSM_SIM_TYPE_TEST:
- gsm_subscr_testcard(ms, set->test_rplmn_mcc,
- set->test_rplmn_mnc, set->test_lac,
- set->test_tmsi);
- break;
- default:
- /* no SIM, trigger PLMN selection process */
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_SWITCH_ON);
- if (!nmsg)
- return -ENOMEM;
- gsm322_plmn_sendmsg(ms, nmsg);
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_SWITCH_ON);
- if (!nmsg)
- return -ENOMEM;
- gsm322_cs_sendmsg(ms, nmsg);
- }
-
- ms->started = 1;
- }
- return 0;
-}
-
-/* power-off ms instance */
-int mobile_exit(struct osmocom_ms *ms, int force)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
-
- if (!force && ms->started) {
- struct msgb *nmsg;
-
- ms->shutdown = 1; /* going down */
- nmsg = gsm48_mmevent_msgb_alloc(GSM48_MM_EVENT_IMSI_DETACH);
- if (!nmsg)
- return -ENOMEM;
- gsm48_mmevent_msg(mm->ms, nmsg);
-
- return -EBUSY;
- }
-
- gsm322_exit(ms);
- gsm48_mm_exit(ms);
- gsm48_rr_exit(ms);
- gsm_subscr_exit(ms);
- gsm48_cc_exit(ms);
- gsm_sim_exit(ms);
- lapdm_channel_exit(&ms->lapdm_channel);
-
- ms->shutdown = 2; /* being down */
- vty_notify(ms, NULL);
- vty_notify(ms, "Power off!\n");
- printf("Power off! (MS %s)\n", ms->name);
-
- return 0;
-}
-
-/* power-on ms instance */
-int mobile_init(struct osmocom_ms *ms)
-{
- int rc;
-
- gsm_settings_arfcn(ms);
-
- lapdm_channel_init(&ms->lapdm_channel, LAPDM_MODE_MS);
- lapdm_channel_set_l1(&ms->lapdm_channel, l1ctl_ph_prim_cb, ms);
-
- gsm_sim_init(ms);
- gsm48_cc_init(ms);
- gsm_voice_init(ms);
- gsm_subscr_init(ms);
- gsm48_rr_init(ms);
- gsm48_mm_init(ms);
- INIT_LLIST_HEAD(&ms->trans_list);
- gsm322_init(ms);
-
- rc = layer2_open(ms, ms->settings.layer2_socket_path);
- if (rc < 0) {
- fprintf(stderr, "Failed during layer2_open()\n");
- ms->l2_wq.bfd.fd = -1;
- mobile_exit(ms, 1);
- return rc;
- }
-
-#if 0
- rc = sap_open(ms, ms->settings.sap_socket_path);
- if (rc < 0) {
- fprintf(stderr, "Failed during sap_open(), no SIM reader\n");
- ms->sap_wq.bfd.fd = -1;
- mobile_exit(ms, 1);
- return rc;
- }
-#endif
-
- gsm_random_imei(&ms->settings);
-
- ms->shutdown = 0;
- ms->started = 0;
-
- if (!strcmp(ms->settings.imei, "000000000000000")) {
- printf("***\nWarning: Mobile '%s' has default IMEI: %s\n",
- ms->name, ms->settings.imei);
- printf("This could relate your identitiy to other users with "
- "default IMEI.\n***\n");
- }
-
- l1ctl_tx_reset_req(ms, L1CTL_RES_T_FULL);
- printf("Mobile '%s' initialized, please start phone now!\n", ms->name);
- return 0;
-}
-
-/* create ms instance */
-struct osmocom_ms *mobile_new(char *name)
-{
- static struct osmocom_ms *ms;
-
- ms = talloc_zero(l23_ctx, struct osmocom_ms);
- if (!ms) {
- fprintf(stderr, "Failed to allocate MS\n");
- exit(1);
- }
- llist_add_tail(&ms->entity, &ms_list);
-
- strcpy(ms->name, name);
-
- ms->l2_wq.bfd.fd = -1;
- ms->sap_wq.bfd.fd = -1;
-
- gsm_support_init(ms);
- gsm_settings_init(ms);
-
- ms->shutdown = 2; /* being down */
-
- if (mncc_recv_app) {
- struct msgb *msg;
-
- msg = msgb_alloc(sizeof(struct gsm_mncc), "MNCC");
- if (msg) {
- struct gsm_mncc *mncc = (struct gsm_mncc *)msg->data;
-
- mncc->msg_type = MS_NEW;
- mncc_recv_app(ms, mncc->msg_type, mncc);
- }
- ms->mncc_entity.mncc_recv = mncc_recv_app;
- } else if (ms->settings.ch_cap == GSM_CAP_SDCCH)
- ms->mncc_entity.mncc_recv = mncc_recv_dummy;
- else
- ms->mncc_entity.mncc_recv = mncc_recv_mobile;
-
-
- return ms;
-}
-
-/* destroy ms instance */
-int mobile_delete(struct osmocom_ms *ms, int force)
-{
- int rc;
-
- ms->deleting = 1;
-
- if (ms->shutdown == 0 || (ms->shutdown == 1 && force)) {
- rc = mobile_exit(ms, force);
- if (rc < 0)
- return rc;
- }
-
- if (mncc_recv_app) {
- struct msgb *msg;
-
- msg = msgb_alloc(sizeof(struct gsm_mncc), "MNCC");
- if (msg) {
- struct gsm_mncc *mncc = (struct gsm_mncc *)msg->data;
-
- mncc->msg_type = MS_DELETE;
- mncc_recv_app(ms, mncc->msg_type, mncc);
- }
- }
-
- return 0;
-}
-
-/* handle global shutdown */
-int global_signal_cb(unsigned int subsys, unsigned int signal,
- void *handler_data, void *signal_data)
-{
- struct osmocom_ms *ms, *ms2;
-
- if (subsys != SS_GLOBAL)
- return 0;
-
- switch (signal) {
- case S_GLOBAL_SHUTDOWN:
- llist_for_each_entry_safe(ms, ms2, &ms_list, entity)
- mobile_delete(ms, quit);
-
- /* if second signal is received, force to exit */
- quit = 1;
- break;
- }
- return 0;
-}
-
-/* global work handler */
-int l23_app_work(int *_quit)
-{
- struct osmocom_ms *ms, *ms2;
- int work = 0;
-
- llist_for_each_entry_safe(ms, ms2, &ms_list, entity) {
- if (ms->shutdown != 2)
- work |= mobile_work(ms);
- if (ms->shutdown == 2) {
- if (ms->l2_wq.bfd.fd > -1) {
- layer2_close(ms);
- ms->l2_wq.bfd.fd = -1;
- }
-
- if (ms->sap_wq.bfd.fd > -1) {
- sap_close(ms);
- ms->sap_wq.bfd.fd = -1;
- }
-
- if (ms->deleting) {
- gsm_settings_exit(ms);
- llist_del(&ms->entity);
- talloc_free(ms);
- work = 1;
- }
- }
- }
-
- /* return, if a shutdown was scheduled (quit = 1) */
- *_quit = quit;
- return work;
-}
-
-/* global exit */
-int l23_app_exit(void)
-{
- osmo_signal_unregister_handler(SS_L1CTL, &gsm322_l1_signal, NULL);
- osmo_signal_unregister_handler(SS_L1CTL, &mobile_signal_cb, NULL);
- osmo_signal_unregister_handler(SS_GLOBAL, &global_signal_cb, NULL);
-
- osmo_gps_close();
-
- return 0;
-}
-
-static struct vty_app_info vty_info = {
- .name = "OsmocomBB",
- .version = PACKAGE_VERSION,
- .go_parent_cb = ms_vty_go_parent,
-};
-
-/* global init */
-int l23_app_init(int (*mncc_recv)(struct osmocom_ms *ms, int, void *),
- const char *config_file, uint16_t vty_port)
-{
- struct telnet_connection dummy_conn;
- int rc = 0;
-
- mncc_recv_app = mncc_recv;
-
- osmo_gps_init();
-
- vty_init(&vty_info);
- ms_vty_init();
- dummy_conn.priv = NULL;
- vty_reading = 1;
- if (config_file != NULL) {
- rc = vty_read_config_file(config_file, &dummy_conn);
- if (rc < 0) {
- fprintf(stderr, "Failed to parse the config file:"
- " '%s'\n", config_file);
- fprintf(stderr, "Please check or create config file"
- " using: 'touch %s'\n", config_file);
- return rc;
- }
- }
- vty_reading = 0;
- telnet_init(l23_ctx, NULL, vty_port);
- if (rc < 0)
- return rc;
- printf("VTY available on port %u.\n", vty_port);
-
- osmo_signal_register_handler(SS_GLOBAL, &global_signal_cb, NULL);
- osmo_signal_register_handler(SS_L1CTL, &mobile_signal_cb, NULL);
- osmo_signal_register_handler(SS_L1CTL, &gsm322_l1_signal, NULL);
-
- if (llist_empty(&ms_list)) {
- struct osmocom_ms *ms;
-
- printf("No Mobile Station defined, creating: MS '1'\n");
- ms = mobile_new("1");
- if (ms)
- mobile_init(ms);
- }
-
- quit = 0;
-
- return 0;
-}
-
diff --git a/Src/osmoconbb/src/host/layer23/src/mobile/gsm322.c b/Src/osmoconbb/src/host/layer23/src/mobile/gsm322.c
deleted file mode 100644
index 9384743..0000000
--- a/Src/osmoconbb/src/host/layer23/src/mobile/gsm322.c
+++ /dev/null
@@ -1,5168 +0,0 @@
-/*
- * (C) 2010 by Andreas Eversberg <jolly@eversberg.eu>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <errno.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <limits.h>
-#include <time.h>
-
-#include <osmocom/core/msgb.h>
-#include <osmocom/core/talloc.h>
-#include <osmocom/core/utils.h>
-#include <osmocom/gsm/gsm48.h>
-#include <osmocom/gsm/gsm_utils.h>
-#include <osmocom/core/signal.h>
-
-#include <osmocom/bb/common/logging.h>
-#include <osmocom/bb/common/l1ctl.h>
-#include <osmocom/bb/common/osmocom_data.h>
-#include <osmocom/bb/common/networks.h>
-#include <osmocom/bb/mobile/vty.h>
-#include <osmocom/bb/mobile/app_mobile.h>
-
-#include <l1ctl_proto.h>
-
-const char *ba_version = "osmocom BA V1\n";
-
-extern void *l23_ctx;
-
-static void gsm322_cs_timeout(void *arg);
-static int gsm322_cs_select(struct osmocom_ms *ms, int index, uint16_t mcc,
- uint16_t mnc, int any);
-static int gsm322_m_switch_on(struct osmocom_ms *ms, struct msgb *msg);
-static void gsm322_any_timeout(void *arg);
-static int gsm322_nb_scan(struct osmocom_ms *ms);
-static int gsm322_nb_synced(struct gsm322_cellsel *cs, int yes);
-static int gsm322_nb_read(struct gsm322_cellsel *cs, int yes);
-static int gsm322_c_camp_any_cell(struct osmocom_ms *ms, struct msgb *msg);
-static int gsm322_nb_start(struct osmocom_ms *ms, int synced);
-static void gsm322_cs_loss(void *arg);
-static int gsm322_nb_meas_ind(struct osmocom_ms *ms, uint16_t arfcn,
- uint8_t rx_lev);
-
-#define SYNC_RETRIES 1
-#define SYNC_RETRIES_SERVING 2
-
-/* time for trying to sync and read BCCH of neighbour cell again
- * NOTE: This value is not defined by TS, i think. */
-#define GSM58_TRY_AGAIN 30
-
-/* time for reading BCCH of neighbour cell again */
-#define GSM58_READ_AGAIN 300
-
-/* number of neighbour cells to monitor */
-#define GSM58_NB_NUMBER 6
-
-/* Timeout for reading BCCH of neighbour cells */
-#define GSM322_NB_TIMEOUT 2
-
-/* number of neighbour cells to measure for average */
-#define RLA_C_NUM 4
-
-/* wait before doing neighbour cell reselecton due to a better cell again */
-#define GSM58_RESEL_THRESHOLD 15
-
-//#define TEST_INCLUDE_SERV
-
-/*
- * notes
- */
-
-/* Cell selection process
- *
- * The process depends on states and events (finites state machine).
- *
- * During states of cell selection or cell re-selection, the search for a cell
- * is performed in two steps:
- *
- * 1. Measurement of received level of all relevant frequencies (rx-lev)
- *
- * 2. Receive system information messages of all relevant frequencies
- *
- * During this process, the results are stored in a list of all frequencies.
- * This list is checked whenever a cell is selected. It depends on the results
- * if the cell is 'suitable' and 'allowable' to 'camp' on.
- *
- * This list is also used to generate a list of available networks.
- *
- * The states are:
- *
- * - cs->list[0..(1023+299)].xxx for each cell, where
- * - flags and rxlev are used to store outcome of cell scanning process
- * - sysinfo pointing to sysinfo memory, allocated temporarily
- * - cs->selected and cs->sel_* states of the current / last selected cell.
- *
- *
- * There are special states: GSM322_HPLMN_SEARCH, GSM322_PLMN_SEARCH
- * and GSM322_ANY_SEARCH:
- *
- * GSM322_HPLMN_SEARCH is used to find a HPLMN. This is triggered
- * by automatic cell selection.
- *
- * GSM322_PLMN_SEARCH is triggered when network search process is started.
- * It will do a complete search. Also it is used before selecting PLMN from list.
- *
- * GSM322_ANY_SEARCH is similar to GSM322_PLMN_SEARCH, but it is done while
- * camping on any cell. If there is a suitable and allowable cell found,
- * it is indicated to the PLMN search process.
- *
- */
-
-/* PLMN selection process
- *
- * The PLMN (Public Land Mobile Network = Operator's Network) has two different
- * search processes:
- *
- * 1. Automatic search
- *
- * 2. Manual search
- *
- * The process depends on states and events (finites state machine).
- *
- */
-
-/* File format of BA list:
- *
- * uint16_t mcc
- * uint16_t mcc
- * uint8_t freq[128+38];
- * where frequency 0 is bit 0 of first byte
- *
- * If not end-of-file, the next BA list is stored.
- */
-
-/* List of lists:
- *
- * * subscr->plmn_list
- *
- * The "PLMN Selector list" stores prefered networks to select during PLMN
- * search process. This list is also stored in the SIM.
- *
- * * subscr->plmn_na
- *
- * The "forbidden PLMNs" list stores all networks that rejected us. The stored
- * network will not be used when searching PLMN automatically. This list is
- * also stored din the SIM.
- *
- * * plmn->forbidden_la
- *
- * The "forbidden LAs for roaming" list stores all location areas where roaming
- * was not allowed.
- *
- * * cs->list[1024+299]
- *
- * This list stores measurements and cell informations during cell selection
- * process. It can be used to speed up repeated cell selection.
- *
- * * cs->ba_list
- *
- * This list stores a map of frequencies used for a PLMN. If this lists exists
- * for a PLMN, it helps to speedup cell scan process.
- *
- * * plmn->sorted_plmn
- *
- * This list is generated whenever a PLMN search is started and a list of PLMNs
- * is required. It consists of home PLMN, PLMN Selector list, and PLMNs found
- * during scan process.
- *
- *
- * Cell re-selection process
- *
- * The cell re-selection process takes place when a "serving cell" is selected.
- * The neighbour cells to be monitored for re-selection are given via SI2* of
- * the serving cell.
- *
- * Therefore a list of neighbour cells is created or updated, when the cell
- * allocation is received or changed by the network.
- *
- * All neighbour cells are monitored, but only up to 6 of the strongest cells
- * are synced to, in order to read the BCCH data. A timer is used to re-read
- * the BCCH data after 5 minutes. This timer is also used if sync or read
- * fails.
- *
- * The C1 and C2 criterion is calculated for the currently monitored neigbour
- * cells. During this process, a better neighbour cell will trigger cell
- * re-selection.
- *
- * The cell re-selection is similar to the cell selection process, except that
- * only neighbour cells are searched in order of their quality criterion C2.
- *
- * During camping, and monitoring neighbour cells, it is possible to enter
- * dedicated mode at any time.
- *
- */
-
-/*
- * event messages
- */
-
-static const struct value_string gsm322_event_names[] = {
- { GSM322_EVENT_SWITCH_ON, "EVENT_SWITCH_ON" },
- { GSM322_EVENT_SWITCH_OFF, "EVENT_SWITCH_OFF" },
- { GSM322_EVENT_SIM_INSERT, "EVENT_SIM_INSERT" },
- { GSM322_EVENT_SIM_REMOVE, "EVENT_SIM_REMOVE" },
- { GSM322_EVENT_REG_FAILED, "EVENT_REG_FAILED" },
- { GSM322_EVENT_ROAMING_NA, "EVENT_ROAMING_NA" },
- { GSM322_EVENT_INVALID_SIM, "EVENT_INVALID_SIM" },
- { GSM322_EVENT_REG_SUCCESS, "EVENT_REG_SUCCESS" },
- { GSM322_EVENT_NEW_PLMN, "EVENT_NEW_PLMN" },
- { GSM322_EVENT_ON_PLMN, "EVENT_ON_PLMN" },
- { GSM322_EVENT_PLMN_SEARCH_START,"EVENT_PLMN_SEARCH_START" },
- { GSM322_EVENT_PLMN_SEARCH_END, "EVENT_PLMN_SEARCH_END" },
- { GSM322_EVENT_USER_RESEL, "EVENT_USER_RESEL" },
- { GSM322_EVENT_PLMN_AVAIL, "EVENT_PLMN_AVAIL" },
- { GSM322_EVENT_CHOOSE_PLMN, "EVENT_CHOOSE_PLMN" },
- { GSM322_EVENT_SEL_MANUAL, "EVENT_SEL_MANUAL" },
- { GSM322_EVENT_SEL_AUTO, "EVENT_SEL_AUTO" },
- { GSM322_EVENT_CELL_FOUND, "EVENT_CELL_FOUND" },
- { GSM322_EVENT_NO_CELL_FOUND, "EVENT_NO_CELL_FOUND" },
- { GSM322_EVENT_LEAVE_IDLE, "EVENT_LEAVE_IDLE" },
- { GSM322_EVENT_RET_IDLE, "EVENT_RET_IDLE" },
- { GSM322_EVENT_CELL_RESEL, "EVENT_CELL_RESEL" },
- { GSM322_EVENT_SYSINFO, "EVENT_SYSINFO" },
- { GSM322_EVENT_HPLMN_SEARCH, "EVENT_HPLMN_SEARCH" },
- { 0, NULL }
-};
-
-const char *get_event_name(int value)
-{
- return get_value_string(gsm322_event_names, value);
-}
-
-
-/* allocate a 03.22 event message */
-struct msgb *gsm322_msgb_alloc(int msg_type)
-{
- struct msgb *msg;
- struct gsm322_msg *gm;
-
- msg = msgb_alloc_headroom(sizeof(*gm), 0, "GSM 03.22 event");
- if (!msg)
- return NULL;
-
- gm = (struct gsm322_msg *)msgb_put(msg, sizeof(*gm));
- gm->msg_type = msg_type;
-
- return msg;
-}
-
-/* queue PLMN selection message */
-int gsm322_plmn_sendmsg(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm322_plmn *plmn = &ms->plmn;
-
- msgb_enqueue(&plmn->event_queue, msg);
-
- return 0;
-}
-
-/* queue cell selection message */
-int gsm322_cs_sendmsg(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm322_cellsel *cs = &ms->cellsel;
-
- msgb_enqueue(&cs->event_queue, msg);
-
- return 0;
-}
-
-/*
- * support
- */
-
-uint16_t index2arfcn(int index)
-{
- if (index >= 1024)
- return (index-1024+512) | ARFCN_PCS;
- return index;
-}
-
-int arfcn2index(uint16_t arfcn)
-{
- if ((arfcn & ARFCN_PCS) && arfcn >= 512 && arfcn <= 810)
- return (arfcn & 1023)-512+1024;
- return arfcn & 1023;
-}
-
-static char *bargraph(int value, int min, int max)
-{
- static char bar[128];
-
- /* shift value to the range of min..max */
- if (value < min)
- value = 0;
- else if (value > max)
- value = max - min;
- else
- value -= min;
-
- memset(bar, '=', value);
- bar[value] = '\0';
-
- return bar;
-}
-
-static int class_of_band(struct osmocom_ms *ms, int band)
-{
- struct gsm_settings *set = &ms->settings;
-
- switch (band) {
- case GSM_BAND_450:
- case GSM_BAND_480:
- return set->class_400;
- break;
- case GSM_BAND_850:
- return set->class_850;
- break;
- case GSM_BAND_1800:
- return set->class_dcs;
- break;
- case GSM_BAND_1900:
- return set->class_pcs;
- break;
- }
-
- return set->class_900;
-}
-
-char *gsm_print_rxlev(uint8_t rxlev)
-{
- static char string[5];
- if (rxlev == 0)
- return "<=-110";
- if (rxlev >= 63)
- return ">=-47";
- sprintf(string, "-%d", 110 - rxlev);
- return string;
-}
-
-/* GSM 05.08 6.4 (special class 3 DCS 1800 MS case is omitted ) */
-static int16_t calculate_c1(int log, int8_t rla_c, int8_t rxlev_acc_min,
- int8_t ms_txpwr_max_cch, int8_t p)
-{
- int16_t a, b, c1, max_b_0;
-
- a = rla_c - rxlev_acc_min;
- b = ms_txpwr_max_cch - p;
-
- max_b_0 = (b > 0) ? b : 0;
-
- c1 = a - max_b_0;
-
- LOGP(log, LOGL_INFO, "A (RLA_C (%d) - RXLEV_ACC_MIN (%d)) = %d\n",
- rla_c, rxlev_acc_min, a);
- LOGP(log, LOGL_INFO, "B (MS_TXPWR_MAX_CCH (%d) - p (%d)) = %d\n",
- ms_txpwr_max_cch, p, b);
- LOGP(log, LOGL_INFO, "C1 (A - MAX(B,0)) = %d\n", c1);
-
- return c1;
-}
-
-static int16_t calculate_c2(int16_t c1, int serving, int last_serving,
- int cell_resel_param_ind, uint8_t cell_resel_off, int t,
- uint8_t penalty_time, uint8_t temp_offset) {
- int16_t c2;
-
- c2 = c1;
-
- /* no reselect parameters. same process for serving and neighbour cells */
- if (!cell_resel_param_ind) {
- LOGP(DNB, LOGL_INFO, "C2 = C1 = %d (because no extended "
- "re-selection parameters available)\n", c2);
- return c2;
- }
-
- /* special case, if PENALTY_TIME is '11111' */
- if (penalty_time == 31) {
- c2 -= (cell_resel_off << 1);
- LOGP(DNB, LOGL_INFO, "C2 = C1 - CELL_RESELECT_OFFSET (%d) = %d "
- "(special case)\n", cell_resel_off, c2);
- return c2;
- }
-
- c2 += (cell_resel_off << 1);
-
- /* parameters for serving cell */
- if (serving) {
- LOGP(DNB, LOGL_INFO, "C2 = C1 + CELL_RESELECT_OFFSET (%d) = %d "
- "(serving cell)\n", cell_resel_off, c2);
- return c2;
- }
-
- /* the cell is the last serving cell */
- if (last_serving) {
- LOGP(DNB, LOGL_INFO, "C2 = C1 + CELL_RESELECT_OFFSET (%d) = %d "
- "(last serving cell)\n", cell_resel_off, c2);
- return c2;
- }
-
- /* penatly time reached */
- if (t >= (penalty_time + 1) * 20) {
- LOGP(DNB, LOGL_INFO, "C2 = C1 + CELL_RESELECT_OFFSET (%d) = %d "
- "(PENALTY_TIME reached)\n", cell_resel_off, c2);
- return c2;
- }
-
- /* penalty time not reached, substract temporary offset */
- if (temp_offset < 7)
- c2 -= temp_offset * 10;
- else
- c2 = -1000; /* infinite */
- LOGP(DNB, LOGL_INFO, "C2 = C1 + CELL_RESELECT_OFFSET (%d) = %d "
- "(PENALTY_TIME not reached, %d seconds left)\n", cell_resel_off,
- c2, (penalty_time + 1) * 20 - t);
- return c2;
-}
-
-static int gsm322_sync_to_cell(struct gsm322_cellsel *cs,
- struct gsm322_neighbour * neighbour, int camping)
-{
- struct osmocom_ms *ms = cs->ms;
- struct gsm48_sysinfo *s = cs->si;
- struct rx_meas_stat *meas = &ms->meas;
-
- if (cs->sync_pending) {
- LOGP(DCS, LOGL_INFO, "Sync to ARFCN=%s, but there is a sync "
- "already pending\n",gsm_print_arfcn(cs->arfcn));
- return 0;
- }
-
- cs->ccch_state = GSM322_CCCH_ST_INIT;
- if (s && s->si3) {
- if (s->ccch_conf == 1) {
- LOGP(DCS, LOGL_INFO, "Sync to ARFCN=%s rxlev=%s "
- "(Sysinfo, ccch mode COMB)\n",
- gsm_print_arfcn(cs->arfcn),
- gsm_print_rxlev(cs->list[cs->arfci].rxlev));
- cs->ccch_mode = CCCH_MODE_COMBINED;
- } else {
- LOGP(DCS, LOGL_INFO, "Sync to ARFCN=%s rxlev=%s "
- "(Sysinfo, ccch mode NON-COMB)\n",
- gsm_print_arfcn(cs->arfcn),
- gsm_print_rxlev(cs->list[cs->arfci].rxlev));
- cs->ccch_mode = CCCH_MODE_NON_COMBINED;
- }
- } else {
- LOGP(DCS, LOGL_INFO, "Sync to ARFCN=%s rxlev=%s (No sysinfo "
- "yet, ccch mode NONE)\n", gsm_print_arfcn(cs->arfcn),
- gsm_print_rxlev(cs->list[cs->arfci].rxlev));
- cs->ccch_mode = CCCH_MODE_NONE;
- }
-
- meas->frames = meas->snr = meas->berr = meas->rxlev = 0;
- cs->rxlev_dbm = cs->rxlev_count = 0;
-
- cs->neighbour = neighbour;
-
- if (camping) {
- cs->rla_c_dbm = -128;
- cs->c12_valid = 0;
- /* keep neighbour cells! if they are old, they are re-read
- * anyway, because re-read timer has expired. */
- }
-
- cs->sync_pending = 1;
- l1ctl_tx_reset_req(ms, L1CTL_RES_T_FULL);
- return l1ctl_tx_fbsb_req(ms, cs->arfcn,
- L1CTL_FBSB_F_FB01SB, 100, 0,
- cs->ccch_mode);
-}
-
-/* this is called whenever the serving cell is unselectied */
-static void gsm322_unselect_cell(struct gsm322_cellsel *cs)
-{
- if (!cs->selected)
- return;
-
- LOGP(DCS, LOGL_INFO, "Unselecting serving cell.\n");
-
- cs->selected = 0;
- if (cs->si)
- cs->si->si5 = 0; /* unset SI5* */
- cs->si = NULL;
- memset(&cs->sel_si, 0, sizeof(cs->sel_si));
- cs->sel_mcc = cs->sel_mnc = cs->sel_lac = cs->sel_id = 0;
-}
-
-/* print to DCS logging */
-static void print_dcs(void *priv, const char *fmt, ...)
-{
- static char buffer[256] = "";
- int in = strlen(buffer);
- va_list args;
-
- va_start(args, fmt);
- vsnprintf(buffer + in, sizeof(buffer) - in - 1, fmt, args);
- buffer[sizeof(buffer) - in - 1] = '\0';
- va_end(args);
-
- if (buffer[0] && buffer[strlen(buffer) - 1] == '\n') {
- LOGP(DCS, LOGL_INFO, "%s", buffer);
- buffer[0] = '\0';
- }
-}
-
-/* del forbidden LA */
-int gsm322_del_forbidden_la(struct osmocom_ms *ms, uint16_t mcc,
- uint16_t mnc, uint16_t lac)
-{
- struct gsm322_plmn *plmn = &ms->plmn;
- struct gsm322_la_list *la;
-
- llist_for_each_entry(la, &plmn->forbidden_la, entry) {
- if (la->mcc == mcc && la->mnc == mnc && la->lac == lac) {
- LOGP(DPLMN, LOGL_INFO, "Delete from list of forbidden "
- "LAs (mcc=%s, mnc=%s, lac=%04x)\n",
- gsm_print_mcc(mcc), gsm_print_mnc(mnc), lac);
- llist_del(&la->entry);
- talloc_free(la);
- return 0;
- }
- }
-
- return -EINVAL;
-}
-
-/* add forbidden LA */
-int gsm322_add_forbidden_la(struct osmocom_ms *ms, uint16_t mcc,
- uint16_t mnc, uint16_t lac, uint8_t cause)
-{
- struct gsm322_plmn *plmn = &ms->plmn;
- struct gsm322_la_list *la;
-
- LOGP(DPLMN, LOGL_INFO, "Add to list of forbidden LAs "
- "(mcc=%s, mnc=%s, lac=%04x)\n", gsm_print_mcc(mcc),
- gsm_print_mnc(mnc), lac);
- la = talloc_zero(l23_ctx, struct gsm322_la_list);
- if (!la)
- return -ENOMEM;
- la->mcc = mcc;
- la->mnc = mnc;
- la->lac = lac;
- la->cause = cause;
- llist_add_tail(&la->entry, &plmn->forbidden_la);
-
- return 0;
-}
-
-/* search forbidden LA */
-int gsm322_is_forbidden_la(struct osmocom_ms *ms, uint16_t mcc, uint16_t mnc,
- uint16_t lac)
-{
- struct gsm322_plmn *plmn = &ms->plmn;
- struct gsm322_la_list *la;
-
- llist_for_each_entry(la, &plmn->forbidden_la, entry) {
- if (la->mcc == mcc && la->mnc == mnc && la->lac == lac)
- return 1;
- }
-
- return 0;
-}
-
-/* search for PLMN in all BA lists */
-static struct gsm322_ba_list *gsm322_find_ba_list(struct gsm322_cellsel *cs,
- uint16_t mcc, uint16_t mnc)
-{
- struct gsm322_ba_list *ba, *ba_found = NULL;
-
- /* search for BA list */
- llist_for_each_entry(ba, &cs->ba_list, entry) {
- if (ba->mcc == mcc
- && ba->mnc == mnc) {
- ba_found = ba;
- break;
- }
- }
-
- return ba_found;
-}
-
-/* search available PLMN */
-int gsm322_is_plmn_avail_and_allow(struct gsm322_cellsel *cs, uint16_t mcc,
- uint16_t mnc)
-{
- int i;
-
- for (i = 0; i <= 1023+299; i++) {
- if ((cs->list[i].flags & GSM322_CS_FLAG_TEMP_AA)
- && cs->list[i].sysinfo
- && cs->list[i].sysinfo->mcc == mcc
- && cs->list[i].sysinfo->mnc == mnc)
- return 1;
- }
-
- return 0;
-}
-
-/* search available HPLMN */
-int gsm322_is_hplmn_avail(struct gsm322_cellsel *cs, char *imsi)
-{
- int i;
-
- for (i = 0; i <= 1023+299; i++) {
- if ((cs->list[i].flags & GSM322_CS_FLAG_SYSINFO)
- && cs->list[i].sysinfo
- && gsm_match_mnc(cs->list[i].sysinfo->mcc,
- cs->list[i].sysinfo->mnc, imsi))
- return 1;
- }
-
- return 0;
-}
-
-static const struct value_string gsm322_nb_state_names[] = {
- { GSM322_NB_NEW, "new" },
- { GSM322_NB_NOT_SUP, "not sup" },
- { GSM322_NB_RLA_C, "RLA_C" },
- { GSM322_NB_NO_SYNC, "no sync" },
- { GSM322_NB_NO_BCCH, "no BCCH" },
- { GSM322_NB_SYSINFO, "SYSINFO" },
- { 0, NULL }
-};
-
-const char *get_nb_state_name(int value)
-{
- return get_value_string(gsm322_nb_state_names, value);
-}
-
-
-/*
- * timer
- */
-
-/*plmn search timer event */
-static void plmn_timer_timeout(void *arg)
-{
- struct gsm322_plmn *plmn = arg;
- struct msgb *nmsg;
-
- LOGP(DPLMN, LOGL_INFO, "HPLMN search timer has fired.\n");
-
- /* indicate PLMN selection T timeout */
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_HPLMN_SEARCH);
- if (!nmsg)
- return;
- gsm322_plmn_sendmsg(plmn->ms, nmsg);
-}
-
-/* start plmn search timer */
-static void start_plmn_timer(struct gsm322_plmn *plmn, int secs)
-{
- LOGP(DPLMN, LOGL_INFO, "Starting HPLMN search timer with %d minutes.\n",
- secs / 60);
- plmn->timer.cb = plmn_timer_timeout;
- plmn->timer.data = plmn;
- osmo_timer_schedule(&plmn->timer, secs, 0);
-}
-
-/* stop plmn search timer */
-static void stop_plmn_timer(struct gsm322_plmn *plmn)
-{
- if (osmo_timer_pending(&plmn->timer)) {
- LOGP(DPLMN, LOGL_INFO, "Stopping pending timer.\n");
- osmo_timer_del(&plmn->timer);
- }
-}
-
-/* start cell selection timer */
-void start_cs_timer(struct gsm322_cellsel *cs, int sec, int micro)
-{
- LOGP(DCS, LOGL_DEBUG, "Starting CS timer with %d seconds.\n", sec);
- cs->timer.cb = gsm322_cs_timeout;
- cs->timer.data = cs;
- osmo_timer_schedule(&cs->timer, sec, micro);
-}
-
-/* stop cell selection timer */
-static void stop_cs_timer(struct gsm322_cellsel *cs)
-{
- if (osmo_timer_pending(&cs->timer)) {
- LOGP(DCS, LOGL_DEBUG, "stopping pending CS timer.\n");
- osmo_timer_del(&cs->timer);
- }
-}
-
-/* the following timer is used to search again for allowable cell, after
- * loss of coverage. (loss of any allowed PLMN) */
-
-/* start any cell selection timer */
-void start_any_timer(struct gsm322_cellsel *cs, int sec, int micro)
-{
- LOGP(DCS, LOGL_DEBUG, "Starting 'any cell selection' timer with %d "
- "seconds.\n", sec);
- cs->any_timer.cb = gsm322_any_timeout;
- cs->any_timer.data = cs;
- osmo_timer_schedule(&cs->any_timer, sec, micro);
-}
-
-/* stop cell selection timer */
-static void stop_any_timer(struct gsm322_cellsel *cs)
-{
- if (osmo_timer_pending(&cs->any_timer)) {
- LOGP(DCS, LOGL_DEBUG, "stopping pending 'any cell selection' "
- "timer.\n");
- osmo_timer_del(&cs->any_timer);
- }
-}
-
-/*
- * state change
- */
-
-static const struct value_string gsm322_a_state_names[] = {
- { GSM322_A0_NULL, "A0 null"},
- { GSM322_A1_TRYING_RPLMN, "A1 trying RPLMN"},
- { GSM322_A2_ON_PLMN, "A2 on PLMN"},
- { GSM322_A3_TRYING_PLMN, "A3 trying PLMN"},
- { GSM322_A4_WAIT_FOR_PLMN, "A4 wait for PLMN to appear"},
- { GSM322_A5_HPLMN_SEARCH, "A5 HPLMN search"},
- { GSM322_A6_NO_SIM, "A6 no SIM inserted"},
- { 0, NULL }
-};
-
-const char *get_a_state_name(int value)
-{
- return get_value_string(gsm322_a_state_names, value);
-}
-
-static const struct value_string gsm322_m_state_names[] = {
- { GSM322_M0_NULL, "M0 null"},
- { GSM322_M1_TRYING_RPLMN, "M1 trying RPLMN"},
- { GSM322_M2_ON_PLMN, "M2 on PLMN"},
- { GSM322_M3_NOT_ON_PLMN, "M3 not on PLMN"},
- { GSM322_M4_TRYING_PLMN, "M4 trying PLMN"},
- { GSM322_M5_NO_SIM, "M5 no SIM inserted"},
- { 0, NULL }
-};
-
-const char *get_m_state_name(int value)
-{
- return get_value_string(gsm322_m_state_names, value);
-}
-
-static const struct value_string gsm322_cs_state_names[] = {
- { GSM322_C0_NULL, "C0 null"},
- { GSM322_C1_NORMAL_CELL_SEL, "C1 normal cell selection"},
- { GSM322_C2_STORED_CELL_SEL, "C2 stored cell selection"},
- { GSM322_C3_CAMPED_NORMALLY, "C3 camped normally"},
- { GSM322_C4_NORMAL_CELL_RESEL, "C4 normal cell re-selection"},
- { GSM322_C5_CHOOSE_CELL, "C5 choose cell"},
- { GSM322_C6_ANY_CELL_SEL, "C6 any cell selection"},
- { GSM322_C7_CAMPED_ANY_CELL, "C7 camped on any cell"},
- { GSM322_C8_ANY_CELL_RESEL, "C8 any cell re-selection"},
- { GSM322_C9_CHOOSE_ANY_CELL, "C9 choose any cell"},
- { GSM322_CONNECTED_MODE_1, "connected mode 1"},
- { GSM322_CONNECTED_MODE_2, "connected mode 2"},
- { GSM322_PLMN_SEARCH, "PLMN search"},
- { GSM322_HPLMN_SEARCH, "HPLMN search"},
- { GSM322_ANY_SEARCH, "ANY search"},
- { 0, NULL }
-};
-
-const char *get_cs_state_name(int value)
-{
- return get_value_string(gsm322_cs_state_names, value);
-}
-
-/* new automatic PLMN search state */
-static void new_a_state(struct gsm322_plmn *plmn, int state)
-{
- if (plmn->ms->settings.plmn_mode != PLMN_MODE_AUTO) {
- LOGP(DPLMN, LOGL_FATAL, "not in auto mode, please fix!\n");
- return;
- }
-
- stop_plmn_timer(plmn);
-
- LOGP(DPLMN, LOGL_INFO, "new state '%s' -> '%s'\n",
- get_a_state_name(plmn->state), get_a_state_name(state));
-
- plmn->state = state;
-}
-
-/* new manual PLMN search state */
-static void new_m_state(struct gsm322_plmn *plmn, int state)
-{
- if (plmn->ms->settings.plmn_mode != PLMN_MODE_MANUAL) {
- LOGP(DPLMN, LOGL_FATAL, "not in manual mode, please fix!\n");
- return;
- }
-
- LOGP(DPLMN, LOGL_INFO, "new state '%s' -> '%s'\n",
- get_m_state_name(plmn->state), get_m_state_name(state));
-
- plmn->state = state;
-}
-
-/* new Cell selection state */
-static void new_c_state(struct gsm322_cellsel *cs, int state)
-{
- LOGP(DCS, LOGL_INFO, "new state '%s' -> '%s'\n",
- get_cs_state_name(cs->state), get_cs_state_name(state));
-
- /* stop cell selection timer, if running */
- stop_cs_timer(cs);
-
- /* stop scanning of power measurement */
- if (cs->powerscan) {
- LOGP(DCS, LOGL_INFO, "changing state while power scanning\n");
- l1ctl_tx_reset_req(cs->ms, L1CTL_RES_T_FULL);
- cs->powerscan = 0;
- }
-
- cs->state = state;
-}
-
-/*
- * list of PLMNs
- */
-
-/* 4.4.3 create sorted list of PLMN
- *
- * the source of entries are
- *
- * - HPLMN
- * - entries found in the SIM's PLMN Selector list
- * - scanned PLMNs above -85 dB (random order)
- * - scanned PLMNs below or equal -85 (by received level)
- *
- * NOTE:
- *
- * The list only includes networks found at last scan.
- *
- * The list always contains HPLMN if available, even if not used by PLMN
- * search process at some conditions.
- *
- * The list contains all PLMNs even if not allowed, so entries have to be
- * removed when selecting from the list. (In case we use manual cell selection,
- * we need to provide non-allowed networks also.)
- */
-static int gsm322_sort_list(struct osmocom_ms *ms)
-{
- struct gsm322_plmn *plmn = &ms->plmn;
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm_sub_plmn_list *sim_entry;
- struct gsm_sub_plmn_na *na_entry;
- struct llist_head temp_list;
- struct gsm322_plmn_list *temp, *found;
- struct llist_head *lh, *lh2;
- int i, entries, move;
- int8_t search = 0;
-
- /* flush list */
- llist_for_each_safe(lh, lh2, &plmn->sorted_plmn) {
- llist_del(lh);
- talloc_free(lh);
- }
-
- /* Create a temporary list of all networks */
- INIT_LLIST_HEAD(&temp_list);
- for (i = 0; i <= 1023+299; i++) {
- if (!(cs->list[i].flags & GSM322_CS_FLAG_TEMP_AA)
- || !cs->list[i].sysinfo)
- continue;
-
- /* search if network has multiple cells */
- found = NULL;
- llist_for_each_entry(temp, &temp_list, entry) {
- if (temp->mcc == cs->list[i].sysinfo->mcc
- && temp->mnc == cs->list[i].sysinfo->mnc) {
- found = temp;
- break;
- }
- }
- /* update or create */
- if (found) {
- if (cs->list[i].rxlev > found->rxlev)
- found->rxlev = cs->list[i].rxlev;
- } else {
- temp = talloc_zero(l23_ctx, struct gsm322_plmn_list);
- if (!temp)
- return -ENOMEM;
- temp->mcc = cs->list[i].sysinfo->mcc;
- temp->mnc = cs->list[i].sysinfo->mnc;
- temp->rxlev = cs->list[i].rxlev;
- llist_add_tail(&temp->entry, &temp_list);
- }
- }
-
- /* move Home PLMN, if in list, else add it */
- if (subscr->sim_valid) {
- found = NULL;
- llist_for_each_entry(temp, &temp_list, entry) {
- if (gsm_match_mnc(temp->mcc, temp->mnc, subscr->imsi)) {
- found = temp;
- break;
- }
- }
- if (found) {
- /* move */
- llist_del(&found->entry);
- llist_add_tail(&found->entry, &plmn->sorted_plmn);
- }
- }
-
- /* move entries if in SIM's PLMN Selector list */
- llist_for_each_entry(sim_entry, &subscr->plmn_list, entry) {
- found = NULL;
- llist_for_each_entry(temp, &temp_list, entry) {
- if (temp->mcc == sim_entry->mcc
- && temp->mnc == sim_entry->mnc) {
- found = temp;
- break;
- }
- }
- if (found) {
- llist_del(&found->entry);
- llist_add_tail(&found->entry, &plmn->sorted_plmn);
- }
- }
-
- /* move PLMN above -85 dBm in random order */
- entries = 0;
- llist_for_each_entry(temp, &temp_list, entry) {
- if (rxlev2dbm(temp->rxlev) > -85)
- entries++;
- }
- while(entries) {
- move = random() % entries;
- i = 0;
- llist_for_each_entry(temp, &temp_list, entry) {
- if (rxlev2dbm(temp->rxlev) > -85) {
- if (i == move) {
- llist_del(&temp->entry);
- llist_add_tail(&temp->entry,
- &plmn->sorted_plmn);
- break;
- }
- i++;
- }
- }
- entries--;
- }
-
- /* move ohter PLMN in decreasing order */
- while(1) {
- found = NULL;
- llist_for_each_entry(temp, &temp_list, entry) {
- if (!found
- || temp->rxlev > search) {
- search = temp->rxlev;
- found = temp;
- }
- }
- if (!found)
- break;
- llist_del(&found->entry);
- llist_add_tail(&found->entry, &plmn->sorted_plmn);
- }
-
- /* mark forbidden PLMNs, if in list of forbidden networks */
- i = 0;
- llist_for_each_entry(temp, &plmn->sorted_plmn, entry) {
- llist_for_each_entry(na_entry, &subscr->plmn_na, entry) {
- if (temp->mcc == na_entry->mcc
- && temp->mnc == na_entry->mnc) {
- temp->cause = na_entry->cause;
- break;
- }
- }
- LOGP(DPLMN, LOGL_INFO, "Creating Sorted PLMN list. "
- "(%02d: mcc %s mnc %s allowed %s rx-lev %s)\n",
- i, gsm_print_mcc(temp->mcc),
- gsm_print_mnc(temp->mnc), (temp->cause) ? "no ":"yes",
- gsm_print_rxlev(temp->rxlev));
- i++;
- }
-
- gsm322_dump_sorted_plmn(ms);
-
- return 0;
-}
-
-/*
- * handler for automatic search
- */
-
-/* go On PLMN state */
-static int gsm322_a_go_on_plmn(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm322_plmn *plmn = &ms->plmn;
- struct gsm_subscriber *subscr = &ms->subscr;
-
- new_a_state(plmn, GSM322_A2_ON_PLMN);
-
- /* start timer, if on VPLMN of home country OR special case */
- if (!gsm_match_mnc(plmn->mcc, plmn->mnc, subscr->imsi)
- && (subscr->always_search_hplmn
- || gsm_match_mcc(plmn->mcc, subscr->imsi))
- && subscr->sim_valid && subscr->t6m_hplmn)
- start_plmn_timer(plmn, subscr->t6m_hplmn * 360);
- else
- stop_plmn_timer(plmn);
-
- return 0;
-}
-
-/* go to Wait for PLMNs to appear state */
-static int gsm322_a_go_wait_for_plmns(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm322_plmn *plmn = &ms->plmn;
- struct msgb *nmsg;
- struct gsm322_msg *ngm;
-
- new_a_state(plmn, GSM322_A4_WAIT_FOR_PLMN);
-
- /* we must forward this, otherwhise "Any cell selection"
- * will not start automatically.
- */
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_NEW_PLMN);
- if (!nmsg)
- return -ENOMEM;
- ngm = (struct gsm322_msg *) nmsg->data;
- ngm->limited = 1;
- gsm322_cs_sendmsg(ms, nmsg);
-
- return 0;
-}
-
-/* no (more) PLMN in list */
-static int gsm322_a_no_more_plmn(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm322_plmn *plmn = &ms->plmn;
- struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct msgb *nmsg;
- int found;
-
- /* any allowable PLMN available? */
- found = gsm322_cs_select(ms, -1, 0, 0, 0);
-
- /* if no PLMN in list:
- * this means that we are at a point where we camp on any cell or
- * no cell ist available. */
- if (found < 0) {
- if (subscr->plmn_valid) {
- LOGP(DPLMN, LOGL_INFO, "Not any PLMN allowable. "
- "Do limited search with RPLMN.\n");
- plmn->mcc = subscr->plmn_mcc;
- plmn->mnc = subscr->plmn_mnc;
- } else
- if (subscr->sim_valid) {
- LOGP(DPLMN, LOGL_INFO, "Not any PLMN allowable. "
- "Do limited search with HPLMN.\n");
- plmn->mcc = subscr->mcc;
- plmn->mnc = subscr->mnc;
- } else {
- LOGP(DPLMN, LOGL_INFO, "Not any PLMN allowable. "
- "Do limited search with no PLMN.\n");
- plmn->mcc = 0;
- plmn->mnc = 0;
- }
-
- return gsm322_a_go_wait_for_plmns(ms, msg);
- }
-
- /* select first PLMN in list */
- plmn->mcc = cs->list[found].sysinfo->mcc;
- plmn->mnc = cs->list[found].sysinfo->mnc;
-
- LOGP(DPLMN, LOGL_INFO, "PLMN available after searching PLMN list "
- "(mcc=%s mnc=%s %s, %s)\n",
- gsm_print_mcc(plmn->mcc), gsm_print_mnc(plmn->mnc),
- gsm_get_mcc(plmn->mcc), gsm_get_mnc(plmn->mcc, plmn->mnc));
-
- /* indicate New PLMN */
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_NEW_PLMN);
- if (!nmsg)
- return -ENOMEM;
- gsm322_cs_sendmsg(ms, nmsg);
-
- /* go On PLMN */
- return gsm322_a_go_on_plmn(ms, msg);
-}
-
-/* select first PLMN in list */
-static int gsm322_a_sel_first_plmn(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm322_plmn *plmn = &ms->plmn;
- struct gsm_subscriber *subscr = &ms->subscr;
- struct msgb *nmsg;
- struct gsm322_plmn_list *plmn_entry;
- struct gsm322_plmn_list *plmn_first = NULL;
- int i;
-
- /* generate list */
- gsm322_sort_list(ms);
-
- /* select first entry */
- i = 0;
- llist_for_each_entry(plmn_entry, &plmn->sorted_plmn, entry) {
- /* if last selected PLMN was HPLMN, we skip that */
- if (gsm_match_mnc(plmn_entry->mcc, plmn_entry->mnc,
- subscr->imsi)
- && plmn_entry->mcc == plmn->mcc
- && plmn_entry->mnc == plmn->mnc) {
- LOGP(DPLMN, LOGL_INFO, "Skip HPLMN, because it was "
- "previously selected.\n");
- i++;
- continue;
- }
- /* select first allowed network */
- if (!plmn_entry->cause) {
- plmn_first = plmn_entry;
- break;
- }
- LOGP(DPLMN, LOGL_INFO, "Skip PLMN (%02d: mcc=%s, mnc=%s), "
- "because it is not allowed (cause %d).\n", i,
- gsm_print_mcc(plmn_entry->mcc),
- gsm_print_mnc(plmn_entry->mnc),
- plmn_entry->cause);
- i++;
- }
- plmn->plmn_curr = i;
-
- /* if no PLMN in list */
- if (!plmn_first) {
- LOGP(DPLMN, LOGL_INFO, "No PLMN in list.\n");
- gsm322_a_no_more_plmn(ms, msg);
-
- return 0;
- }
-
- LOGP(DPLMN, LOGL_INFO, "Selecting PLMN from list. (%02d: mcc=%s "
- "mnc=%s %s, %s)\n", plmn->plmn_curr,
- gsm_print_mcc(plmn_first->mcc), gsm_print_mnc(plmn_first->mnc),
- gsm_get_mcc(plmn_first->mcc),
- gsm_get_mnc(plmn_first->mcc, plmn_first->mnc));
-
- /* set current network */
- plmn->mcc = plmn_first->mcc;
- plmn->mnc = plmn_first->mnc;
-
- new_a_state(plmn, GSM322_A3_TRYING_PLMN);
-
- /* indicate New PLMN */
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_NEW_PLMN);
- if (!nmsg)
- return -ENOMEM;
- gsm322_cs_sendmsg(ms, nmsg);
-
- return 0;
-}
-
-/* select next PLMN in list */
-static int gsm322_a_sel_next_plmn(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm322_plmn *plmn = &ms->plmn;
- struct msgb *nmsg;
- struct gsm322_plmn_list *plmn_entry;
- struct gsm322_plmn_list *plmn_next = NULL;
- int i, ii;
-
- /* select next entry from list */
- i = 0;
- ii = plmn->plmn_curr + 1;
- llist_for_each_entry(plmn_entry, &plmn->sorted_plmn, entry) {
- /* skip previously selected networks */
- if (i < ii) {
- i++;
- continue;
- }
- /* select next allowed network */
- if (!plmn_entry->cause) {
- plmn_next = plmn_entry;
- break;
- }
- LOGP(DPLMN, LOGL_INFO, "Skip PLMN (%02d: mcc=%s, mnc=%s), "
- "because it is not allowed (cause %d).\n", i,
- gsm_print_mcc(plmn_entry->mcc),
- gsm_print_mnc(plmn_entry->mnc),
- plmn_entry->cause);
- i++;
- }
- plmn->plmn_curr = i;
-
- /* if no more PLMN in list */
- if (!plmn_next) {
- LOGP(DPLMN, LOGL_INFO, "No more PLMN in list.\n");
- gsm322_a_no_more_plmn(ms, msg);
- return 0;
- }
-
- /* set next network */
- plmn->mcc = plmn_next->mcc;
- plmn->mnc = plmn_next->mnc;
-
- LOGP(DPLMN, LOGL_INFO, "Selecting PLMN from list. (%02d: mcc=%s "
- "mnc=%s %s, %s)\n", plmn->plmn_curr,
- gsm_print_mcc(plmn->mcc), gsm_print_mnc(plmn->mnc),
- gsm_get_mcc(plmn->mcc), gsm_get_mnc(plmn->mcc, plmn->mnc));
-
- new_a_state(plmn, GSM322_A3_TRYING_PLMN);
-
- /* indicate New PLMN */
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_NEW_PLMN);
- if (!nmsg)
- return -ENOMEM;
- gsm322_cs_sendmsg(ms, nmsg);
-
- return 0;
-}
-
-/* User re-selection event */
-static int gsm322_a_user_resel(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct gsm322_plmn *plmn = &ms->plmn;
- struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm322_plmn_list *plmn_entry;
- struct gsm322_plmn_list *plmn_found = NULL;
- struct msgb *nmsg;
-
- if (!subscr->sim_valid) {
- return 0;
- }
-
- /* try again later, if not idle */
- if (cs->state == GSM322_CONNECTED_MODE_1
- || cs->state == GSM322_CONNECTED_MODE_2) {
- LOGP(DPLMN, LOGL_INFO, "Not idle, rejecting.\n");
-
- return 0;
- }
-
- /* search current PLMN in list */
- llist_for_each_entry(plmn_entry, &plmn->sorted_plmn, entry) {
- if (plmn_entry->mcc == plmn->mcc
- && plmn_entry->mnc == plmn->mnc) {
- plmn_found = plmn_entry;
- break;
- }
- }
-
- /* abort if list is empty */
- if (!plmn_found) {
- LOGP(DPLMN, LOGL_INFO, "Selected PLMN not in list, strange!\n");
- return 0;
- }
-
- LOGP(DPLMN, LOGL_INFO, "Movin selected PLMN to the bottom of the list "
- "and restarting PLMN search process.\n");
-
- /* move entry to end of list */
- llist_del(&plmn_found->entry);
- llist_add_tail(&plmn_found->entry, &plmn->sorted_plmn);
-
- /* tell MM that we selected a PLMN */
- nmsg = gsm48_mmevent_msgb_alloc(GSM48_MM_EVENT_USER_PLMN_SEL);
- if (!nmsg)
- return -ENOMEM;
- gsm48_mmevent_msg(ms, nmsg);
-
- /* select first PLMN in list */
- return gsm322_a_sel_first_plmn(ms, msg);
-}
-
-/* PLMN becomes available */
-static int gsm322_a_plmn_avail(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm322_plmn *plmn = &ms->plmn;
- struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm322_msg *gm = (struct gsm322_msg *) msg->data;
-
- if (subscr->plmn_valid && plmn->mcc == gm->mcc
- && plmn->mnc == gm->mnc) {
- struct msgb *nmsg;
-
- new_m_state(plmn, GSM322_A1_TRYING_RPLMN);
-
- LOGP(DPLMN, LOGL_INFO, "Last selected PLMN becomes available "
- "again.\n");
-
- /* indicate New PLMN */
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_NEW_PLMN);
- if (!nmsg)
- return -ENOMEM;
- gsm322_cs_sendmsg(ms, nmsg);
-
- return 0;
-
- } else {
- /* select first PLMN in list */
- LOGP(DPLMN, LOGL_INFO, "Some PLMN became available, start PLMN "
- "search process.\n");
- return gsm322_a_sel_first_plmn(ms, msg);
- }
-}
-
-/* loss of radio coverage */
-static int gsm322_a_loss_of_radio(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm322_cellsel *cs = &ms->cellsel;
- int found;
-
- /* any allowable PLMN available */
- found = gsm322_cs_select(ms, -1, 0, 0, 0);
-
- /* if PLMN in list */
- if (found >= 0) {
- LOGP(DPLMN, LOGL_INFO, "PLMN available (mcc=%s mnc=%s "
- "%s, %s)\n", gsm_print_mcc(
- cs->list[found].sysinfo->mcc),
- gsm_print_mnc(cs->list[found].sysinfo->mnc),
- gsm_get_mcc(cs->list[found].sysinfo->mcc),
- gsm_get_mnc(cs->list[found].sysinfo->mcc,
- cs->list[found].sysinfo->mnc));
- return gsm322_a_sel_first_plmn(ms, msg);
- }
-
- LOGP(DPLMN, LOGL_INFO, "PLMN not available after loss of coverage.\n");
-
- return gsm322_a_go_wait_for_plmns(ms, msg);
-}
-
-/* MS is switched on OR SIM is inserted OR removed */
-static int gsm322_a_switch_on(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm322_plmn *plmn = &ms->plmn;
- struct msgb *nmsg;
-
- if (!subscr->sim_valid) {
- LOGP(DSUM, LOGL_INFO, "SIM is removed\n");
- LOGP(DPLMN, LOGL_INFO, "SIM is removed\n");
- new_a_state(plmn, GSM322_A6_NO_SIM);
-
- return 0;
- }
-
- /* if there is a registered PLMN */
- if (subscr->plmn_valid) {
- /* select the registered PLMN */
- plmn->mcc = subscr->plmn_mcc;
- plmn->mnc = subscr->plmn_mnc;
-
- LOGP(DSUM, LOGL_INFO, "Start search of last registered PLMN "
- "(mcc=%s mnc=%s %s, %s)\n", gsm_print_mcc(plmn->mcc),
- gsm_print_mnc(plmn->mnc), gsm_get_mcc(plmn->mcc),
- gsm_get_mnc(plmn->mcc, plmn->mnc));
- LOGP(DPLMN, LOGL_INFO, "Use RPLMN (mcc=%s mnc=%s "
- "%s, %s)\n", gsm_print_mcc(plmn->mcc),
- gsm_print_mnc(plmn->mnc), gsm_get_mcc(plmn->mcc),
- gsm_get_mnc(plmn->mcc, plmn->mnc));
-
- new_a_state(plmn, GSM322_A1_TRYING_RPLMN);
-
- /* indicate New PLMN */
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_NEW_PLMN);
- if (!nmsg)
- return -ENOMEM;
- gsm322_cs_sendmsg(ms, nmsg);
-
- return 0;
- }
-
- plmn->mcc = plmn->mnc = 0;
-
- /* initiate search at cell selection */
- LOGP(DSUM, LOGL_INFO, "Search for network\n");
- LOGP(DPLMN, LOGL_INFO, "Switch on, no RPLMN, start PLMN search "
- "first.\n");
-
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_PLMN_SEARCH_START);
- if (!nmsg)
- return -ENOMEM;
- gsm322_cs_sendmsg(ms, nmsg);
-
- return 0;
-}
-
-/* MS is switched off */
-static int gsm322_a_switch_off(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm322_plmn *plmn = &ms->plmn;
-
- new_a_state(plmn, GSM322_A0_NULL);
-
- return 0;
-}
-
-static int gsm322_a_sim_insert(struct osmocom_ms *ms, struct msgb *msg)
-{
- LOGP(DPLMN, LOGL_INFO, "SIM already inserted when switched on.\n");
- return 0;
-}
-
-/* SIM is removed */
-static int gsm322_a_sim_removed(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct msgb *nmsg;
-
- /* indicate SIM remove to cell selection process */
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_SIM_REMOVE);
- if (!nmsg)
- return -ENOMEM;
- gsm322_cs_sendmsg(ms, nmsg);
-
- /* flush list of PLMNs */
- gsm_subscr_del_forbidden_plmn(&ms->subscr, 0, 0);
-
- return gsm322_a_switch_on(ms, msg);
-}
-
-/* location update response: "Roaming not allowed" */
-static int gsm322_a_roaming_na(struct osmocom_ms *ms, struct msgb *msg)
-{
- /* store in list of forbidden LAs is done in gsm48* */
-
- return gsm322_a_sel_first_plmn(ms, msg);
-}
-
-/* On VPLMN of home country and timeout occurs */
-static int gsm322_a_hplmn_search_start(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm322_plmn *plmn = &ms->plmn;
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct msgb *nmsg;
-
- /* try again later, if not idle and not camping */
- if (cs->state != GSM322_C3_CAMPED_NORMALLY) {
- LOGP(DPLMN, LOGL_INFO, "Not camping normally, wait some more."
- "\n");
- start_plmn_timer(plmn, 60);
-
- return 0;
- }
-
- new_a_state(plmn, GSM322_A5_HPLMN_SEARCH);
-
- /* initiate search at cell selection */
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_HPLMN_SEARCH);
- if (!nmsg)
- return -ENOMEM;
- gsm322_cs_sendmsg(ms, nmsg);
-
- return 0;
-}
-
-/* manual mode selected */
-static int gsm322_a_sel_manual(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct msgb *nmsg;
-
- /* restart state machine */
- gsm322_a_switch_off(ms, msg);
- ms->settings.plmn_mode = PLMN_MODE_MANUAL;
- gsm322_m_switch_on(ms, msg);
-
- nmsg = gsm48_mmevent_msgb_alloc(GSM48_MM_EVENT_USER_PLMN_SEL);
- if (!nmsg)
- return -ENOMEM;
- gsm48_mmevent_msg(ms, nmsg);
-
- return 0;
-}
-
-/*
- * handler for manual search
- */
-
-/* display PLMNs and to Not on PLMN */
-static int gsm322_m_display_plmns(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm322_msg *gm = (struct gsm322_msg *) msg->data;
- int msg_type = gm->msg_type;
- struct gsm322_plmn *plmn = &ms->plmn;
- struct gsm_sub_plmn_list *temp;
- struct msgb *nmsg;
- struct gsm322_msg *ngm;
-
- /* generate list */
- gsm322_sort_list(ms);
-
- vty_notify(ms, NULL);
- switch (msg_type) {
- case GSM322_EVENT_REG_FAILED:
- vty_notify(ms, "Failed to register to network %s, %s "
- "(%s, %s)\n",
- gsm_print_mcc(plmn->mcc), gsm_print_mnc(plmn->mnc),
- gsm_get_mcc(plmn->mcc),
- gsm_get_mnc(plmn->mcc, plmn->mnc));
- break;
- case GSM322_EVENT_NO_CELL_FOUND:
- vty_notify(ms, "No cell found for network %s, %s "
- "(%s, %s)\n",
- gsm_print_mcc(plmn->mcc), gsm_print_mnc(plmn->mnc),
- gsm_get_mcc(plmn->mcc),
- gsm_get_mnc(plmn->mcc, plmn->mnc));
- break;
- case GSM322_EVENT_ROAMING_NA:
- vty_notify(ms, "Roaming not allowed to network %s, %s "
- "(%s, %s)\n",
- gsm_print_mcc(plmn->mcc), gsm_print_mnc(plmn->mnc),
- gsm_get_mcc(plmn->mcc),
- gsm_get_mnc(plmn->mcc, plmn->mnc));
- break;
- }
-
- if (llist_empty(&plmn->sorted_plmn))
- vty_notify(ms, "Search network!\n");
- else {
- vty_notify(ms, "Search or select from network:\n");
- llist_for_each_entry(temp, &plmn->sorted_plmn, entry)
- vty_notify(ms, " Network %s, %s (%s, %s)\n",
- gsm_print_mcc(temp->mcc),
- gsm_print_mnc(temp->mnc),
- gsm_get_mcc(temp->mcc),
- gsm_get_mnc(temp->mcc, temp->mnc));
- }
-
- /* go Not on PLMN state */
- new_m_state(plmn, GSM322_M3_NOT_ON_PLMN);
-
- /* we must forward this, otherwhise "Any cell selection"
- * will not start automatically.
- * this way we get back to the last PLMN, in case we gained
- * our coverage back.
- */
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_NEW_PLMN);
- if (!nmsg)
- return -ENOMEM;
- ngm = (struct gsm322_msg *) nmsg->data;
- ngm->limited = 1;
- gsm322_cs_sendmsg(ms, nmsg);
-
- return 0;
-}
-
-/* user starts reselection */
-static int gsm322_m_user_resel(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm322_plmn *plmn = &ms->plmn;
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct gsm_subscriber *subscr = &ms->subscr;
- struct msgb *nmsg;
-
- /* unselect PLMN. after search, the process will wait until a PLMN is
- * selected by the user. this prevents from switching back to the
- * last selected PLMN and destroying the list of scanned networks.
- */
- plmn->mcc = plmn->mnc = 0;
-
- if (!subscr->sim_valid) {
- return 0;
- }
-
- /* try again later, if not idle */
- if (cs->state == GSM322_CONNECTED_MODE_1
- || cs->state == GSM322_CONNECTED_MODE_2) {
- LOGP(DPLMN, LOGL_INFO, "Not idle, rejecting.\n");
-
- return 0;
- }
-
- /* initiate search at cell selection */
- LOGP(DPLMN, LOGL_INFO, "User re-select, start PLMN search first.\n");
-
- /* tell MM that we selected a PLMN */
- nmsg = gsm48_mmevent_msgb_alloc(GSM48_MM_EVENT_USER_PLMN_SEL);
- if (!nmsg)
- return -ENOMEM;
- gsm48_mmevent_msg(ms, nmsg);
-
- /* triffer PLMN search */
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_PLMN_SEARCH_START);
- if (!nmsg)
- return -ENOMEM;
- gsm322_cs_sendmsg(ms, nmsg);
-
- return 0;
-}
-
-/* MS is switched on OR SIM is inserted OR removed */
-static int gsm322_m_switch_on(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm322_plmn *plmn = &ms->plmn;
- struct msgb *nmsg;
-
- if (!subscr->sim_valid) {
- LOGP(DSUM, LOGL_INFO, "SIM is removed\n");
- LOGP(DPLMN, LOGL_INFO, "Switch on without SIM.\n");
- new_m_state(plmn, GSM322_M5_NO_SIM);
-
- return 0;
- }
-
- /* if there is a registered PLMN */
- if (subscr->plmn_valid) {
- struct msgb *nmsg;
-
- /* select the registered PLMN */
- plmn->mcc = subscr->plmn_mcc;
- plmn->mnc = subscr->plmn_mnc;
-
- LOGP(DSUM, LOGL_INFO, "Start search of last registered PLMN "
- "(mcc=%s mnc=%s %s, %s)\n", gsm_print_mcc(plmn->mcc),
- gsm_print_mnc(plmn->mnc), gsm_get_mcc(plmn->mcc),
- gsm_get_mnc(plmn->mcc, plmn->mnc));
- LOGP(DPLMN, LOGL_INFO, "Use RPLMN (mcc=%s mnc=%s "
- "%s, %s)\n", gsm_print_mcc(plmn->mcc),
- gsm_print_mnc(plmn->mnc), gsm_get_mcc(plmn->mcc),
- gsm_get_mnc(plmn->mcc, plmn->mnc));
-
- new_m_state(plmn, GSM322_M1_TRYING_RPLMN);
-
- /* indicate New PLMN */
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_NEW_PLMN);
- if (!nmsg)
- return -ENOMEM;
- gsm322_cs_sendmsg(ms, nmsg);
-
- return 0;
- }
-
- plmn->mcc = plmn->mnc = 0;
-
- /* initiate search at cell selection */
- LOGP(DSUM, LOGL_INFO, "Search for network\n");
- LOGP(DPLMN, LOGL_INFO, "Switch on, start PLMN search first.\n");
-
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_PLMN_SEARCH_START);
- if (!nmsg)
- return -ENOMEM;
- gsm322_cs_sendmsg(ms, nmsg);
-
- return 0;
-}
-
-/* MS is switched off */
-static int gsm322_m_switch_off(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm322_plmn *plmn = &ms->plmn;
-
- stop_plmn_timer(plmn);
-
- new_m_state(plmn, GSM322_M0_NULL);
-
- return 0;
-}
-
-static int gsm322_m_sim_insert(struct osmocom_ms *ms, struct msgb *msg)
-{
- LOGP(DPLMN, LOGL_INFO, "SIM already inserted when switched on.\n");
- return 0;
-}
-
-/* SIM is removed */
-static int gsm322_m_sim_removed(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm322_plmn *plmn = &ms->plmn;
- struct msgb *nmsg;
-
- stop_plmn_timer(plmn);
-
- /* indicate SIM remove to cell selection process */
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_SIM_REMOVE);
- if (!nmsg)
- return -ENOMEM;
- gsm322_cs_sendmsg(ms, nmsg);
-
- /* flush list of PLMNs */
- gsm_subscr_del_forbidden_plmn(&ms->subscr, 0, 0);
-
- return gsm322_m_switch_on(ms, msg);
-}
-
-/* go to On PLMN state */
-static int gsm322_m_go_on_plmn(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm322_plmn *plmn = &ms->plmn;
- struct gsm_subscriber *subscr = &ms->subscr;
-
- /* set last registered PLMN */
- subscr->plmn_valid = 1;
- subscr->plmn_mcc = plmn->mcc;
- subscr->plmn_mnc = plmn->mnc;
-
- new_m_state(plmn, GSM322_M2_ON_PLMN);
-
- return 0;
-}
-
-/* previously selected PLMN becomes available again */
-static int gsm322_m_plmn_avail(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm322_plmn *plmn = &ms->plmn;
- struct msgb *nmsg;
-
- new_m_state(plmn, GSM322_M1_TRYING_RPLMN);
-
- LOGP(DPLMN, LOGL_INFO, "Last selected PLMN becomes available again.\n");
-
- /* indicate New PLMN */
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_NEW_PLMN);
- if (!nmsg)
- return -ENOMEM;
- gsm322_cs_sendmsg(ms, nmsg);
-
- return 0;
-}
-
-/* the user has selected given PLMN */
-static int gsm322_m_choose_plmn(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm322_plmn *plmn = &ms->plmn;
- struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm322_msg *gm = (struct gsm322_msg *) msg->data;
- struct msgb *nmsg;
-
- /* use user selection */
- plmn->mcc = gm->mcc;
- plmn->mnc = gm->mnc;
-
- LOGP(DPLMN, LOGL_INFO, "User selects PLMN. (mcc=%s mnc=%s "
- "%s, %s)\n", gsm_print_mcc(plmn->mcc), gsm_print_mnc(plmn->mnc),
- gsm_get_mcc(plmn->mcc), gsm_get_mnc(plmn->mcc, plmn->mnc));
-
- /* if selected PLMN is in list of forbidden PLMNs */
- gsm_subscr_del_forbidden_plmn(subscr, plmn->mcc, plmn->mnc);
-
- new_m_state(plmn, GSM322_M4_TRYING_PLMN);
-
- /* tell MM that we selected a PLMN */
- nmsg = gsm48_mmevent_msgb_alloc(GSM48_MM_EVENT_USER_PLMN_SEL);
- if (!nmsg)
- return -ENOMEM;
- gsm48_mmevent_msg(ms, nmsg);
-
- /* indicate New PLMN */
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_NEW_PLMN);
- if (!nmsg)
- return -ENOMEM;
- gsm322_cs_sendmsg(ms, nmsg);
-
- return 0;
-}
-
-/* auto mode selected */
-static int gsm322_m_sel_auto(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct msgb *nmsg;
-
- /* restart state machine */
- gsm322_m_switch_off(ms, msg);
- ms->settings.plmn_mode = PLMN_MODE_AUTO;
- gsm322_a_switch_on(ms, msg);
-
- nmsg = gsm48_mmevent_msgb_alloc(GSM48_MM_EVENT_USER_PLMN_SEL);
- if (!nmsg)
- return -ENOMEM;
- gsm48_mmevent_msg(ms, nmsg);
-
- return 0;
-}
-
-/* if no cell is found in other states than in *_TRYING_* states */
-static int gsm322_am_no_cell_found(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct msgb *nmsg;
-
- /* Tell cell selection process to handle "no cell found". */
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_NO_CELL_FOUND);
- if (!nmsg)
- return -ENOMEM;
- gsm322_cs_sendmsg(ms, nmsg);
-
- return 0;
-}
-
-/*
- * cell scanning process
- */
-
-/* select a suitable and allowable cell */
-static int gsm322_cs_select(struct osmocom_ms *ms, int index, uint16_t mcc,
- uint16_t mnc, int any)
-{
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct gsm_settings *set = &ms->settings;
- struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm48_sysinfo *s;
- int start, end, i, found = -1, power = 0;
- uint8_t flags, mask;
- uint16_t acc_class;
- int16_t c1;
- enum gsm_band band;
- int class;
-
- /* set our access class depending on the cell selection type */
- if (any) {
- acc_class = subscr->acc_class | 0x0400; /* add emergency */
- LOGP(DCS, LOGL_DEBUG, "Select using access class with "
- "Emergency class.\n");
- } else {
- acc_class = subscr->acc_class;
- LOGP(DCS, LOGL_DEBUG, "Select using access class \n");
- }
-
- /* flags to match */
- mask = GSM322_CS_FLAG_SUPPORT | GSM322_CS_FLAG_POWER
- | GSM322_CS_FLAG_SIGNAL | GSM322_CS_FLAG_SYSINFO;
- if (cs->state == GSM322_C2_STORED_CELL_SEL
- || cs->state == GSM322_C5_CHOOSE_CELL)
- mask |= GSM322_CS_FLAG_BA;
- flags = mask; /* all masked flags are requied */
-
- /* loop through all scanned frequencies and select cell.
- * if an index is given (arfci), we just check this cell only */
- if (index >= 0)
- start = end = index;
- else
- start = 0; end = 1023+299;
- for (i = start; i <= end; i++) {
- cs->list[i].flags &= ~GSM322_CS_FLAG_TEMP_AA;
- s = cs->list[i].sysinfo;
-
- /* channel has no informations for us */
- if (!s || (cs->list[i].flags & mask) != flags) {
- continue;
- }
-
- /* check C1 criteria not fullfilled */
- // TODO: class 3 DCS mobile
- band = gsm_arfcn2band(index2arfcn(i));
- class = class_of_band(ms, band);
- c1 = calculate_c1(DCS, rxlev2dbm(cs->list[i].rxlev),
- s->rxlev_acc_min_db,
- ms_pwr_dbm(band, s->ms_txpwr_max_cch),
- ms_class_gmsk_dbm(band, class));
- if (!set->stick && c1 < 0) {
- LOGP(DCS, LOGL_INFO, "Skip ARFCN %s: C1 criterion "
- "not met. (C1 = %d)\n",
- gsm_print_arfcn(index2arfcn(i)), c1);
- continue;
- }
-
- /* if cell is barred and we don't override */
- if (!subscr->acc_barr
- && (cs->list[i].flags & GSM322_CS_FLAG_BARRED)) {
- LOGP(DCS, LOGL_INFO, "Skip ARFCN %s: Cell is "
- "barred.\n", gsm_print_arfcn(index2arfcn(i)));
- continue;
- }
-
- /* if we have no access to the cell and we don't override */
- if (!subscr->acc_barr
- && !(acc_class & (s->class_barr ^ 0xffff))) {
- LOGP(DCS, LOGL_INFO, "Skip ARFCN %s: Class is "
- "barred for our access. (access=%04x "
- "barred=%04x)\n",
- gsm_print_arfcn(index2arfcn(i)),
- acc_class, s->class_barr);
- continue;
- }
-
- /* store temporary available and allowable flag */
- cs->list[i].flags |= GSM322_CS_FLAG_TEMP_AA;
-
- /* if cell is in list of forbidden LAs */
- if ((cs->list[i].flags & GSM322_CS_FLAG_FORBIDD)) {
- if (!any) {
- LOGP(DCS, LOGL_INFO, "Skip ARFCN %s: Cell is "
- "in list of forbidden LAs. (mcc=%s "
- "mnc=%s lai=%04x)\n",
- gsm_print_arfcn(index2arfcn(i)),
- gsm_print_mcc(s->mcc),
- gsm_print_mnc(s->mnc), s->lac);
- continue;
- }
- LOGP(DCS, LOGL_INFO, "Accept ARFCN %s: Cell is in "
- "list of forbidden LAs, but we search for any "
- "cell. (mcc=%s mnc=%s lai=%04x)\n",
- gsm_print_arfcn(index2arfcn(i)),
- gsm_print_mcc(s->mcc),
- gsm_print_mnc(s->mnc), s->lac);
- cs->list[i].flags &= ~GSM322_CS_FLAG_TEMP_AA;
- }
-
- /* if cell is in list of forbidden PLMNs */
- if (gsm_subscr_is_forbidden_plmn(subscr, s->mcc, s->mnc)) {
- if (!any) {
- LOGP(DCS, LOGL_INFO, "Skip ARFCN %s: Cell is "
- "in list of forbidden PLMNs. (mcc=%s "
- "mnc=%s)\n",
- gsm_print_arfcn(index2arfcn(i)),
- gsm_print_mcc(s->mcc),
- gsm_print_mnc(s->mnc));
- continue;
- }
- LOGP(DCS, LOGL_INFO, "Accept ARFCN %s: Cell is in list "
- "of forbidden PLMNs, but we search for any "
- "cell. (mcc=%s mnc=%s)\n",
- gsm_print_arfcn(index2arfcn(i)),
- gsm_print_mcc(s->mcc), gsm_print_mnc(s->mnc));
- cs->list[i].flags &= ~GSM322_CS_FLAG_TEMP_AA;
- }
-
- /* if we search a specific PLMN, but it does not match */
- if (!any && mcc && (mcc != s->mcc
- || mnc != s->mnc)) {
- LOGP(DCS, LOGL_INFO, "Skip ARFCN %s: PLMN of cell "
- "does not match target PLMN. (mcc=%s "
- "mnc=%s)\n", gsm_print_arfcn(index2arfcn(i)),
- gsm_print_mcc(s->mcc),
- gsm_print_mnc(s->mnc));
- continue;
- }
-
- LOGP(DCS, LOGL_INFO, "Cell ARFCN %s: Cell found, (rxlev=%s "
- "mcc=%s mnc=%s lac=%04x %s, %s)\n",
- gsm_print_arfcn(index2arfcn(i)),
- gsm_print_rxlev(cs->list[i].rxlev),
- gsm_print_mcc(s->mcc), gsm_print_mnc(s->mnc), s->lac,
- gsm_get_mcc(s->mcc), gsm_get_mnc(s->mcc, s->mnc));
-
- /* find highest power cell */
- if (found < 0 || cs->list[i].rxlev > power) {
- power = cs->list[i].rxlev;
- found = i;
- }
- }
-
- if (found >= 0)
- LOGP(DCS, LOGL_INFO, "Cell ARFCN %s selected.\n",
- gsm_print_arfcn(index2arfcn(found)));
-
- return found;
-}
-
-/* re-select a suitable and allowable cell */
-static int gsm322_cs_reselect(struct osmocom_ms *ms, uint16_t mcc,
- uint16_t mnc, int any)
-{
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm48_sysinfo *s = cs->si;
- int i = cs->arfci;
- uint16_t acc_class;
-
- /* set our access class depending on the cell selection type */
- if (any) {
- acc_class = subscr->acc_class | 0x0400; /* add emergency */
- LOGP(DCS, LOGL_DEBUG, "Select using access class with "
- "Emergency class.\n");
- } else {
- acc_class = subscr->acc_class;
- LOGP(DCS, LOGL_DEBUG, "Select using access class \n");
- }
-
- /* if cell is barred and we don't override */
- if (!subscr->acc_barr
- && (cs->list[i].flags & GSM322_CS_FLAG_BARRED)) {
- LOGP(DCS, LOGL_INFO, "Skip ARFCN %s: Cell is barred.\n",
- gsm_print_arfcn(index2arfcn(i)));
- return -1;
- }
-
- /* if cell is in list of forbidden LAs */
- if (!any && (cs->list[i].flags & GSM322_CS_FLAG_FORBIDD)) {
- LOGP(DCS, LOGL_INFO, "Skip ARFCN %s: Cell is in list of "
- "forbidden LAs. (mcc=%s mnc=%s lai=%04x)\n",
- gsm_print_arfcn(index2arfcn(i)), gsm_print_mcc(s->mcc),
- gsm_print_mnc(s->mnc), s->lac);
- return -1;
- }
-
- /* if cell is in list of forbidden PLMNs */
- if (!any && gsm_subscr_is_forbidden_plmn(subscr, s->mcc, s->mnc)) {
- LOGP(DCS, LOGL_INFO, "Skip ARFCN %s: Cell is in "
- "list of forbidden PLMNs. (mcc=%s mnc=%s)\n",
- gsm_print_arfcn(index2arfcn(i)),
- gsm_print_mcc(s->mcc), gsm_print_mnc(s->mnc));
- return -1;
- }
-
- /* if we have no access to the cell and we don't override */
- if (!subscr->acc_barr
- && !(acc_class & (s->class_barr ^ 0xffff))) {
- LOGP(DCS, LOGL_INFO, "Skip ARFCN %s: Class is barred for our "
- "access. (access=%04x barred=%04x)\n",
- gsm_print_arfcn(index2arfcn(i)), acc_class,
- s->class_barr);
- return -1;
- }
-
- /* if we search a specific PLMN, but it does not match */
- if (!any && mcc && (mcc != s->mcc
- || mnc != s->mnc)) {
- LOGP(DCS, LOGL_INFO, "Skip ARFCN %s: PLMN of cell "
- "does not match target PLMN. (mcc=%s mnc=%s)\n",
- gsm_print_arfcn(index2arfcn(i)), gsm_print_mcc(s->mcc),
- gsm_print_mnc(s->mnc));
- return -1;
- }
-
- LOGP(DCS, LOGL_INFO, "Cell ARFCN %s: Neighbour cell accepted, "
- "(rxlev=%s mcc=%s mnc=%s lac=%04x %s, %s)\n",
- gsm_print_arfcn(index2arfcn(i)),
- gsm_print_rxlev(cs->list[i].rxlev),
- gsm_print_mcc(s->mcc), gsm_print_mnc(s->mnc), s->lac,
- gsm_get_mcc(s->mcc), gsm_get_mnc(s->mcc, s->mnc));
-
- return i;
-}
-
-/* this processes the end of frequency scanning or cell searches */
-static int gsm322_search_end(struct osmocom_ms *ms)
-{
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct gsm322_plmn *plmn = &ms->plmn;
- struct msgb *nmsg;
- struct gsm322_msg *ngm;
- int msg_type = -1; /* no message to be sent */
- int tune_back = 0, mcc = 0, mnc = 0;
- int found;
-
- switch (cs->state) {
- case GSM322_ANY_SEARCH:
- /* special case for 'any cell' search */
- LOGP(DCS, LOGL_INFO, "Any cell search finished.\n");
-
- /* create AA flag */
- found = gsm322_cs_select(ms, -1, 0, 0, 0);
-
- /* if no cell is found, or if we don't wait for any available
- * and allowable PLMN to appear, we just continue to camp */
- if (ms->settings.plmn_mode != PLMN_MODE_AUTO
- || plmn->state != GSM322_A4_WAIT_FOR_PLMN
- || found < 0) {
- tune_back = 1;
- gsm322_c_camp_any_cell(ms, NULL);
- break;
- }
-
- /* indicate available PLMN, include selected PLMN, if found */
- msg_type = GSM322_EVENT_PLMN_AVAIL;
- if (gsm322_is_plmn_avail_and_allow(cs, plmn->mcc, plmn->mnc)) {
- /* set what PLMN becomes available */
- mcc = plmn->mcc;
- mnc = plmn->mnc;
- }
-
- new_c_state(cs, GSM322_C0_NULL);
-
- break;
-
- case GSM322_PLMN_SEARCH:
- /* special case for PLMN search */
- msg_type = GSM322_EVENT_PLMN_SEARCH_END;
- LOGP(DCS, LOGL_INFO, "PLMN search finished.\n");
-
- /* create AA flag */
- gsm322_cs_select(ms, -1, 0, 0, 0);
-
- new_c_state(cs, GSM322_C0_NULL);
-
- break;
-
- case GSM322_HPLMN_SEARCH:
- /* special case for HPLMN search */
- msg_type = GSM322_EVENT_NO_CELL_FOUND;
- LOGP(DCS, LOGL_INFO, "HPLMN search finished, no cell.\n");
-
- new_c_state(cs, GSM322_C3_CAMPED_NORMALLY);
-
- tune_back = 1;
-
- break;
-
- default:
- /* we start normal cell selection if this fails */
- if (cs->state == GSM322_C2_STORED_CELL_SEL
- || cs->state == GSM322_C5_CHOOSE_CELL) {
- /* tell CS to start over */
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_NO_CELL_FOUND);
- if (!nmsg)
- return -ENOMEM;
- gsm322_c_event(ms, nmsg);
- msgb_free(nmsg);
-
- break;
- }
-
- /* on other cell selection, indicate "no cell found" */
- /* NOTE: PLMN search process handles it.
- * If not handled there, CS process gets indicated.
- * If we would continue to process CS, then we might get
- * our list of scanned cells disturbed.
- */
- LOGP(DCS, LOGL_INFO, "Cell search finished without result.\n");
- msg_type = GSM322_EVENT_NO_CELL_FOUND;
-
- /* stay in null-state until any cell selectio is triggered or
- * new plmn is indicated.
- */
- new_c_state(cs, GSM322_C0_NULL);
- }
-
- if (msg_type > -1) {
- /* send result to PLMN process, to trigger next CS event */
- nmsg = gsm322_msgb_alloc(msg_type);
- if (!nmsg)
- return -ENOMEM;
- ngm = (struct gsm322_msg *) nmsg->data;
- ngm->mcc = mcc;
- ngm->mnc = mcc;
- gsm322_plmn_sendmsg(ms, nmsg);
- }
-
- if (cs->selected && tune_back) {
- /* tuning back */
- cs->arfcn = cs->sel_arfcn;
- cs->arfci = arfcn2index(cs->arfcn);
- if (!cs->list[cs->arfci].sysinfo)
- cs->list[cs->arfci].sysinfo = talloc_zero(l23_ctx,
- struct gsm48_sysinfo);
- if (!cs->list[cs->arfci].sysinfo)
- exit(-ENOMEM);
- cs->list[cs->arfci].flags |= GSM322_CS_FLAG_SYSINFO;
- memcpy(cs->list[cs->arfci].sysinfo, &cs->sel_si,
- sizeof(struct gsm48_sysinfo));
- cs->si = cs->list[cs->arfci].sysinfo;
- cs->sel_mcc = cs->si->mcc;
- cs->sel_mnc = cs->si->mnc;
- cs->sel_lac = cs->si->lac;
- cs->sel_id = cs->si->cell_id;
- LOGP(DCS, LOGL_INFO, "Tuning back to frequency %s after full "
- "search.\n", gsm_print_arfcn(cs->arfcn));
- cs->sync_retries = SYNC_RETRIES;
- gsm322_sync_to_cell(cs, NULL, 0);
- }
-
- return 0;
-}
-
-
-/* tune to first/next unscanned frequency and search for PLMN */
-static int gsm322_cs_scan(struct osmocom_ms *ms)
-{
- struct gsm322_cellsel *cs = &ms->cellsel;
- int i;
- int j, band = 0;
- uint8_t mask, flags;
- uint32_t weight = 0, test = cs->scan_state;
-
- /* search for strongest unscanned cell */
- mask = GSM322_CS_FLAG_SUPPORT | GSM322_CS_FLAG_POWER
- | GSM322_CS_FLAG_SIGNAL;
- if (cs->state == GSM322_C2_STORED_CELL_SEL
- || cs->state == GSM322_C5_CHOOSE_CELL)
- mask |= GSM322_CS_FLAG_BA;
- flags = mask; /* all masked flags are requied */
- for (i = 0; i <= 1023+299; i++) {
- j = 0; /* make gcc happy */
- if (!ms->settings.skip_max_per_band) {
- /* skip if band has enough freqs. scanned (3.2.1) */
- for (j = 0; gsm_sup_smax[j].max; j++) {
- if (gsm_sup_smax[j].end >
- gsm_sup_smax[j].start) {
- if (gsm_sup_smax[j].start <= i
- && gsm_sup_smax[j].end >= i)
- break;
- } else {
- if (gsm_sup_smax[j].start <= i
- && 1023 >= i)
- break;
- if (0 <= i
- && gsm_sup_smax[j].end >= i)
- break;
- }
- }
- if (gsm_sup_smax[j].max) {
- if (gsm_sup_smax[j].temp == gsm_sup_smax[j].max)
- continue;
- }
- }
-
- /* search for unscanned frequency */
- if ((cs->list[i].flags & mask) == flags) {
- /* weight depends on the power level
- * if it is the same, it depends on arfcn
- */
- test = cs->list[i].rxlev + 1;
- test = (test << 16) | i;
- if (test >= cs->scan_state)
- continue;
- if (test > weight) {
- weight = test;
- band = j;
- }
-
- }
- }
- cs->scan_state = weight;
-
- /* if all frequencies have been searched */
- if (!weight) {
- gsm322_dump_cs_list(cs, GSM322_CS_FLAG_SYSINFO, print_dcs,
- NULL);
-
- /* selection process done, process (negative) result */
- return gsm322_search_end(ms);
- }
-
- /* NOTE: We might already have system information from previous
- * scan. But we need recent informations, so we scan again!
- */
-
- /* Tune to frequency for a while, to receive broadcasts. */
- cs->arfci = weight & 0xffff;
- cs->arfcn = index2arfcn(cs->arfci);
- LOGP(DCS, LOGL_DEBUG, "Scanning frequency %s (rxlev %s).\n",
- gsm_print_arfcn(cs->arfcn),
- gsm_print_rxlev(cs->list[cs->arfci].rxlev));
-
- /* Allocate/clean system information. */
- cs->list[cs->arfci].flags &= ~GSM322_CS_FLAG_SYSINFO;
- if (cs->list[cs->arfci].sysinfo)
- memset(cs->list[cs->arfci].sysinfo, 0,
- sizeof(struct gsm48_sysinfo));
- else
- cs->list[cs->arfci].sysinfo = talloc_zero(l23_ctx,
- struct gsm48_sysinfo);
- if (!cs->list[cs->arfci].sysinfo)
- exit(-ENOMEM);
- cs->si = cs->list[cs->arfci].sysinfo;
- cs->sync_retries = 0;
- gsm322_sync_to_cell(cs, NULL, 0);
-
- /* increase scan counter for each maximum scan range */
- if (!ms->settings.skip_max_per_band && gsm_sup_smax[band].max) {
- LOGP(DCS, LOGL_DEBUG, "%d frequencies left in band %d..%d\n",
- gsm_sup_smax[band].max - gsm_sup_smax[band].temp,
- gsm_sup_smax[band].start, gsm_sup_smax[band].end);
- gsm_sup_smax[band].temp++;
- }
-
- return 0;
-}
-
-/* check if cell is now suitable and allowable */
-static int gsm322_cs_store(struct osmocom_ms *ms)
-{
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct gsm48_sysinfo *s = cs->si;
- struct gsm322_plmn *plmn = &ms->plmn;
- struct msgb *nmsg;
- struct gsm322_msg *ngm;
- int found, any = 0;
-
- if (cs->state != GSM322_C2_STORED_CELL_SEL
- && cs->state != GSM322_C1_NORMAL_CELL_SEL
- && cs->state != GSM322_C6_ANY_CELL_SEL
- && cs->state != GSM322_C4_NORMAL_CELL_RESEL
- && cs->state != GSM322_C8_ANY_CELL_RESEL
- && cs->state != GSM322_C5_CHOOSE_CELL
- && cs->state != GSM322_C9_CHOOSE_ANY_CELL
- && cs->state != GSM322_ANY_SEARCH
- && cs->state != GSM322_PLMN_SEARCH
- && cs->state != GSM322_HPLMN_SEARCH) {
- LOGP(DCS, LOGL_FATAL, "This must only happen during cell "
- "(re-)selection, please fix!\n");
- return -EINVAL;
- }
-
- /* store sysinfo */
- cs->list[cs->arfci].flags |= GSM322_CS_FLAG_SYSINFO;
- if (s->cell_barr && !(s->sp && s->sp_cbq))
- cs->list[cs->arfci].flags |= GSM322_CS_FLAG_BARRED;
- else
- cs->list[cs->arfci].flags &= ~GSM322_CS_FLAG_BARRED;
-
- /* store selected network */
- if (s->mcc) {
- if (gsm322_is_forbidden_la(ms, s->mcc, s->mnc, s->lac))
- cs->list[cs->arfci].flags |= GSM322_CS_FLAG_FORBIDD;
- else
- cs->list[cs->arfci].flags &= ~GSM322_CS_FLAG_FORBIDD;
- }
-
- LOGP(DCS, LOGL_DEBUG, "Scan frequency %s: Cell found. (rxlev %s "
- "mcc %s mnc %s lac %04x)\n", gsm_print_arfcn(cs->arfcn),
- gsm_print_rxlev(cs->list[cs->arfci].rxlev),
- gsm_print_mcc(s->mcc), gsm_print_mnc(s->mnc), s->lac);
-
- /* selected PLMN (auto) becomes available during "any search" */
- if (ms->settings.plmn_mode == PLMN_MODE_AUTO
- && (cs->state == GSM322_ANY_SEARCH
- || cs->state == GSM322_C6_ANY_CELL_SEL
- || cs->state == GSM322_C8_ANY_CELL_RESEL
- || cs->state == GSM322_C9_CHOOSE_ANY_CELL)
- && plmn->state == GSM322_A4_WAIT_FOR_PLMN
- && s->mcc == plmn->mcc && s->mnc == plmn->mnc) {
- LOGP(DCS, LOGL_INFO, "Candidate network to become available "
- "again\n");
- found = gsm322_cs_select(ms, cs->arfci, s->mcc, s->mnc, 0);
- if (found >= 0) {
- LOGP(DCS, LOGL_INFO, "Selected PLMN in \"A4_WAIT_F"
- "OR_PLMN\" state becomes available.\n");
-indicate_plmn_avail:
- /* PLMN becomes available */
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_PLMN_AVAIL);
- if (!nmsg)
- return -ENOMEM;
- /* set what PLMN becomes available */
- ngm = (struct gsm322_msg *) nmsg->data;
- ngm->mcc = plmn->mcc;
- ngm->mnc = plmn->mcc;
- gsm322_plmn_sendmsg(ms, nmsg);
-
- new_c_state(cs, GSM322_C0_NULL);
-
- return 0;
- }
- }
-
- /* selected PLMN (manual) becomes available during "any search" */
- if (ms->settings.plmn_mode == PLMN_MODE_MANUAL
- && (cs->state == GSM322_ANY_SEARCH
- || cs->state == GSM322_C6_ANY_CELL_SEL
- || cs->state == GSM322_C8_ANY_CELL_RESEL
- || cs->state == GSM322_C9_CHOOSE_ANY_CELL)
- && plmn->state == GSM322_M3_NOT_ON_PLMN
- && s->mcc == plmn->mcc && s->mnc == plmn->mnc) {
- LOGP(DCS, LOGL_INFO, "Candidate network to become available "
- "again\n");
- found = gsm322_cs_select(ms, cs->arfci, s->mcc, s->mnc, 0);
- if (found >= 0) {
- LOGP(DCS, LOGL_INFO, "Current selected PLMN in \"M3_N"
- "OT_ON_PLMN\" state becomes available.\n");
- goto indicate_plmn_avail;
- }
- }
-
- /* special case for PLMN search */
- if (cs->state == GSM322_PLMN_SEARCH
- || cs->state == GSM322_ANY_SEARCH)
- /* tune to next cell */
- return gsm322_cs_scan(ms);
-
- /* special case for HPLMN search */
- if (cs->state == GSM322_HPLMN_SEARCH) {
- struct gsm_subscriber *subscr = &ms->subscr;
- struct msgb *nmsg;
-
- if (!gsm322_is_hplmn_avail(cs, subscr->imsi))
- /* tune to next cell */
- return gsm322_cs_scan(ms);
-
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_CELL_FOUND);
- LOGP(DCS, LOGL_INFO, "HPLMN search finished, cell found.\n");
- if (!nmsg)
- return -ENOMEM;
- gsm322_plmn_sendmsg(ms, nmsg);
-
- return 0;
- }
-
- /* just see, if we search for any cell */
- if (cs->state == GSM322_C6_ANY_CELL_SEL
- || cs->state == GSM322_C8_ANY_CELL_RESEL
- || cs->state == GSM322_C9_CHOOSE_ANY_CELL)
- any = 1;
-
- if (cs->state == GSM322_C4_NORMAL_CELL_RESEL
- || cs->state == GSM322_C8_ANY_CELL_RESEL)
- found = gsm322_cs_reselect(ms, cs->mcc, cs->mnc, any);
- else
- found = gsm322_cs_select(ms, -1, cs->mcc, cs->mnc, any);
-
- /* if not found */
- if (found < 0) {
- LOGP(DCS, LOGL_INFO, "Cell not suitable and allowable.\n");
- /* tune to next cell */
- if (cs->state == GSM322_C4_NORMAL_CELL_RESEL
- || cs->state == GSM322_C8_ANY_CELL_RESEL)
- return gsm322_nb_scan(ms);
- else
- return gsm322_cs_scan(ms);
- }
-
- LOGP(DCS, LOGL_INFO, "Tune to frequency %d.\n", found);
- /* tune */
- cs->arfci = found;
- cs->arfcn = index2arfcn(cs->arfci);
- cs->si = cs->list[cs->arfci].sysinfo;
- cs->sync_retries = SYNC_RETRIES;
- gsm322_sync_to_cell(cs, NULL, 0);
-
- /* set selected cell */
- cs->selected = 1;
- cs->sel_arfcn = cs->arfcn;
- memcpy(&cs->sel_si, cs->si, sizeof(cs->sel_si));
- cs->sel_mcc = cs->si->mcc;
- cs->sel_mnc = cs->si->mnc;
- cs->sel_lac = cs->si->lac;
- cs->sel_id = cs->si->cell_id;
- if (ms->rrlayer.monitor) {
- vty_notify(ms, "MON: %scell selected ARFCN=%s MCC=%s MNC=%s "
- "LAC=0x%04x cellid=0x%04x (%s %s)\n",
- (any) ? "any " : "", gsm_print_arfcn(cs->sel_arfcn),
- gsm_print_mcc(cs->sel_mcc), gsm_print_mnc(cs->sel_mnc),
- cs->sel_lac, cs->sel_id,
- gsm_get_mcc(cs->sel_mcc),
- gsm_get_mnc(cs->sel_mcc, cs->sel_mnc));
- }
-
- /* tell CS process about available cell */
- LOGP(DCS, LOGL_INFO, "Cell available.\n");
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_CELL_FOUND);
- if (!nmsg)
- return -ENOMEM;
- gsm322_c_event(ms, nmsg);
- msgb_free(nmsg);
-
- return 0;
-}
-
-/* process system information when returing to idle mode */
-struct gsm322_ba_list *gsm322_cs_sysinfo_sacch(struct osmocom_ms *ms)
-{
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct gsm48_sysinfo *s;
- struct gsm322_ba_list *ba = NULL;
- int i, refer_pcs;
- uint8_t freq[128+38];
-
- if (!cs) {
- LOGP(DCS, LOGL_INFO, "No BA, because no cell selected\n");
- return ba;
- }
- s = cs->si;
- if (!s) {
- LOGP(DCS, LOGL_INFO, "No BA, because no sysinfo\n");
- return ba;
- }
-
- /* collect system information received during dedicated mode */
- if (s->si5 && (!s->nb_ext_ind_si5 || s->si5bis)) {
- /* find or create ba list */
- ba = gsm322_find_ba_list(cs, s->mcc, s->mnc);
- if (!ba) {
- ba = talloc_zero(l23_ctx, struct gsm322_ba_list);
- if (!ba)
- return NULL;
- ba->mcc = s->mcc;
- ba->mnc = s->mnc;
- llist_add_tail(&ba->entry, &cs->ba_list);
- }
- /* update (add) ba list */
- refer_pcs = gsm_refer_pcs(cs->arfcn, s);
- memset(freq, 0, sizeof(freq));
- for (i = 0; i <= 1023; i++) {
- if ((s->freq[i].mask & (FREQ_TYPE_SERV
- | FREQ_TYPE_NCELL | FREQ_TYPE_REP))) {
- if (refer_pcs && i >= 512 && i <= 810)
- freq[(i-512+1024) >> 3] |= (1 << (i&7));
- else
- freq[i >> 3] |= (1 << (i & 7));
- }
- }
- if (!!memcmp(freq, ba->freq, sizeof(freq))) {
- LOGP(DCS, LOGL_INFO, "New BA list (mcc=%s mnc=%s "
- "%s, %s).\n", gsm_print_mcc(ba->mcc),
- gsm_print_mnc(ba->mnc), gsm_get_mcc(ba->mcc),
- gsm_get_mnc(ba->mcc, ba->mnc));
- memcpy(ba->freq, freq, sizeof(freq));
- }
- }
-
- return ba;
-}
-
-/* store BA whenever a system informations changes */
-static int gsm322_store_ba_list(struct gsm322_cellsel *cs,
- struct gsm48_sysinfo *s)
-{
- struct gsm322_ba_list *ba;
- int i, refer_pcs;
- uint8_t freq[128+38];
-
- /* find or create ba list */
- ba = gsm322_find_ba_list(cs, s->mcc, s->mnc);
- if (!ba) {
- ba = talloc_zero(l23_ctx, struct gsm322_ba_list);
- if (!ba)
- return -ENOMEM;
- ba->mcc = s->mcc;
- ba->mnc = s->mnc;
- llist_add_tail(&ba->entry, &cs->ba_list);
- }
- /* update ba list */
- refer_pcs = gsm_refer_pcs(cs->arfcn, s);
- memset(freq, 0, sizeof(freq));
- freq[(cs->arfci) >> 3] |= (1 << (cs->arfci & 7));
- for (i = 0; i <= 1023; i++) {
- if ((s->freq[i].mask &
- (FREQ_TYPE_SERV | FREQ_TYPE_NCELL | FREQ_TYPE_REP))) {
- if (refer_pcs && i >= 512 && i <= 810)
- freq[(i-512+1024) >> 3] |= (1 << (i & 7));
- else
- freq[i >> 3] |= (1 << (i & 7));
- }
- }
- if (!!memcmp(freq, ba->freq, sizeof(freq))) {
- LOGP(DCS, LOGL_INFO, "New BA list (mcc=%s mnc=%s "
- "%s, %s).\n", gsm_print_mcc(ba->mcc),
- gsm_print_mnc(ba->mnc), gsm_get_mcc(ba->mcc),
- gsm_get_mnc(ba->mcc, ba->mnc));
- memcpy(ba->freq, freq, sizeof(freq));
- }
-
- return 0;
-}
-
-/* process system information during camping on a cell */
-static int gsm322_c_camp_sysinfo_bcch(struct osmocom_ms *ms, struct msgb *msg)
-{
-// struct gsm48_rrlayer *rr = &ms->rrlayer;
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct gsm48_sysinfo *s = cs->si;
- struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm322_msg *gm = (struct gsm322_msg *) msg->data;
- struct msgb *nmsg;
-
- /* start in case we are camping on neighbour cell */
- if ((cs->state == GSM322_C3_CAMPED_NORMALLY
- || cs->state == GSM322_C7_CAMPED_ANY_CELL)
- && (cs->neighbour)) {
- if (s->si3 || s->si4) {
- stop_cs_timer(cs);
- LOGP(DCS, LOGL_INFO, "Relevant sysinfo of neighbour "
- "cell is now received or updated.\n");
- return gsm322_nb_read(cs, 1);
- }
- return 0;
- }
-
- /* Store BA if we have full system info about cells and neigbor cells.
- * Depending on the extended bit in the channel description,
- * we require more or less system informations about neighbor cells
- */
- if (s->mcc
- && s->mnc
- && (gm->sysinfo == GSM48_MT_RR_SYSINFO_1
- || gm->sysinfo == GSM48_MT_RR_SYSINFO_2
- || gm->sysinfo == GSM48_MT_RR_SYSINFO_2bis
- || gm->sysinfo == GSM48_MT_RR_SYSINFO_2ter)
- && s->si1
- && s->si2
- && (!s->nb_ext_ind_si2
- || (s->si2bis && s->nb_ext_ind_si2 && !s->nb_ext_ind_si2bis)
- || (s->si2bis && s->si2ter && s->nb_ext_ind_si2
- && s->nb_ext_ind_si2bis)))
- gsm322_store_ba_list(cs, s);
-
- /* update sel_si, if all relevant system informations received */
- if (s->si1 && s->si2 && s->si3
- && (!s->nb_ext_ind_si2
- || (s->si2bis && s->nb_ext_ind_si2 && !s->nb_ext_ind_si2bis)
- || (s->si2bis && s->si2ter && s->nb_ext_ind_si2
- && s->nb_ext_ind_si2bis))) {
- if (cs->selected) {
- LOGP(DCS, LOGL_INFO, "Sysinfo of selected cell is "
- "now received or updated.\n");
- memcpy(&cs->sel_si, s, sizeof(cs->sel_si));
-
- /* start in case we are camping on serving cell */
- if (cs->state == GSM322_C3_CAMPED_NORMALLY
- || cs->state == GSM322_C7_CAMPED_ANY_CELL)
- gsm322_nb_start(ms, 0);
- }
- }
-
- /* check for barred cell */
- if (gm->sysinfo == GSM48_MT_RR_SYSINFO_1) {
- /* check if cell becomes barred */
- if (!subscr->acc_barr && s->cell_barr
- && !(cs->list[cs->arfci].sysinfo
- && cs->list[cs->arfci].sysinfo->sp
- && cs->list[cs->arfci].sysinfo->sp_cbq)) {
- LOGP(DCS, LOGL_INFO, "Cell becomes barred.\n");
- if (ms->rrlayer.monitor)
- vty_notify(ms, "MON: trigger cell re-selection"
- ": cell becomes barred\n");
- trigger_resel:
- /* mark cell as unscanned */
- cs->list[cs->arfci].flags &= ~GSM322_CS_FLAG_SYSINFO;
- if (cs->list[cs->arfci].sysinfo) {
- LOGP(DCS, LOGL_DEBUG, "free sysinfo arfcn=%s\n",
- gsm_print_arfcn(cs->arfcn));
- talloc_free(cs->list[cs->arfci].sysinfo);
- cs->list[cs->arfci].sysinfo = NULL;
- }
- /* trigger reselection without queueing,
- * because other sysinfo message may be queued
- * before
- */
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_CELL_RESEL);
- if (!nmsg)
- return -ENOMEM;
- gsm322_c_event(ms, nmsg);
- msgb_free(nmsg);
-
- return 0;
- }
- /* check if cell access becomes barred */
- if (!((subscr->acc_class & 0xfbff)
- & (s->class_barr ^ 0xffff))) {
- LOGP(DCS, LOGL_INFO, "Cell access becomes barred.\n");
- if (ms->rrlayer.monitor)
- vty_notify(ms, "MON: trigger cell re-selection"
- ": access to cell becomes barred\n");
- goto trigger_resel;
- }
- }
-
- /* check if MCC, MNC, LAC, cell ID changes */
- if (cs->sel_mcc != s->mcc || cs->sel_mnc != s->mnc
- || cs->sel_lac != s->lac) {
- LOGP(DCS, LOGL_NOTICE, "Cell changes location area. "
- "This is not good!\n");
- if (ms->rrlayer.monitor)
- vty_notify(ms, "MON: trigger cell re-selection: "
- "cell changes LAI\n");
- goto trigger_resel;
- }
- if (cs->sel_id != s->cell_id) {
- LOGP(DCS, LOGL_NOTICE, "Cell changes cell ID. "
- "This is not good!\n");
- if (ms->rrlayer.monitor)
- vty_notify(ms, "MON: trigger cell re-selection: "
- "cell changes cell ID\n");
- goto trigger_resel;
- }
-
- return 0;
-}
-
-/* process system information during channel scanning */
-static int gsm322_c_scan_sysinfo_bcch(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct gsm48_sysinfo *s = cs->si;
- struct gsm322_msg *gm = (struct gsm322_msg *) msg->data;
-
- /* no sysinfo if we are not done with power scan */
- if (cs->powerscan) {
- LOGP(DCS, LOGL_INFO, "Ignoring sysinfo during power scan.\n");
- return -EINVAL;
- }
-
- /* Store BA if we have full system info about cells and neigbor cells.
- * Depending on the extended bit in the channel description,
- * we require more or less system informations about neighbor cells
- */
- if (s->mcc
- && s->mnc
- && (gm->sysinfo == GSM48_MT_RR_SYSINFO_1
- || gm->sysinfo == GSM48_MT_RR_SYSINFO_2
- || gm->sysinfo == GSM48_MT_RR_SYSINFO_2bis
- || gm->sysinfo == GSM48_MT_RR_SYSINFO_2ter)
- && s->si1
- && s->si2
- && (!s->nb_ext_ind_si2 || s->si2bis)
- && (!s->si2ter_ind || s->si2ter))
- gsm322_store_ba_list(cs, s);
-
- /* all relevant system informations received */
- if (s->si1 && s->si2 && s->si3
- && (!s->nb_ext_ind_si2 || s->si2bis)
- && (!s->si2ter_ind || s->si2ter)) {
- LOGP(DCS, LOGL_DEBUG, "Received relevant sysinfo.\n");
- /* stop timer */
- stop_cs_timer(cs);
-
- //gsm48_sysinfo_dump(s, print_dcs, NULL);
-
- /* store sysinfo and continue scan */
- return gsm322_cs_store(ms);
- }
-
- /* wait for more sysinfo or timeout */
- return 0;
-}
-
-static void gsm322_cs_timeout(void *arg)
-{
- struct gsm322_cellsel *cs = arg;
- struct osmocom_ms *ms = cs->ms;
-
- if (cs->neighbour) {
- LOGP(DCS, LOGL_INFO, "Neighbour cell read failed.\n");
- gsm322_nb_read(cs, 0);
- return;
- }
-
- /* if we have no lock, we retry */
- if (cs->ccch_state != GSM322_CCCH_ST_SYNC)
- LOGP(DCS, LOGL_INFO, "Cell selection failed, sync timeout.\n");
- else
- LOGP(DCS, LOGL_INFO, "Cell selection failed, read timeout.\n");
-
- /* remove system information */
- cs->list[cs->arfci].flags &= ~GSM322_CS_FLAG_SYSINFO;
- if (cs->list[cs->arfci].sysinfo) {
- LOGP(DCS, LOGL_DEBUG, "free sysinfo arfcn=%s\n",
- gsm_print_arfcn(cs->arfcn));
- talloc_free(cs->list[cs->arfci].sysinfo);
- cs->list[cs->arfci].sysinfo = NULL;
- }
-
- /* tune to next cell */
- if (cs->state == GSM322_C4_NORMAL_CELL_RESEL
- || cs->state == GSM322_C8_ANY_CELL_RESEL)
- gsm322_nb_scan(ms);
- else
- gsm322_cs_scan(ms);
-
- return;
-}
-
-/*
- * power scan process
- */
-
-/* search for block of unscanned frequencies and start scanning */
-static int gsm322_cs_powerscan(struct osmocom_ms *ms)
-{
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct gsm_settings *set = &ms->settings;
- int i, s = -1, e;
- uint8_t mask, flags;
-
- again:
-
- mask = GSM322_CS_FLAG_SUPPORT | GSM322_CS_FLAG_POWER;
- flags = GSM322_CS_FLAG_SUPPORT;
-
- /* in case of sticking to a cell, we only select it */
- if (set->stick) {
- LOGP(DCS, LOGL_DEBUG, "Scanning power for sticked cell.\n");
- i = arfcn2index(set->stick_arfcn);
- if ((cs->list[i].flags & mask) == flags)
- s = e = i;
- } else {
- /* search for first frequency to scan */
- if (cs->state == GSM322_C2_STORED_CELL_SEL
- || cs->state == GSM322_C5_CHOOSE_CELL) {
- LOGP(DCS, LOGL_DEBUG, "Scanning power for stored BA "
- "list.\n");
- mask |= GSM322_CS_FLAG_BA;
- flags |= GSM322_CS_FLAG_BA;
- } else
- LOGP(DCS, LOGL_DEBUG, "Scanning power for all "
- "frequencies.\n");
- for (i = 0; i <= 1023+299; i++) {
- if ((cs->list[i].flags & mask) == flags) {
- s = e = i;
- break;
- }
- }
- }
-
- /* if there is no more frequency, we can tune to that cell */
- if (s < 0) {
- int found = 0;
-
- /* stop power level scanning */
- cs->powerscan = 0;
-
- /* check if no signal is found */
- for (i = 0; i <= 1023+299; i++) {
- if ((cs->list[i].flags & GSM322_CS_FLAG_SIGNAL))
- found++;
- }
- if (!found) {
- LOGP(DCS, LOGL_INFO, "Found no frequency.\n");
- /* on normal cell selection, start over */
- if (cs->state == GSM322_C1_NORMAL_CELL_SEL) {
- for (i = 0; i <= 1023+299; i++) {
- /* clear flag that this was scanned */
- cs->list[i].flags &=
- ~(GSM322_CS_FLAG_POWER
- | GSM322_CS_FLAG_SIGNAL
- | GSM322_CS_FLAG_SYSINFO);
- }
- goto again;
- }
-
- /* freq. scan process done, process (negative) result */
- return gsm322_search_end(ms);
- }
- LOGP(DCS, LOGL_INFO, "Found %d frequencies.\n", found);
- cs->scan_state = 0xffffffff; /* higher than high */
- /* clear counter of scanned frequencies of each range */
- for (i = 0; gsm_sup_smax[i].max; i++)
- gsm_sup_smax[i].temp = 0;
- return gsm322_cs_scan(ms);
- }
-
- /* search last frequency to scan (en block) */
- e = i;
- if (!set->stick) {
- for (i = s + 1; i <= 1023+299; i++) {
- if (i == 1024)
- break;
- if ((cs->list[i].flags & mask) == flags)
- e = i;
- else
- break;
- }
- }
-
- LOGP(DCS, LOGL_DEBUG, "Scanning frequencies. (%s..%s)\n",
- gsm_print_arfcn(index2arfcn(s)),
- gsm_print_arfcn(index2arfcn(e)));
-
- /* start scan on radio interface */
- if (!cs->powerscan) {
- l1ctl_tx_reset_req(ms, L1CTL_RES_T_FULL);
- cs->powerscan = 1;
- }
- cs->sync_pending = 0;
- return l1ctl_tx_pm_req_range(ms, index2arfcn(s), index2arfcn(e));
-}
-
-int gsm322_l1_signal(unsigned int subsys, unsigned int signal,
- void *handler_data, void *signal_data)
-{
- struct osmocom_ms *ms;
- struct gsm322_cellsel *cs;
- struct osmobb_meas_res *mr;
- struct osmobb_fbsb_res *fr;
- struct osmobb_neigh_pm_ind *ni;
- int i;
- int8_t rxlev;
-
- if (subsys != SS_L1CTL)
- return 0;
-
- switch (signal) {
- case S_L1CTL_PM_RES:
- mr = signal_data;
- ms = mr->ms;
- cs = &ms->cellsel;
- if (!cs->powerscan)
- return -EINVAL;
- i = arfcn2index(mr->band_arfcn);
- rxlev = mr->rx_lev;
- if ((cs->list[i].flags & GSM322_CS_FLAG_POWER)) {
- LOGP(DCS, LOGL_ERROR, "Getting PM for ARFCN %s "
- "twice. Overwriting the first! Please fix "
- "prim_pm.c\n", gsm_print_arfcn(index2arfcn(i)));
- }
- cs->list[i].rxlev = rxlev;
- cs->list[i].flags |= GSM322_CS_FLAG_POWER;
- cs->list[i].flags &= ~GSM322_CS_FLAG_SIGNAL;
- /* if minimum level is reached or if we stick to a cell */
- if (rxlev2dbm(rxlev) >= ms->settings.min_rxlev_db
- || ms->settings.stick) {
- cs->list[i].flags |= GSM322_CS_FLAG_SIGNAL;
- LOGP(DCS, LOGL_INFO, "Found signal (ARFCN %s "
- "rxlev %s (%d))\n",
- gsm_print_arfcn(index2arfcn(i)),
- gsm_print_rxlev(rxlev), rxlev);
- } else
- /* no signal found, free sysinfo, if allocated */
- if (cs->list[i].sysinfo) {
- cs->list[i].flags &= ~GSM322_CS_FLAG_SYSINFO;
- LOGP(DCS, LOGL_DEBUG, "free sysinfo ARFCN=%s\n",
- gsm_print_arfcn(index2arfcn(i)));
- talloc_free(cs->list[i].sysinfo);
- cs->list[i].sysinfo = NULL;
- }
- break;
- case S_L1CTL_PM_DONE:
- LOGP(DCS, LOGL_DEBUG, "Done with power scanning range.\n");
- ms = signal_data;
- cs = &ms->cellsel;
- if (!cs->powerscan)
- return -EINVAL;
- gsm322_cs_powerscan(ms);
- break;
- case S_L1CTL_FBSB_RESP:
- fr = signal_data;
- ms = fr->ms;
- cs = &ms->cellsel;
- if (cs->powerscan)
- return -EINVAL;
- cs->sync_pending = 0;
- if (cs->arfcn != fr->band_arfcn) {
- LOGP(DCS, LOGL_NOTICE, "Channel synched on "
- "wrong ARFCN=%d, syncing on right ARFCN again"
- "...\n", fr->band_arfcn);
- cs->sync_retries = SYNC_RETRIES;
- gsm322_sync_to_cell(cs, cs->neighbour, 0);
- break;
- }
- if (cs->ccch_state == GSM322_CCCH_ST_INIT) {
- LOGP(DCS, LOGL_INFO, "Channel synched. (ARFCN=%s, "
- "snr=%u, BSIC=%u)\n",
- gsm_print_arfcn(cs->arfcn), fr->snr, fr->bsic);
- cs->ccch_state = GSM322_CCCH_ST_SYNC;
- if (cs->si)
- cs->si->bsic = fr->bsic;
-
- /* set timer for reading BCCH */
- if (cs->state == GSM322_C2_STORED_CELL_SEL
- || cs->state == GSM322_C1_NORMAL_CELL_SEL
- || cs->state == GSM322_C6_ANY_CELL_SEL
- || cs->state == GSM322_C4_NORMAL_CELL_RESEL
- || cs->state == GSM322_C8_ANY_CELL_RESEL
- || cs->state == GSM322_C5_CHOOSE_CELL
- || cs->state == GSM322_C9_CHOOSE_ANY_CELL
- || cs->state == GSM322_ANY_SEARCH
- || cs->state == GSM322_PLMN_SEARCH
- || cs->state == GSM322_HPLMN_SEARCH)
- start_cs_timer(cs, ms->support.scan_to, 0);
- // TODO: timer depends on BCCH config
-
- /* set downlink signalling failure criterion */
- ms->meas.ds_fail = ms->meas.dsc = ms->settings.dsc_max;
- LOGP(DRR, LOGL_INFO, "using DSC of %d\n", ms->meas.dsc);
-
- /* start in case we are camping on serving/neighbour
- * cell */
- if (cs->state == GSM322_C3_CAMPED_NORMALLY
- || cs->state == GSM322_C7_CAMPED_ANY_CELL) {
- if (cs->neighbour)
- gsm322_nb_synced(cs, 1);
- else
- gsm322_nb_start(ms, 1);
- }
- }
- break;
- case S_L1CTL_FBSB_ERR:
- fr = signal_data;
- ms = fr->ms;
- cs = &ms->cellsel;
- if (cs->powerscan)
- return -EINVAL;
- cs->sync_pending = 0;
- /* retry */
- if (cs->sync_retries) {
- LOGP(DCS, LOGL_INFO, "Channel sync error, try again\n");
- cs->sync_retries--;
- gsm322_sync_to_cell(cs, cs->neighbour, 0);
- break;
- }
- if (cs->arfcn != fr->band_arfcn) {
- LOGP(DCS, LOGL_NOTICE, "Channel synched failed on "
- "wrong ARFCN=%d, syncing on right ARFCN again"
- "...\n", fr->band_arfcn);
- cs->sync_retries = SYNC_RETRIES;
- gsm322_sync_to_cell(cs, cs->neighbour, 0);
- break;
- }
- LOGP(DCS, LOGL_INFO, "Channel sync error.\n");
- /* no sync, free sysinfo, if allocated */
- if (cs->list[cs->arfci].sysinfo) {
- cs->list[cs->arfci].flags &= ~GSM322_CS_FLAG_SYSINFO;
- LOGP(DCS, LOGL_DEBUG, "free sysinfo ARFCN=%s\n",
- gsm_print_arfcn(index2arfcn(cs->arfci)));
- talloc_free(cs->list[cs->arfci].sysinfo);
- cs->list[cs->arfci].sysinfo = NULL;
-
- }
- if (cs->selected && cs->sel_arfcn == cs->arfcn) {
- LOGP(DCS, LOGL_INFO, "Unselect cell due to sync "
- "error!\n");
- /* unset selected cell */
- gsm322_unselect_cell(cs);
- }
- stop_cs_timer(cs);
-
- /* start in case we are camping on neighbour * cell */
- if (cs->state == GSM322_C3_CAMPED_NORMALLY
- || cs->state == GSM322_C7_CAMPED_ANY_CELL) {
- if (cs->neighbour) {
- gsm322_nb_synced(cs, 0);
- break;
- }
- }
-
- gsm322_cs_loss(cs);
- break;
- case S_L1CTL_LOSS_IND:
- ms = signal_data;
- cs = &ms->cellsel;
- LOGP(DCS, LOGL_INFO, "Loss of CCCH.\n");
- if (cs->selected && cs->sel_arfcn == cs->arfcn) {
- LOGP(DCS, LOGL_INFO, "Unselect cell due to loss\n");
- /* unset selected cell */
- gsm322_unselect_cell(cs);
- }
- stop_cs_timer(cs);
- gsm322_cs_loss(cs);
- break;
- case S_L1CTL_RESET:
- ms = signal_data;
- if (ms->mmlayer.power_off_idle) {
- mobile_exit(ms, 1);
- return 0;
- }
- break;
- case S_L1CTL_NEIGH_PM_IND:
- ni = signal_data;
- ms = ni->ms;
-#ifdef COMMING_LATE_R
- /* in dedicated mode */
- if (ms->rrlayer.dm_est)
- gsm48_rr_meas_ind(ms, ni->band_arfcn, ni->rx_lev);
- else
-#endif
- /* in camping mode */
- if ((ms->cellsel.state == GSM322_C3_CAMPED_NORMALLY
- || ms->cellsel.state == GSM322_C7_CAMPED_ANY_CELL)
- && !ms->cellsel.neighbour)
- gsm322_nb_meas_ind(ms, ni->band_arfcn, ni->rx_lev);
- break;
- }
-
- return 0;
-}
-
-static void gsm322_cs_loss(void *arg)
-{
- struct gsm322_cellsel *cs = arg;
- struct osmocom_ms *ms = cs->ms;
-
- if ((cs->state == GSM322_C3_CAMPED_NORMALLY
- || cs->state == GSM322_C7_CAMPED_ANY_CELL)
- && !cs->neighbour) {
- struct msgb *nmsg;
-
- LOGP(DCS, LOGL_INFO, "Loss of CCCH, Trigger "
- "re-selection.\n");
- if (ms->rrlayer.monitor)
- vty_notify(ms, "MON: trigger cell "
- "re-selection: loss of signal\n");
-
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_CELL_RESEL);
- if (!nmsg)
- return;
- gsm322_c_event(ms, nmsg);
- msgb_free(nmsg);
-
- return;
- } else
- if (cs->state == GSM322_CONNECTED_MODE_1
- || cs->state == GSM322_CONNECTED_MODE_2) {
- LOGP(DCS, LOGL_INFO, "Loss of SACCH, Trigger RR "
- "abort.\n");
-
- /* keep cell info for re-selection */
-
- gsm48_rr_los(ms);
- /* be shure that nothing else is done after here
- * because the function call above may cause
- * to return from idle state and trigger cell re-sel.
- */
-
- return;
- }
-
- gsm322_cs_timeout(cs);
-
- return;
-}
-
-/*
- * handler for cell selection process
- */
-
-/* start any cell search */
-static int gsm322_c_any_search(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm322_cellsel *cs = &ms->cellsel;
- int i;
-
- new_c_state(cs, GSM322_ANY_SEARCH);
-
- /* mark all frequencies as scanned */
- for (i = 0; i <= 1023+299; i++) {
- cs->list[i].flags &= ~(GSM322_CS_FLAG_POWER
- | GSM322_CS_FLAG_SIGNAL
- | GSM322_CS_FLAG_SYSINFO);
- }
-
- /* start power scan */
- return gsm322_cs_powerscan(ms);
-}
-
-/* start PLMN search */
-static int gsm322_c_plmn_search(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm322_cellsel *cs = &ms->cellsel;
- int i;
-
- new_c_state(cs, GSM322_PLMN_SEARCH);
-
- /* mark all frequencies as scanned */
- for (i = 0; i <= 1023+299; i++) {
- cs->list[i].flags &= ~(GSM322_CS_FLAG_POWER
- | GSM322_CS_FLAG_SIGNAL
- | GSM322_CS_FLAG_SYSINFO);
- }
-
- /* unset selected cell */
- gsm322_unselect_cell(cs);
-
- /* start power scan */
- return gsm322_cs_powerscan(ms);
-}
-
-/* start HPLMN search */
-static int gsm322_c_hplmn_search(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm322_cellsel *cs = &ms->cellsel;
- int i, sel_i = arfcn2index(cs->sel_arfcn);
-
- new_c_state(cs, GSM322_HPLMN_SEARCH);
-
- /* mark all frequencies except our own BA as unscanned */
- for (i = 0; i <= 1023+299; i++) {
- if (i != sel_i
- && (cs->list[i].flags & GSM322_CS_FLAG_SYSINFO)
- && !(cs->list[i].flags & GSM322_CS_FLAG_BA)) {
- cs->list[i].flags &= ~(GSM322_CS_FLAG_POWER
- | GSM322_CS_FLAG_SIGNAL
- | GSM322_CS_FLAG_SYSINFO);
- }
- }
-
- /* start power scan */
- return gsm322_cs_powerscan(ms);
-}
-
-/* start stored cell selection */
-static int gsm322_c_stored_cell_sel(struct osmocom_ms *ms,
- struct gsm322_ba_list *ba)
-{
- struct gsm322_cellsel *cs = &ms->cellsel;
- int i;
-
- /* we weed to rescan */
- for (i = 0; i <= 1023+299; i++) {
- cs->list[i].flags &= ~(GSM322_CS_FLAG_POWER
- | GSM322_CS_FLAG_SIGNAL
- | GSM322_CS_FLAG_SYSINFO);
- }
-
- new_c_state(cs, GSM322_C2_STORED_CELL_SEL);
-
- /* flag all frequencies that are in current band allocation */
- for (i = 0; i <= 1023+299; i++) {
- if ((ba->freq[i >> 3] & (1 << (i & 7))))
- cs->list[i].flags |= GSM322_CS_FLAG_BA;
- else
- cs->list[i].flags &= ~GSM322_CS_FLAG_BA;
- }
-
- /* unset selected cell */
- gsm322_unselect_cell(cs);
-
- /* start power scan */
- return gsm322_cs_powerscan(ms);
-}
-
-/* start noraml cell selection */
-static int gsm322_c_normal_cell_sel(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm322_cellsel *cs = &ms->cellsel;
- int i;
-
- /* except for stored cell selection state, we weed to rescan */
- if (cs->state != GSM322_C2_STORED_CELL_SEL) {
- for (i = 0; i <= 1023+299; i++) {
- cs->list[i].flags &= ~(GSM322_CS_FLAG_POWER
- | GSM322_CS_FLAG_SIGNAL
- | GSM322_CS_FLAG_SYSINFO);
- }
- }
-
- new_c_state(cs, GSM322_C1_NORMAL_CELL_SEL);
-
- /* unset selected cell */
- gsm322_unselect_cell(cs);
-
- /* start power scan */
- return gsm322_cs_powerscan(ms);
-}
-
-/* start any cell selection */
-static int gsm322_c_any_cell_sel(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct gsm322_msg *gm = (struct gsm322_msg *) msg->data;
- int msg_type = gm->msg_type;
-
- /* in case we already tried any cell (re-)selection, power scan again */
- if (cs->state == GSM322_C0_NULL
- || cs->state == GSM322_C6_ANY_CELL_SEL
- || cs->state == GSM322_C8_ANY_CELL_RESEL) {
- int i;
-
- for (i = 0; i <= 1023+299; i++) {
- cs->list[i].flags &= ~(GSM322_CS_FLAG_POWER
- | GSM322_CS_FLAG_SIGNAL
- | GSM322_CS_FLAG_SYSINFO);
- }
-
- /* indicate to MM that we lost coverage.
- * this is the only case where we really have no coverage.
- * we tell MM, so it will enter the "No Cell Avaiable" state. */
- if (msg_type == GSM322_EVENT_NO_CELL_FOUND) {
- struct msgb *nmsg;
-
- /* tell that we have no cell found
- * (not any cell at all) */
- nmsg = gsm48_mmevent_msgb_alloc(
- GSM48_MM_EVENT_NO_CELL_FOUND);
- if (!nmsg)
- return -ENOMEM;
- gsm48_mmevent_msg(ms, nmsg);
- }
- }
-
- new_c_state(cs, GSM322_C6_ANY_CELL_SEL);
-
- cs->mcc = cs->mnc = 0;
-
- /* unset selected cell */
- gsm322_unselect_cell(cs);
-
- /* start power scan */
- return gsm322_cs_powerscan(ms);
-}
-
-static void gsm322_any_timeout(void *arg)
-{
- struct gsm322_cellsel *cs = arg;
- struct osmocom_ms *ms = cs->ms;
-
- /* the timer may still run when not camping, so we ignore it.
- * it will be restarted whenever the 'camped on any cell' state
- * is reached. */
- if (cs->state != GSM322_C7_CAMPED_ANY_CELL)
- return;
-
- /* in case the time has been started before SIM was removed */
- if (!ms->subscr.sim_valid)
- return;
-
- LOGP(DCS, LOGL_INFO, "'Any cell selection timer' timed out. "
- "Starting special search to find allowed PLMNs.\n");
-
- gsm322_c_any_search(ms, NULL);
-}
-
-/* sim is removed, proceed with any cell selection */
-static int gsm322_c_sim_remove(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm322_plmn *plmn = &ms->plmn;
- struct llist_head *lh, *lh2;
-
- /* flush list of forbidden LAs */
- llist_for_each_safe(lh, lh2, &plmn->forbidden_la) {
- llist_del(lh);
- talloc_free(lh);
- }
- return gsm322_c_any_cell_sel(ms, msg);
-}
-
-/* start noraml cell re-selection */
-static int gsm322_c_normal_cell_resel(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct msgb *nmsg;
-
- /* store last camped cell. this is required for next cell
- * monitoring reselection criterion */
- cs->last_serving_arfcn = cs->sel_arfcn;
- cs->last_serving_valid = 1;
-
- /* unset selected cell */
- gsm322_unselect_cell(cs);
-
- /* tell MM that we lost coverage */
- nmsg = gsm48_mmevent_msgb_alloc(GSM48_MM_EVENT_LOST_COVERAGE);
- if (!nmsg)
- return -ENOMEM;
- gsm48_mmevent_msg(ms, nmsg);
-
- new_c_state(cs, GSM322_C4_NORMAL_CELL_RESEL);
-
- /* start scanning neighbour cells for reselection */
- return gsm322_nb_scan(ms);
-}
-
-/* start any cell re-selection */
-static int gsm322_c_any_cell_resel(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct msgb *nmsg;
-
- /* store last camped cell. this is required for next cell
- * monitoring reselection criterion */
- cs->last_serving_arfcn = cs->sel_arfcn;
- cs->last_serving_valid = 1;
-
- /* unset selected cell */
- gsm322_unselect_cell(cs);
-
- /* tell MM that we lost coverage */
- nmsg = gsm48_mmevent_msgb_alloc(GSM48_MM_EVENT_LOST_COVERAGE);
- if (!nmsg)
- return -ENOMEM;
- gsm48_mmevent_msg(ms, nmsg);
-
- new_c_state(cs, GSM322_C8_ANY_CELL_RESEL);
-
- /* start scanning neighbour cells for reselection */
- return gsm322_nb_scan(ms);
-}
-
-/* a suitable cell was found, so we camp normally */
-static int gsm322_c_camp_normally(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct msgb *nmsg;
-
- LOGP(DSUM, LOGL_INFO, "Camping normally on cell (ARFCN=%s mcc=%s "
- "mnc=%s %s, %s)\n", gsm_print_arfcn(cs->sel_arfcn),
- gsm_print_mcc(cs->sel_mcc),
- gsm_print_mnc(cs->sel_mnc), gsm_get_mcc(cs->sel_mcc),
- gsm_get_mnc(cs->sel_mcc, cs->sel_mnc));
-
- /* if we did cell reselection, we have a valid last serving cell */
- if (cs->state != GSM322_C4_NORMAL_CELL_RESEL)
- cs->last_serving_valid = 0;
-
- /* tell that we have selected a (new) cell */
- nmsg = gsm48_mmevent_msgb_alloc(GSM48_MM_EVENT_CELL_SELECTED);
- if (!nmsg)
- return -ENOMEM;
- gsm48_mmevent_msg(ms, nmsg);
-
- new_c_state(cs, GSM322_C3_CAMPED_NORMALLY);
-
- return 0;
-}
-
-/* any cell was found, so we camp on any cell */
-static int gsm322_c_camp_any_cell(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct msgb *nmsg;
-
- LOGP(DSUM, LOGL_INFO, "Camping on any cell (ARFCN=%s mcc=%s "
- "mnc=%s %s, %s)\n", gsm_print_arfcn(cs->sel_arfcn),
- gsm_print_mcc(cs->sel_mcc),
- gsm_print_mnc(cs->sel_mnc), gsm_get_mcc(cs->sel_mcc),
- gsm_get_mnc(cs->sel_mcc, cs->sel_mnc));
-
- /* (re-)starting 'any cell selection' timer to look for coverage of
- * allowed PLMNs.
- * start timer, if not running.
- * restart timer, if we just entered the 'camped any cell' state */
- if (ms->subscr.sim_valid
- && (cs->state != GSM322_C8_ANY_CELL_RESEL
- || !osmo_timer_pending(&cs->any_timer))) {
- struct gsm322_plmn *plmn = &ms->plmn;
-
- stop_any_timer(cs);
- if (ms->settings.plmn_mode == PLMN_MODE_MANUAL
- && (!plmn->mcc
- || gsm_subscr_is_forbidden_plmn(&ms->subscr, plmn->mcc,
- plmn->mnc))) {
- LOGP(DCS, LOGL_INFO, "Not starting 'any search' timer, "
- "because no selected PLMN or forbidden\n");
- } else
- start_any_timer(cs, ms->subscr.any_timeout, 0);
- }
-
- /* if we did cell reselection, we have a valid last serving cell */
- if (cs->state != GSM322_C8_ANY_CELL_RESEL)
- cs->last_serving_valid = 0;
-
- /* tell that we have selected a (new) cell.
- * this cell iss not allowable, so the MM state will enter limited
- * service */
- if (cs->state != GSM322_C7_CAMPED_ANY_CELL) {
- nmsg = gsm48_mmevent_msgb_alloc(GSM48_MM_EVENT_CELL_SELECTED);
- if (!nmsg)
- return -ENOMEM;
- gsm48_mmevent_msg(ms, nmsg);
- }
-
- new_c_state(cs, GSM322_C7_CAMPED_ANY_CELL);
-
- return 0;
-}
-
-/* create temporary ba range with given frequency ranges */
-struct gsm322_ba_list *gsm322_cs_ba_range(struct osmocom_ms *ms,
- uint32_t *range, uint8_t ranges, uint8_t refer_pcs)
-{
- static struct gsm322_ba_list ba;
- int lower, higher;
-
- memset(&ba, 0, sizeof(ba));
-
- while(ranges--) {
- lower = *range & 1023;
- higher = (*range >> 16) & 1023;
- if (refer_pcs && lower >= 512 && lower <= 810) {
- if (higher < 512 || higher > 810 || higher < lower) {
- LOGP(DCS, LOGL_NOTICE, "Illegal PCS range: "
- "%d..%d\n", lower, higher);
- range++;
- continue;
- }
- lower += 1024-512;
- higher += 1024-512;
- }
- range++;
- LOGP(DCS, LOGL_INFO, "Use BA range: %s..%s\n",
- gsm_print_arfcn(index2arfcn(lower)),
- gsm_print_arfcn(index2arfcn(higher)));
- /* GSM 05.08 6.3 */
- while (1) {
- ba.freq[lower >> 3] |= 1 << (lower & 7);
- if (lower == higher)
- break;
- lower++;
- /* wrap arround, only if not PCS */
- if (lower == 1024)
- lower = 0;
- }
- }
-
- return &ba;
-}
-
-/* common part of gsm322_c_choose_cell and gsm322_c_choose_any_cell */
-static int gsm322_cs_choose(struct osmocom_ms *ms)
-{
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- struct gsm322_ba_list *ba = NULL;
- int i;
-
- /* NOTE: The call to this function is synchron to RR layer, so
- * we may access the BA range there.
- */
- if (rr->ba_ranges)
- ba = gsm322_cs_ba_range(ms, rr->ba_range, rr->ba_ranges,
- gsm_refer_pcs(cs->sel_arfcn, &cs->sel_si));
- else {
- LOGP(DCS, LOGL_INFO, "No BA range(s), try sysinfo.\n");
- /* get and update BA of last received sysinfo 5* */
- ba = gsm322_cs_sysinfo_sacch(ms);
- if (!ba) {
- LOGP(DCS, LOGL_INFO, "No BA on sysinfo, try stored "
- "BA list.\n");
- ba = gsm322_find_ba_list(cs, cs->sel_si.mcc,
- cs->sel_si.mnc);
- }
- }
-
- if (!ba) {
- struct msgb *nmsg;
-
- LOGP(DCS, LOGL_INFO, "No BA list to use.\n");
-
- /* tell CS to start over */
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_NO_CELL_FOUND);
- if (!nmsg)
- return -ENOMEM;
- gsm322_c_event(ms, nmsg);
- msgb_free(nmsg);
-
- return 0;
- }
-
- /* flag all frequencies that are in current band allocation */
- for (i = 0; i <= 1023+299; i++) {
- if (cs->state == GSM322_C5_CHOOSE_CELL) {
- if ((ba->freq[i >> 3] & (1 << (i & 7)))) {
- cs->list[i].flags |= GSM322_CS_FLAG_BA;
- } else {
- cs->list[i].flags &= ~GSM322_CS_FLAG_BA;
- }
- }
- cs->list[i].flags &= ~(GSM322_CS_FLAG_POWER
- | GSM322_CS_FLAG_SIGNAL
- | GSM322_CS_FLAG_SYSINFO);
- }
-
- /* unset selected cell */
- gsm322_unselect_cell(cs);
-
- /* start power scan */
- return gsm322_cs_powerscan(ms);
-}
-
-/* start 'Choose cell' after returning to idle mode */
-static int gsm322_c_choose_cell(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct gsm322_msg *gm = (struct gsm322_msg *) msg->data;
-
- /* After location updating, we choose the last cell */
- if (gm->same_cell) {
- struct msgb *nmsg;
-
- if (!cs->selected) {
- LOGP(DCS, LOGL_INFO, "Cell not selected anymore, "
- "choose cell!\n");
- goto choose;
- }
- cs->arfcn = cs->sel_arfcn;
- cs->arfci = arfcn2index(cs->arfcn);
-
- /* be sure to go to current camping frequency on return */
- LOGP(DCS, LOGL_INFO, "Selecting ARFCN %s. after LOC.UPD.\n",
- gsm_print_arfcn(cs->arfcn));
- cs->sync_retries = SYNC_RETRIES;
- gsm322_sync_to_cell(cs, NULL, 0);
- cs->si = cs->list[cs->arfci].sysinfo;
- if (!cs->si) {
- printf("No SI when ret.idle, please fix!\n");
- exit(0L);
- }
-
- new_c_state(cs, GSM322_C3_CAMPED_NORMALLY);
-
- /* tell that we have selected the cell, so RR returns IDLE */
- nmsg = gsm48_mmevent_msgb_alloc(GSM48_MM_EVENT_CELL_SELECTED);
- if (!nmsg)
- return -ENOMEM;
- gsm48_mmevent_msg(ms, nmsg);
-
- return 0;
- }
-
-choose:
- new_c_state(cs, GSM322_C5_CHOOSE_CELL);
-
- return gsm322_cs_choose(ms);
-}
-
-/* start 'Choose any cell' after returning to idle mode */
-static int gsm322_c_choose_any_cell(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm322_cellsel *cs = &ms->cellsel;
-
- new_c_state(cs, GSM322_C9_CHOOSE_ANY_CELL);
-
- return gsm322_cs_choose(ms);
-}
-
-/* a new PLMN is selected by PLMN search process */
-static int gsm322_c_new_plmn(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm322_msg *gm = (struct gsm322_msg *) msg->data;
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct gsm322_plmn *plmn = &ms->plmn;
- struct gsm322_ba_list *ba;
-
- cs->mcc = plmn->mcc;
- cs->mnc = plmn->mnc;
-
- if (gm->limited) {
- LOGP(DCS, LOGL_INFO, "Selected PLMN with limited service.\n");
- return gsm322_c_any_cell_sel(ms, msg);
- }
-
- LOGP(DSUM, LOGL_INFO, "Selecting PLMN (mcc=%s mnc=%s %s, %s)\n",
- gsm_print_mcc(cs->mcc), gsm_print_mnc(cs->mnc),
- gsm_get_mcc(cs->mcc), gsm_get_mnc(cs->mcc, cs->mnc));
-
- /* search for BA list */
- ba = gsm322_find_ba_list(cs, plmn->mcc, plmn->mnc);
-
- if (ba) {
- LOGP(DCS, LOGL_INFO, "Start stored cell selection.\n");
- return gsm322_c_stored_cell_sel(ms, ba);
- } else {
- LOGP(DCS, LOGL_INFO, "Start normal cell selection.\n");
- return gsm322_c_normal_cell_sel(ms, msg);
- }
-}
-
-/* go connected mode */
-static int gsm322_c_conn_mode_1(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm322_cellsel *cs = &ms->cellsel;
-
- /* check for error */
- if (!cs->selected) {
- LOGP(DCS, LOGL_INFO, "No cell selected, please fix!\n");
- exit(0L);
- }
- cs->arfcn = cs->sel_arfcn;
- cs->arfci = arfcn2index(cs->arfcn);
-
- /* maybe we are currently syncing to neighbours */
- stop_cs_timer(cs);
-
- new_c_state(cs, GSM322_CONNECTED_MODE_1);
-
- /* be sure to go to current camping frequency on return */
- LOGP(DCS, LOGL_INFO, "Going to camping (normal) ARFCN %s.\n",
- gsm_print_arfcn(cs->arfcn));
- cs->si = cs->list[cs->arfci].sysinfo;
- if (!cs->si) {
- printf("No SI when leaving idle, please fix!\n");
- exit(0L);
- }
- cs->sync_retries = SYNC_RETRIES;
- gsm322_sync_to_cell(cs, NULL, 1);
-
- return 0;
-}
-
-static int gsm322_c_conn_mode_2(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm322_cellsel *cs = &ms->cellsel;
-
- /* check for error */
- if (!cs->selected) {
- LOGP(DCS, LOGL_INFO, "No cell selected, please fix!\n");
- exit(0L);
- }
- cs->arfcn = cs->sel_arfcn;
- cs->arfci = arfcn2index(cs->arfcn);
-
- stop_cs_timer(cs);
-
- new_c_state(cs, GSM322_CONNECTED_MODE_2);
-
- /* be sure to go to current camping frequency on return */
- LOGP(DCS, LOGL_INFO, "Going to camping (any cell) ARFCN %s.\n",
- gsm_print_arfcn(cs->arfcn));
- cs->si = cs->list[cs->arfci].sysinfo;
- if (!cs->si) {
- printf("No SI when leaving idle, please fix!\n");
- exit(0L);
- }
- cs->sync_retries = SYNC_RETRIES;
- gsm322_sync_to_cell(cs, NULL, 1);
-
- return 0;
-}
-
-/* switch on */
-static int gsm322_c_switch_on(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm_subscriber *subscr = &ms->subscr;
-
- /* if no SIM is is MS */
- if (!subscr->sim_valid) {
- LOGP(DCS, LOGL_INFO, "Switch on without SIM.\n");
- return gsm322_c_any_cell_sel(ms, msg);
- }
- LOGP(DCS, LOGL_INFO, "Switch on with SIM inserted.\n");
-
- /* stay in NULL state until PLMN is selected */
-
- return 0;
-}
-
-/*
- * state machines
- */
-
-/* state machine for automatic PLMN selection events */
-static struct plmnastatelist {
- uint32_t states;
- int type;
- int (*rout) (struct osmocom_ms *ms, struct msgb *msg);
-} plmnastatelist[] = {
- {SBIT(GSM322_A0_NULL),
- GSM322_EVENT_SWITCH_ON, gsm322_a_switch_on},
-
- /* special case for full search */
- {SBIT(GSM322_A0_NULL),
- GSM322_EVENT_PLMN_SEARCH_END, gsm322_a_sel_first_plmn},
-
- {ALL_STATES,
- GSM322_EVENT_SWITCH_OFF, gsm322_a_switch_off},
-
- {SBIT(GSM322_A0_NULL) | SBIT(GSM322_A6_NO_SIM),
- GSM322_EVENT_SIM_INSERT, gsm322_a_switch_on},
-
- {ALL_STATES,
- GSM322_EVENT_SIM_INSERT, gsm322_a_sim_insert},
-
- {ALL_STATES,
- GSM322_EVENT_SIM_REMOVE, gsm322_a_sim_removed},
-
- {ALL_STATES,
- GSM322_EVENT_INVALID_SIM, gsm322_a_sim_removed},
-
- {SBIT(GSM322_A1_TRYING_RPLMN),
- GSM322_EVENT_REG_FAILED, gsm322_a_sel_first_plmn},
-
- {SBIT(GSM322_A1_TRYING_RPLMN),
- GSM322_EVENT_ROAMING_NA, gsm322_a_sel_first_plmn},
-
- {SBIT(GSM322_A1_TRYING_RPLMN),
- GSM322_EVENT_NO_CELL_FOUND, gsm322_a_sel_first_plmn},
-
- {SBIT(GSM322_A1_TRYING_RPLMN) | SBIT(GSM322_A3_TRYING_PLMN),
- GSM322_EVENT_REG_SUCCESS, gsm322_a_go_on_plmn},
-
- {SBIT(GSM322_A2_ON_PLMN),
- GSM322_EVENT_ROAMING_NA, gsm322_a_roaming_na},
-
- {SBIT(GSM322_A2_ON_PLMN),
- GSM322_EVENT_HPLMN_SEARCH, gsm322_a_hplmn_search_start},
-
- {SBIT(GSM322_A2_ON_PLMN),
- GSM322_EVENT_NO_CELL_FOUND, gsm322_a_loss_of_radio},
-
- {SBIT(GSM322_A2_ON_PLMN),
- GSM322_EVENT_USER_RESEL, gsm322_a_user_resel},
-
- {SBIT(GSM322_A3_TRYING_PLMN),
- GSM322_EVENT_REG_FAILED, gsm322_a_sel_next_plmn},
-
- {SBIT(GSM322_A3_TRYING_PLMN),
- GSM322_EVENT_ROAMING_NA, gsm322_a_sel_next_plmn},
-
- {SBIT(GSM322_A3_TRYING_PLMN),
- GSM322_EVENT_NO_CELL_FOUND, gsm322_a_sel_next_plmn},
-
- {SBIT(GSM322_A5_HPLMN_SEARCH),
- GSM322_EVENT_CELL_FOUND, gsm322_a_sel_first_plmn},
-
- {SBIT(GSM322_A5_HPLMN_SEARCH),
- GSM322_EVENT_NO_CELL_FOUND, gsm322_a_go_on_plmn},
-
- {SBIT(GSM322_A4_WAIT_FOR_PLMN),
- GSM322_EVENT_PLMN_AVAIL, gsm322_a_plmn_avail},
-
- {ALL_STATES,
- GSM322_EVENT_SEL_MANUAL, gsm322_a_sel_manual},
-
- {ALL_STATES,
- GSM322_EVENT_NO_CELL_FOUND, gsm322_am_no_cell_found},
-};
-
-#define PLMNASLLEN \
- (sizeof(plmnastatelist) / sizeof(struct plmnastatelist))
-
-static int gsm322_a_event(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm322_plmn *plmn = &ms->plmn;
- struct gsm322_msg *gm = (struct gsm322_msg *) msg->data;
- int msg_type = gm->msg_type;
- int rc;
- int i;
-
- LOGP(DPLMN, LOGL_INFO, "(ms %s) Event '%s' for automatic PLMN "
- "selection in state '%s'\n", ms->name, get_event_name(msg_type),
- get_a_state_name(plmn->state));
- /* find function for current state and message */
- for (i = 0; i < PLMNASLLEN; i++)
- if ((msg_type == plmnastatelist[i].type)
- && ((1 << plmn->state) & plmnastatelist[i].states))
- break;
- if (i == PLMNASLLEN) {
- LOGP(DPLMN, LOGL_NOTICE, "Event unhandled at this state.\n");
- return 0;
- }
-
- rc = plmnastatelist[i].rout(ms, msg);
-
- return rc;
-}
-
-/* state machine for manual PLMN selection events */
-static struct plmnmstatelist {
- uint32_t states;
- int type;
- int (*rout) (struct osmocom_ms *ms, struct msgb *msg);
-} plmnmstatelist[] = {
- {SBIT(GSM322_M0_NULL),
- GSM322_EVENT_SWITCH_ON, gsm322_m_switch_on},
-
- {SBIT(GSM322_M0_NULL) | SBIT(GSM322_M3_NOT_ON_PLMN) |
- SBIT(GSM322_M2_ON_PLMN),
- GSM322_EVENT_PLMN_SEARCH_END, gsm322_m_display_plmns},
-
- {ALL_STATES,
- GSM322_EVENT_SWITCH_OFF, gsm322_m_switch_off},
-
- {SBIT(GSM322_M0_NULL) | SBIT(GSM322_M5_NO_SIM),
- GSM322_EVENT_SIM_INSERT, gsm322_m_switch_on},
-
- {ALL_STATES,
- GSM322_EVENT_SIM_INSERT, gsm322_m_sim_insert},
-
- {ALL_STATES,
- GSM322_EVENT_SIM_REMOVE, gsm322_m_sim_removed},
-
- {SBIT(GSM322_M1_TRYING_RPLMN),
- GSM322_EVENT_REG_FAILED, gsm322_m_display_plmns},
-
- {SBIT(GSM322_M1_TRYING_RPLMN),
- GSM322_EVENT_ROAMING_NA, gsm322_m_display_plmns},
-
- {SBIT(GSM322_M1_TRYING_RPLMN),
- GSM322_EVENT_NO_CELL_FOUND, gsm322_m_display_plmns},
-
- {SBIT(GSM322_M1_TRYING_RPLMN),
- GSM322_EVENT_REG_SUCCESS, gsm322_m_go_on_plmn},
-
- {SBIT(GSM322_M2_ON_PLMN),
- GSM322_EVENT_ROAMING_NA, gsm322_m_display_plmns},
-
- /* undocumented case, where we loose coverage */
- {SBIT(GSM322_M2_ON_PLMN),
- GSM322_EVENT_NO_CELL_FOUND, gsm322_m_display_plmns},
-
- {SBIT(GSM322_M1_TRYING_RPLMN) | SBIT(GSM322_M2_ON_PLMN) |
- SBIT(GSM322_M4_TRYING_PLMN),
- GSM322_EVENT_INVALID_SIM, gsm322_m_sim_removed},
-
- {SBIT(GSM322_M3_NOT_ON_PLMN) | SBIT(GSM322_M2_ON_PLMN),
- GSM322_EVENT_USER_RESEL, gsm322_m_user_resel},
-
- {SBIT(GSM322_M3_NOT_ON_PLMN),
- GSM322_EVENT_PLMN_AVAIL, gsm322_m_plmn_avail},
-
- /* choose plmn is only specified when 'not on PLMN', but it makes
- * sense to select cell from other states too. */
- {SBIT(GSM322_M3_NOT_ON_PLMN) | SBIT(GSM322_M2_ON_PLMN) |
- SBIT(GSM322_M1_TRYING_RPLMN) | SBIT(GSM322_M4_TRYING_PLMN),
- GSM322_EVENT_CHOOSE_PLMN, gsm322_m_choose_plmn},
-
- {SBIT(GSM322_M4_TRYING_PLMN),
- GSM322_EVENT_REG_SUCCESS, gsm322_m_go_on_plmn},
-
- /* we also display available PLMNs after trying to register.
- * this is not standard. we need that so the user knows
- * that registration failed, and the user can select a new network. */
- {SBIT(GSM322_M4_TRYING_PLMN),
- GSM322_EVENT_REG_FAILED, gsm322_m_display_plmns},
-
- {SBIT(GSM322_M4_TRYING_PLMN),
- GSM322_EVENT_ROAMING_NA, gsm322_m_display_plmns},
-
- {SBIT(GSM322_M4_TRYING_PLMN),
- GSM322_EVENT_NO_CELL_FOUND, gsm322_m_display_plmns},
-
- {ALL_STATES,
- GSM322_EVENT_SEL_AUTO, gsm322_m_sel_auto},
-
- {ALL_STATES,
- GSM322_EVENT_NO_CELL_FOUND, gsm322_am_no_cell_found},
-};
-
-#define PLMNMSLLEN \
- (sizeof(plmnmstatelist) / sizeof(struct plmnmstatelist))
-
-static int gsm322_m_event(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm322_plmn *plmn = &ms->plmn;
- struct gsm322_msg *gm = (struct gsm322_msg *) msg->data;
- int msg_type = gm->msg_type;
- int rc;
- int i;
-
- LOGP(DPLMN, LOGL_INFO, "(ms %s) Event '%s' for manual PLMN selection "
- "in state '%s'\n", ms->name, get_event_name(msg_type),
- get_m_state_name(plmn->state));
- /* find function for current state and message */
- for (i = 0; i < PLMNMSLLEN; i++)
- if ((msg_type == plmnmstatelist[i].type)
- && ((1 << plmn->state) & plmnmstatelist[i].states))
- break;
- if (i == PLMNMSLLEN) {
- LOGP(DPLMN, LOGL_NOTICE, "Event unhandled at this state.\n");
- return 0;
- }
-
- rc = plmnmstatelist[i].rout(ms, msg);
-
- return rc;
-}
-
-/* dequeue GSM 03.22 PLMN events */
-int gsm322_plmn_dequeue(struct osmocom_ms *ms)
-{
- struct gsm322_plmn *plmn = &ms->plmn;
- struct msgb *msg;
- int work = 0;
-
- while ((msg = msgb_dequeue(&plmn->event_queue))) {
- /* send event to PLMN select process */
- if (ms->settings.plmn_mode == PLMN_MODE_AUTO)
- gsm322_a_event(ms, msg);
- else
- gsm322_m_event(ms, msg);
- msgb_free(msg);
- work = 1; /* work done */
- }
-
- return work;
-}
-
-/* state machine for channel selection events */
-static struct cellselstatelist {
- uint32_t states;
- int type;
- int (*rout) (struct osmocom_ms *ms, struct msgb *msg);
-} cellselstatelist[] = {
- {ALL_STATES,
- GSM322_EVENT_SWITCH_ON, gsm322_c_switch_on},
-
- {ALL_STATES,
- GSM322_EVENT_SIM_REMOVE, gsm322_c_sim_remove},
-
- {ALL_STATES,
- GSM322_EVENT_NEW_PLMN, gsm322_c_new_plmn},
-
- {ALL_STATES,
- GSM322_EVENT_PLMN_SEARCH_START, gsm322_c_plmn_search},
-
- {SBIT(GSM322_C1_NORMAL_CELL_SEL) | SBIT(GSM322_C2_STORED_CELL_SEL) |
- SBIT(GSM322_C4_NORMAL_CELL_RESEL) | SBIT(GSM322_C5_CHOOSE_CELL),
- GSM322_EVENT_CELL_FOUND, gsm322_c_camp_normally},
-
- {SBIT(GSM322_C9_CHOOSE_ANY_CELL) | SBIT(GSM322_C6_ANY_CELL_SEL) |
- SBIT(GSM322_C8_ANY_CELL_RESEL),
- GSM322_EVENT_CELL_FOUND, gsm322_c_camp_any_cell},
-
- {SBIT(GSM322_C1_NORMAL_CELL_SEL) | SBIT(GSM322_C6_ANY_CELL_SEL) |
- SBIT(GSM322_C9_CHOOSE_ANY_CELL) | SBIT(GSM322_C8_ANY_CELL_RESEL) |
- SBIT(GSM322_C0_NULL) /* after search */,
- GSM322_EVENT_NO_CELL_FOUND, gsm322_c_any_cell_sel},
-
- {SBIT(GSM322_C2_STORED_CELL_SEL) | SBIT(GSM322_C5_CHOOSE_CELL) |
- SBIT(GSM322_C4_NORMAL_CELL_RESEL),
- GSM322_EVENT_NO_CELL_FOUND, gsm322_c_normal_cell_sel},
-
- {SBIT(GSM322_C3_CAMPED_NORMALLY),
- GSM322_EVENT_LEAVE_IDLE, gsm322_c_conn_mode_1},
-
- {SBIT(GSM322_C7_CAMPED_ANY_CELL),
- GSM322_EVENT_LEAVE_IDLE, gsm322_c_conn_mode_2},
-
- {SBIT(GSM322_CONNECTED_MODE_1),
- GSM322_EVENT_RET_IDLE, gsm322_c_choose_cell},
-
- {SBIT(GSM322_CONNECTED_MODE_2),
- GSM322_EVENT_RET_IDLE, gsm322_c_choose_any_cell},
-
- {SBIT(GSM322_C3_CAMPED_NORMALLY),
- GSM322_EVENT_CELL_RESEL, gsm322_c_normal_cell_resel},
-
- {SBIT(GSM322_C7_CAMPED_ANY_CELL),
- GSM322_EVENT_CELL_RESEL, gsm322_c_any_cell_resel},
-
- {SBIT(GSM322_C7_CAMPED_ANY_CELL),
- GSM322_EVENT_CELL_FOUND, gsm322_c_normal_cell_sel},
-
- {SBIT(GSM322_C1_NORMAL_CELL_SEL) | SBIT(GSM322_C2_STORED_CELL_SEL) |
- SBIT(GSM322_C4_NORMAL_CELL_RESEL) | SBIT(GSM322_C5_CHOOSE_CELL) |
- SBIT(GSM322_C9_CHOOSE_ANY_CELL) | SBIT(GSM322_C8_ANY_CELL_RESEL) |
- SBIT(GSM322_C6_ANY_CELL_SEL) | SBIT(GSM322_ANY_SEARCH) |
- SBIT(GSM322_PLMN_SEARCH) | SBIT(GSM322_HPLMN_SEARCH) ,
- GSM322_EVENT_SYSINFO, gsm322_c_scan_sysinfo_bcch},
-
- {SBIT(GSM322_C3_CAMPED_NORMALLY) | SBIT(GSM322_C7_CAMPED_ANY_CELL),
- GSM322_EVENT_SYSINFO, gsm322_c_camp_sysinfo_bcch},
-
- {SBIT(GSM322_C3_CAMPED_NORMALLY),
- GSM322_EVENT_HPLMN_SEARCH, gsm322_c_hplmn_search},
-};
-
-#define CELLSELSLLEN \
- (sizeof(cellselstatelist) / sizeof(struct cellselstatelist))
-
-int gsm322_c_event(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct gsm322_msg *gm = (struct gsm322_msg *) msg->data;
- int msg_type = gm->msg_type;
- int rc;
- int i;
-
- if (msg_type != GSM322_EVENT_SYSINFO)
- LOGP(DCS, LOGL_INFO, "(ms %s) Event '%s' for Cell selection "
- "in state '%s'\n", ms->name, get_event_name(msg_type),
- get_cs_state_name(cs->state));
- /* find function for current state and message */
- for (i = 0; i < CELLSELSLLEN; i++)
- if ((msg_type == cellselstatelist[i].type)
- && ((1 << cs->state) & cellselstatelist[i].states))
- break;
- if (i == CELLSELSLLEN) {
- if (msg_type != GSM322_EVENT_SYSINFO)
- LOGP(DCS, LOGL_NOTICE, "Event unhandled at this state."
- "\n");
- return 0;
- }
-
- rc = cellselstatelist[i].rout(ms, msg);
-
- return rc;
-}
-
-/* dequeue GSM 03.22 cell selection events */
-int gsm322_cs_dequeue(struct osmocom_ms *ms)
-{
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct msgb *msg;
- int work = 0;
-
- while ((msg = msgb_dequeue(&cs->event_queue))) {
- /* send event to cell selection process */
- gsm322_c_event(ms, msg);
- msgb_free(msg);
- work = 1; /* work done */
- }
-
- return work;
-}
-
-/*
- * neighbour cell measurement process in idle mode
- */
-
-static struct gsm322_neighbour *gsm322_nb_alloc(struct gsm322_cellsel *cs,
- uint16_t arfcn)
-{
- struct gsm322_neighbour *nb;
- time_t now;
-
- time(&now);
-
- nb = talloc_zero(l23_ctx, struct gsm322_neighbour);
- if (!nb)
- return 0;
-
- nb->cs = cs;
- nb->arfcn = arfcn;
- nb->rla_c_dbm = -128;
- nb->created = now;
- llist_add_tail(&nb->entry, &cs->nb_list);
-
- return nb;
-}
-
-static void gsm322_nb_free(struct gsm322_neighbour *nb)
-{
- llist_del(&nb->entry);
- talloc_free(nb);
-}
-
-/* check and calculate reselection criterion for all 6 neighbour cells and
- * return, if cell reselection has to be triggered */
-static int gsm322_nb_check(struct osmocom_ms *ms, int any)
-{
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm_settings *set = &ms->settings;
- struct gsm48_sysinfo *s;
- int i = 0, reselect = 0;
- uint16_t acc_class;
- int band, class;
- struct gsm322_neighbour *nb;
- time_t now;
- char arfcn_text[10];
-
- time(&now);
-
- /* set out access class depending on the cell selection type */
- if (any) {
- acc_class = (subscr->acc_class | 0x0400); /* add emergency */
- LOGP(DNB, LOGL_DEBUG, "Re-select using access class with "
- "Emergency class.\n");
- } else {
- acc_class = subscr->acc_class;
- LOGP(DNB, LOGL_DEBUG, "Re-select using access class.\n");
- }
-
- if (ms->rrlayer.monitor) {
- vty_notify(ms, "MON: cell ARFCN LAC C1 C2 CRH RLA_C "
- "bargraph\n");
- snprintf(arfcn_text, 10, "%s ",
- gsm_print_arfcn(cs->sel_arfcn));
- arfcn_text[9] = '\0';
- vty_notify(ms, "MON: serving %s 0x%04x %3d %3d %4d "
- "%s\n", arfcn_text, cs->sel_lac, cs->c1, cs->c2,
- cs->rla_c_dbm, bargraph(cs->rla_c_dbm / 2, -55, -24));
- }
-
- /* loop through all neighbour cells and select best cell */
- llist_for_each_entry(nb, &cs->nb_list, entry) {
- LOGP(DNB, LOGL_INFO, "Checking cell of ARFCN %s for cell "
- "re-selection.\n", gsm_print_arfcn(nb->arfcn));
- s = cs->list[arfcn2index(nb->arfcn)].sysinfo;
- nb->checked_for_resel = 0;
- nb->suitable_allowable = 0;
- nb->c12_valid = 1;
- nb->prio_low = 0;
-
- if (nb->state == GSM322_NB_NOT_SUP) {
- LOGP(DNB, LOGL_INFO, "Skip cell: ARFCN not supported."
- "\n");
- if (ms->rrlayer.monitor) {
- snprintf(arfcn_text, 10, "%s ",
- gsm_print_arfcn(nb->arfcn));
- arfcn_text[9] = '\0';
- vty_notify(ms, "MON: nb %2d %s ARFCN not "
- "supported\n", i + 1, arfcn_text);
- }
- goto cont;
- }
- /* check if we have successfully read BCCH */
- if (!s || nb->state != GSM322_NB_SYSINFO) {
- LOGP(DNB, LOGL_INFO, "Skip cell: There are no system "
- "informations available.\n");
- if (ms->rrlayer.monitor) {
- snprintf(arfcn_text, 10, "%s ",
- gsm_print_arfcn(nb->arfcn));
- arfcn_text[9] = '\0';
- vty_notify(ms, "MON: nb %2d %s "
- " %4d %s\n",
- i + 1, arfcn_text, nb->rla_c_dbm,
- bargraph(nb->rla_c_dbm / 2, -55, -24));
- }
- goto cont;
- }
-
- /* get prio */
- if (s->sp && s->sp_cbq)
- nb->prio_low = 1;
-
- /* get C1 & C2 */
- band = gsm_arfcn2band(nb->arfcn);
- class = class_of_band(ms, band);
- nb->c1 = calculate_c1(DNB, nb->rla_c_dbm, s->rxlev_acc_min_db,
- ms_pwr_dbm(band, s->ms_txpwr_max_cch),
- ms_class_gmsk_dbm(band, class));
- nb->c2 = calculate_c2(nb->c1, 0,
- (cs->last_serving_valid
- && cs->last_serving_arfcn == nb->arfcn),
- s->sp, s->sp_cro, now - nb->created, s->sp_pt,
- s->sp_to);
- nb->c12_valid = 1;
-
- /* calculate CRH depending on LAI */
- if (cs->sel_mcc == s->mcc && cs->sel_mnc == s->mnc
- && cs->sel_lac == s->lac) {
- LOGP(DNB, LOGL_INFO, "-> Cell of is in the same LA, "
- "so CRH = 0\n");
- nb->crh = 0;
- } else if (any) {
- LOGP(DNB, LOGL_INFO, "-> Cell of is in a different LA, "
- "but service is limited, so CRH = 0\n");
- nb->crh = 0;
- } else {
- nb->crh = s->cell_resel_hyst_db;
- LOGP(DNB, LOGL_INFO, "-> Cell of is in a different LA, "
- "and service is normal, so CRH = %d\n",
- nb->crh);
- }
-
- if (ms->rrlayer.monitor) {
- snprintf(arfcn_text, 10, "%s ",
- gsm_print_arfcn(nb->arfcn));
- arfcn_text[9] = '\0';
- vty_notify(ms, "MON: nb %2d %s 0x%04x %3d %3d %2d"
- " %4d %s\n", i + 1, arfcn_text, s->lac,
- nb->c1, nb->c2, nb->crh, nb->rla_c_dbm,
- bargraph(nb->rla_c_dbm / 2, -55, -24));
- }
-
- /* if cell is barred and we don't override */
- if (s->cell_barr && !(s->sp && s->sp_cbq)) {
- LOGP(DNB, LOGL_INFO, "Skip cell: Cell is barred.\n");
- goto cont;
- }
-
- /* if we have no access to the cell and we don't override */
- if (!subscr->acc_barr
- && !(acc_class & (s->class_barr ^ 0xffff))) {
- LOGP(DNB, LOGL_INFO, "Skip cell: Class is "
- "barred for our access. (access=%04x "
- "barred=%04x)\n", acc_class, s->class_barr);
- goto cont;
- }
-
- /* check if LA is forbidden */
- if (any && gsm322_is_forbidden_la(ms, s->mcc, s->mnc, s->lac)) {
- LOGP(DNB, LOGL_INFO, "Skip cell: Cell has "
- "forbidden LA.\n");
- goto cont;
- }
-
- /* check if we have same PLMN */
- if (!any && (cs->sel_mcc != s->mcc || cs->sel_mnc != s->mnc)) {
- LOGP(DNB, LOGL_INFO, "Skip cell: PLMN of cell "
- "does not match target PLMN. (cell: mcc=%s "
- "mnc=%s)\n", gsm_print_mcc(s->mcc),
- gsm_print_mnc(s->mnc));
- goto cont;
- }
-
- /* check criterion C1 */
- if (nb->c1 < 0) {
- LOGP(DNB, LOGL_INFO, "Skip cell: C1 criterion "
- " (>0) not met. (C1 = %d)\n", nb->c1);
- goto cont;
- }
-
- /* we can use this cell, if it is better */
- nb->suitable_allowable = 1;
-
- /* check priority */
- if (!cs->prio_low && nb->prio_low) {
- LOGP(DNB, LOGL_INFO, "Skip cell: cell has low "
- "priority, but serving cell has normal "
- "prio.\n");
- goto cont;
- }
- if (cs->prio_low && !nb->prio_low) {
- LOGP(DNB, LOGL_INFO, "Found cell: cell has normal "
- "priority, but serving cell has low prio.\n");
- reselect = 1;
- goto cont;
- }
-
- /* find better cell */
- if (nb->c2 - nb->crh > cs->c2) {
- LOGP(DNB, LOGL_INFO, "Found cell: cell is better "
- "than serving cell.\n");
- reselect = 1;
- goto cont;
- }
-
-cont:
- if (++i == GSM58_NB_NUMBER)
- break;
- }
-
- if (!i) {
- if (ms->rrlayer.monitor)
- vty_notify(ms, "MON: no neighbour cells\n");
- }
-
- if (cs->resel_when + GSM58_RESEL_THRESHOLD >= now) {
- LOGP(DNB, LOGL_INFO, "Found better neighbour cell, but "
- "reselection threshold not reached.\n");
- reselect = 0;
- }
-
- if (reselect && set->stick) {
- LOGP(DNB, LOGL_INFO, "Don't trigger cell re-selection, because "
- "we stick to serving cell.\n");
- reselect = 0;
- }
-
- return reselect;
-}
-
-/* select a suitable and allowable cell */
-static int gsm322_nb_scan(struct osmocom_ms *ms)
-{
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct gsm_settings *set = &ms->settings;
- int i = 0;
- struct gsm322_neighbour *nb, *best_nb_low = NULL, *best_nb_normal = 0;
- int16_t best_low = -32768, best_normal = -32768;
-
- if (set->stick) {
- LOGP(DCS, LOGL_DEBUG, "Do not re-select cell, because we stick "
- " to a cell.\n");
- goto no_cell_found;
- }
-
- if (!cs->c12_valid) {
- LOGP(DCS, LOGL_DEBUG, "Do not re-select cell, because there "
- " are no valid C1 and C2.\n");
- goto no_cell_found;
- }
-
- /* loop through all neighbour cells and select best cell */
- llist_for_each_entry(nb, &cs->nb_list, entry) {
- LOGP(DCS, LOGL_INFO, "Checking cell with ARFCN %s for cell "
- "re-selection. (C2 = %d)\n", gsm_print_arfcn(nb->arfcn),
- nb->c2);
- /* track which cells have been checked do far */
- if (nb->checked_for_resel) {
- LOGP(DCS, LOGL_INFO, "Skip cell: alredy tried to "
- "select.\n");
- goto cont;
- }
-
- /* check if we can use this cell */
- if (!nb->suitable_allowable) {
- LOGP(DCS, LOGL_INFO, "Skip cell: not suitable and/or "
- "allowable.\n");
- goto cont;
- }
-
- /* check if cell is "better" */
- if (nb->prio_low) {
- if (nb->c2 - nb->crh > best_low) {
- best_low = nb->c2 - nb->crh;
- best_nb_low = nb;
- }
- } else {
- if (nb->c2 - nb->crh > best_normal) {
- best_normal = nb->c2 - nb->crh;
- best_nb_normal = nb;
- }
- }
-
-cont:
- if (++i == GSM58_NB_NUMBER)
- break;
- }
-
- nb = NULL;
- if (best_nb_normal) {
- nb = best_nb_normal;
- LOGP(DCS, LOGL_INFO, "Best neighbour cell with ARFCN %s "
- "selected. (normal priority)\n",
- gsm_print_arfcn(nb->arfcn));
- }
- if (best_nb_low) {
- nb = best_nb_low;
- LOGP(DCS, LOGL_INFO, "Best neighbour cell with ARFCN %s "
- "selected. (low priority)\n",
- gsm_print_arfcn(nb->arfcn));
- }
- if (!nb) {
- struct msgb *nmsg;
-
- LOGP(DCS, LOGL_INFO, "No (more) acceptable neighbour cell "
- "available\n");
-
-no_cell_found:
- /* Tell cell selection process to handle "no cell found". */
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_NO_CELL_FOUND);
- if (!nmsg)
- return -ENOMEM;
- gsm322_cs_sendmsg(ms, nmsg);
-
- return 0;
- }
- nb->checked_for_resel = 1;
-
- /* NOTE: We might already have system information from previous
- * scan. But we need recent informations, so we scan again!
- */
-
- /* Tune to frequency for a while, to receive broadcasts. */
- cs->arfcn = nb->arfcn;
- cs->arfci = arfcn2index(cs->arfcn);
- LOGP(DCS, LOGL_DEBUG, "Scanning ARFCN %s of neighbour "
- "cell during cell reselection.\n", gsm_print_arfcn(cs->arfcn));
- /* Allocate/clean system information. */
- cs->list[cs->arfci].flags &= ~GSM322_CS_FLAG_SYSINFO;
- if (cs->list[cs->arfci].sysinfo)
- memset(cs->list[cs->arfci].sysinfo, 0,
- sizeof(struct gsm48_sysinfo));
- else
- cs->list[cs->arfci].sysinfo = talloc_zero(l23_ctx,
- struct gsm48_sysinfo);
- if (!cs->list[cs->arfci].sysinfo)
- exit(-ENOMEM);
- cs->si = cs->list[cs->arfci].sysinfo;
- cs->sync_retries = SYNC_RETRIES;
- return gsm322_sync_to_cell(cs, NULL, 0);
-}
-
-/* start/modify measurement process with the current list of neighbour cells.
- * only do that if: 1. we are camping 2. we are on serving cell */
-static int gsm322_nb_start(struct osmocom_ms *ms, int synced)
-{
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct gsm48_sysinfo *s = &cs->sel_si;
- struct gsm322_neighbour *nb, *nb2;
- int i, num;
- uint8_t map[128];
- uint16_t nc[32];
- uint8_t changed = 0;
- int refer_pcs, index;
- uint16_t arfcn;
-
- if (cs->ms->settings.no_neighbour)
- return 0;
-
- if (synced)
- cs->nb_meas_set = 0;
-
- refer_pcs = gsm_refer_pcs(cs->sel_arfcn, s);
-
- /* remove all neighbours that are not in list anymore */
- memset(map, 0, sizeof(map));
- llist_for_each_entry_safe(nb, nb2, &cs->nb_list, entry) {
- i = nb->arfcn & 1023;
- map[i >> 3] |= (1 << (i & 7));
-#ifndef TEST_INCLUDE_SERV
- if (!(s->freq[i].mask & FREQ_TYPE_NCELL)) {
-#else
- if (!(s->freq[i].mask & (FREQ_TYPE_NCELL | FREQ_TYPE_SERV))) {
-#endif
- LOGP(DNB, LOGL_INFO, "Removing neighbour cell %s from "
- "list.\n", gsm_print_arfcn(nb->arfcn));
- gsm322_nb_free(nb);
- changed = 1;
- continue;
- }
-#ifndef TEST_INCLUDE_SERV
- if (nb->arfcn == cs->sel_arfcn) {
- LOGP(DNB, LOGL_INFO, "Removing serving cell %s (former "
- "neighbour cell).\n",
- gsm_print_arfcn(nb->arfcn));
- gsm322_nb_free(nb);
- changed = 1;
- continue;
- }
-#endif
- }
-
- /* add missing entries to list */
- for (i = 0; i <= 1023; i++) {
-#ifndef TEST_INCLUDE_SERV
- if ((s->freq[i].mask & FREQ_TYPE_NCELL) &&
- !(map[i >> 3] & (1 << (i & 7)))) {
-#else
- if ((s->freq[i].mask & (FREQ_TYPE_NCELL | FREQ_TYPE_SERV)) &&
- !(map[i >> 3] & (1 << (i & 7)))) {
-#endif
- index = i;
- if (refer_pcs && i >= 512 && i <= 810)
- index = i-512+1024;
- arfcn = index2arfcn(index);
-#ifndef TEST_INCLUDE_SERV
- if (arfcn == cs->sel_arfcn) {
- LOGP(DNB, LOGL_INFO, "Omitting serving cell %s."
- "\n", gsm_print_arfcn(cs->arfcn));
- continue;
- }
-#endif
- nb = gsm322_nb_alloc(cs, arfcn);
- LOGP(DNB, LOGL_INFO, "Adding neighbour cell %s to "
- "list.\n", gsm_print_arfcn(nb->arfcn));
- if (!(cs->list[index].flags & GSM322_CS_FLAG_SUPPORT))
- nb->state = GSM322_NB_NOT_SUP;
- changed = 1;
- }
- }
-
- /* if nothing has changed, we are done */
- if (!changed && cs->nb_meas_set)
- return 0;
-
- /* start neigbour cell measurement task */
- num = 0;
- llist_for_each_entry(nb, &cs->nb_list, entry) {
- if (nb->state == GSM322_NB_NOT_SUP)
- continue;
- /* it should not happen that there are more than 32 nb-cells */
- if (num == 32)
- break;
- nc[num] = nb->arfcn;
- num++;
- }
- LOGP(DNB, LOGL_INFO, "Sending list of neighbour cells to layer1.\n");
- l1ctl_tx_neigh_pm_req(ms, num, nc);
- cs->nb_meas_set = 1;
-
- return 1;
-}
-
-
-/* a complete set of measurements are received, calculate the RLA_C, sort */
-static int gsm322_nb_trigger_event(struct gsm322_cellsel *cs)
-{
- struct osmocom_ms *ms = cs->ms;
- struct gsm322_neighbour *nb, *nb_sync = NULL, *nb_again = NULL;
- int i = 0;
- time_t now;
-
- time(&now);
-
- /* check the list for reading neighbour cell's BCCH */
- llist_for_each_entry(nb, &cs->nb_list, entry) {
- if (nb->rla_c_dbm >= cs->ms->settings.min_rxlev_db) {
- /* select the strongest unsynced cell */
- if (nb->state == GSM322_NB_RLA_C) {
- nb_sync = nb;
- break;
- }
-#if 0
-if (nb->state == GSM322_NB_SYSINFO) {
-printf("%d time to sync again: %u\n", nb->arfcn, now + GSM58_READ_AGAIN - nb->when);
-}
-#endif
- /* select the strongest cell to be read/try again */
- if (!nb_again) {
- if ((nb->state == GSM322_NB_NO_SYNC
- || nb->state == GSM322_NB_NO_BCCH)
- && nb->when + GSM58_TRY_AGAIN <= now)
- nb_again = nb;
- else
- if (nb->state == GSM322_NB_SYSINFO
- && nb->when + GSM58_READ_AGAIN <= now)
- nb_again = nb;
- }
- }
- if (++i == GSM58_NB_NUMBER)
- break;
- }
-
- /* trigger sync to neighbour cell, priorize the untested cell */
- if (nb_sync || nb_again) {
- if (nb_sync) {
- nb = nb_sync;
- cs->arfcn = nb->arfcn;
- cs->arfci = arfcn2index(cs->arfcn);
- LOGP(DNB, LOGL_INFO, "Syncing to new neighbour cell "
- "%s.\n", gsm_print_arfcn(cs->arfcn));
- } else {
- nb = nb_again;
- cs->arfcn = nb->arfcn;
- cs->arfci = arfcn2index(cs->arfcn);
- LOGP(DNB, LOGL_INFO, "Syncing again to neighbour cell "
- "%s after timerout.\n",
- gsm_print_arfcn(cs->arfcn));
- }
- /* Allocate/clean system information. */
- cs->list[cs->arfci].flags &= ~GSM322_CS_FLAG_SYSINFO;
- if (cs->list[cs->arfci].sysinfo)
- memset(cs->list[cs->arfci].sysinfo, 0,
- sizeof(struct gsm48_sysinfo));
- else
- cs->list[cs->arfci].sysinfo = talloc_zero(l23_ctx,
- struct gsm48_sysinfo);
- if (!cs->list[cs->arfci].sysinfo)
- exit(-ENOMEM);
- cs->si = cs->list[cs->arfci].sysinfo;
- cs->sync_retries = SYNC_RETRIES;
- return gsm322_sync_to_cell(cs, nb, 0);
- }
-
- if (gsm322_nb_check(ms, (cs->state == GSM322_C7_CAMPED_ANY_CELL)) > 0) {
- struct msgb *nmsg;
-
- LOGP(DNB, LOGL_INFO, "Better neighbour cell triggers cell "
- "reselection.\n");
-
- if (ms->rrlayer.monitor)
- vty_notify(ms, "MON: trigger cell re-selection: "
- "better cell\n");
-
- cs->resel_when = now;
-
- /* unset selected cell */
- gsm322_unselect_cell(cs);
-
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_CELL_RESEL);
- if (!nmsg)
- return -ENOMEM;
- gsm322_c_event(ms, nmsg);
- msgb_free(nmsg);
- return 0;
- }
-
- if (cs->neighbour) {
- cs->arfcn = cs->sel_arfcn;
- cs->arfci = arfcn2index(cs->arfcn);
- cs->si = cs->list[cs->arfci].sysinfo;
- if (!cs->si) {
- printf("No SI after neighbour scan, please fix!\n");
- exit(0L);
- }
- LOGP(DNB, LOGL_INFO, "Syncing back to serving cell\n");
- cs->sync_retries = SYNC_RETRIES_SERVING;
- return gsm322_sync_to_cell(cs, NULL, 0);
- }
-
- /* do nothing */
- return 0;
-}
-
-
-/* we (successfully) synced to a neighbour */
-static int gsm322_nb_synced(struct gsm322_cellsel *cs, int yes)
-{
- time_t now;
-
- LOGP(DNB, LOGL_INFO, "%s to neighbour cell %d.\n",
- (yes) ? "Synced" : "Failed to sync", cs->arfcn);
-
- if (yes) {
- start_cs_timer(cs, GSM322_NB_TIMEOUT, 0);
- return 0;
- }
-
- cs->neighbour->state = GSM322_NB_NO_SYNC;
- time(&now);
- cs->neighbour->when = now;
-
- return gsm322_nb_trigger_event(cs);
-}
-
-/* we (successfully) read the neighbour */
-static int gsm322_nb_read(struct gsm322_cellsel *cs, int yes)
-{
- time_t now;
-
- LOGP(DNB, LOGL_INFO, "%s from neighbour cell %d (rxlev %s).\n",
- (yes) ? "Read" : "Failed to read",
- cs->arfcn, gsm_print_rxlev(cs->list[cs->arfci].rxlev));
-
- cs->neighbour->state = (yes) ? GSM322_NB_SYSINFO : GSM322_NB_NO_BCCH;
- time(&now);
- cs->neighbour->when = now;
-
- return gsm322_nb_trigger_event(cs);
-}
-
-/* a complete set of measurements are received, calculate the RLA_C, sort */
-static int gsm322_nb_new_rxlev(struct gsm322_cellsel *cs)
-{
- struct gsm322_neighbour *nb, *strongest_nb;
- int i = 0;
- int8_t strongest;
- struct llist_head sorted;
- struct llist_head *lh, *lh2;
- struct gsm48_sysinfo *s = &cs->sel_si;
- int band = gsm_arfcn2band(cs->arfcn);
- int class = class_of_band(cs->ms, band);
-
-
- /* calculate the RAL_C of serving cell */
- if (cs->rxlev_count) {
- cs->rla_c_dbm = (cs->rxlev_dbm + (cs->rxlev_count / 2))
- / cs->rxlev_count;
- cs->rxlev_dbm = 0;
- cs->rxlev_count = 0;
- }
-
- LOGP(DNB, LOGL_INFO, "RLA_C of serving cell: %d\n", cs->rla_c_dbm);
-
- /* calculate C1 criterion, SI 3 carries complete neighbour cell info */
- cs->prio_low = 0;
- if (s && (s->si3 || s->si4)) {
- cs->c1 = calculate_c1(DNB, cs->rla_c_dbm, s->rxlev_acc_min_db,
- ms_pwr_dbm(band, s->ms_txpwr_max_cch),
- ms_class_gmsk_dbm(band, class));
- cs->c2 = calculate_c2(cs->c1, 1, 0, s->sp, s->sp_cro, 0, s->sp_pt, s->sp_to);
- cs->c12_valid = 1;
-
- if (s->sp && s->sp_cbq)
- cs->prio_low = 1;
- }
-
- /* calculate the RAL_C of neighbours */
- llist_for_each_entry(nb, &cs->nb_list, entry) {
- if (nb->state == GSM322_NB_NOT_SUP)
- continue;
- /* if sysinfo is gone due to scanning, mark neighbour as
- * unscanned. */
- if (nb->state == GSM322_NB_SYSINFO) {
- if (!cs->list[arfcn2index(nb->arfcn)].sysinfo) {
- nb->state = GSM322_NB_NO_BCCH;
- nb->when = 0;
- }
- }
- nb->rla_c_dbm =
- (nb->rxlev_dbm + (nb->rxlev_count / 2))
- / nb->rxlev_count;
- nb->rxlev_count = 0;
- nb->rxlev_dbm = 0;
- if (nb->state == GSM322_NB_NEW)
- nb->state = GSM322_NB_RLA_C;
- }
-
- /* sort the 6 strongest */
- INIT_LLIST_HEAD(&sorted);
-
- /* detach up to 6 of the strongest neighbour cells from list and put
- * them in the "sorted" list */
- while (!llist_empty(&cs->nb_list)) {
- strongest = -128;
- strongest_nb = NULL;
- llist_for_each_entry(nb, &cs->nb_list, entry) {
- if (nb->state == GSM322_NB_NOT_SUP)
- continue;
- if (nb->rla_c_dbm > strongest) {
- strongest = nb->rla_c_dbm;
- strongest_nb = nb;
- }
- }
- if (strongest_nb == NULL) /* this should not happen */
- break;
- LOGP(DNB, LOGL_INFO, "#%d ARFCN=%d RLA_C=%d\n",
- i+1, strongest_nb->arfcn, strongest_nb->rla_c_dbm);
- llist_del(&strongest_nb->entry);
- llist_add(&strongest_nb->entry, &sorted);
- if (++i == GSM58_NB_NUMBER)
- break;
- }
-
- /* take the sorted list and attat it to the head of the neighbour cell
- * list */
- llist_for_each_safe(lh, lh2, &sorted) {
- llist_del(lh);
- llist_add(lh, &cs->nb_list);
- }
-
- return gsm322_nb_trigger_event(cs);
-}
-
-/* accumulate the measurement results and check if there is a complete set for
- * all neighbour cells received. */
-static int gsm322_nb_meas_ind(struct osmocom_ms *ms, uint16_t arfcn,
- uint8_t rx_lev)
-{
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct gsm322_neighbour *nb;
- int enough_results = 1, result = 0;
-
- llist_for_each_entry(nb, &cs->nb_list, entry) {
- if (nb->state == GSM322_NB_NOT_SUP)
- continue;
- if (arfcn != nb->arfcn) {
- if (nb->rxlev_count < RLA_C_NUM)
- enough_results = 0;
- continue;
- }
- nb->rxlev_dbm += rx_lev - 110;
- nb->rxlev_count++;
- LOGP(DNB, LOGL_INFO, "Measurement result for ARFCN %s: %d\n",
- gsm_print_arfcn(arfcn), rx_lev - 110);
-
- if (nb->rxlev_count < RLA_C_NUM)
- enough_results = 0;
-
- result = 1;
- }
-
- if (!result)
- LOGP(DNB, LOGL_INFO, "Measurement result for ARFCN %s not "
- "requested. (not a bug)\n", gsm_print_arfcn(arfcn));
-
- if (enough_results)
- return gsm322_nb_new_rxlev(cs);
-
- return 0;
-}
-
-int gsm322_meas(struct osmocom_ms *ms, uint8_t rx_lev)
-{
- struct gsm322_cellsel *cs = &ms->cellsel;
-
- if (cs->neighbour)
- return -EINVAL;
-
- cs->rxlev_dbm += rx_lev - 110;
- cs->rxlev_count++;
-
- return 0;
-}
-
-/*
- * dump lists
- */
-
-int gsm322_dump_sorted_plmn(struct osmocom_ms *ms)
-{
- struct gsm322_plmn *plmn = &ms->plmn;
- struct gsm322_plmn_list *temp;
-
- LOGP(DPLMN, LOGL_INFO, "MCC |MNC |allowed|rx-lev\n");
- LOGP(DPLMN, LOGL_INFO, "-------+-------+-------+-------\n");
- llist_for_each_entry(temp, &plmn->sorted_plmn, entry) {
- LOGP(DPLMN, LOGL_INFO, "%s |%s%s |%s |%s\n",
- gsm_print_mcc(temp->mcc), gsm_print_mnc(temp->mnc),
- ((temp->mnc & 0x00f) == 0x00f) ? " ":"",
- (temp->cause) ? "no ":"yes",
- gsm_print_rxlev(temp->rxlev));
- }
-
- return 0;
-}
-
-int gsm322_dump_cs_list(struct gsm322_cellsel *cs, uint8_t flags,
- void (*print)(void *, const char *, ...), void *priv)
-{
- int i;
- struct gsm48_sysinfo *s;
-
- print(priv, "ARFCN |MCC |MNC |LAC |cell ID|forb.LA|prio |"
- "min-db |max-pwr|rx-lev\n");
- print(priv, "-------+-------+-------+-------+-------+-------+-------+"
- "-------+-------+-------\n");
- for (i = 0; i <= 1023+299; i++) {
- s = cs->list[i].sysinfo;
- if (!s || !(cs->list[i].flags & flags))
- continue;
- if (i >= 1024)
- print(priv, "%4dPCS|", i-1024+512);
- else if (i >= 512 && i <= 885)
- print(priv, "%4dDCS|", i);
- else
- print(priv, "%4d |", i);
- if (s->mcc) {
- print(priv, "%s |%s%s |", gsm_print_mcc(s->mcc),
- gsm_print_mnc(s->mnc),
- ((s->mnc & 0x00f) == 0x00f) ? " ":"");
- print(priv, "0x%04x |0x%04x |", s->lac, s->cell_id);
- } else
- print(priv, "n/a |n/a |n/a |n/a |");
- if ((cs->list[i].flags & GSM322_CS_FLAG_SYSINFO)) {
- if ((cs->list[i].flags & GSM322_CS_FLAG_FORBIDD))
- print(priv, "yes |");
- else
- print(priv, "no |");
- if ((cs->list[i].flags & GSM322_CS_FLAG_BARRED))
- print(priv, "barred |");
- else {
- if (cs->list[i].sysinfo->cell_barr)
- print(priv, "low |");
- else
- print(priv, "normal |");
- }
- } else
- print(priv, "n/a |n/a |");
- if (s->si3 || s->si4)
- print(priv, "%4d |%4d |%s\n", s->rxlev_acc_min_db,
- s->ms_txpwr_max_cch,
- gsm_print_rxlev(cs->list[i].rxlev));
- else
- print(priv, "n/a |n/a |n/a\n");
- }
- print(priv, "\n");
-
- return 0;
-}
-
-int gsm322_dump_forbidden_la(struct osmocom_ms *ms,
- void (*print)(void *, const char *, ...), void *priv)
-{
- struct gsm322_plmn *plmn = &ms->plmn;
- struct gsm322_la_list *temp;
-
- print(priv, "MCC |MNC |LAC |cause\n");
- print(priv, "-------+-------+-------+-------\n");
- llist_for_each_entry(temp, &plmn->forbidden_la, entry)
- print(priv, "%s |%s%s |0x%04x |#%d\n",
- gsm_print_mcc(temp->mcc), gsm_print_mnc(temp->mnc),
- ((temp->mnc & 0x00f) == 0x00f) ? " ":"",
- temp->lac, temp->cause);
-
- return 0;
-}
-
-int gsm322_dump_ba_list(struct gsm322_cellsel *cs, uint16_t mcc, uint16_t mnc,
- void (*print)(void *, const char *, ...), void *priv)
-{
- struct gsm322_ba_list *ba;
- int i;
-
- llist_for_each_entry(ba, &cs->ba_list, entry) {
- if (mcc && mnc && (mcc != ba->mcc || mnc != ba->mnc))
- continue;
- print(priv, "Band Allocation of network: MCC %s MNC %s "
- "(%s, %s)\n", gsm_print_mcc(ba->mcc),
- gsm_print_mnc(ba->mnc), gsm_get_mcc(ba->mcc),
- gsm_get_mnc(ba->mcc, ba->mnc));
- for (i = 0; i <= 1023+299; i++) {
- if ((ba->freq[i >> 3] & (1 << (i & 7))))
- print(priv, " %s",
- gsm_print_arfcn(index2arfcn(i)));
- }
- print(priv, "\n");
- }
-
- return 0;
-}
-
-int gsm322_dump_nb_list(struct gsm322_cellsel *cs,
- void (*print)(void *, const char *, ...), void *priv)
-{
- struct gsm48_sysinfo *s;
- struct gsm322_neighbour *nb;
- int i = 0;
-
- if (!cs->selected) {
- print(priv, "No serving cell selected (yet).\n");
- return 0;
- }
- print(priv, "Serving cell:\n\n");
- print(priv, "ARFCN=%s ", gsm_print_arfcn(cs->sel_arfcn));
- print(priv, "RLA_C=%s ", gsm_print_rxlev(cs->rla_c_dbm + 110));
- if (cs->c12_valid)
- print(priv, "C1=%d C2=%d ", cs->c1, cs->c1);
- else
- print(priv, "C1 - C2 - ");
- print(priv, "LAC=0x%04x\n\n", (cs->selected) ? cs->sel_si.lac : 0);
-
- print(priv, "Neighbour cells:\n\n");
- llist_for_each_entry(nb, &cs->nb_list, entry) {
- if (i == 0) {
- print(priv, "# |ARFCN |RLA_C |C1 |C2 |"
- "CRH |prio |LAC |cell ID|usable |"
- "state\n");
- print(priv, "----------------------------------------"
- "----------------------------------------"
- "-------\n");
- } else
- if (i == GSM58_NB_NUMBER)
- print(priv, "--- unmonitored cells: ---\n");
- i++;
- if (cs->last_serving_valid
- && cs->last_serving_arfcn == nb->arfcn)
- print(priv, "%2d last|", i);
- else
- print(priv, "%2d |", i);
- if ((nb->arfcn & ARFCN_PCS))
- print(priv, "%4dPCS|", nb->arfcn & 1023);
- else if (i >= 512 && i <= 885)
- print(priv, "%4dDCS|", nb->arfcn & 1023);
- else
- print(priv, "%4d |", nb->arfcn);
- if (nb->state == GSM322_NB_NOT_SUP) {
- print(priv, " ARFCN not supported\n");
- continue;
- }
- if (nb->rla_c_dbm > -128)
- print(priv, "%6s |",
- gsm_print_rxlev(nb->rla_c_dbm + 110));
- else
- print(priv, "- |");
- if (nb->state == GSM322_NB_SYSINFO && nb->c12_valid)
- print(priv, "%4d |%4d |%4d |", nb->c1, nb->c1,
- nb->crh);
- else
- print(priv, "- |- |- |");
- s = cs->list[arfcn2index(nb->arfcn)].sysinfo;
- if (nb->state == GSM322_NB_SYSINFO && s) {
- print(priv, "%s |0x%04x |0x%04x |",
- (nb->prio_low) ? "low ":"normal", s->lac,
- s->cell_id);
- } else
- print(priv, "- |- |- |");
-
- print(priv, "%s |",
- (nb->suitable_allowable) ? "yes" : "no ");
- print(priv, "%s\n", get_nb_state_name(nb->state));
- }
-
- if (i == 0)
- print(priv, "No neighbour cells available (yet).\n");
-
- return 0;
-}
-
-/*
- * initialization
- */
-
-int gsm322_init(struct osmocom_ms *ms)
-{
- struct gsm322_plmn *plmn = &ms->plmn;
- struct gsm322_cellsel *cs = &ms->cellsel;
- FILE *fp;
- char filename[PATH_MAX];
- int i;
- struct gsm322_ba_list *ba;
- uint8_t buf[4];
- char version[32];
-
- LOGP(DPLMN, LOGL_INFO, "init PLMN process\n");
- LOGP(DCS, LOGL_INFO, "init Cell Selection process\n");
-
- memset(plmn, 0, sizeof(*plmn));
- memset(cs, 0, sizeof(*cs));
- plmn->ms = ms;
- cs->ms = ms;
-
- /* set initial state */
- plmn->state = 0;
- cs->state = 0;
-
- /* init lists */
- INIT_LLIST_HEAD(&plmn->event_queue);
- INIT_LLIST_HEAD(&cs->event_queue);
- INIT_LLIST_HEAD(&plmn->sorted_plmn);
- INIT_LLIST_HEAD(&plmn->forbidden_la);
- INIT_LLIST_HEAD(&cs->ba_list);
- INIT_LLIST_HEAD(&cs->nb_list);
-
- /* set supported frequencies in cell selection list */
- for (i = 0; i <= 1023+299; i++)
- if ((ms->settings.freq_map[i >> 3] & (1 << (i & 7))))
- cs->list[i].flags |= GSM322_CS_FLAG_SUPPORT;
-
- /* read BA list */
- sprintf(filename, "%s/%s.ba", config_dir, ms->name);
- fp = fopen(filename, "r");
- if (fp) {
- int rc;
- char *s_rc;
-
- s_rc = fgets(version, sizeof(version), fp);
- version[sizeof(version) - 1] = '\0';
- if (!s_rc || !!strcmp(ba_version, version)) {
- LOGP(DCS, LOGL_NOTICE, "BA version missmatch, "
- "stored BA list becomes obsolete.\n");
- } else
- while(!feof(fp)) {
- ba = talloc_zero(l23_ctx, struct gsm322_ba_list);
- if (!ba)
- return -ENOMEM;
- rc = fread(buf, 4, 1, fp);
- if (!rc) {
- talloc_free(ba);
- break;
- }
- ba->mcc = (buf[0] << 8) | buf[1];
- ba->mnc = (buf[2] << 8) | buf[3];
- rc = fread(ba->freq, sizeof(ba->freq), 1, fp);
- if (!rc) {
- talloc_free(ba);
- break;
- }
- llist_add_tail(&ba->entry, &cs->ba_list);
- LOGP(DCS, LOGL_INFO, "Read stored BA list (mcc=%s "
- "mnc=%s %s, %s)\n", gsm_print_mcc(ba->mcc),
- gsm_print_mnc(ba->mnc), gsm_get_mcc(ba->mcc),
- gsm_get_mnc(ba->mcc, ba->mnc));
- }
- fclose(fp);
- } else
- LOGP(DCS, LOGL_INFO, "No stored BA list\n");
-
- return 0;
-}
-
-int gsm322_exit(struct osmocom_ms *ms)
-{
- struct gsm322_plmn *plmn = &ms->plmn;
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct llist_head *lh, *lh2;
- struct msgb *msg;
- FILE *fp;
- char filename[PATH_MAX];
- struct gsm322_ba_list *ba;
- uint8_t buf[4];
- int i;
-
- LOGP(DPLMN, LOGL_INFO, "exit PLMN process\n");
- LOGP(DCS, LOGL_INFO, "exit Cell Selection process\n");
-
- /* stop cell selection process (if any) */
- new_c_state(cs, GSM322_C0_NULL);
-
- /* stop timers */
- stop_cs_timer(cs);
- stop_any_timer(cs);
- stop_plmn_timer(plmn);
-
- /* flush sysinfo */
- for (i = 0; i <= 1023+299; i++) {
- if (cs->list[i].sysinfo) {
- LOGP(DCS, LOGL_DEBUG, "free sysinfo ARFCN=%s\n",
- gsm_print_arfcn(index2arfcn(i)));
- talloc_free(cs->list[i].sysinfo);
- cs->list[i].sysinfo = NULL;
- }
- cs->list[i].flags = 0;
- }
-
- /* store BA list */
- sprintf(filename, "%s/%s.ba", config_dir, ms->name);
- fp = fopen(filename, "w");
- if (fp) {
- int rc;
-
- fputs(ba_version, fp);
- llist_for_each_entry(ba, &cs->ba_list, entry) {
- buf[0] = ba->mcc >> 8;
- buf[1] = ba->mcc & 0xff;
- buf[2] = ba->mnc >> 8;
- buf[3] = ba->mnc & 0xff;
- rc = fwrite(buf, 4, 1, fp);
- rc = fwrite(ba->freq, sizeof(ba->freq), 1, fp);
- LOGP(DCS, LOGL_INFO, "Write stored BA list (mcc=%s "
- "mnc=%s %s, %s)\n", gsm_print_mcc(ba->mcc),
- gsm_print_mnc(ba->mnc), gsm_get_mcc(ba->mcc),
- gsm_get_mnc(ba->mcc, ba->mnc));
- }
- fclose(fp);
- } else
- LOGP(DCS, LOGL_ERROR, "Failed to write BA list\n");
-
- /* free lists */
- while ((msg = msgb_dequeue(&plmn->event_queue)))
- msgb_free(msg);
- while ((msg = msgb_dequeue(&cs->event_queue)))
- msgb_free(msg);
- llist_for_each_safe(lh, lh2, &plmn->sorted_plmn) {
- llist_del(lh);
- talloc_free(lh);
- }
- llist_for_each_safe(lh, lh2, &plmn->forbidden_la) {
- llist_del(lh);
- talloc_free(lh);
- }
- llist_for_each_safe(lh, lh2, &cs->ba_list) {
- llist_del(lh);
- talloc_free(lh);
- }
- llist_for_each_safe(lh, lh2, &cs->nb_list)
- gsm322_nb_free(container_of(lh, struct gsm322_neighbour,
- entry));
- return 0;
-}
diff --git a/Src/osmoconbb/src/host/layer23/src/mobile/gsm48_cc.c b/Src/osmoconbb/src/host/layer23/src/mobile/gsm48_cc.c
deleted file mode 100644
index 07ee2d9..0000000
--- a/Src/osmoconbb/src/host/layer23/src/mobile/gsm48_cc.c
+++ /dev/null
@@ -1,2181 +0,0 @@
-/*
- * (C) 2010 by Andreas Eversberg <jolly@eversberg.eu>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <errno.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include <osmocom/core/msgb.h>
-#include <osmocom/core/utils.h>
-#include <osmocom/gsm/gsm48.h>
-#include <osmocom/core/talloc.h>
-
-#include <osmocom/bb/common/logging.h>
-#include <osmocom/bb/common/osmocom_data.h>
-#include <osmocom/bb/mobile/mncc.h>
-#include <osmocom/bb/mobile/transaction.h>
-#include <osmocom/bb/mobile/gsm48_cc.h>
-#include <osmocom/bb/mobile/voice.h>
-#include <l1ctl_proto.h>
-
-extern void *l23_ctx;
-
-static int gsm48_cc_tx_release(struct gsm_trans *trans, void *arg);
-static int gsm48_rel_null_free(struct gsm_trans *trans);
-int mncc_release_ind(struct osmocom_ms *ms, struct gsm_trans *trans,
- u_int32_t callref, int location, int value);
-static int gsm48_cc_tx_disconnect(struct gsm_trans *trans, void *arg);
-static int gsm48_cc_tx_connect_ack(struct gsm_trans *trans, void *arg);
-
-/*
- * init
- */
-
-int gsm48_cc_init(struct osmocom_ms *ms)
-{
- struct gsm48_cclayer *cc = &ms->cclayer;
-
- cc->ms = ms;
-
- if (!cc->mncc_upqueue.next == 0)
- return 0;
-
- LOGP(DCC, LOGL_INFO, "init Call Control\n");
-
- INIT_LLIST_HEAD(&cc->mncc_upqueue);
-
- return 0;
-}
-
-int gsm48_cc_exit(struct osmocom_ms *ms)
-{
- struct gsm48_cclayer *cc = &ms->cclayer;
- struct gsm_trans *trans, *trans2;
- struct msgb *msg;
-
- LOGP(DCC, LOGL_INFO, "exit Call Control processes for %s\n", ms->name);
-
- llist_for_each_entry_safe(trans, trans2, &ms->trans_list, entry) {
- if (trans->protocol == GSM48_PDISC_CC)
- LOGP(DCC, LOGL_NOTICE, "Free pendig CC-transaction.\n");
- trans_free(trans);
- }
-
- while ((msg = msgb_dequeue(&cc->mncc_upqueue)))
- msgb_free(msg);
-
- return 0;
-}
-
-/*
- * messages
- */
-
-/* names of MNCC-SAP */
-static const struct value_string gsm_mncc_names[] = {
- { MNCC_SETUP_REQ, "MNCC_SETUP_REQ" },
- { MNCC_SETUP_IND, "MNCC_SETUP_IND" },
- { MNCC_SETUP_RSP, "MNCC_SETUP_RSP" },
- { MNCC_SETUP_CNF, "MNCC_SETUP_CNF" },
- { MNCC_SETUP_COMPL_REQ, "MNCC_SETUP_COMPL_REQ" },
- { MNCC_SETUP_COMPL_IND, "MNCC_SETUP_COMPL_IND" },
- { MNCC_CALL_CONF_IND, "MNCC_CALL_CONF_IND" },
- { MNCC_CALL_PROC_REQ, "MNCC_CALL_PROC_REQ" },
- { MNCC_PROGRESS_REQ, "MNCC_PROGRESS_REQ" },
- { MNCC_ALERT_REQ, "MNCC_ALERT_REQ" },
- { MNCC_ALERT_IND, "MNCC_ALERT_IND" },
- { MNCC_NOTIFY_REQ, "MNCC_NOTIFY_REQ" },
- { MNCC_NOTIFY_IND, "MNCC_NOTIFY_IND" },
- { MNCC_DISC_REQ, "MNCC_DISC_REQ" },
- { MNCC_DISC_IND, "MNCC_DISC_IND" },
- { MNCC_REL_REQ, "MNCC_REL_REQ" },
- { MNCC_REL_IND, "MNCC_REL_IND" },
- { MNCC_REL_CNF, "MNCC_REL_CNF" },
- { MNCC_FACILITY_REQ, "MNCC_FACILITY_REQ" },
- { MNCC_FACILITY_IND, "MNCC_FACILITY_IND" },
- { MNCC_START_DTMF_IND, "MNCC_START_DTMF_IND" },
- { MNCC_START_DTMF_RSP, "MNCC_START_DTMF_RSP" },
- { MNCC_START_DTMF_REJ, "MNCC_START_DTMF_REJ" },
- { MNCC_STOP_DTMF_IND, "MNCC_STOP_DTMF_IND" },
- { MNCC_STOP_DTMF_RSP, "MNCC_STOP_DTMF_RSP" },
- { MNCC_MODIFY_REQ, "MNCC_MODIFY_REQ" },
- { MNCC_MODIFY_IND, "MNCC_MODIFY_IND" },
- { MNCC_MODIFY_RSP, "MNCC_MODIFY_RSP" },
- { MNCC_MODIFY_CNF, "MNCC_MODIFY_CNF" },
- { MNCC_MODIFY_REJ, "MNCC_MODIFY_REJ" },
- { MNCC_HOLD_IND, "MNCC_HOLD_IND" },
- { MNCC_HOLD_CNF, "MNCC_HOLD_CNF" },
- { MNCC_HOLD_REJ, "MNCC_HOLD_REJ" },
- { MNCC_RETRIEVE_IND, "MNCC_RETRIEVE_IND" },
- { MNCC_RETRIEVE_CNF, "MNCC_RETRIEVE_CNF" },
- { MNCC_RETRIEVE_REJ, "MNCC_RETRIEVE_REJ" },
- { MNCC_USERINFO_REQ, "MNCC_USERINFO_REQ" },
- { MNCC_USERINFO_IND, "MNCC_USERINFO_IND" },
- { MNCC_REJ_REQ, "MNCC_REJ_REQ" },
- { MNCC_REJ_IND, "MNCC_REJ_IND" },
- { MNCC_PROGRESS_IND, "MNCC_PROGRESS_IND" },
- { MNCC_CALL_PROC_IND, "MNCC_CALL_PROC_IND" },
- { MNCC_CALL_CONF_REQ, "MNCC_CALL_CONF_REQ" },
- { MNCC_START_DTMF_REQ, "MNCC_START_DTMF_REQ" },
- { MNCC_STOP_DTMF_REQ, "MNCC_STOP_DTMF_REQ" },
- { MNCC_HOLD_REQ, "MNCC_HOLD_REQ " },
- { MNCC_RETRIEVE_REQ, "MNCC_RETRIEVE_REQ" },
- { MNCC_FRAME_RECV, "MNCC_FRAME_RECV" },
- { MNCC_FRAME_DROP, "MNCC_FRAME_DROP" },
- { MNCC_LCHAN_MODIFY, "MNCC_LCHAN_MODIFY" },
- { 0, NULL }
-};
-
-const char *get_mncc_name(int value)
-{
- return get_value_string(gsm_mncc_names, value);
-}
-
-/* push MMCC header and send to MM */
-static int gsm48_cc_to_mm(struct msgb *msg, struct gsm_trans *trans,
- int msg_type)
-{
- struct gsm48_hdr *gh = msgb_l3(msg);
- struct gsm48_mmxx_hdr *mmh;
- int emergency = 0;
-
- /* Add protocol type and transaction ID */
- gh->proto_discr = trans->protocol | (trans->transaction_id << 4);
-
- /* indicate emergency setup to MM layer */
- if (gh->msg_type == GSM48_MT_CC_EMERG_SETUP)
- emergency = 1;
-
- /* push RR header */
- msgb_push(msg, sizeof(struct gsm48_mmxx_hdr));
- mmh = (struct gsm48_mmxx_hdr *)msg->data;
- mmh->msg_type = msg_type;
- mmh->ref = trans->callref;
- mmh->transaction_id = trans->transaction_id;
- mmh->emergency = emergency;
-
- /* send message to MM */
- LOGP(DCC, LOGL_INFO, "Sending '%s' using %s (callref=%x, "
- "transaction_id=%d)\n", gsm48_cc_msg_name(gh->msg_type),
- get_mmxx_name(msg_type), trans->callref, trans->transaction_id);
- return gsm48_mmxx_downmsg(trans->ms, msg);
-}
-
-/* enqueue message to application (MNCC-SAP) */
-static int mncc_recvmsg(struct osmocom_ms *ms, struct gsm_trans *trans,
- int msg_type, struct gsm_mncc *mncc)
-{
- struct gsm48_cclayer *cc = &ms->cclayer;
- struct msgb *msg;
-
- if (trans)
- LOGP(DCC, LOGL_INFO, "(ms %s ti %x) Sending '%s' to MNCC.\n",
- ms->name, trans->transaction_id,
- get_mncc_name(msg_type));
- else
- LOGP(DCC, LOGL_INFO, "(ms %s ti -) Sending '%s' to MNCC.\n",
- ms->name, get_mncc_name(msg_type));
-
- mncc->msg_type = msg_type;
-
- msg = msgb_alloc(sizeof(struct gsm_mncc), "MNCC");
- if (!msg)
- return -ENOMEM;
- memcpy(msg->data, mncc, sizeof(struct gsm_mncc));
- msgb_enqueue(&cc->mncc_upqueue, msg);
-
- return 0;
-}
-
-/* dequeue messages to layer 4 */
-int mncc_dequeue(struct osmocom_ms *ms)
-{
- struct gsm48_cclayer *cc = &ms->cclayer;
- struct gsm_mncc *mncc;
- struct msgb *msg;
- int work = 0;
-
- while ((msg = msgb_dequeue(&cc->mncc_upqueue))) {
- mncc = (struct gsm_mncc *)msg->data;
- if (ms->mncc_entity.mncc_recv)
- ms->mncc_entity.mncc_recv(ms, mncc->msg_type, mncc);
- work = 1; /* work done */
- msgb_free(msg);
- }
-
- return work;
-}
-
-
-/*
- * state transition
- */
-
-static void new_cc_state(struct gsm_trans *trans, int state)
-{
- if (state > 31 || state < 0)
- return;
-
- DEBUGP(DCC, "new state %s -> %s\n",
- gsm48_cc_state_name(trans->cc.state),
- gsm48_cc_state_name(state));
-
- trans->cc.state = state;
-}
-
-/*
- * timers
- */
-
-/* timeout events of all timers */
-static void gsm48_cc_timeout(void *arg)
-{
- struct gsm_trans *trans = arg;
- int disconnect = 0, release = 0, abort = 1;
- int mo_cause = GSM48_CC_CAUSE_RECOVERY_TIMER;
- int mo_location = GSM48_CAUSE_LOC_PRN_S_LU;
- int l4_cause = GSM48_CC_CAUSE_NORMAL_UNSPEC;
- int l4_location = GSM48_CAUSE_LOC_PRN_S_LU;
- struct gsm_mncc mo_rel, l4_rel;
-
- memset(&mo_rel, 0, sizeof(struct gsm_mncc));
- mo_rel.callref = trans->callref;
- memset(&l4_rel, 0, sizeof(struct gsm_mncc));
- l4_rel.callref = trans->callref;
-
- LOGP(DCC, LOGL_INFO, "Timer T%x has fired.\n", trans->cc.Tcurrent);
-
- switch(trans->cc.Tcurrent) {
- case 0x303:
- /* abort if connection is not already esablished */
- if (trans->cc.state == GSM_CSTATE_MM_CONNECTION_PEND)
- abort = 1;
- else
- release = 1;
- l4_cause = GSM48_CC_CAUSE_USER_NOTRESPOND;
- break;
- case 0x305:
- release = 1;
- mo_cause = trans->cc.msg.cause.value;
- mo_location = trans->cc.msg.cause.location;
- break;
- case 0x308:
- if (!trans->cc.T308_second) {
- /* restart T308 a second time */
- gsm48_cc_tx_release(trans, &trans->cc.msg);
- trans->cc.T308_second = 1;
- break; /* stay in release state */
- }
- /* release MM conn, got NULL state, free trans */
- gsm48_rel_null_free(trans);
-
- return;
- case 0x310:
- disconnect = 1;
- l4_cause = GSM48_CC_CAUSE_USER_NOTRESPOND;
- break;
- case 0x313:
- disconnect = 1;
- /* unknown, did not find it in the specs */
- break;
- default:
- release = 1;
- }
-
- if ((release || abort) && trans->callref) {
- /* process release towards layer 4 */
- mncc_release_ind(trans->ms, trans, trans->callref,
- l4_location, l4_cause);
- }
-
- if (disconnect && trans->callref) {
- /* process disconnect towards layer 4 */
- mncc_set_cause(&l4_rel, l4_location, l4_cause);
- mncc_recvmsg(trans->ms, trans, MNCC_DISC_IND, &l4_rel);
- }
-
- /* process disconnect towards mobile station */
- if (disconnect || release || abort) {
- mncc_set_cause(&mo_rel, mo_location, mo_cause);
- mo_rel.cause.diag[0] =
- ((trans->cc.Tcurrent & 0xf00) >> 8) + '0';
- mo_rel.cause.diag[1] =
- ((trans->cc.Tcurrent & 0x0f0) >> 4) + '0';
- mo_rel.cause.diag[2] = (trans->cc.Tcurrent & 0x00f) + '0';
- mo_rel.cause.diag_len = 3;
-
- if (disconnect)
- gsm48_cc_tx_disconnect(trans, &mo_rel);
- if (release)
- gsm48_cc_tx_release(trans, &mo_rel);
- if (abort) {
- /* release MM conn, got NULL state, free trans */
- gsm48_rel_null_free(trans);
- }
- }
-}
-
-/* start various timers */
-static void gsm48_start_cc_timer(struct gsm_trans *trans, int current,
- int sec, int micro)
-{
- LOGP(DCC, LOGL_INFO, "starting timer T%x with %d seconds\n", current,
- sec);
- trans->cc.timer.cb = gsm48_cc_timeout;
- trans->cc.timer.data = trans;
- osmo_timer_schedule(&trans->cc.timer, sec, micro);
- trans->cc.Tcurrent = current;
-}
-
-/* stop various timers */
-static void gsm48_stop_cc_timer(struct gsm_trans *trans)
-{
- if (osmo_timer_pending(&trans->cc.timer)) {
- LOGP(DCC, LOGL_INFO, "stopping pending timer T%x\n",
- trans->cc.Tcurrent);
- osmo_timer_del(&trans->cc.timer);
- trans->cc.Tcurrent = 0;
- }
-}
-
-/*
- * process handlers (misc)
- */
-
-/* Call Control Specific transaction release.
- * gets called by trans_free, DO NOT CALL YOURSELF!
- */
-void _gsm48_cc_trans_free(struct gsm_trans *trans)
-{
- gsm48_stop_cc_timer(trans);
-
- /* disable audio distribution */
- if (trans->ms->mncc_entity.ref == trans->callref)
- trans->ms->mncc_entity.ref = 0;
-
- /* send release to L4, if callref still exists */
- if (trans->callref) {
- /* Ressource unavailable */
- mncc_release_ind(trans->ms, trans, trans->callref,
- GSM48_CAUSE_LOC_PRN_S_LU,
- GSM48_CC_CAUSE_RESOURCE_UNAVAIL);
- }
- if (trans->cc.state != GSM_CSTATE_NULL)
- new_cc_state(trans, GSM_CSTATE_NULL);
-}
-
-/* release MM connection, go NULL state, free transaction */
-static int gsm48_rel_null_free(struct gsm_trans *trans)
-{
- struct msgb *nmsg;
-
- /* release MM connection */
- nmsg = gsm48_mmxx_msgb_alloc(GSM48_MMCC_REL_REQ, trans->callref,
- trans->transaction_id);
- if (!nmsg)
- return -ENOMEM;
- LOGP(DCC, LOGL_INFO, "Sending MMCC_REL_REQ\n");
- gsm48_mmxx_downmsg(trans->ms, nmsg);
-
- new_cc_state(trans, GSM_CSTATE_NULL);
-
- trans->callref = 0;
- trans_free(trans);
-
- return 0;
-}
-
-void mncc_set_cause(struct gsm_mncc *data, int loc, int val)
-{
- data->fields |= MNCC_F_CAUSE;
- data->cause.coding = 0x3;
- data->cause.location = loc;
- data->cause.value = val;
-}
-
-/* send release indication to upper layer */
-int mncc_release_ind(struct osmocom_ms *ms, struct gsm_trans *trans,
- u_int32_t callref, int location, int value)
-{
- struct gsm_mncc rel;
-
- memset(&rel, 0, sizeof(rel));
- rel.callref = callref;
- mncc_set_cause(&rel, location, value);
- return mncc_recvmsg(ms, trans, MNCC_REL_IND, &rel);
-}
-
-/* sending status message in response to unknown message */
-static int gsm48_cc_tx_status(struct gsm_trans *trans, int cause)
-{
- struct msgb *nmsg;
- struct gsm48_hdr *gh;
- uint8_t *cause_ie, *call_state_ie;
-
- LOGP(DCC, LOGL_INFO, "sending STATUS (cause %d)\n", cause);
-
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- gh = (struct gsm48_hdr *) msgb_put(nmsg, sizeof(*gh));
-
- gh->msg_type = GSM48_MT_CC_STATUS;
-
- cause_ie = msgb_put(nmsg, 3);
- cause_ie[0] = 2;
- cause_ie[1] = GSM48_CAUSE_CS_GSM | GSM48_CAUSE_LOC_PRN_S_LU;
- cause_ie[2] = 0x80 | cause;
-
- call_state_ie = msgb_put(nmsg, 1);
- call_state_ie[0] = 0xc0 | trans->cc.state;
-
- return gsm48_cc_to_mm(nmsg, trans, GSM48_MMCC_DATA_REQ);
-}
-
-/* reply status enquiry */
-static int gsm48_cc_rx_status_enq(struct gsm_trans *trans, struct msgb *msg)
-{
- LOGP(DCC, LOGL_INFO, "received STATUS ENQUIREY\n");
-
- return gsm48_cc_tx_status(trans, GSM48_CC_CAUSE_RESP_STATUS_INQ);
-}
-
-static int gsm48_cc_rx_status(struct gsm_trans *trans, struct msgb *msg)
-{
- struct gsm48_hdr *gh = msgb_l3(msg);
- unsigned int payload_len = msgb_l3len(msg) - sizeof(*gh);
- struct gsm_mncc_cause cause;
-
- if (payload_len < 1 || payload_len < gh->data[0] + 1) {
- LOGP(DCC, LOGL_NOTICE, "Short read of status message "
- "error.\n");
- return -EINVAL;
- }
- gsm48_decode_cause(&cause, gh->data);
-
- LOGP(DCC, LOGL_INFO, "received STATUS (cause %d)\n", cause.value);
-
- return 0;
-}
-
-/*
- * process handlers (mobile originating call establish)
- */
-
-/* on SETUP request from L4, init MM connection */
-static int gsm48_cc_init_mm(struct gsm_trans *trans, void *arg)
-{
- struct msgb *nmsg;
- struct gsm_mncc *data = arg;
- struct gsm48_mmxx_hdr *nmmh;
-
- /* store setup message */
- memcpy(&trans->cc.msg, data, sizeof(struct gsm_mncc));
-
- new_cc_state(trans, GSM_CSTATE_MM_CONNECTION_PEND);
-
- /* establish MM connection */
- nmsg = gsm48_mmxx_msgb_alloc(GSM48_MMCC_EST_REQ, trans->callref,
- trans->transaction_id);
- if (!nmsg)
- return -ENOMEM;
- nmmh = (struct gsm48_mmxx_hdr *) nmsg->data;
- if (data->emergency)
- nmmh->emergency = 1;
- LOGP(DCC, LOGL_INFO, "Sending MMCC_EST_REQ\n");
- return gsm48_mmxx_downmsg(trans->ms, nmsg);
-}
-
-/* abort connection prior SETUP */
-static int gsm48_cc_abort_mm(struct gsm_trans *trans, void *arg)
-{
- struct msgb *nmsg;
-
- /* abort MM connection */
- nmsg = gsm48_mmxx_msgb_alloc(GSM48_MMCC_REL_REQ, trans->callref,
- trans->transaction_id);
- if (!nmsg)
- return -ENOMEM;
- LOGP(DCC, LOGL_INFO, "Sending MMCC_REL_REQ\n");
- gsm48_mmxx_downmsg(trans->ms, nmsg);
-
- new_cc_state(trans, GSM_CSTATE_NULL);
-
- trans->callref = 0;
- trans_free(trans);
-
- return 0;
-}
-
-/* setup message from upper layer */
-static int gsm48_cc_tx_setup(struct gsm_trans *trans)
-{
- struct msgb *nmsg;
- struct gsm48_hdr *gh;
- struct gsm_mncc *setup = &trans->cc.msg;
- int rc, transaction_id;
- uint8_t *ie;
-
- LOGP(DCC, LOGL_INFO, "sending SETUP\n");
-
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- gh = (struct gsm48_hdr *) msgb_put(nmsg, sizeof(*gh));
-
- /* transaction id must not be assigned */
- if (trans->transaction_id != 0xff) { /* unasssigned */
- LOGP(DCC, LOGL_NOTICE, "TX Setup with assigned transaction. "
- "This is not allowed!\n");
- /* Temporarily out of order */
- rc = mncc_release_ind(trans->ms, trans, trans->callref,
- GSM48_CAUSE_LOC_PRN_S_LU,
- GSM48_CC_CAUSE_NORMAL_UNSPEC);
- trans->callref = 0;
- trans_free(trans);
- return rc;
- }
-
- /* Get free transaction_id */
- transaction_id = trans_assign_trans_id(trans->ms, GSM48_PDISC_CC, 0);
- if (transaction_id < 0) {
- /* no free transaction ID */
- rc = mncc_release_ind(trans->ms, trans, trans->callref,
- GSM48_CAUSE_LOC_PRN_S_LU,
- GSM48_CC_CAUSE_RESOURCE_UNAVAIL);
- trans->callref = 0;
- trans_free(trans);
- return rc;
- }
- trans->transaction_id = transaction_id;
-
- gh->msg_type = (setup->emergency) ? GSM48_MT_CC_EMERG_SETUP :
- GSM48_MT_CC_SETUP;
-
- /* actually we have to start it when CM SERVICE REQUEST has been sent,
- * but there is no primitive for that defined. i think it is ok to
- * do it here rather than inventing MMCC-NOTIFY-IND.
- */
- gsm48_start_cc_timer(trans, 0x303, GSM48_T303_MS);
-
- /* bearer capability (optional for emergency calls only) */
- if (setup->fields & MNCC_F_BEARER_CAP)
- gsm48_encode_bearer_cap(nmsg, 0, &setup->bearer_cap);
- if (!setup->emergency) {
- /* facility */
- if (setup->fields & MNCC_F_FACILITY)
- gsm48_encode_facility(nmsg, 0, &setup->facility);
- /* called party BCD number */
- if (setup->fields & MNCC_F_CALLED)
- gsm48_encode_called(nmsg, &setup->called);
- /* user-user */
- if (setup->fields & MNCC_F_USERUSER)
- gsm48_encode_useruser(nmsg, 0, &setup->useruser);
- /* ss version */
- if (setup->fields & MNCC_F_SSVERSION)
- gsm48_encode_ssversion(nmsg, &setup->ssversion);
- /* CLIR suppression */
- if (setup->clir.sup) {
- ie = msgb_put(nmsg, 1);
- ie[0] = GSM48_IE_CLIR_SUPP;
- }
- /* CLIR invocation */
- if (setup->clir.inv) {
- ie = msgb_put(nmsg, 1);
- ie[0] = GSM48_IE_CLIR_INVOC;
- }
- /* cc cap */
- if (setup->fields & MNCC_F_CCCAP)
- gsm48_encode_cccap(nmsg, &setup->cccap);
- }
-
- /* actually MM CONNECTION PENDING */
- new_cc_state(trans, GSM_CSTATE_INITIATED);
-
- return gsm48_cc_to_mm(nmsg, trans, GSM48_MMCC_DATA_REQ);
-}
-
-/* progress is received from lower layer */
-static int gsm48_cc_rx_progress(struct gsm_trans *trans, struct msgb *msg)
-{
- struct gsm48_hdr *gh = msgb_l3(msg);
- unsigned int payload_len = msgb_l3len(msg) - sizeof(*gh);
- struct tlv_parsed tp;
- struct gsm_mncc progress;
-
- LOGP(DCC, LOGL_INFO, "received PROGRESS\n");
-
- memset(&progress, 0, sizeof(struct gsm_mncc));
- progress.callref = trans->callref;
- tlv_parse(&tp, &gsm48_att_tlvdef, gh->data, payload_len,
- GSM48_IE_PROGR_IND, 0);
- /* progress */
- if (TLVP_PRESENT(&tp, GSM48_IE_PROGR_IND)) {
- progress.fields |= MNCC_F_PROGRESS;
- gsm48_decode_progress(&progress.progress,
- TLVP_VAL(&tp, GSM48_IE_PROGR_IND)-1);
- /* store last progress indicator */
- trans->cc.prog_ind = progress.progress.descr;
- }
- /* user-user */
- if (TLVP_PRESENT(&tp, GSM48_IE_USER_USER)) {
- progress.fields |= MNCC_F_USERUSER;
- gsm48_decode_useruser(&progress.useruser,
- TLVP_VAL(&tp, GSM48_IE_USER_USER)-1);
- }
-
- return mncc_recvmsg(trans->ms, trans, MNCC_PROGRESS_IND, &progress);
-}
-
-/* call proceeding is received from lower layer */
-static int gsm48_cc_rx_call_proceeding(struct gsm_trans *trans,
- struct msgb *msg)
-{
- struct gsm48_hdr *gh = msgb_l3(msg);
- unsigned int payload_len = msgb_l3len(msg) - sizeof(*gh);
- struct tlv_parsed tp;
- struct gsm_mncc call_proc;
-
- LOGP(DCC, LOGL_INFO, "sending CALL PROCEEDING\n");
-
- gsm48_stop_cc_timer(trans);
-
- memset(&call_proc, 0, sizeof(struct gsm_mncc));
- call_proc.callref = trans->callref;
- tlv_parse(&tp, &gsm48_att_tlvdef, gh->data, payload_len, 0, 0);
-#if 0
- /* repeat */
- if (TLVP_PRESENT(&tp, GSM48_IE_REPEAT_CIR))
- call_conf.repeat = 1;
- if (TLVP_PRESENT(&tp, GSM48_IE_REPEAT_SEQ))
- call_conf.repeat = 2;
-#endif
- /* bearer capability */
- if (TLVP_PRESENT(&tp, GSM48_IE_BEARER_CAP)) {
- call_proc.fields |= MNCC_F_BEARER_CAP;
- gsm48_decode_bearer_cap(&call_proc.bearer_cap,
- TLVP_VAL(&tp, GSM48_IE_BEARER_CAP)-1);
- }
- /* facility */
- if (TLVP_PRESENT(&tp, GSM48_IE_FACILITY)) {
- call_proc.fields |= MNCC_F_FACILITY;
- gsm48_decode_facility(&call_proc.facility,
- TLVP_VAL(&tp, GSM48_IE_FACILITY)-1);
- }
-
- /* progress */
- if (TLVP_PRESENT(&tp, GSM48_IE_PROGR_IND)) {
- call_proc.fields |= MNCC_F_PROGRESS;
- gsm48_decode_progress(&call_proc.progress,
- TLVP_VAL(&tp, GSM48_IE_PROGR_IND)-1);
- /* store last progress indicator */
- trans->cc.prog_ind = call_proc.progress.descr;
- }
-
- /* start T310, if last progress indicator was 1 or 2 or 64 */
- if (trans->cc.prog_ind == 1
- || trans->cc.prog_ind == 2
- || trans->cc.prog_ind == 64)
- gsm48_start_cc_timer(trans, 0x310, GSM48_T310_MS);
-
- new_cc_state(trans, GSM_CSTATE_MO_CALL_PROC);
-
- return mncc_recvmsg(trans->ms, trans, MNCC_CALL_PROC_IND,
- &call_proc);
-}
-
-/* alerting is received by the lower layer */
-static int gsm48_cc_rx_alerting(struct gsm_trans *trans, struct msgb *msg)
-{
- struct gsm48_hdr *gh = msgb_l3(msg);
- unsigned int payload_len = msgb_l3len(msg) - sizeof(*gh);
- struct tlv_parsed tp;
- struct gsm_mncc alerting;
-
- LOGP(DCC, LOGL_INFO, "received ALERTING\n");
-
- gsm48_stop_cc_timer(trans);
- /* no T301 in MS call control */
-
- memset(&alerting, 0, sizeof(struct gsm_mncc));
- alerting.callref = trans->callref;
- tlv_parse(&tp, &gsm48_att_tlvdef, gh->data, payload_len, 0, 0);
- /* facility */
- if (TLVP_PRESENT(&tp, GSM48_IE_FACILITY)) {
- alerting.fields |= MNCC_F_FACILITY;
- gsm48_decode_facility(&alerting.facility,
- TLVP_VAL(&tp, GSM48_IE_FACILITY)-1);
- }
- /* progress */
- if (TLVP_PRESENT(&tp, GSM48_IE_PROGR_IND)) {
- alerting.fields |= MNCC_F_PROGRESS;
- gsm48_decode_progress(&alerting.progress,
- TLVP_VAL(&tp, GSM48_IE_PROGR_IND)-1);
- }
- /* user-user */
- if (TLVP_PRESENT(&tp, GSM48_IE_USER_USER)) {
- alerting.fields |= MNCC_F_USERUSER;
- gsm48_decode_useruser(&alerting.useruser,
- TLVP_VAL(&tp, GSM48_IE_USER_USER)-1);
- }
-
- new_cc_state(trans, GSM_CSTATE_CALL_DELIVERED);
-
- return mncc_recvmsg(trans->ms, trans, MNCC_ALERT_IND,
- &alerting);
-}
-
-/* connect is received from lower layer */
-static int gsm48_cc_rx_connect(struct gsm_trans *trans, struct msgb *msg)
-{
- struct gsm48_hdr *gh = msgb_l3(msg);
- unsigned int payload_len = msgb_l3len(msg) - sizeof(*gh);
- struct tlv_parsed tp;
- struct gsm_mncc connect;
-
- LOGP(DCC, LOGL_INFO, "received CONNECT\n");
-
- gsm48_stop_cc_timer(trans);
-
- memset(&connect, 0, sizeof(struct gsm_mncc));
- connect.callref = trans->callref;
- tlv_parse(&tp, &gsm48_att_tlvdef, gh->data, payload_len, 0, 0);
- /* facility */
- if (TLVP_PRESENT(&tp, GSM48_IE_FACILITY)) {
- connect.fields |= MNCC_F_FACILITY;
- gsm48_decode_facility(&connect.facility,
- TLVP_VAL(&tp, GSM48_IE_FACILITY)-1);
- }
- /* connected */
- if (TLVP_PRESENT(&tp, GSM48_IE_CONN_BCD)) {
- connect.fields |= MNCC_F_CONNECTED;
- gsm48_decode_connected(&connect.connected,
- TLVP_VAL(&tp, GSM48_IE_CONN_BCD)-1);
- }
- /* progress */
- if (TLVP_PRESENT(&tp, GSM48_IE_PROGR_IND)) {
- connect.fields |= MNCC_F_PROGRESS;
- gsm48_decode_progress(&connect.progress,
- TLVP_VAL(&tp, GSM48_IE_PROGR_IND)-1);
- }
- /* user-user */
- if (TLVP_PRESENT(&tp, GSM48_IE_USER_USER)) {
- connect.fields |= MNCC_F_USERUSER;
- gsm48_decode_useruser(&connect.useruser,
- TLVP_VAL(&tp, GSM48_IE_USER_USER)-1);
- }
-
- /* ACTIVE state is set during this: */
- gsm48_cc_tx_connect_ack(trans, NULL);
-
- return mncc_recvmsg(trans->ms, trans, MNCC_SETUP_CNF, &connect);
-}
-
-/* connect ack message from upper layer */
-static int gsm48_cc_tx_connect_ack(struct gsm_trans *trans, void *arg)
-{
- struct msgb *nmsg;
- struct gsm48_hdr *gh;
-
- LOGP(DCC, LOGL_INFO, "sending CONNECT ACKNOWLEDGE\n");
-
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- gh = (struct gsm48_hdr *) msgb_put(nmsg, sizeof(*gh));
-
- gh->msg_type = GSM48_MT_CC_CONNECT_ACK;
-
- new_cc_state(trans, GSM_CSTATE_ACTIVE);
-
- return gsm48_cc_to_mm(nmsg, trans, GSM48_MMCC_DATA_REQ);
-}
-
-/*
- * process handlers (mobile terminating call establish)
- */
-
-/* setup is received from lower layer */
-static int gsm48_cc_rx_setup(struct gsm_trans *trans, struct msgb *msg)
-{
- struct gsm48_hdr *gh = msgb_l3(msg);
- unsigned int payload_len = msgb_l3len(msg) - sizeof(*gh);
- struct tlv_parsed tp;
- struct gsm_mncc setup;
-
- LOGP(DCC, LOGL_INFO, "received SETUP\n");
-
- memset(&setup, 0, sizeof(struct gsm_mncc));
- setup.callref = trans->callref;
- tlv_parse(&tp, &gsm48_att_tlvdef, gh->data, payload_len, 0, 0);
-
- /* bearer capability */
- if (TLVP_PRESENT(&tp, GSM48_IE_BEARER_CAP)) {
- setup.fields |= MNCC_F_BEARER_CAP;
- gsm48_decode_bearer_cap(&setup.bearer_cap,
- TLVP_VAL(&tp, GSM48_IE_BEARER_CAP)-1);
- }
- /* facility */
- if (TLVP_PRESENT(&tp, GSM48_IE_FACILITY)) {
- setup.fields |= MNCC_F_FACILITY;
- gsm48_decode_facility(&setup.facility,
- TLVP_VAL(&tp, GSM48_IE_FACILITY)-1);
- }
- /* progress */
- if (TLVP_PRESENT(&tp, GSM48_IE_PROGR_IND)) {
- setup.fields |= MNCC_F_PROGRESS;
- gsm48_decode_progress(&setup.progress,
- TLVP_VAL(&tp, GSM48_IE_PROGR_IND)-1);
- }
- /* signal */
- if (TLVP_PRESENT(&tp, GSM48_IE_SIGNAL)) {
- setup.fields |= MNCC_F_SIGNAL;
- gsm48_decode_signal(&setup.signal,
- TLVP_VAL(&tp, GSM48_IE_SIGNAL)-1);
- }
- /* calling party bcd number */
- if (TLVP_PRESENT(&tp, GSM48_IE_CALLING_BCD)) {
- setup.fields |= MNCC_F_CALLING;
- gsm48_decode_calling(&setup.calling,
- TLVP_VAL(&tp, GSM48_IE_CALLING_BCD)-1);
- }
- /* called party bcd number */
- if (TLVP_PRESENT(&tp, GSM48_IE_CALLED_BCD)) {
- setup.fields |= MNCC_F_CALLED;
- gsm48_decode_called(&setup.called,
- TLVP_VAL(&tp, GSM48_IE_CALLED_BCD)-1);
- }
- /* redirecting party bcd number */
- if (TLVP_PRESENT(&tp, GSM48_IE_REDIR_BCD)) {
- setup.fields |= MNCC_F_REDIRECTING;
- gsm48_decode_redirecting(&setup.redirecting,
- TLVP_VAL(&tp, GSM48_IE_REDIR_BCD)-1);
- }
- /* user-user */
- if (TLVP_PRESENT(&tp, GSM48_IE_USER_USER)) {
- setup.fields |= MNCC_F_USERUSER;
- gsm48_decode_useruser(&setup.useruser,
- TLVP_VAL(&tp, GSM48_IE_USER_USER)-1);
- }
-
- new_cc_state(trans, GSM_CSTATE_CALL_PRESENT);
-
- /* indicate setup to MNCC */
- mncc_recvmsg(trans->ms, trans, MNCC_SETUP_IND, &setup);
-
- return 0;
-}
-
-/* call conf message from upper layer */
-static int gsm48_cc_tx_call_conf(struct gsm_trans *trans, void *arg)
-{
- struct gsm_mncc *confirm = arg;
- struct msgb *nmsg;
- struct gsm48_hdr *gh;
-
- LOGP(DCC, LOGL_INFO, "sending CALL CONFIRMED (proceeding)\n");
-
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- gh = (struct gsm48_hdr *) msgb_put(nmsg, sizeof(*gh));
-
- gh->msg_type = GSM48_MT_CC_CALL_CONF;
-
- new_cc_state(trans, GSM_CSTATE_MO_TERM_CALL_CONF);
-
- /* bearer capability */
- if (confirm->fields & MNCC_F_BEARER_CAP)
- gsm48_encode_bearer_cap(nmsg, 0, &confirm->bearer_cap);
- /* cause */
- if (confirm->fields & MNCC_F_CAUSE)
- gsm48_encode_cause(nmsg, 0, &confirm->cause);
- /* cc cap */
- if (confirm->fields & MNCC_F_CCCAP)
- gsm48_encode_cccap(nmsg, &confirm->cccap);
-
- return gsm48_cc_to_mm(nmsg, trans, GSM48_MMCC_DATA_REQ);
-}
-
-/* alerting message from upper layer */
-static int gsm48_cc_tx_alerting(struct gsm_trans *trans, void *arg)
-{
- struct gsm_mncc *alerting = arg;
- struct msgb *nmsg;
- struct gsm48_hdr *gh;
-
- LOGP(DCC, LOGL_INFO, "sending ALERTING\n");
-
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- gh = (struct gsm48_hdr *) msgb_put(nmsg, sizeof(*gh));
-
- gh->msg_type = GSM48_MT_CC_ALERTING;
-
- /* facility */
- if (alerting->fields & MNCC_F_FACILITY)
- gsm48_encode_facility(nmsg, 0, &alerting->facility);
- /* user-user */
- if (alerting->fields & MNCC_F_USERUSER)
- gsm48_encode_useruser(nmsg, 0, &alerting->useruser);
- /* ss version */
- if (alerting->fields & MNCC_F_SSVERSION)
- gsm48_encode_ssversion(nmsg, &alerting->ssversion);
-
- new_cc_state(trans, GSM_CSTATE_CALL_RECEIVED);
-
- return gsm48_cc_to_mm(nmsg, trans, GSM48_MMCC_DATA_REQ);
-}
-
-/* connect message from upper layer */
-static int gsm48_cc_tx_connect(struct gsm_trans *trans, void *arg)
-{
- struct gsm_mncc *connect = arg;
- struct msgb *nmsg;
- struct gsm48_hdr *gh;
-
- LOGP(DCC, LOGL_INFO, "sending CONNECT\n");
-
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- gh = (struct gsm48_hdr *) msgb_put(nmsg, sizeof(*gh));
-
- gh->msg_type = GSM48_MT_CC_CONNECT;
-
- gsm48_stop_cc_timer(trans);
- gsm48_start_cc_timer(trans, 0x313, GSM48_T313_MS);
-
- /* facility */
- if (connect->fields & MNCC_F_FACILITY)
- gsm48_encode_facility(nmsg, 0, &connect->facility);
- /* user-user */
- if (connect->fields & MNCC_F_USERUSER)
- gsm48_encode_useruser(nmsg, 0, &connect->useruser);
- /* ss version */
- if (connect->fields & MNCC_F_SSVERSION)
- gsm48_encode_ssversion(nmsg, &connect->ssversion);
-
- new_cc_state(trans, GSM_CSTATE_CONNECT_REQUEST);
-
- return gsm48_cc_to_mm(nmsg, trans, GSM48_MMCC_DATA_REQ);
-}
-
-/* connect ack is received from lower layer */
-static int gsm48_cc_rx_connect_ack(struct gsm_trans *trans, struct msgb *msg)
-{
- struct gsm_mncc connect_ack;
-
- LOGP(DCC, LOGL_INFO, "received CONNECT ACKNOWLEDGE\n");
-
- gsm48_stop_cc_timer(trans);
-
- new_cc_state(trans, GSM_CSTATE_ACTIVE);
-
- memset(&connect_ack, 0, sizeof(struct gsm_mncc));
- connect_ack.callref = trans->callref;
- return mncc_recvmsg(trans->ms, trans, MNCC_SETUP_COMPL_IND,
- &connect_ack);
-}
-
-/*
- * process handlers (during active state)
- */
-
-/* notify message from upper layer */
-static int gsm48_cc_tx_notify(struct gsm_trans *trans, void *arg)
-{
- struct gsm_mncc *notify = arg;
- struct msgb *nmsg;
- struct gsm48_hdr *gh;
-
- LOGP(DCC, LOGL_INFO, "sending NOTIFY\n");
-
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- gh = (struct gsm48_hdr *) msgb_put(nmsg, sizeof(*gh));
-
- gh->msg_type = GSM48_MT_CC_NOTIFY;
-
- /* notify */
- gsm48_encode_notify(nmsg, notify->notify);
-
- return gsm48_cc_to_mm(nmsg, trans, GSM48_MMCC_DATA_REQ);
-}
-
-/* notify is received from lower layer */
-static int gsm48_cc_rx_notify(struct gsm_trans *trans, struct msgb *msg)
-{
- struct gsm48_hdr *gh = msgb_l3(msg);
- unsigned int payload_len = msgb_l3len(msg) - sizeof(*gh);
- struct gsm_mncc notify;
-
- LOGP(DCC, LOGL_INFO, "received NOTIFY\n");
-
- memset(&notify, 0, sizeof(struct gsm_mncc));
- notify.callref = trans->callref;
- /* notify */
- if (payload_len < 1) {
- LOGP(DCC, LOGL_NOTICE, "Short read of notify message error.\n");
- return -EINVAL;
- }
- gsm48_decode_notify(&notify.notify, gh->data);
-
- return mncc_recvmsg(trans->ms, trans, MNCC_NOTIFY_IND, &notify);
-}
-
-/* start dtmf message from upper layer */
-static int gsm48_cc_tx_start_dtmf(struct gsm_trans *trans, void *arg)
-{
- struct gsm_mncc *dtmf = arg;
- struct msgb *nmsg;
- struct gsm48_hdr *gh;
-
- LOGP(DCC, LOGL_INFO, "sending START DTMF\n");
-
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- gh = (struct gsm48_hdr *) msgb_put(nmsg, sizeof(*gh));
-
- gh->msg_type = GSM48_MT_CC_START_DTMF;
-
- /* keypad */
- gsm48_encode_keypad(nmsg, dtmf->keypad);
-
- return gsm48_cc_to_mm(nmsg, trans, GSM48_MMCC_DATA_REQ);
-}
-
-/* start dtmf ack is received from lower layer */
-static int gsm48_cc_rx_start_dtmf_ack(struct gsm_trans *trans, struct msgb *msg)
-{
- struct gsm48_hdr *gh = msgb_l3(msg);
- unsigned int payload_len = msgb_l3len(msg) - sizeof(*gh);
- struct tlv_parsed tp;
- struct gsm_mncc dtmf;
-
- LOGP(DCC, LOGL_INFO, "received START DTMF ACKNOWLEDGE\n");
-
- memset(&dtmf, 0, sizeof(struct gsm_mncc));
- dtmf.callref = trans->callref;
- tlv_parse(&tp, &gsm48_att_tlvdef, gh->data, payload_len, 0, 0);
- /* keypad facility */
- if (TLVP_PRESENT(&tp, GSM48_IE_KPD_FACILITY)) {
- dtmf.fields |= MNCC_F_KEYPAD;
- gsm48_decode_keypad(&dtmf.keypad,
- TLVP_VAL(&tp, GSM48_IE_KPD_FACILITY)-1);
- }
-
- return mncc_recvmsg(trans->ms, trans, MNCC_START_DTMF_RSP, &dtmf);
-}
-
-/* start dtmf rej is received from lower layer */
-static int gsm48_cc_rx_start_dtmf_rej(struct gsm_trans *trans, struct msgb *msg)
-{
- struct gsm48_hdr *gh = msgb_l3(msg);
- unsigned int payload_len = msgb_l3len(msg) - sizeof(*gh);
- struct gsm_mncc dtmf;
-
- LOGP(DCC, LOGL_INFO, "received START DTMF REJECT\n");
-
- memset(&dtmf, 0, sizeof(struct gsm_mncc));
- dtmf.callref = trans->callref;
- /* cause */
- if (payload_len < 1) {
- LOGP(DCC, LOGL_NOTICE, "Short read of dtmf reject message "
- "error.\n");
- return -EINVAL;
- }
- gsm48_decode_cause(&dtmf.cause, gh->data);
-
- return mncc_recvmsg(trans->ms, trans, MNCC_START_DTMF_REJ, &dtmf);
-}
-
-/* stop dtmf message from upper layer */
-static int gsm48_cc_tx_stop_dtmf(struct gsm_trans *trans, void *arg)
-{
- struct msgb *nmsg;
- struct gsm48_hdr *gh;
-
- LOGP(DCC, LOGL_INFO, "sending STOP DTMF\n");
-
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- gh = (struct gsm48_hdr *) msgb_put(nmsg, sizeof(*gh));
-
- gh->msg_type = GSM48_MT_CC_STOP_DTMF;
-
- return gsm48_cc_to_mm(nmsg, trans, GSM48_MMCC_DATA_REQ);
-}
-
-/* stop dtmf ack is received from lower layer */
-static int gsm48_cc_rx_stop_dtmf_ack(struct gsm_trans *trans, struct msgb *msg)
-{
- struct gsm48_hdr *gh = msgb_l3(msg);
- unsigned int payload_len = msgb_l3len(msg) - sizeof(*gh);
- struct tlv_parsed tp;
- struct gsm_mncc dtmf;
-
- LOGP(DCC, LOGL_INFO, "received STOP DTMF ACKNOWLEDGE\n");
-
- memset(&dtmf, 0, sizeof(struct gsm_mncc));
- dtmf.callref = trans->callref;
- tlv_parse(&tp, &gsm48_att_tlvdef, gh->data, payload_len, 0, 0);
-
- return mncc_recvmsg(trans->ms, trans, MNCC_STOP_DTMF_RSP, &dtmf);
-}
-
-/* hold message from upper layer */
-static int gsm48_cc_tx_hold(struct gsm_trans *trans, void *arg)
-{
- struct msgb *nmsg;
- struct gsm48_hdr *gh;
-
- LOGP(DCC, LOGL_INFO, "sending HOLD\n");
-
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- gh = (struct gsm48_hdr *) msgb_put(nmsg, sizeof(*gh));
-
- gh->msg_type = GSM48_MT_CC_HOLD;
-
- return gsm48_cc_to_mm(nmsg, trans, GSM48_MMCC_DATA_REQ);
-}
-
-/* hold ack is received from lower layer */
-static int gsm48_cc_rx_hold_ack(struct gsm_trans *trans, struct msgb *msg)
-{
- struct gsm_mncc hold;
-
- LOGP(DCC, LOGL_INFO, "received HOLD ACKNOWLEDGE\n");
-
- memset(&hold, 0, sizeof(struct gsm_mncc));
- hold.callref = trans->callref;
-
- return mncc_recvmsg(trans->ms, trans, MNCC_HOLD_CNF, &hold);
-}
-
-/* hold rej is received from lower layer */
-static int gsm48_cc_rx_hold_rej(struct gsm_trans *trans, struct msgb *msg)
-{
- struct gsm48_hdr *gh = msgb_l3(msg);
- unsigned int payload_len = msgb_l3len(msg) - sizeof(*gh);
- struct gsm_mncc hold;
-
- LOGP(DCC, LOGL_INFO, "received HOLD REJECT\n");
-
- memset(&hold, 0, sizeof(struct gsm_mncc));
- hold.callref = trans->callref;
- /* cause */
- if (payload_len < 1) {
- LOGP(DCC, LOGL_NOTICE, "Short read of hold reject message "
- "error.\n");
- return -EINVAL;
- }
- gsm48_decode_cause(&hold.cause, gh->data);
-
- return mncc_recvmsg(trans->ms, trans, MNCC_HOLD_REJ, &hold);
-}
-
-/* retrieve message from upper layer */
-static int gsm48_cc_tx_retrieve(struct gsm_trans *trans, void *arg)
-{
- struct msgb *nmsg;
- struct gsm48_hdr *gh;
-
- LOGP(DCC, LOGL_INFO, "sending RETRIEVE\n");
-
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- gh = (struct gsm48_hdr *) msgb_put(nmsg, sizeof(*gh));
-
- gh->msg_type = GSM48_MT_CC_RETR;
-
- return gsm48_cc_to_mm(nmsg, trans, GSM48_MMCC_DATA_REQ);
-}
-
-/* retrieve ack is received from lower layer */
-static int gsm48_cc_rx_retrieve_ack(struct gsm_trans *trans, struct msgb *msg)
-{
- struct gsm_mncc retrieve;
-
- LOGP(DCC, LOGL_INFO, "received RETRIEVE ACKNOWLEDGE\n");
-
- memset(&retrieve, 0, sizeof(struct gsm_mncc));
- retrieve.callref = trans->callref;
-
- return mncc_recvmsg(trans->ms, trans, MNCC_RETRIEVE_CNF, &retrieve);
-}
-
-/* retrieve rej is received from lower layer */
-static int gsm48_cc_rx_retrieve_rej(struct gsm_trans *trans, struct msgb *msg)
-{
- struct gsm48_hdr *gh = msgb_l3(msg);
- unsigned int payload_len = msgb_l3len(msg) - sizeof(*gh);
- struct gsm_mncc retrieve;
-
- LOGP(DCC, LOGL_INFO, "received RETRIEVE REJECT\n");
-
- memset(&retrieve, 0, sizeof(struct gsm_mncc));
- retrieve.callref = trans->callref;
- /* cause */
- if (payload_len < 1) {
- LOGP(DCC, LOGL_NOTICE, "Short read of retrieve reject message "
- "error.\n");
- return -EINVAL;
- }
- gsm48_decode_cause(&retrieve.cause, gh->data);
-
- return mncc_recvmsg(trans->ms, trans, MNCC_RETRIEVE_REJ, &retrieve);
-}
-
-/* facility message from upper layer or from timer event */
-static int gsm48_cc_tx_facility(struct gsm_trans *trans, void *arg)
-{
- struct gsm_mncc *fac = arg;
- struct msgb *nmsg;
- struct gsm48_hdr *gh;
-
- LOGP(DCC, LOGL_INFO, "sending FACILITY\n");
-
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- gh = (struct gsm48_hdr *) msgb_put(nmsg, sizeof(*gh));
-
- gh->msg_type = GSM48_MT_CC_FACILITY;
-
- /* facility */
- gsm48_encode_facility(nmsg, 1, &fac->facility);
- /* ss version */
- if (fac->fields & MNCC_F_SSVERSION)
- gsm48_encode_ssversion(nmsg, &fac->ssversion);
-
- return gsm48_cc_to_mm(nmsg, trans, GSM48_MMCC_DATA_REQ);
-}
-
-/* facility is received from lower layer */
-static int gsm48_cc_rx_facility(struct gsm_trans *trans, struct msgb *msg)
-{
- struct gsm48_hdr *gh = msgb_l3(msg);
- unsigned int payload_len = msgb_l3len(msg) - sizeof(*gh);
- struct gsm_mncc fac;
-
- LOGP(DCC, LOGL_INFO, "received FACILITY\n");
-
- memset(&fac, 0, sizeof(struct gsm_mncc));
- fac.callref = trans->callref;
- if (payload_len < 1) {
- LOGP(DCC, LOGL_NOTICE, "Short read of facility message "
- "error.\n");
- return -EINVAL;
- }
- /* facility */
- gsm48_decode_facility(&fac.facility, gh->data);
-
- return mncc_recvmsg(trans->ms, trans, MNCC_FACILITY_IND, &fac);
-}
-
-/* user info message from upper layer or from timer event */
-static int gsm48_cc_tx_userinfo(struct gsm_trans *trans, void *arg)
-{
- struct gsm_mncc *user = arg;
- struct msgb *nmsg;
- struct gsm48_hdr *gh;
-
- LOGP(DCC, LOGL_INFO, "sending USERINFO\n");
-
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- gh = (struct gsm48_hdr *) msgb_put(nmsg, sizeof(*gh));
-
- gh->msg_type = GSM48_MT_CC_USER_INFO;
-
- /* user-user */
- if (user->fields & MNCC_F_USERUSER)
- gsm48_encode_useruser(nmsg, 1, &user->useruser);
- /* more data */
- if (user->more)
- gsm48_encode_more(nmsg);
-
- return gsm48_cc_to_mm(nmsg, trans, GSM48_MMCC_DATA_REQ);
-}
-
-/* user info is received from lower layer */
-static int gsm48_cc_rx_userinfo(struct gsm_trans *trans, struct msgb *msg)
-{
- struct gsm48_hdr *gh = msgb_l3(msg);
- unsigned int payload_len = msgb_l3len(msg) - sizeof(*gh);
- struct tlv_parsed tp;
- struct gsm_mncc user;
-
- LOGP(DCC, LOGL_INFO, "received USERINFO\n");
-
- memset(&user, 0, sizeof(struct gsm_mncc));
- user.callref = trans->callref;
- if (payload_len < 1) {
- LOGP(DCC, LOGL_NOTICE, "Short read of userinfo message "
- "error.\n");
- return -EINVAL;
- }
- tlv_parse(&tp, &gsm48_att_tlvdef, gh->data, payload_len,
- GSM48_IE_USER_USER, 0);
- /* user-user */
- gsm48_decode_useruser(&user.useruser,
- TLVP_VAL(&tp, GSM48_IE_USER_USER)-1);
- /* more data */
- if (TLVP_PRESENT(&tp, GSM48_IE_MORE_DATA))
- user.more = 1;
-
- return mncc_recvmsg(trans->ms, trans, MNCC_USERINFO_IND, &user);
-}
-
-/* modify message from upper layer or from timer event */
-static int gsm48_cc_tx_modify(struct gsm_trans *trans, void *arg)
-{
- struct gsm_mncc *modify = arg;
- struct msgb *nmsg;
- struct gsm48_hdr *gh;
-
- LOGP(DCC, LOGL_INFO, "sending MODIFY\n");
-
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- gh = (struct gsm48_hdr *) msgb_put(nmsg, sizeof(*gh));
-
- gh->msg_type = GSM48_MT_CC_MODIFY;
-
- gsm48_start_cc_timer(trans, 0x323, GSM48_T323_MS);
-
- /* bearer capability */
- gsm48_encode_bearer_cap(nmsg, 1, &modify->bearer_cap);
-
- new_cc_state(trans, GSM_CSTATE_MO_TERM_MODIFY);
-
- return gsm48_cc_to_mm(nmsg, trans, GSM48_MMCC_DATA_REQ);
-}
-
-/* modify complete is received from lower layer */
-static int gsm48_cc_rx_modify_complete(struct gsm_trans *trans,
- struct msgb *msg)
-{
- struct gsm48_hdr *gh = msgb_l3(msg);
- unsigned int payload_len = msgb_l3len(msg) - sizeof(*gh);
- struct gsm_mncc modify;
-
- LOGP(DCC, LOGL_INFO, "received MODIFY COMPLETE\n");
-
- gsm48_stop_cc_timer(trans);
-
- memset(&modify, 0, sizeof(struct gsm_mncc));
- modify.callref = trans->callref;
- if (payload_len < 1) {
- LOGP(DCC, LOGL_NOTICE, "Short read of modify complete message "
- "error.\n");
- return -EINVAL;
- }
- /* bearer capability */
- gsm48_decode_bearer_cap(&modify.bearer_cap, gh->data);
-
- new_cc_state(trans, GSM_CSTATE_ACTIVE);
-
- return mncc_recvmsg(trans->ms, trans, MNCC_MODIFY_CNF, &modify);
-}
-
-/* modify reject is received from lower layer */
-static int gsm48_cc_rx_modify_reject(struct gsm_trans *trans, struct msgb *msg)
-{
- struct gsm48_hdr *gh = msgb_l3(msg);
- unsigned int payload_len = msgb_l3len(msg) - sizeof(*gh);
- struct tlv_parsed tp;
- struct gsm_mncc modify;
-
- LOGP(DCC, LOGL_INFO, "received MODIFY REJECT\n");
-
- gsm48_stop_cc_timer(trans);
-
- memset(&modify, 0, sizeof(struct gsm_mncc));
- modify.callref = trans->callref;
- if (payload_len < 1) {
- LOGP(DCC, LOGL_NOTICE, "Short read of modify reject message "
- "error.\n");
- return -EINVAL;
- }
- tlv_parse(&tp, &gsm48_att_tlvdef, gh->data, payload_len,
- GSM48_IE_BEARER_CAP, GSM48_IE_CAUSE);
- /* bearer capability */
- if (TLVP_PRESENT(&tp, GSM48_IE_BEARER_CAP)) {
- modify.fields |= MNCC_F_BEARER_CAP;
- gsm48_decode_bearer_cap(&modify.bearer_cap,
- TLVP_VAL(&tp, GSM48_IE_BEARER_CAP)-1);
- }
- /* cause */
- if (TLVP_PRESENT(&tp, GSM48_IE_CAUSE)) {
- modify.fields |= MNCC_F_CAUSE;
- gsm48_decode_cause(&modify.cause,
- TLVP_VAL(&tp, GSM48_IE_CAUSE)-1);
- }
-
- new_cc_state(trans, GSM_CSTATE_ACTIVE);
-
- return mncc_recvmsg(trans->ms, trans, MNCC_MODIFY_REJ, &modify);
-}
-
-/* modify is received from lower layer */
-static int gsm48_cc_rx_modify(struct gsm_trans *trans, struct msgb *msg)
-{
- struct gsm48_hdr *gh = msgb_l3(msg);
- unsigned int payload_len = msgb_l3len(msg) - sizeof(*gh);
- struct gsm_mncc modify;
-
- LOGP(DCC, LOGL_INFO, "received MODIFY\n");
-
- memset(&modify, 0, sizeof(struct gsm_mncc));
- modify.callref = trans->callref;
- if (payload_len < 1) {
- LOGP(DCC, LOGL_NOTICE, "Short read of modify message error.\n");
- return -EINVAL;
- }
- /* bearer capability */
- gsm48_decode_bearer_cap(&modify.bearer_cap, gh->data);
-
- new_cc_state(trans, GSM_CSTATE_MO_ORIG_MODIFY);
-
- return mncc_recvmsg(trans->ms, trans, MNCC_MODIFY_IND, &modify);
-}
-
-/* modify complete message from upper layer or from timer event */
-static int gsm48_cc_tx_modify_complete(struct gsm_trans *trans, void *arg)
-{
- struct gsm_mncc *modify = arg;
- struct msgb *nmsg;
- struct gsm48_hdr *gh;
-
- LOGP(DCC, LOGL_INFO, "sending MODIFY COMPLETE\n");
-
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- gh = (struct gsm48_hdr *) msgb_put(nmsg, sizeof(*gh));
-
- gh->msg_type = GSM48_MT_CC_MODIFY_COMPL;
-
- /* bearer capability */
- gsm48_encode_bearer_cap(nmsg, 1, &modify->bearer_cap);
-
- new_cc_state(trans, GSM_CSTATE_ACTIVE);
-
- return gsm48_cc_to_mm(nmsg, trans, GSM48_MMCC_DATA_REQ);
-}
-
-/* modify reject message from upper layer or from timer event */
-static int gsm48_cc_tx_modify_reject(struct gsm_trans *trans, void *arg)
-{
- struct gsm_mncc *modify = arg;
- struct msgb *nmsg;
- struct gsm48_hdr *gh;
-
- LOGP(DCC, LOGL_INFO, "sending MODIFY REJECT\n");
-
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- gh = (struct gsm48_hdr *) msgb_put(nmsg, sizeof(*gh));
-
- gh->msg_type = GSM48_MT_CC_MODIFY_REJECT;
-
- /* bearer capability */
- gsm48_encode_bearer_cap(nmsg, 1, &modify->bearer_cap);
- /* cause */
- gsm48_encode_cause(nmsg, 1, &modify->cause);
-
- new_cc_state(trans, GSM_CSTATE_ACTIVE);
-
- return gsm48_cc_to_mm(nmsg, trans, GSM48_MMCC_DATA_REQ);
-}
-
-/*
- * process handlers (call clearing)
- */
-
-static struct gsm_mncc_cause default_cause = {
- .location = GSM48_CAUSE_LOC_PRN_S_LU,
- .coding = 0,
- .rec = 0,
- .rec_val = 0,
- .value = GSM48_CC_CAUSE_NORMAL_UNSPEC,
- .diag_len = 0,
- .diag = { 0 },
-};
-
-/* disconnect message from upper layer or from timer event */
-static int gsm48_cc_tx_disconnect(struct gsm_trans *trans, void *arg)
-{
- struct gsm_mncc *disc = arg;
- struct msgb *nmsg;
- struct gsm48_hdr *gh;
-
- LOGP(DCC, LOGL_INFO, "sending DISCONNECT\n");
-
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- gh = (struct gsm48_hdr *) msgb_put(nmsg, sizeof(*gh));
-
- gh->msg_type = GSM48_MT_CC_DISCONNECT;
-
- gsm48_stop_cc_timer(trans);
- gsm48_start_cc_timer(trans, 0x305, GSM48_T305_MS);
-
- /* cause */
- if (disc->fields & MNCC_F_CAUSE)
- gsm48_encode_cause(nmsg, 1, &disc->cause);
- else
- gsm48_encode_cause(nmsg, 1, &default_cause);
-
- /* facility */
- if (disc->fields & MNCC_F_FACILITY)
- gsm48_encode_facility(nmsg, 0, &disc->facility);
- /* progress */
- if (disc->fields & MNCC_F_PROGRESS)
- gsm48_encode_progress(nmsg, 0, &disc->progress);
- /* user-user */
- if (disc->fields & MNCC_F_USERUSER)
- gsm48_encode_useruser(nmsg, 0, &disc->useruser);
- /* ss version */
- if (disc->fields & MNCC_F_SSVERSION)
- gsm48_encode_ssversion(nmsg, &disc->ssversion);
-
- new_cc_state(trans, GSM_CSTATE_DISCONNECT_REQ);
-
- return gsm48_cc_to_mm(nmsg, trans, GSM48_MMCC_DATA_REQ);
-}
-
-/* release message from upper layer or from timer event */
-static int gsm48_cc_tx_release(struct gsm_trans *trans, void *arg)
-{
- struct gsm_mncc *rel = arg;
- struct msgb *nmsg;
- struct gsm48_hdr *gh;
-
- LOGP(DCC, LOGL_INFO, "sending RELEASE\n");
-
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- gh = (struct gsm48_hdr *) msgb_put(nmsg, sizeof(*gh));
-
- gh->msg_type = GSM48_MT_CC_RELEASE;
-
- gsm48_stop_cc_timer(trans);
- gsm48_start_cc_timer(trans, 0x308, GSM48_T308_MS);
-
- /* cause */
- if (rel->fields & MNCC_F_CAUSE)
- gsm48_encode_cause(nmsg, 0, &rel->cause);
- /* facility */
- if (rel->fields & MNCC_F_FACILITY)
- gsm48_encode_facility(nmsg, 0, &rel->facility);
- /* user-user */
- if (rel->fields & MNCC_F_USERUSER)
- gsm48_encode_useruser(nmsg, 0, &rel->useruser);
- /* ss version */
- if (rel->fields & MNCC_F_SSVERSION)
- gsm48_encode_ssversion(nmsg, &rel->ssversion);
-
- trans->cc.T308_second = 0;
- memcpy(&trans->cc.msg, rel, sizeof(struct gsm_mncc));
-
- if (trans->cc.state != GSM_CSTATE_RELEASE_REQ)
- new_cc_state(trans, GSM_CSTATE_RELEASE_REQ);
-
- gsm48_cc_to_mm(nmsg, trans, GSM48_MMCC_DATA_REQ);
-
-#if 0
- /* release without sending MMCC_REL_REQ */
- new_cc_state(trans, GSM_CSTATE_NULL);
- trans->callref = 0;
- trans_free(trans);
-#endif
-
- return 0;
-}
-
-/* reject message from upper layer */
-static int gsm48_cc_tx_release_compl(struct gsm_trans *trans, void *arg)
-{
- struct gsm_mncc *rel = arg;
- struct msgb *nmsg;
- struct gsm48_hdr *gh;
-
- LOGP(DCC, LOGL_INFO, "sending RELEASE COMPLETE\n");
-
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- gh = (struct gsm48_hdr *) msgb_put(nmsg, sizeof(*gh));
-
- gh->msg_type = GSM48_MT_CC_RELEASE_COMPL;
-
- gsm48_stop_cc_timer(trans);
-
- /* cause */
- if (rel->fields & MNCC_F_CAUSE)
- gsm48_encode_cause(nmsg, 0, &rel->cause);
- /* facility */
- if (rel->fields & MNCC_F_FACILITY)
- gsm48_encode_facility(nmsg, 0, &rel->facility);
- /* user-user */
- if (rel->fields & MNCC_F_USERUSER)
- gsm48_encode_useruser(nmsg, 0, &rel->useruser);
- /* ss version */
- if (rel->fields & MNCC_F_SSVERSION)
- gsm48_encode_ssversion(nmsg, &rel->ssversion);
-
- /* release without sending MMCC_REL_REQ */
- new_cc_state(trans, GSM_CSTATE_NULL);
- trans->callref = 0;
- trans_free(trans);
-
- return 0;
-}
-
-/* disconnect is received from lower layer */
-static int gsm48_cc_rx_disconnect(struct gsm_trans *trans, struct msgb *msg)
-{
- struct gsm48_hdr *gh = msgb_l3(msg);
- unsigned int payload_len = msgb_l3len(msg) - sizeof(*gh);
- struct tlv_parsed tp;
- struct gsm_mncc disc;
-
- LOGP(DCC, LOGL_INFO, "received DISCONNECT\n");
-
- gsm48_stop_cc_timer(trans);
-
- new_cc_state(trans, GSM_CSTATE_DISCONNECT_IND);
-
- memset(&disc, 0, sizeof(struct gsm_mncc));
- disc.callref = trans->callref;
- tlv_parse(&tp, &gsm48_att_tlvdef, gh->data, payload_len,
- GSM48_IE_CAUSE, 0);
- /* cause */
- if (TLVP_PRESENT(&tp, GSM48_IE_CAUSE)) {
- disc.fields |= MNCC_F_CAUSE;
- gsm48_decode_cause(&disc.cause,
- TLVP_VAL(&tp, GSM48_IE_CAUSE)-1);
- }
- /* facility */
- if (TLVP_PRESENT(&tp, GSM48_IE_FACILITY)) {
- disc.fields |= MNCC_F_FACILITY;
- gsm48_decode_facility(&disc.facility,
- TLVP_VAL(&tp, GSM48_IE_FACILITY)-1);
- }
- /* progress */
- if (TLVP_PRESENT(&tp, GSM48_IE_PROGR_IND)) {
- disc.fields |= MNCC_F_PROGRESS;
- gsm48_decode_progress(&disc.progress,
- TLVP_VAL(&tp, GSM48_IE_PROGR_IND)-1);
- }
- /* user-user */
- if (TLVP_PRESENT(&tp, GSM48_IE_USER_USER)) {
- disc.fields |= MNCC_F_USERUSER;
- gsm48_decode_useruser(&disc.useruser,
- TLVP_VAL(&tp, GSM48_IE_USER_USER)-1);
- }
-
- /* store disconnect cause for T305 expiry */
- memcpy(&trans->cc.msg, &disc, sizeof(struct gsm_mncc));
-
- return mncc_recvmsg(trans->ms, trans, MNCC_DISC_IND, &disc);
-}
-
-/* release is received from lower layer */
-static int gsm48_cc_rx_release(struct gsm_trans *trans, struct msgb *msg)
-{
- struct gsm48_hdr *gh = msgb_l3(msg);
- unsigned int payload_len = msgb_l3len(msg) - sizeof(*gh);
- struct tlv_parsed tp;
- struct gsm_mncc rel;
-
- LOGP(DCC, LOGL_INFO, "received RELEASE\n");
-
- gsm48_stop_cc_timer(trans);
-
- memset(&rel, 0, sizeof(struct gsm_mncc));
- rel.callref = trans->callref;
- tlv_parse(&tp, &gsm48_att_tlvdef, gh->data, payload_len, 0, 0);
- /* cause */
- if (TLVP_PRESENT(&tp, GSM48_IE_CAUSE)) {
- rel.fields |= MNCC_F_CAUSE;
- gsm48_decode_cause(&rel.cause,
- TLVP_VAL(&tp, GSM48_IE_CAUSE)-1);
- }
- /* facility */
- if (TLVP_PRESENT(&tp, GSM48_IE_FACILITY)) {
- rel.fields |= MNCC_F_FACILITY;
- gsm48_decode_facility(&rel.facility,
- TLVP_VAL(&tp, GSM48_IE_FACILITY)-1);
- }
- /* user-user */
- if (TLVP_PRESENT(&tp, GSM48_IE_USER_USER)) {
- rel.fields |= MNCC_F_USERUSER;
- gsm48_decode_useruser(&rel.useruser,
- TLVP_VAL(&tp, GSM48_IE_USER_USER)-1);
- }
-
- /* in case we receive a relase, when we are already in NULL state */
- if (trans->cc.state == GSM_CSTATE_NULL) {
- LOGP(DCC, LOGL_INFO, "ignoring RELEASE in NULL state\n");
- /* release MM conn, free trans */
- return gsm48_rel_null_free(trans);
- }
- if (trans->cc.state == GSM_CSTATE_RELEASE_REQ) {
- /* release collision 5.4.5 */
- mncc_recvmsg(trans->ms, trans, MNCC_REL_CNF, &rel);
- } else {
- struct msgb *nmsg;
-
- /* forward cause only */
- LOGP(DCC, LOGL_INFO, "sending RELEASE COMPLETE\n");
-
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- gh = (struct gsm48_hdr *) msgb_put(nmsg, sizeof(*gh));
-
- gh->msg_type = GSM48_MT_CC_RELEASE_COMPL;
-
- if (rel.fields & MNCC_F_CAUSE)
- gsm48_encode_cause(nmsg, 0, &rel.cause);
-
- gsm48_cc_to_mm(nmsg, trans, GSM48_MMCC_DATA_REQ);
-
- /* release indication */
- mncc_recvmsg(trans->ms, trans, MNCC_REL_IND, &rel);
- }
-
- /* release MM conn, got NULL state, free trans */
- return gsm48_rel_null_free(trans);
-}
-
-/* release complete is received from lower layer */
-static int gsm48_cc_rx_release_compl(struct gsm_trans *trans, struct msgb *msg)
-{
- struct gsm48_hdr *gh = msgb_l3(msg);
- unsigned int payload_len = msgb_l3len(msg) - sizeof(*gh);
- struct tlv_parsed tp;
- struct gsm_mncc rel;
-
- LOGP(DCC, LOGL_INFO, "received RELEASE COMPLETE\n");
-
- gsm48_stop_cc_timer(trans);
-
- memset(&rel, 0, sizeof(struct gsm_mncc));
- rel.callref = trans->callref;
- tlv_parse(&tp, &gsm48_att_tlvdef, gh->data, payload_len, 0, 0);
- /* cause */
- if (TLVP_PRESENT(&tp, GSM48_IE_CAUSE)) {
- rel.fields |= MNCC_F_CAUSE;
- gsm48_decode_cause(&rel.cause,
- TLVP_VAL(&tp, GSM48_IE_CAUSE)-1);
- }
- /* facility */
- if (TLVP_PRESENT(&tp, GSM48_IE_FACILITY)) {
- rel.fields |= MNCC_F_FACILITY;
- gsm48_decode_facility(&rel.facility,
- TLVP_VAL(&tp, GSM48_IE_FACILITY)-1);
- }
- /* user-user */
- if (TLVP_PRESENT(&tp, GSM48_IE_USER_USER)) {
- rel.fields |= MNCC_F_USERUSER;
- gsm48_decode_useruser(&rel.useruser,
- TLVP_VAL(&tp, GSM48_IE_USER_USER)-1);
- }
-
- if (trans->callref) {
- switch (trans->cc.state) {
- case GSM_CSTATE_CALL_PRESENT:
- mncc_recvmsg(trans->ms, trans,
- MNCC_REJ_IND, &rel);
- break;
- case GSM_CSTATE_RELEASE_REQ:
- mncc_recvmsg(trans->ms, trans,
- MNCC_REL_CNF, &rel);
- break;
- default:
- mncc_recvmsg(trans->ms, trans,
- MNCC_REL_IND, &rel);
- }
- }
-
- /* release MM conn, got NULL state, free trans */
- return gsm48_rel_null_free(trans);
-}
-
-/*
- * state machines
- */
-
-/* state trasitions for MNCC messages (upper layer) */
-static struct downstate {
- u_int32_t states;
- int type;
- int (*rout) (struct gsm_trans *trans, void *arg);
-} downstatelist[] = {
- /* mobile originating call establishment */
- {SBIT(GSM_CSTATE_NULL), /* 5.2.1 */
- MNCC_SETUP_REQ, gsm48_cc_init_mm},
-
- {SBIT(GSM_CSTATE_MM_CONNECTION_PEND), /* 5.2.1 */
- MNCC_REL_REQ, gsm48_cc_abort_mm},
-
- /* mobile terminating call establishment */
- {SBIT(GSM_CSTATE_CALL_PRESENT), /* 5.2.2.3.1 */
- MNCC_CALL_CONF_REQ, gsm48_cc_tx_call_conf},
-
- {SBIT(GSM_CSTATE_MO_TERM_CALL_CONF), /* 5.2.2.3.2 */
- MNCC_ALERT_REQ, gsm48_cc_tx_alerting},
-
- {SBIT(GSM_CSTATE_MO_TERM_CALL_CONF) |
- SBIT(GSM_CSTATE_CALL_RECEIVED), /* 5.2.2.5 */
- MNCC_SETUP_RSP, gsm48_cc_tx_connect},
-
- /* signalling during call */
- {SBIT(GSM_CSTATE_ACTIVE), /* 5.3.1 */
- MNCC_NOTIFY_REQ, gsm48_cc_tx_notify},
-
- {ALL_STATES, /* 5.5.7.1 */
- MNCC_START_DTMF_REQ, gsm48_cc_tx_start_dtmf},
-
- {ALL_STATES, /* 5.5.7.3 */
- MNCC_STOP_DTMF_REQ, gsm48_cc_tx_stop_dtmf},
-
- {SBIT(GSM_CSTATE_ACTIVE),
- MNCC_HOLD_REQ, gsm48_cc_tx_hold},
-
- {SBIT(GSM_CSTATE_ACTIVE),
- MNCC_RETRIEVE_REQ, gsm48_cc_tx_retrieve},
-
- {ALL_STATES - SBIT(GSM_CSTATE_NULL) - SBIT(GSM_CSTATE_RELEASE_REQ),
- MNCC_FACILITY_REQ, gsm48_cc_tx_facility},
-
- {SBIT(GSM_CSTATE_ACTIVE),
- MNCC_USERINFO_REQ, gsm48_cc_tx_userinfo},
-
- /* clearing */
- {ALL_STATES - SBIT(GSM_CSTATE_NULL) - SBIT(GSM_CSTATE_DISCONNECT_IND) -
- SBIT(GSM_CSTATE_RELEASE_REQ) -
- SBIT(GSM_CSTATE_DISCONNECT_REQ), /* 5.4.3.1 */
- MNCC_DISC_REQ, gsm48_cc_tx_disconnect},
-
- {SBIT(GSM_CSTATE_INITIATED),
- MNCC_REJ_REQ, gsm48_cc_tx_release_compl},
-
- {ALL_STATES - SBIT(GSM_CSTATE_NULL) -
- SBIT(GSM_CSTATE_RELEASE_REQ), /* ??? */
- MNCC_REL_REQ, gsm48_cc_tx_release},
-
- /* modify */
- {SBIT(GSM_CSTATE_ACTIVE),
- MNCC_MODIFY_REQ, gsm48_cc_tx_modify},
-
- {SBIT(GSM_CSTATE_MO_ORIG_MODIFY),
- MNCC_MODIFY_RSP, gsm48_cc_tx_modify_complete},
-
- {SBIT(GSM_CSTATE_MO_ORIG_MODIFY),
- MNCC_MODIFY_REJ, gsm48_cc_tx_modify_reject},
-};
-
-#define DOWNSLLEN \
- (sizeof(downstatelist) / sizeof(struct downstate))
-
-int mncc_send(struct osmocom_ms *ms, int msg_type, void *arg)
-{
- struct gsm_mncc *data = arg;
- struct gsm_trans *trans;
- int i, rc;
-
- /* Find callref */
- trans = trans_find_by_callref(ms, data->callref);
-
- if (!trans) {
- /* check for SETUP message */
- if (msg_type != MNCC_SETUP_REQ) {
- /* Invalid call reference */
- LOGP(DCC, LOGL_NOTICE, "transaction not found\n");
- return mncc_release_ind(ms, NULL, data->callref,
- GSM48_CAUSE_LOC_PRN_S_LU,
- GSM48_CC_CAUSE_INVAL_TRANS_ID);
- }
- if (data->callref >= 0x40000000) {
- LOGP(DCC, LOGL_FATAL, "MNCC ref wrong.\n");
- return mncc_release_ind(ms, NULL, data->callref,
- GSM48_CAUSE_LOC_PRN_S_LU,
- GSM48_CC_CAUSE_INVAL_TRANS_ID);
- }
-
- /* Create transaction */
- trans = trans_alloc(ms, GSM48_PDISC_CC, 0xff, data->callref);
- if (!trans) {
- /* No memory or whatever */
- return mncc_release_ind(ms, NULL, data->callref,
- GSM48_CAUSE_LOC_PRN_S_LU,
- GSM48_CC_CAUSE_RESOURCE_UNAVAIL);
- }
- }
-
- switch (msg_type) {
- case GSM_TCHF_FRAME:
- return gsm_send_voice(ms, arg);
- case MNCC_LCHAN_MODIFY:
- return 0;
- case MNCC_FRAME_RECV:
- ms->mncc_entity.ref = trans->callref;
- gsm48_rr_audio_mode(ms,
- AUDIO_TX_TRAFFIC_REQ | AUDIO_RX_TRAFFIC_IND);
- return 0;
- case MNCC_FRAME_DROP:
- if (ms->mncc_entity.ref == trans->callref)
- ms->mncc_entity.ref = 0;
- gsm48_rr_audio_mode(ms, AUDIO_TX_MICROPHONE | AUDIO_RX_SPEAKER);
- return 0;
- }
-
- /* Find function for current state and message */
- for (i = 0; i < DOWNSLLEN; i++)
- if ((msg_type == downstatelist[i].type)
- && ((1 << trans->cc.state) & downstatelist[i].states))
- break;
- if (i == DOWNSLLEN) {
- LOGP(DCC, LOGL_NOTICE, "Message %d unhandled at state "
- "%d\n", msg_type, trans->cc.state);
- return 0;
- }
-
- rc = downstatelist[i].rout(trans, arg);
-
- return rc;
-}
-
-/* state trasitions for call control messages (lower layer) */
-static struct datastate {
- u_int32_t states;
- int type;
- int (*rout) (struct gsm_trans *trans, struct msgb *msg);
-} datastatelist[] = {
- /* mobile originating call establishment */
- {SBIT(GSM_CSTATE_INITIATED), /* 5.2.1.3 */
- GSM48_MT_CC_CALL_PROC, gsm48_cc_rx_call_proceeding},
-
- {SBIT(GSM_CSTATE_INITIATED) | SBIT(GSM_CSTATE_MO_CALL_PROC) |
- SBIT(GSM_CSTATE_CALL_DELIVERED), /* 5.2.1.4.1 */
- GSM48_MT_CC_PROGRESS, gsm48_cc_rx_progress},
-
- {SBIT(GSM_CSTATE_INITIATED) |
- SBIT(GSM_CSTATE_MO_CALL_PROC), /* 5.2.1.5 */
- GSM48_MT_CC_ALERTING, gsm48_cc_rx_alerting},
-
- {SBIT(GSM_CSTATE_INITIATED) | SBIT(GSM_CSTATE_MO_CALL_PROC) |
- SBIT(GSM_CSTATE_CALL_DELIVERED), /* 5.2.1.6 */
- GSM48_MT_CC_CONNECT, gsm48_cc_rx_connect},
-
- /* mobile terminating call establishment */
- {SBIT(GSM_CSTATE_NULL), /* 5.2.2.1 */
- GSM48_MT_CC_SETUP, gsm48_cc_rx_setup},
-
- {SBIT(GSM_CSTATE_CONNECT_REQUEST), /* 5.2.2.6 */
- GSM48_MT_CC_CONNECT_ACK, gsm48_cc_rx_connect_ack},
-
- /* signalling during call */
- {SBIT(GSM_CSTATE_ACTIVE), /* 5.3.1 */
- GSM48_MT_CC_NOTIFY, gsm48_cc_rx_notify},
-
- {ALL_STATES, /* 8.4 */
- GSM48_MT_CC_STATUS_ENQ, gsm48_cc_rx_status_enq},
-
- {ALL_STATES,
- GSM48_MT_CC_STATUS, gsm48_cc_rx_status},
-
- {ALL_STATES, /* 5.5.7.2 */
- GSM48_MT_CC_START_DTMF_ACK, gsm48_cc_rx_start_dtmf_ack},
-
- {ALL_STATES, /* 5.5.7.2 */
- GSM48_MT_CC_START_DTMF_REJ, gsm48_cc_rx_start_dtmf_rej},
-
- {ALL_STATES, /* 5.5.7.4 */
- GSM48_MT_CC_STOP_DTMF_ACK, gsm48_cc_rx_stop_dtmf_ack},
-
- {SBIT(GSM_CSTATE_ACTIVE),
- GSM48_MT_CC_HOLD_ACK, gsm48_cc_rx_hold_ack},
-
- {SBIT(GSM_CSTATE_ACTIVE),
- GSM48_MT_CC_HOLD_REJ, gsm48_cc_rx_hold_rej},
-
- {SBIT(GSM_CSTATE_ACTIVE),
- GSM48_MT_CC_RETR_ACK, gsm48_cc_rx_retrieve_ack},
-
- {SBIT(GSM_CSTATE_ACTIVE),
- GSM48_MT_CC_RETR_REJ, gsm48_cc_rx_retrieve_rej},
-
- {ALL_STATES - SBIT(GSM_CSTATE_NULL),
- GSM48_MT_CC_FACILITY, gsm48_cc_rx_facility},
-
- {SBIT(GSM_CSTATE_ACTIVE),
- GSM48_MT_CC_USER_INFO, gsm48_cc_rx_userinfo},
-
- /* clearing */
- {ALL_STATES - SBIT(GSM_CSTATE_NULL) - SBIT(GSM_CSTATE_RELEASE_REQ) -
- SBIT(GSM_CSTATE_DISCONNECT_IND), /* 5.4.4.1.1 */
- GSM48_MT_CC_DISCONNECT, gsm48_cc_rx_disconnect},
-
- {ALL_STATES, /* 5.4.3.3 & 5.4.5!!!*/
- GSM48_MT_CC_RELEASE, gsm48_cc_rx_release},
-
- {ALL_STATES, /* 5.4.4.1.3 */
- GSM48_MT_CC_RELEASE_COMPL, gsm48_cc_rx_release_compl},
-
- /* modify */
- {SBIT(GSM_CSTATE_ACTIVE),
- GSM48_MT_CC_MODIFY, gsm48_cc_rx_modify},
-
- {SBIT(GSM_CSTATE_MO_TERM_MODIFY),
- GSM48_MT_CC_MODIFY_COMPL, gsm48_cc_rx_modify_complete},
-
- {SBIT(GSM_CSTATE_MO_TERM_MODIFY),
- GSM48_MT_CC_MODIFY_REJECT, gsm48_cc_rx_modify_reject},
-};
-
-#define DATASLLEN \
- (sizeof(datastatelist) / sizeof(struct datastate))
-
-static int gsm48_cc_data_ind(struct gsm_trans *trans, struct msgb *msg)
-{
- struct osmocom_ms *ms = trans->ms;
- struct gsm48_hdr *gh = msgb_l3(msg);
- int msg_type = gh->msg_type & 0xbf;
- uint8_t transaction_id = ((gh->proto_discr & 0xf0) ^ 0x80) >> 4;
- /* flip */
- int msg_supported = 0; /* determine, if message is supported at all */
- int i, rc;
-
- /* set transaction ID, if not already */
- trans->transaction_id = transaction_id;
-
- /* pull the MMCC header */
- msgb_pull(msg, sizeof(struct gsm48_mmxx_hdr));
-
- LOGP(DCC, LOGL_INFO, "(ms %s) Received '%s' in CC state %s\n", ms->name,
- gsm48_cc_msg_name(msg_type),
- gsm48_cc_state_name(trans->cc.state));
-
- /* find function for current state and message */
- for (i = 0; i < DATASLLEN; i++) {
- if (msg_type == datastatelist[i].type)
- msg_supported = 1;
- if ((msg_type == datastatelist[i].type)
- && ((1 << trans->cc.state) & datastatelist[i].states))
- break;
- }
- if (i == DATASLLEN) {
- if (msg_supported) {
- LOGP(DCC, LOGL_NOTICE, "Message unhandled at this "
- "state.\n");
- return gsm48_cc_tx_status(trans,
- GSM48_REJECT_MSG_TYPE_NOT_COMPATIBLE);
- } else {
- LOGP(DCC, LOGL_NOTICE, "Message not supported.\n");
- return gsm48_cc_tx_status(trans,
- GSM48_REJECT_MSG_TYPE_NOT_IMPLEMENTED);
- }
- }
-
- rc = datastatelist[i].rout(trans, msg);
-
- return rc;
-}
-
-/* receive message from MM layer */
-int gsm48_rcv_cc(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmxx_hdr *mmh = (struct gsm48_mmxx_hdr *)msg->data;
- int msg_type = mmh->msg_type;
- struct gsm_trans *trans;
- int rc = 0;
-
- trans = trans_find_by_callref(ms, mmh->ref);
- if (!trans) {
- trans = trans_alloc(ms, GSM48_PDISC_CC, mmh->transaction_id,
- mmh->ref);
- if (!trans)
- return -ENOMEM;
- }
-
- LOGP(DCC, LOGL_INFO, "(ms %s) Received '%s' in CC state %s\n", ms->name,
- get_mmxx_name(msg_type),
- gsm48_cc_state_name(trans->cc.state));
-
- switch (msg_type) {
- case GSM48_MMCC_EST_IND:
- /* data included */
- rc = gsm48_cc_data_ind(trans, msg);
- break;
- case GSM48_MMCC_EST_CNF:
- /* send setup after confirm */
- if (trans->cc.state == GSM_CSTATE_MM_CONNECTION_PEND)
- rc = gsm48_cc_tx_setup(trans);
- else
- LOGP(DCC, LOGL_ERROR, "Oops, MMCC-EST-CONF in state "
- "%d?\n", trans->cc.state);
- break;
- case GSM48_MMCC_ERR_IND: /* no supporting re-establishment */
- case GSM48_MMCC_REL_IND:
- /* release L4, release transaction */
- mncc_release_ind(trans->ms, trans, trans->callref,
- GSM48_CAUSE_LOC_PRN_S_LU, mmh->cause);
- /* release without sending MMCC_REL_REQ */
- new_cc_state(trans, GSM_CSTATE_NULL);
- trans->callref = 0;
- trans_free(trans);
- break;
- case GSM48_MMCC_DATA_IND:
- rc = gsm48_cc_data_ind(trans, msg);
- break;
- case GSM48_MMCC_UNIT_DATA_IND:
- break;
- case GSM48_MMCC_SYNC_IND:
- break;
- default:
- LOGP(DCC, LOGL_NOTICE, "Message unhandled.\n");
- rc = -ENOTSUP;
- }
-
- return rc;
-}
-
diff --git a/Src/osmoconbb/src/host/layer23/src/mobile/gsm48_mm.c b/Src/osmoconbb/src/host/layer23/src/mobile/gsm48_mm.c
deleted file mode 100644
index ff936e3..0000000
--- a/Src/osmoconbb/src/host/layer23/src/mobile/gsm48_mm.c
+++ /dev/null
@@ -1,4279 +0,0 @@
-/*
- * (C) 2010 by Andreas Eversberg <jolly@eversberg.eu>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <errno.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <arpa/inet.h>
-
-#include <osmocom/core/msgb.h>
-#include <osmocom/core/utils.h>
-#include <osmocom/gsm/gsm48.h>
-#include <osmocom/core/talloc.h>
-
-#include <osmocom/bb/common/logging.h>
-#include <osmocom/bb/common/osmocom_data.h>
-#include <osmocom/bb/common/networks.h>
-#include <osmocom/bb/common/l1ctl.h>
-#include <osmocom/bb/mobile/gsm48_cc.h>
-#include <osmocom/bb/mobile/app_mobile.h>
-#include <osmocom/bb/mobile/vty.h>
-
-extern void *l23_ctx;
-
-void mm_conn_free(struct gsm48_mm_conn *conn);
-static int gsm48_rcv_rr(struct osmocom_ms *ms, struct msgb *msg);
-static int gsm48_rcv_mmr(struct osmocom_ms *ms, struct msgb *msg);
-static int gsm48_mm_ev(struct osmocom_ms *ms, int msg_type, struct msgb *msg);
-static int gsm48_mm_tx_id_rsp(struct osmocom_ms *ms, uint8_t mi_type);
-static int gsm48_mm_tx_loc_upd_req(struct osmocom_ms *ms);
-static int gsm48_mm_loc_upd_failed(struct osmocom_ms *ms, struct msgb *msg);
-static int gsm48_mm_conn_go_dedic(struct osmocom_ms *ms);
-static int gsm48_mm_init_mm_reject(struct osmocom_ms *ms, struct msgb *msg);
-static int gsm48_mm_data_ind(struct osmocom_ms *ms, struct msgb *msg);
-static void new_mm_state(struct gsm48_mmlayer *mm, int state, int substate);
-static int gsm48_mm_loc_upd_normal(struct osmocom_ms *ms, struct msgb *msg);
-static int gsm48_mm_loc_upd_periodic(struct osmocom_ms *ms, struct msgb *msg);
-static int gsm48_mm_loc_upd(struct osmocom_ms *ms, struct msgb *msg);
-
-/*
- * notes
- */
-
-/*
- * Notes on IMSI detach procedure:
- *
- * At the end of the procedure, the state of MM, RR, cell selection: No SIM.
- *
- * In MM IDLE state, cell available: RR is establised, IMSI detach specific
- * procedure is performed.
- *
- * In MM IDLE state, no cell: State is silently changed to No SIM.
- *
- * During any MM connection state, or Wait for network command: All MM
- * connections (if any) are released locally, and IMSI detach specific
- * procedure is performed.
- *
- * During IMSI detach processing: Request of IMSI detach is ignored.
- *
- * Any other state: The special 'delay_detach' flag is set only. If set, at any
- * state transition we will clear the flag and restart the procedure again.
- *
- * The procedure is not spec conform, but always succeeds.
- *
- */
-
-/* Notes on Service states:
- *
- * There are two PLMN search states:
- *
- * - PLMN SEARCH NORMAL
- * - PLMN SEARCH
- *
- * They are entered, if: (4.2.1.2)
- * - ME is switched on
- * - SIM is inserted
- * - user has asked PLMN selection in certain Service states
- * - coverage is lost in certain Service states
- * - roaming is denied
- * - (optionally see 4.2.1.2)
- *
- * PLMN SEARCH NORMAL state is then entered, if all these conditions are met:
- * - SIM is valid
- * - SIM state is U1
- * - SIM LAI valid
- * - cell selected
- * - cell == SIM LAI
- *
- * Otherwhise PLMN SEARCH is entered.
- *
- * During PLMN SEARCH NORMAL state: (4.2.2.5)
- * - on expirery of T3212: Perform periodic location update, when back
- * to NORMAL SERVICE state.
- * - perform IMSI detach
- * - perform MM connections
- * - respond to paging (if possible)
- *
- * During PLMN SEARCH state: (4.2.2.6)
- * - reject MM connection except for emergency calls
- *
- *
- * The NO CELL AVAILABLE state is entered, if:
- * - no cell found during PLMN search
- *
- * During NO CELL AVAILABLE state:
- * - reject any MM connection
- *
- * The NO IMSI state is entered if:
- * - SIM is invalid
- * - and cell is selected during PLMN SEARCH states
- *
- * During NO IMSO state: (4.2.2.4)
- * - reject MM connection except for emergency calls
- *
- * The LIMITED SERVICE state is entered if:
- * - SIM is valid
- * - and SIM state is U3
- * - and cell is selected
- *
- * During LIMITED SERVICE state: (4.2.2.3)
- * - reject MM connection except for emergency calls
- * - perform location update, if new LAI is entered
- *
- *
- * The LOCATION UPDATE NEEDED state is entered if:
- * - SIM is valid
- * - and location update must be performed for any reason
- *
- * During LOCATION UPDATE NEEDED state:
- * - reject MM connection except for emergency calls
- *
- * In all IDLE states:
- * - on expirery of T3211 or T3213: Perform location update, when back
- * to NORMAL SERVICE state.
- *
- * This state is left if location update is possible and directly enter
- * state ATTEMPTING TO UPDATE and trigger location update.
- * The function gsm48_mm_loc_upd_possible() is used to check this on state
- * change.
- *
- *
- * The ATTEMPTING TO UPDATE state is entered if:
- * - SIM is valid
- * - and SIM state is U2
- * - and cell is selected
- *
- * During ATTEMPTING TO UPDATE state: (4.2.2.2)
- * - on expirery of T3211 or T3213: Perform location updated
- * - on expirery of T3212: Perform location updated
- * - on change of LAI: Perform location update
- * - (abnormal cases unsupported)
- * - accept MM connection for emergency calls
- * - trigger location update on any other MM connection
- * - respond to paging (with IMSI only, because in U2 TMSI is not valid)
- *
- *
- * The NORMAL SERVICE state is entered if:
- * - SIM is valid
- * - and SIM state is U1
- * - and cell is selected
- * - and SIM LAI == cell
- *
- * During NORMAL SERVICE state: (4.2.2.1)
- * - on expirery of T3211 or T3213: Perform location updated
- * - on expirery of T3212: Perform location updated
- * - on change of LAI: Perform location update
- * - perform IMSI detach
- * - perform MM connections
- * - respond to paging
- *
- *
- * gsm48_mm_set_plmn_search() is used enter PLMN SEARCH or PLMN SEARCH NORMAL
- * state. Depending on the conditions above, the appropiate state is selected.
- *
- *
- * gsm48_mm_return_idle() is used to select the Service state when returning
- * to MM IDLE state after cell reselection.
- *
- *
- * If cell selection process indicates NO_CELL_FOUND:
- *
- * - NO CELL AVAILABLE state is entered, if not already.
- *
- * gsm48_mm_no_cell_found() is used to select the Service state.
- *
- *
- * If cell selection process indicates CELL_SELECTED:
- *
- * - NO IMSI state is entered, if no SIM valid.
- * - Otherwise NORMAL SERVICES state is entered, if
- * SIM state is U1, SIM LAI == cell, IMSI is attached, T3212 not expired.
- * - Otherwise NORMAL SERVICES state is entered, if
- * SIM state is U1, SIM LAI == cell, attach not required, T3212 not expired.
- * - Otherwise LIMITED SERVICE state is entered, if
- * CS mode is automatic, cell is forbidden PLMN or forbidden LA.
- * - Otherwise LIMITED SERVICE state is entered, if
- * CS mode is manual, cell is not the selected one.
- * - Otherwise LOCATION UPDATE NEEDED state is entered.
- *
- * gsm48_mm_cell_selected() is used to select the Service state.
- *
- */
-
-/*
- * support functions
- */
-
-/* get supported power level of given arfcn */
-uint8_t gsm48_current_pwr_lev(struct gsm_settings *set, uint16_t arfcn)
-{
- uint8_t pwr_lev;
-
- if (arfcn >= (512 | ARFCN_PCS) && arfcn <= (810 | ARFCN_PCS))
- pwr_lev = set->class_pcs - 1;
- else if (arfcn >= 512 && arfcn <= 885)
- pwr_lev = set->class_dcs - 1;
- else if (arfcn >= 259 && arfcn <= 340)
- pwr_lev = set->class_400 - 1;
- else if (arfcn >= 128 && arfcn <= 251)
- pwr_lev = set->class_850 - 1;
- else
- pwr_lev = set->class_900 - 1;
-
- return pwr_lev;
-}
-
-/* decode network name */
-static int decode_network_name(char *name, int name_len,
- const uint8_t *lv)
-{
- uint8_t in_len = lv[0];
- int length, padding;
-
- name[0] = '\0';
- if (in_len < 1)
- return -EINVAL;
-
- /* must be CB encoded */
- if ((lv[1] & 0x70) != 0x00)
- return -ENOTSUP;
-
- padding = lv[1] & 0x03;
- length = ((in_len - 1) * 8 - padding) / 7;
- if (length <= 0)
- return 0;
- if (length >= name_len)
- length = name_len - 1;
- gsm_7bit_decode(name, lv + 2, length);
- name[length] = '\0';
-
- return length;
-}
-
-/* encode 'mobile identity' */
-int gsm48_encode_mi(uint8_t *buf, struct msgb *msg, struct osmocom_ms *ms,
- uint8_t mi_type)
-{
- struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm_settings *set = &ms->settings;
- uint8_t *ie;
-
- switch(mi_type) {
- case GSM_MI_TYPE_TMSI:
- gsm48_generate_mid_from_tmsi(buf, subscr->tmsi);
- break;
- case GSM_MI_TYPE_IMSI:
- gsm48_generate_mid_from_imsi(buf, subscr->imsi);
- break;
- case GSM_MI_TYPE_IMEI:
- gsm48_generate_mid_from_imsi(buf, set->imei);
- break;
- case GSM_MI_TYPE_IMEISV:
- gsm48_generate_mid_from_imsi(buf, set->imeisv);
- break;
- case GSM_MI_TYPE_NONE:
- default:
- buf[0] = GSM48_IE_MOBILE_ID;
- buf[1] = 1;
- buf[2] = 0xf0;
- break;
- }
- /* alter MI type */
- buf[2] = (buf[2] & ~GSM_MI_TYPE_MASK) | mi_type;
-
- if (msg) {
- /* MI as LV */
- ie = msgb_put(msg, 1 + buf[1]);
- memcpy(ie, buf + 1, 1 + buf[1]);
- }
-
- return 0;
-}
-
-/* encode 'classmark 1' */
-int gsm48_encode_classmark1(struct gsm48_classmark1 *cm, uint8_t rev_lev,
- uint8_t es_ind, uint8_t a5_1, uint8_t pwr_lev)
-{
- memset(cm, 0, sizeof(*cm));
- cm->rev_lev = rev_lev;
- cm->es_ind = es_ind;
- cm->a5_1 = !a5_1;
- cm->pwr_lev = pwr_lev;
-
- return 0;
-}
-
-/*
- * timers
- */
-
-static void timeout_mm_t3210(void *arg)
-{
- struct gsm48_mmlayer *mm = arg;
-
- LOGP(DMM, LOGL_INFO, "timer T3210 (loc. upd. timeout) has fired\n");
- gsm48_mm_ev(mm->ms, GSM48_MM_EVENT_TIMEOUT_T3210, NULL);
-}
-
-static void timeout_mm_t3211(void *arg)
-{
- struct gsm48_mmlayer *mm = arg;
-
- LOGP(DSUM, LOGL_INFO, "Location update retry\n");
- LOGP(DMM, LOGL_INFO, "timer T3211 (loc. upd. retry delay) has fired\n");
- gsm48_mm_ev(mm->ms, GSM48_MM_EVENT_TIMEOUT_T3211, NULL);
-}
-
-static void timeout_mm_t3212(void *arg)
-{
- struct gsm48_mmlayer *mm = arg;
-
- LOGP(DSUM, LOGL_INFO, "Periodic location update\n");
- LOGP(DMM, LOGL_INFO, "timer T3212 (periodic loc. upd. delay) has "
- "fired\n");
-
- /* reset attempt counter when attempting to update (4.4.4.5) */
- if (mm->state == GSM48_MM_ST_MM_IDLE
- && mm->substate == GSM48_MM_SST_ATTEMPT_UPDATE)
- mm->lupd_attempt = 0;
-
- gsm48_mm_ev(mm->ms, GSM48_MM_EVENT_TIMEOUT_T3212, NULL);
-}
-
-static void timeout_mm_t3213(void *arg)
-{
- struct gsm48_mmlayer *mm = arg;
-
- LOGP(DSUM, LOGL_INFO, "Location update retry\n");
- LOGP(DMM, LOGL_INFO, "timer T3213 (delay after RA failure) has "
- "fired\n");
- gsm48_mm_ev(mm->ms, GSM48_MM_EVENT_TIMEOUT_T3213, NULL);
-}
-
-static void timeout_mm_t3230(void *arg)
-{
- struct gsm48_mmlayer *mm = arg;
-
- LOGP(DMM, LOGL_INFO, "timer T3230 (MM connection timeout) has "
- "fired\n");
- gsm48_mm_ev(mm->ms, GSM48_MM_EVENT_TIMEOUT_T3230, NULL);
-}
-
-static void timeout_mm_t3220(void *arg)
-{
- struct gsm48_mmlayer *mm = arg;
-
- LOGP(DMM, LOGL_INFO, "timer T3220 (IMSI detach keepalive) has "
- "fired\n");
- gsm48_mm_ev(mm->ms, GSM48_MM_EVENT_TIMEOUT_T3220, NULL);
-}
-
-static void timeout_mm_t3240(void *arg)
-{
- struct gsm48_mmlayer *mm = arg;
-
- LOGP(DMM, LOGL_INFO, "timer T3240 (RR release timeout) has fired\n");
- gsm48_mm_ev(mm->ms, GSM48_MM_EVENT_TIMEOUT_T3240, NULL);
-}
-
-static void start_mm_t3210(struct gsm48_mmlayer *mm)
-{
- LOGP(DMM, LOGL_INFO, "starting T3210 (loc. upd. timeout) with %d.%d "
- "seconds\n", GSM_T3210_MS);
- mm->t3210.cb = timeout_mm_t3210;
- mm->t3210.data = mm;
- osmo_timer_schedule(&mm->t3210, GSM_T3210_MS);
-}
-
-static void start_mm_t3211(struct gsm48_mmlayer *mm)
-{
- LOGP(DMM, LOGL_INFO, "starting T3211 (loc. upd. retry delay) with "
- "%d.%d seconds\n", GSM_T3211_MS);
- mm->t3211.cb = timeout_mm_t3211;
- mm->t3211.data = mm;
- osmo_timer_schedule(&mm->t3211, GSM_T3211_MS);
-}
-
-static void start_mm_t3212(struct gsm48_mmlayer *mm, int sec)
-{
- /* don't start, if is not available */
- if (!sec)
- return;
-
- LOGP(DMM, LOGL_INFO, "starting T3212 (periodic loc. upd. delay) with "
- "%d seconds\n", sec);
- mm->t3212.cb = timeout_mm_t3212;
- mm->t3212.data = mm;
- osmo_timer_schedule(&mm->t3212, sec, 0);
-}
-
-static void start_mm_t3213(struct gsm48_mmlayer *mm)
-{
- LOGP(DMM, LOGL_INFO, "starting T3213 (delay after RA failure) with "
- "%d.%d seconds\n", GSM_T3213_MS);
- mm->t3213.cb = timeout_mm_t3213;
- mm->t3213.data = mm;
- osmo_timer_schedule(&mm->t3213, GSM_T3213_MS);
-}
-
-static void start_mm_t3220(struct gsm48_mmlayer *mm)
-{
- LOGP(DMM, LOGL_INFO, "starting T3220 (IMSI detach keepalive) with "
- "%d.%d seconds\n", GSM_T3220_MS);
- mm->t3220.cb = timeout_mm_t3220;
- mm->t3220.data = mm;
- osmo_timer_schedule(&mm->t3220, GSM_T3220_MS);
-}
-
-static void start_mm_t3230(struct gsm48_mmlayer *mm)
-{
- LOGP(DMM, LOGL_INFO, "starting T3230 (MM connection timeout) with "
- "%d.%d seconds\n", GSM_T3230_MS);
- mm->t3230.cb = timeout_mm_t3230;
- mm->t3230.data = mm;
- osmo_timer_schedule(&mm->t3230, GSM_T3230_MS);
-}
-
-static void start_mm_t3240(struct gsm48_mmlayer *mm)
-{
- LOGP(DMM, LOGL_INFO, "starting T3240 (RR release timeout) with %d.%d "
- "seconds\n", GSM_T3240_MS);
- mm->t3240.cb = timeout_mm_t3240;
- mm->t3240.data = mm;
- osmo_timer_schedule(&mm->t3240, GSM_T3240_MS);
-}
-
-static void stop_mm_t3210(struct gsm48_mmlayer *mm)
-{
- if (osmo_timer_pending(&mm->t3210)) {
- LOGP(DMM, LOGL_INFO, "stopping pending (loc. upd. timeout) "
- "timer T3210\n");
- osmo_timer_del(&mm->t3210);
- }
-}
-
-static void stop_mm_t3211(struct gsm48_mmlayer *mm)
-{
- if (osmo_timer_pending(&mm->t3211)) {
- LOGP(DMM, LOGL_INFO, "stopping pending (loc. upd. retry "
- "delay) timer T3211\n");
- osmo_timer_del(&mm->t3211);
- }
-}
-
-static void stop_mm_t3212(struct gsm48_mmlayer *mm)
-{
- if (osmo_timer_pending(&mm->t3212)) {
- LOGP(DMM, LOGL_INFO, "stopping pending (periodic loc. upd. "
- "delay) timer T3212\n");
- osmo_timer_del(&mm->t3212);
- }
-}
-
-static void stop_mm_t3213(struct gsm48_mmlayer *mm)
-{
- if (osmo_timer_pending(&mm->t3213)) {
- LOGP(DMM, LOGL_INFO, "stopping pending (delay after RA "
- "failure) timer T3213\n");
- osmo_timer_del(&mm->t3213);
- }
-}
-
-static void stop_mm_t3220(struct gsm48_mmlayer *mm)
-{
- if (osmo_timer_pending(&mm->t3220)) {
- LOGP(DMM, LOGL_INFO, "stopping pending (IMSI detach keepalive) "
- "timer T3220\n");
- osmo_timer_del(&mm->t3220);
- }
-}
-
-static void stop_mm_t3230(struct gsm48_mmlayer *mm)
-{
- if (osmo_timer_pending(&mm->t3230)) {
- LOGP(DMM, LOGL_INFO, "stopping pending (MM connection timeout) "
- "timer T3230\n");
- osmo_timer_del(&mm->t3230);
- }
-}
-
-static void stop_mm_t3240(struct gsm48_mmlayer *mm)
-{
- if (osmo_timer_pending(&mm->t3240)) {
- LOGP(DMM, LOGL_INFO, "stopping pending (RR release timeout) "
- "timer T3240\n");
- osmo_timer_del(&mm->t3240);
- }
-}
-
-static void stop_mm_t3241(struct gsm48_mmlayer *mm)
-{
- /* not implemented, not required */
-}
-
-/*
- * messages
- */
-
-/* names of MM events */
-static const struct value_string gsm48_mmevent_names[] = {
- { GSM48_MM_EVENT_CELL_SELECTED, "MM_EVENT_CELL_SELECTED" },
- { GSM48_MM_EVENT_NO_CELL_FOUND, "MM_EVENT_NO_CELL_FOUND" },
- { GSM48_MM_EVENT_TIMEOUT_T3210, "MM_EVENT_TIMEOUT_T3210" },
- { GSM48_MM_EVENT_TIMEOUT_T3211, "MM_EVENT_TIMEOUT_T3211" },
- { GSM48_MM_EVENT_TIMEOUT_T3212, "MM_EVENT_TIMEOUT_T3212" },
- { GSM48_MM_EVENT_TIMEOUT_T3213, "MM_EVENT_TIMEOUT_T3213" },
- { GSM48_MM_EVENT_TIMEOUT_T3220, "MM_EVENT_TIMEOUT_T3220" },
- { GSM48_MM_EVENT_TIMEOUT_T3230, "MM_EVENT_TIMEOUT_T3230" },
- { GSM48_MM_EVENT_TIMEOUT_T3240, "MM_EVENT_TIMEOUT_T3240" },
- { GSM48_MM_EVENT_IMSI_DETACH, "MM_EVENT_IMSI_DETACH" },
- { GSM48_MM_EVENT_POWER_OFF, "MM_EVENT_POWER_OFF" },
- { GSM48_MM_EVENT_PAGING, "MM_EVENT_PAGING" },
- { GSM48_MM_EVENT_AUTH_RESPONSE, "MM_EVENT_AUTH_RESPONSE" },
- { GSM48_MM_EVENT_SYSINFO, "MM_EVENT_SYSINFO" },
- { GSM48_MM_EVENT_USER_PLMN_SEL, "MM_EVENT_USER_PLMN_SEL" },
- { GSM48_MM_EVENT_LOST_COVERAGE, "MM_EVENT_LOST_COVERAGE" },
- { 0, NULL }
-};
-
-const char *get_mmevent_name(int value)
-{
- return get_value_string(gsm48_mmevent_names, value);
-}
-
-/* names of MM-SAP */
-static const struct value_string gsm48_mm_msg_names[] = {
- { GSM48_MT_MM_IMSI_DETACH_IND, "MT_MM_IMSI_DETACH_IND" },
- { GSM48_MT_MM_LOC_UPD_ACCEPT, "MT_MM_LOC_UPD_ACCEPT" },
- { GSM48_MT_MM_LOC_UPD_REJECT, "MT_MM_LOC_UPD_REJECT" },
- { GSM48_MT_MM_LOC_UPD_REQUEST, "MT_MM_LOC_UPD_REQUEST" },
- { GSM48_MT_MM_AUTH_REJ, "MT_MM_AUTH_REJ" },
- { GSM48_MT_MM_AUTH_REQ, "MT_MM_AUTH_REQ" },
- { GSM48_MT_MM_AUTH_RESP, "MT_MM_AUTH_RESP" },
- { GSM48_MT_MM_ID_REQ, "MT_MM_ID_REQ" },
- { GSM48_MT_MM_ID_RESP, "MT_MM_ID_RESP" },
- { GSM48_MT_MM_TMSI_REALL_CMD, "MT_MM_TMSI_REALL_CMD" },
- { GSM48_MT_MM_TMSI_REALL_COMPL, "MT_MM_TMSI_REALL_COMPL" },
- { GSM48_MT_MM_CM_SERV_ACC, "MT_MM_CM_SERV_ACC" },
- { GSM48_MT_MM_CM_SERV_REJ, "MT_MM_CM_SERV_REJ" },
- { GSM48_MT_MM_CM_SERV_ABORT, "MT_MM_CM_SERV_ABORT" },
- { GSM48_MT_MM_CM_SERV_REQ, "MT_MM_CM_SERV_REQ" },
- { GSM48_MT_MM_CM_SERV_PROMPT, "MT_MM_CM_SERV_PROMPT" },
- { GSM48_MT_MM_CM_REEST_REQ, "MT_MM_CM_REEST_REQ" },
- { GSM48_MT_MM_ABORT, "MT_MM_ABORT" },
- { GSM48_MT_MM_NULL, "MT_MM_NULL" },
- { GSM48_MT_MM_STATUS, "MT_MM_STATUS" },
- { GSM48_MT_MM_INFO, "MT_MM_INFO" },
- { 0, NULL }
-};
-
-const char *get_mm_name(int value)
-{
- return get_value_string(gsm48_mm_msg_names, value);
-}
-
-/* names of MMxx-SAP */
-static const struct value_string gsm48_mmxx_msg_names[] = {
- { GSM48_MMCC_EST_REQ, "MMCC_EST_REQ" },
- { GSM48_MMCC_EST_IND, "MMCC_EST_IND" },
- { GSM48_MMCC_EST_CNF, "MMCC_EST_CNF" },
- { GSM48_MMCC_REL_REQ, "MMCC_REL_REQ" },
- { GSM48_MMCC_REL_IND, "MMCC_REL_IND" },
- { GSM48_MMCC_DATA_REQ, "MMCC_DATA_REQ" },
- { GSM48_MMCC_DATA_IND, "MMCC_DATA_IND" },
- { GSM48_MMCC_UNIT_DATA_REQ, "MMCC_UNIT_DATA_REQ" },
- { GSM48_MMCC_UNIT_DATA_IND, "MMCC_UNIT_DATA_IND" },
- { GSM48_MMCC_SYNC_IND, "MMCC_SYNC_IND" },
- { GSM48_MMCC_REEST_REQ, "MMCC_REEST_REQ" },
- { GSM48_MMCC_REEST_CNF, "MMCC_REEST_CNF" },
- { GSM48_MMCC_ERR_IND, "MMCC_ERR_IND" },
- { GSM48_MMCC_PROMPT_IND, "MMCC_PROMPT_IND" },
- { GSM48_MMCC_PROMPT_REJ, "MMCC_PROMPT_REJ" },
- { GSM48_MMSS_EST_REQ, "MMSS_EST_REQ" },
- { GSM48_MMSS_EST_IND, "MMSS_EST_IND" },
- { GSM48_MMSS_EST_CNF, "MMSS_EST_CNF" },
- { GSM48_MMSS_REL_REQ, "MMSS_REL_REQ" },
- { GSM48_MMSS_REL_IND, "MMSS_REL_IND" },
- { GSM48_MMSS_DATA_REQ, "MMSS_DATA_REQ" },
- { GSM48_MMSS_DATA_IND, "MMSS_DATA_IND" },
- { GSM48_MMSS_UNIT_DATA_REQ, "MMSS_UNIT_DATA_REQ" },
- { GSM48_MMSS_UNIT_DATA_IND, "MMSS_UNIT_DATA_IND" },
- { GSM48_MMSS_REEST_REQ, "MMSS_REEST_REQ" },
- { GSM48_MMSS_REEST_CNF, "MMSS_REEST_CNF" },
- { GSM48_MMSS_ERR_IND, "MMSS_ERR_IND" },
- { GSM48_MMSS_PROMPT_IND, "MMSS_PROMPT_IND" },
- { GSM48_MMSS_PROMPT_REJ, "MMSS_PROMPT_REJ" },
- { GSM48_MMSMS_EST_REQ, "MMSMS_EST_REQ" },
- { GSM48_MMSMS_EST_IND, "MMSMS_EST_IND" },
- { GSM48_MMSMS_EST_CNF, "MMSMS_EST_CNF" },
- { GSM48_MMSMS_REL_REQ, "MMSMS_REL_REQ" },
- { GSM48_MMSMS_REL_IND, "MMSMS_REL_IND" },
- { GSM48_MMSMS_DATA_REQ, "MMSMS_DATA_REQ" },
- { GSM48_MMSMS_DATA_IND, "MMSMS_DATA_IND" },
- { GSM48_MMSMS_UNIT_DATA_REQ, "MMSMS_UNIT_DATA_REQ" },
- { GSM48_MMSMS_UNIT_DATA_IND, "MMSMS_UNIT_DATA_IND" },
- { GSM48_MMSMS_REEST_REQ, "MMSMS_REEST_REQ" },
- { GSM48_MMSMS_REEST_CNF, "MMSMS_REEST_CNF" },
- { GSM48_MMSMS_ERR_IND, "MMSMS_ERR_IND" },
- { GSM48_MMSMS_PROMPT_IND, "MMSMS_PROMPT_IND" },
- { GSM48_MMSMS_PROMPT_REJ, "MMSMS_PROMPT_REJ" },
- { 0, NULL }
-};
-
-const char *get_mmxx_name(int value)
-{
- return get_value_string(gsm48_mmxx_msg_names, value);
-}
-
-/* names of MMR-SAP */
-static const struct value_string gsm48_mmr_msg_names[] = {
- { GSM48_MMR_REG_REQ, "MMR_REG_REQ" },
- { GSM48_MMR_REG_CNF, "MMR_REG_CNF" },
- { GSM48_MMR_NREG_REQ, "MMR_NREG_REQ" },
- { GSM48_MMR_NREG_IND, "MMR_NREG_IND" },
- { 0, NULL }
-};
-
-const char *get_mmr_name(int value)
-{
- return get_value_string(gsm48_mmr_msg_names, value);
-}
-
-/* allocate GSM 04.08 message (MMxx-SAP) */
-struct msgb *gsm48_mmxx_msgb_alloc(int msg_type, uint32_t ref,
- uint8_t transaction_id)
-{
- struct msgb *msg;
- struct gsm48_mmxx_hdr *mmh;
-
- msg = msgb_alloc_headroom(MMXX_ALLOC_SIZE+MMXX_ALLOC_HEADROOM,
- MMXX_ALLOC_HEADROOM, "GSM 04.08 MMxx");
- if (!msg)
- return NULL;
-
- mmh = (struct gsm48_mmxx_hdr *)msgb_put(msg, sizeof(*mmh));
- mmh->msg_type = msg_type;
- mmh->ref = ref;
- mmh->transaction_id = transaction_id;
-
- return msg;
-}
-
-/* allocate MM event message */
-struct msgb *gsm48_mmevent_msgb_alloc(int msg_type)
-{
- struct msgb *msg;
- struct gsm48_mm_event *mme;
-
- msg = msgb_alloc_headroom(sizeof(*mme), 0, "GSM 04.08 MM event");
- if (!msg)
- return NULL;
-
- mme = (struct gsm48_mm_event *)msgb_put(msg, sizeof(*mme));
- mme->msg_type = msg_type;
-
- return msg;
-}
-
-/* allocate MMR message */
-struct msgb *gsm48_mmr_msgb_alloc(int msg_type)
-{
- struct msgb *msg;
- struct gsm48_mmr *mmr;
-
- msg = msgb_alloc_headroom(sizeof(*mmr), 0, "GSM 04.08 MMR");
- if (!msg)
- return NULL;
-
- mmr = (struct gsm48_mmr *)msgb_put(msg, sizeof(*mmr));
- mmr->msg_type = msg_type;
-
- return msg;
-}
-
-/* queue message (MMxx-SAP) */
-int gsm48_mmxx_upmsg(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
-
- msgb_enqueue(&mm->mmxx_upqueue, msg);
-
- return 0;
-}
-
-/* queue message (MMR-SAP) */
-int gsm48_mmr_downmsg(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
-
- msgb_enqueue(&mm->mmr_downqueue, msg);
-
- return 0;
-}
-
-/* queue MM event message */
-int gsm48_mmevent_msg(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
-
- msgb_enqueue(&mm->event_queue, msg);
-
- return 0;
-}
-
-/* dequeue messages (MMxx-SAP) */
-int gsm48_mmxx_dequeue(struct osmocom_ms *ms)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct msgb *msg;
- struct gsm48_mmxx_hdr *mmh;
- int work = 0;
-
- while ((msg = msgb_dequeue(&mm->mmxx_upqueue))) {
- mmh = (struct gsm48_mmxx_hdr *) msg->data;
- switch (mmh->msg_type & GSM48_MMXX_MASK) {
- case GSM48_MMCC_CLASS:
- gsm48_rcv_cc(ms, msg);
- break;
-#if 0
- case GSM48_MMSS_CLASS:
- gsm48_rcv_ss(ms, msg);
- break;
- case GSM48_MMSMS_CLASS:
- gsm48_rcv_sms(ms, msg);
- break;
-#endif
- }
- msgb_free(msg);
- work = 1; /* work done */
- }
-
- return work;
-}
-
-/* dequeue messages (MMR-SAP) */
-int gsm48_mmr_dequeue(struct osmocom_ms *ms)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct msgb *msg;
- struct gsm48_mmr *mmr;
- int work = 0;
-
- while ((msg = msgb_dequeue(&mm->mmr_downqueue))) {
- mmr = (struct gsm48_mmr *) msg->data;
- gsm48_rcv_mmr(ms, msg);
- msgb_free(msg);
- work = 1; /* work done */
- }
-
- return work;
-}
-
-/* dequeue messages (RR-SAP) */
-int gsm48_rr_dequeue(struct osmocom_ms *ms)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct msgb *msg;
- int work = 0;
-
- while ((msg = msgb_dequeue(&mm->rr_upqueue))) {
- /* msg is freed there */
- gsm48_rcv_rr(ms, msg);
- work = 1; /* work done */
- }
-
- return work;
-}
-
-/* dequeue MM event messages */
-int gsm48_mmevent_dequeue(struct osmocom_ms *ms)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct gsm48_mm_event *mme;
- struct msgb *msg;
- int work = 0;
-
- while ((msg = msgb_dequeue(&mm->event_queue))) {
- mme = (struct gsm48_mm_event *) msg->data;
- gsm48_mm_ev(ms, mme->msg_type, msg);
- msgb_free(msg);
- work = 1; /* work done */
- }
-
- return work;
-}
-
-/* push RR header and send to RR */
-static int gsm48_mm_to_rr(struct osmocom_ms *ms, struct msgb *msg,
- int msg_type, uint8_t cause)
-{
- struct gsm48_rr_hdr *rrh;
-
- /* push RR header */
- msgb_push(msg, sizeof(struct gsm48_rr_hdr));
- rrh = (struct gsm48_rr_hdr *) msg->data;
- rrh->msg_type = msg_type;
- rrh->cause = cause;
-
- /* send message to RR */
- return gsm48_rr_downmsg(ms, msg);
-}
-
-/*
- * state transition
- */
-
-const char *gsm48_mm_state_names[] = {
- "NULL",
- "undefined 1",
- "undefined 2",
- "location updating initiated",
- "undefined 4",
- "wait for outgoing MM connection",
- "MM connection active",
- "IMSI detach initiated",
- "process CM service prompt",
- "wait for network command",
- "location updating reject",
- "undefined 11",
- "undefined 12",
- "wait for RR connection (location updating)",
- "wait for RR connection (MM connection)",
- "wait for RR connection (IMSI detach)",
- "undefined 16",
- "wait for re-establishment",
- "wait for RR connection active",
- "MM idle",
- "wait for additional outgoing MM connection",
- "MM_CONN_ACTIVE_VGCS",
- "WAIT_RR_CONN_VGCS",
- "location updating pending",
- "IMSI detach pending",
- "RR connection release not allowed"
-};
-
-const char *gsm48_mm_substate_names[] = {
- "NULL",
- "normal service",
- "attempting to update",
- "limited service",
- "no IMSI",
- "no cell available",
- "location updating needed",
- "PLMN search",
- "PLMN search (normal)",
- "RX_VGCS_NORMAL",
- "RX_VGCS_LIMITED"
-};
-
-/* change state from LOCATION UPDATE NEEDED to ATTEMPTING TO UPDATE */
-static int gsm48_mm_loc_upd_possible(struct gsm48_mmlayer *mm)
-{
- // TODO: check if really possible
- new_mm_state(mm, GSM48_MM_ST_MM_IDLE, GSM48_MM_SST_ATTEMPT_UPDATE);
- return gsm48_mm_loc_upd_normal(mm->ms, NULL);
-}
-
-/* Set new MM state, also new substate in case of MM IDLE state. */
-static void new_mm_state(struct gsm48_mmlayer *mm, int state, int substate)
-{
- struct osmocom_ms *ms = mm->ms;
- struct gsm322_plmn *plmn = &ms->plmn;
-
- /* IDLE -> IDLE */
- if (mm->state == GSM48_MM_ST_MM_IDLE && state == mm->state)
- LOGP(DMM, LOGL_INFO, "new MM IDLE state %s -> %s\n",
- gsm48_mm_substate_names[mm->substate],
- gsm48_mm_substate_names[substate]);
- /* IDLE -> non-IDLE */
- else if (mm->state == GSM48_MM_ST_MM_IDLE)
- LOGP(DMM, LOGL_INFO, "new state MM IDLE, %s -> %s\n",
- gsm48_mm_substate_names[mm->substate],
- gsm48_mm_state_names[state]);
- /* non-IDLE -> IDLE */
- else if (state == GSM48_MM_ST_MM_IDLE)
- LOGP(DMM, LOGL_INFO, "new state %s -> MM IDLE, %s\n",
- gsm48_mm_state_names[mm->state],
- gsm48_mm_substate_names[substate]);
- /* non-IDLE -> non-IDLE */
- else
- LOGP(DMM, LOGL_INFO, "new state %s -> %s\n",
- gsm48_mm_state_names[mm->state],
- gsm48_mm_state_names[state]);
-
- /* display service on new IDLE state */
- if (state == GSM48_MM_ST_MM_IDLE
- && (mm->state != GSM48_MM_ST_MM_IDLE || mm->substate != substate)) {
- switch (substate) {
- case GSM48_MM_SST_NORMAL_SERVICE:
- vty_notify(ms, NULL);
- vty_notify(ms, "On Network, normal service: %s, %s\n",
- gsm_get_mcc(plmn->mcc),
- gsm_get_mnc(plmn->mcc, plmn->mnc));
- break;
- case GSM48_MM_SST_LIMITED_SERVICE:
- vty_notify(ms, NULL);
- vty_notify(ms, "Limited service, emergency calls are "
- "possible.\n");
- break;
- case GSM48_MM_SST_PLMN_SEARCH_NORMAL:
- case GSM48_MM_SST_PLMN_SEARCH:
- vty_notify(ms, NULL);
- vty_notify(ms, "Searching network...\n");
- break;
- case GSM48_MM_SST_NO_IMSI:
- vty_notify(ms, NULL);
- vty_notify(ms, "No SIM, emergency calls are "
- "possible.\n");
- break;
- case GSM48_MM_SST_NO_CELL_AVAIL:
- vty_notify(ms, NULL);
- vty_notify(ms, "No service.\n");
- break;
- case GSM48_MM_SST_ATTEMPT_UPDATE:
- vty_notify(ms, NULL);
- vty_notify(ms, "Trying to registering with "
- "network...\n");
- break;
- }
- }
-
- /* remember most recent substate */
- if (mm->state == GSM48_MM_ST_MM_IDLE)
- mm->mr_substate = mm->substate;
-
- mm->state = state;
- mm->substate = substate;
-
- /* resend detach event, if flag is set */
- if (state == GSM48_MM_ST_MM_IDLE && mm->delay_detach) {
- struct msgb *nmsg;
-
- mm->delay_detach = 0;
-
- nmsg = gsm48_mmevent_msgb_alloc(GSM48_MM_EVENT_IMSI_DETACH);
- if (!nmsg)
- return;
- gsm48_mmevent_msg(ms, nmsg);
- }
-
- /* 4.4.2 start T3212 in MM IDLE mode if not started or has expired */
- if (state == GSM48_MM_ST_MM_IDLE
- && (substate == GSM48_MM_SST_NORMAL_SERVICE
- || substate == GSM48_MM_SST_ATTEMPT_UPDATE)) {
- struct gsm48_sysinfo *s = &mm->ms->cellsel.sel_si;
-
- /* start periodic location update timer */
- if (s->t3212 && !osmo_timer_pending(&mm->t3212)) {
- mm->t3212_value = s->t3212;
- start_mm_t3212(mm, mm->t3212_value);
- }
- /* perform pending location update */
- if (mm->lupd_retry) {
- LOGP(DMM, LOGL_INFO, "Loc. upd. pending (type %d)\n",
- mm->lupd_type);
- mm->lupd_retry = 0;
- gsm48_mm_loc_upd(ms, NULL);
- /* must exit, because this function can be called
- * recursively
- */
- return;
- }
- if (mm->lupd_periodic) {
- LOGP(DMM, LOGL_INFO, "Periodic loc. upd. pending "
- "(type %d)\n", mm->lupd_type);
- mm->lupd_periodic = 0;
- if (s->t3212) /* still required? */
- gsm48_mm_loc_upd_periodic(ms, NULL);
- else
- LOGP(DMM, LOGL_INFO, "but not requred\n");
- /* must exit, because this function can be called
- * recursively
- */
- return;
- }
- }
-
- /* check if location update is possible */
- if (state == GSM48_MM_ST_MM_IDLE
- && substate == GSM48_MM_SST_LOC_UPD_NEEDED) {
- gsm48_mm_loc_upd_possible(mm);
- /* must exit, because this function can be called recursively */
- return;
- }
-}
-
-/* return PLMN SEARCH or PLMN SEARCH NORMAL state */
-static int gsm48_mm_set_plmn_search(struct osmocom_ms *ms)
-{
- struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm322_cellsel *cs = &ms->cellsel;
-
- /* SIM not inserted */
- if (!subscr->sim_valid) {
- LOGP(DMM, LOGL_INFO, "Selecting PLMN SEARCH state, because "
- "no SIM.\n");
- return GSM48_MM_SST_PLMN_SEARCH;
- }
-
- /* SIM not updated */
- if (subscr->ustate != GSM_SIM_U1_UPDATED) {
- LOGP(DMM, LOGL_INFO, "Selecting PLMN SEARCH state, because "
- "SIM not updated.\n");
- return GSM48_MM_SST_PLMN_SEARCH;
- }
- if (subscr->lac == 0x0000 || subscr->lac >= 0xfffe) {
- LOGP(DMM, LOGL_INFO, "Selecting PLMN SEARCH state, because "
- "LAI in SIM not valid.\n");
- return GSM48_MM_SST_PLMN_SEARCH;
- }
-
- /* no cell selected */
- if (!cs->selected) {
- LOGP(DMM, LOGL_INFO, "Selecting PLMN SEARCH state, because "
- "no cell selected.\n");
- return GSM48_MM_SST_PLMN_SEARCH;
- }
-
- /* selected cell's LAI not equal to LAI stored on the sim */
- if (cs->sel_mcc != subscr->mcc
- || cs->sel_mnc != subscr->mnc
- || cs->sel_lac != subscr->lac) {
- LOGP(DMM, LOGL_INFO, "Selecting PLMN SEARCH state, because "
- "LAI of selected cell (MCC %s MNC %s LAC 0x%04x) "
- "!= LAI in SIM (MCC %s MNC %s LAC 0x%04x).\n",
- gsm_print_mcc(cs->sel_mcc), gsm_print_mnc(cs->sel_mnc),
- cs->sel_lac, gsm_print_mcc(subscr->mcc),
- gsm_print_mnc(subscr->mnc), subscr->lac);
- return GSM48_MM_SST_PLMN_SEARCH;
- }
-
- /* SIM is updated in this LA */
- LOGP(DMM, LOGL_INFO, "Selecting PLMN SEARCH NORMAL state.\n");
- return GSM48_MM_SST_PLMN_SEARCH_NORMAL;
-}
-
-/* 4.2.3 when returning to MM IDLE state, this function is called */
-static int gsm48_mm_return_idle(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct gsm322_cellsel *cs = &ms->cellsel;
-
- if (cs->state != GSM322_C3_CAMPED_NORMALLY
- && cs->state != GSM322_C7_CAMPED_ANY_CELL) {
- LOGP(DMM, LOGL_INFO, "Not camping, wait for CS process to "
- "camp, it sends us CELL_SELECTED then.\n");
- return 0;
- }
-
- /* 4.4.4.9 start T3211 when RR is released */
- if (mm->start_t3211) {
- LOGP(DMM, LOGL_INFO, "Starting T3211 after RR release.\n");
- mm->start_t3211 = 0;
- start_mm_t3211(mm);
- }
-
- /* return from location update with "Roaming not allowed" */
- if (mm->state == GSM48_MM_ST_LOC_UPD_REJ && mm->lupd_rej_cause == 13) {
- LOGP(DMM, LOGL_INFO, "Roaming not allowed as returning to "
- "MM IDLE\n");
- new_mm_state(mm, GSM48_MM_ST_MM_IDLE,
- gsm48_mm_set_plmn_search(ms));
-
- return 0;
- }
-
- /* no SIM present or invalid */
- if (!subscr->sim_valid) {
- LOGP(DMM, LOGL_INFO, "SIM invalid as returning to MM IDLE\n");
-
- /* stop periodic location updating */
- mm->lupd_pending = 0;
- stop_mm_t3212(mm); /* 4.4.2 */
-
- new_mm_state(mm, GSM48_MM_ST_MM_IDLE, GSM48_MM_SST_NO_IMSI);
-
- return 0;
- }
-
- /* selected cell equals the registered LAI */
- if (subscr->lac /* valid */
- && cs->sel_mcc == subscr->mcc
- && cs->sel_mnc == subscr->mnc
- && cs->sel_lac == subscr->lac) {
- LOGP(DMM, LOGL_INFO, "We are in registered LAI as returning "
- "to MM IDLE\n");
- /* if SIM not updated (abnormal case as described in 4.4.4.9) */
- if (subscr->ustate != GSM_SIM_U1_UPDATED)
- new_mm_state(mm, GSM48_MM_ST_MM_IDLE,
- GSM48_MM_SST_ATTEMPT_UPDATE);
- else
- new_mm_state(mm, GSM48_MM_ST_MM_IDLE,
- GSM48_MM_SST_NORMAL_SERVICE);
-
- return 0;
- }
-
- if (cs->state == GSM322_C3_CAMPED_NORMALLY) {
- LOGP(DMM, LOGL_INFO, "We are camping normally as returning to "
- "MM IDLE\n");
- if (gsm_subscr_is_forbidden_plmn(subscr, cs->sel_mcc,
- cs->sel_mnc)) {
- /* location update not allowed */
- LOGP(DMM, LOGL_INFO, "Loc. upd. not allowed PLMN.\n");
- new_mm_state(mm, GSM48_MM_ST_MM_IDLE,
- GSM48_MM_SST_LIMITED_SERVICE);
- } else
- if (gsm322_is_forbidden_la(ms, cs->sel_mcc, cs->sel_mnc,
- cs->sel_lac)) {
- /* location update not allowed */
- LOGP(DMM, LOGL_INFO, "Loc. upd. not allowed LA.\n");
- new_mm_state(mm, GSM48_MM_ST_MM_IDLE,
- GSM48_MM_SST_LIMITED_SERVICE);
- } else {
- /* location update allowed */
- LOGP(DMM, LOGL_INFO, "Loc. upd. allowed.\n");
- new_mm_state(mm, GSM48_MM_ST_MM_IDLE,
- GSM48_MM_SST_LOC_UPD_NEEDED);
- }
- } else {
- /* location update not allowed */
- LOGP(DMM, LOGL_INFO, "We are camping on any cell as returning "
- "to MM IDLE\n");
- new_mm_state(mm, GSM48_MM_ST_MM_IDLE,
- GSM48_MM_SST_LIMITED_SERVICE);
- }
-
- return 0;
-}
-
-/* 4.2.1.1 Service state PLMN SEARCH (NORMAL) is left if no cell found */
-static int gsm48_mm_no_cell_found(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
-
- new_mm_state(mm, GSM48_MM_ST_MM_IDLE, GSM48_MM_SST_NO_CELL_AVAIL);
-
- return 0;
-}
-
-/* 4.2.1.1 Service state PLMN SEARCH (NORMAL) / NO CELL AVAILABLE is left
- * if cell selected
- */
-static int gsm48_mm_cell_selected(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct gsm322_plmn *plmn = &ms->plmn;
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct gsm48_sysinfo *s = &cs->sel_si;
- struct gsm_settings *set = &ms->settings;
-
- /* no SIM is inserted */
- if (!subscr->sim_valid) {
- LOGP(DMM, LOGL_INFO, "SIM invalid as cell is selected.\n");
- new_mm_state(mm, GSM48_MM_ST_MM_IDLE, GSM48_MM_SST_NO_IMSI);
-
- return 0;
- }
-
- /* SIM not updated in this LA */
- if (subscr->ustate == GSM_SIM_U1_UPDATED
- && subscr->lac /* valid */
- && cs->sel_mcc == subscr->mcc
- && cs->sel_mnc == subscr->mnc
- && cs->sel_lac == subscr->lac
- && !mm->lupd_periodic) {
- if (subscr->imsi_attached) {
- struct msgb *nmsg;
-
- LOGP(DMM, LOGL_INFO, "Valid in location area.\n");
- new_mm_state(mm, GSM48_MM_ST_MM_IDLE,
- GSM48_MM_SST_NORMAL_SERVICE);
-
- /* send message to PLMN search process */
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_REG_SUCCESS);
- if (!nmsg)
- return -ENOMEM;
- gsm322_plmn_sendmsg(ms, nmsg);
-
- return 0;
- }
- if (!s->att_allowed) {
- struct msgb *nmsg;
-
- LOGP(DMM, LOGL_INFO, "Attachment not required.\n");
- new_mm_state(mm, GSM48_MM_ST_MM_IDLE,
- GSM48_MM_SST_NORMAL_SERVICE);
-
- /* send message to PLMN search process */
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_REG_SUCCESS);
- if (!nmsg)
- return -ENOMEM;
- gsm322_plmn_sendmsg(ms, nmsg);
-
- return 0;
- }
- /* else, continue */
- }
-
- /* PLMN mode auto and selected cell is forbidden */
- if (set->plmn_mode == PLMN_MODE_AUTO
- && (!cs->selected
- || gsm_subscr_is_forbidden_plmn(subscr, cs->sel_mcc, cs->sel_mnc)
- || gsm322_is_forbidden_la(ms, cs->sel_mcc, cs->sel_mnc,
- cs->sel_lac))) {
- struct msgb *nmsg;
-
- LOGP(DMM, LOGL_INFO, "Selected cell is forbidden.\n");
- new_mm_state(mm, GSM48_MM_ST_MM_IDLE,
- GSM48_MM_SST_LIMITED_SERVICE);
-
- /* send message to PLMN search process */
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_REG_FAILED);
- if (!nmsg)
- return -ENOMEM;
- gsm322_plmn_sendmsg(ms, nmsg);
-
- return 0;
- }
-
- /* PLMN mode manual and selected cell not selected PLMN.
- * in M3 state the PLMN is not selected for registration. */
- if (set->plmn_mode == PLMN_MODE_MANUAL
- && (!cs->selected
- || plmn->mcc != cs->sel_mcc
- || plmn->mnc != cs->sel_mnc
- || plmn->state == GSM322_M3_NOT_ON_PLMN)) {
- struct msgb *nmsg;
-
- LOGP(DMM, LOGL_INFO, "Selected cell not found.\n");
- new_mm_state(mm, GSM48_MM_ST_MM_IDLE,
- GSM48_MM_SST_LIMITED_SERVICE);
-
- /* send message to PLMN search process */
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_REG_FAILED);
- if (!nmsg)
- return -ENOMEM;
- gsm322_plmn_sendmsg(ms, nmsg);
-
- return 0;
- }
-
- /* other cases */
- new_mm_state(mm, GSM48_MM_ST_MM_IDLE, GSM48_MM_SST_LOC_UPD_NEEDED);
-
- return 0;
-}
-
-/* 4.2.1.2 Service state PLMN SEARCH (NORMAL) is entered */
-static int gsm48_mm_plmn_search(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
-
- new_mm_state(mm, GSM48_MM_ST_MM_IDLE, gsm48_mm_set_plmn_search(ms));
-
- return 0;
-}
-
-/*
- * init and exit
- */
-
-/* initialize Mobility Management process */
-int gsm48_mm_init(struct osmocom_ms *ms)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
-
- memset(mm, 0, sizeof(*mm));
- mm->ms = ms;
-
- LOGP(DMM, LOGL_INFO, "init Mobility Management process\n");
-
- /* 4.2.1.1 */
- mm->state = GSM48_MM_ST_MM_IDLE;
- mm->substate = gsm48_mm_set_plmn_search(ms);
-
- /* init lists */
- INIT_LLIST_HEAD(&mm->mm_conn);
- INIT_LLIST_HEAD(&mm->rr_upqueue);
- INIT_LLIST_HEAD(&mm->mmxx_upqueue);
- INIT_LLIST_HEAD(&mm->mmr_downqueue);
- INIT_LLIST_HEAD(&mm->event_queue);
-
- return 0;
-}
-
-/* exit MM process */
-int gsm48_mm_exit(struct osmocom_ms *ms)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct gsm48_mm_conn *conn;
- struct msgb *msg;
-
- LOGP(DMM, LOGL_INFO, "exit Mobility Management process\n");
-
- /* flush lists */
- while (!llist_empty(&mm->mm_conn)) {
- conn = llist_entry(mm->mm_conn.next,
- struct gsm48_mm_conn, list);
- mm_conn_free(conn);
- }
- while ((msg = msgb_dequeue(&mm->rr_upqueue)))
- msgb_free(msg);
- while ((msg = msgb_dequeue(&mm->mmxx_upqueue)))
- msgb_free(msg);
- while ((msg = msgb_dequeue(&mm->mmr_downqueue)))
- msgb_free(msg);
- while ((msg = msgb_dequeue(&mm->event_queue)))
- msgb_free(msg);
-
- /* stop timers */
- stop_mm_t3210(mm);
- stop_mm_t3211(mm);
- stop_mm_t3212(mm);
- stop_mm_t3213(mm);
- stop_mm_t3220(mm);
- stop_mm_t3230(mm);
- stop_mm_t3240(mm);
-
- return 0;
-}
-
-/*
- * MM connection management
- */
-
-static const char *gsm48_mmxx_state_names[] = {
- "IDLE",
- "CONN_PEND",
- "DEDICATED",
- "CONN_SUSP",
- "REESTPEND"
-};
-
-uint32_t mm_conn_new_ref = 0x80000001;
-
-/* new MM connection state */
-static void new_conn_state(struct gsm48_mm_conn *conn, int state)
-{
- LOGP(DMM, LOGL_INFO, "(ref %x) new state %s -> %s\n", conn->ref,
- gsm48_mmxx_state_names[conn->state],
- gsm48_mmxx_state_names[state]);
- conn->state = state;
-}
-
-/* find MM connection by protocol+ID */
-struct gsm48_mm_conn *mm_conn_by_id(struct gsm48_mmlayer *mm,
- uint8_t proto, uint8_t transaction_id)
-{
- struct gsm48_mm_conn *conn;
-
- llist_for_each_entry(conn, &mm->mm_conn, list) {
- if (conn->protocol == proto &&
- conn->transaction_id == transaction_id)
- return conn;
- }
- return NULL;
-}
-
-/* find MM connection by reference */
-struct gsm48_mm_conn *mm_conn_by_ref(struct gsm48_mmlayer *mm,
- uint32_t ref)
-{
- struct gsm48_mm_conn *conn;
-
- llist_for_each_entry(conn, &mm->mm_conn, list) {
- if (conn->ref == ref)
- return conn;
- }
- return NULL;
-}
-
-/* create MM connection instance */
-static struct gsm48_mm_conn* mm_conn_new(struct gsm48_mmlayer *mm,
- int proto, uint8_t transaction_id, uint32_t ref)
-{
- struct gsm48_mm_conn *conn = talloc_zero(l23_ctx, struct gsm48_mm_conn);
-
- if (!conn)
- return NULL;
-
- LOGP(DMM, LOGL_INFO, "New MM Connection (proto 0x%02x trans_id %d "
- "ref %d)\n", proto, transaction_id, ref);
-
- conn->mm = mm;
- conn->state = GSM48_MMXX_ST_IDLE;
- conn->transaction_id = transaction_id;
- conn->protocol = proto;
- conn->ref = ref;
-
- llist_add(&conn->list, &mm->mm_conn);
-
- return conn;
-}
-
-/* destroy MM connection instance */
-void mm_conn_free(struct gsm48_mm_conn *conn)
-{
- LOGP(DMM, LOGL_INFO, "Freeing MM Connection\n");
-
- new_conn_state(conn, GSM48_MMXX_ST_IDLE);
-
- llist_del(&conn->list);
-
- talloc_free(conn);
-}
-
-/* support function to release pending/all ongoing MM connections */
-static int gsm48_mm_release_mm_conn(struct osmocom_ms *ms, int abort_any,
- uint8_t cause, int error)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct gsm48_mm_conn *conn, *conn2;
- struct msgb *nmsg;
- struct gsm48_mmxx_hdr *nmmh;
-
- if (abort_any)
- LOGP(DMM, LOGL_INFO, "Release any MM Connection\n");
- else
- LOGP(DMM, LOGL_INFO, "Release pending MM Connections\n");
-
- /* release MM connection(s) */
- llist_for_each_entry_safe(conn, conn2, &mm->mm_conn, list) {
- /* abort any OR the pending connection */
- if (abort_any || conn->state == GSM48_MMXX_ST_CONN_PEND) {
- /* send MMxx-REL-IND */
- nmsg = NULL;
- switch(conn->protocol) {
- case GSM48_PDISC_CC:
- nmsg = gsm48_mmxx_msgb_alloc(
- error ? GSM48_MMCC_ERR_IND
- : GSM48_MMCC_REL_IND, conn->ref,
- conn->transaction_id);
- break;
- case GSM48_PDISC_NC_SS:
- nmsg = gsm48_mmxx_msgb_alloc(
- error ? GSM48_MMSS_ERR_IND
- : GSM48_MMSS_REL_IND, conn->ref,
- conn->transaction_id);
- break;
- case GSM48_PDISC_SMS:
- nmsg = gsm48_mmxx_msgb_alloc(
- error ? GSM48_MMSMS_ERR_IND
- : GSM48_MMSMS_REL_IND, conn->ref,
- conn->transaction_id);
- break;
- }
- if (!nmsg) {
- /* this should not happen */
- mm_conn_free(conn);
- continue; /* skip if not of CC type */
- }
- nmmh = (struct gsm48_mmxx_hdr *)nmsg->data;
- nmmh->cause = cause;
- gsm48_mmxx_upmsg(ms, nmsg);
-
- mm_conn_free(conn);
- }
- }
- return 0;
-}
-
-/*
- * process handlers (Common procedures)
- */
-
-/* sending MM STATUS message */
-static int gsm48_mm_tx_mm_status(struct osmocom_ms *ms, uint8_t cause)
-{
- struct msgb *nmsg;
- struct gsm48_hdr *ngh;
- uint8_t *reject_cause;
-
- LOGP(DMM, LOGL_INFO, "MM STATUS (cause #%d)\n", cause);
-
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- ngh = (struct gsm48_hdr *)msgb_put(nmsg, sizeof(*ngh));
- reject_cause = msgb_put(nmsg, 1);
-
- ngh->proto_discr = GSM48_PDISC_MM;
- ngh->msg_type = GSM48_MT_MM_STATUS;
- *reject_cause = cause;
-
- /* push RR header and send down */
- return gsm48_mm_to_rr(ms, nmsg, GSM48_RR_DATA_REQ, 0);
-}
-
-/* 4.3.1.2 sending TMSI REALLOCATION COMPLETE message */
-static int gsm48_mm_tx_tmsi_reall_cpl(struct osmocom_ms *ms)
-{
- struct msgb *nmsg;
- struct gsm48_hdr *ngh;
-
- LOGP(DMM, LOGL_INFO, "TMSI REALLOCATION COMPLETE\n");
-
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- ngh = (struct gsm48_hdr *)msgb_put(nmsg, sizeof(*ngh));
-
- ngh->proto_discr = GSM48_PDISC_MM;
- ngh->msg_type = GSM48_MT_MM_TMSI_REALL_COMPL;
-
- /* push RR header and send down */
- return gsm48_mm_to_rr(ms, nmsg, GSM48_RR_DATA_REQ, 0);
-}
-
-/* 4.3.1 TMSI REALLOCATION COMMAND is received */
-static int gsm48_mm_rx_tmsi_realloc_cmd(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm48_hdr *gh = msgb_l3(msg);
- unsigned int payload_len = msgb_l3len(msg) - sizeof(*gh);
- struct gsm48_loc_area_id *lai = (struct gsm48_loc_area_id *) gh->data;
- uint8_t mi_type, *mi;
- uint32_t tmsi;
-
- if (payload_len < sizeof(struct gsm48_loc_area_id) + 2) {
- short_read:
- LOGP(DMM, LOGL_NOTICE, "Short read of TMSI REALLOCATION "
- "COMMAND message error.\n");
- return -EINVAL;
- }
- /* LAI */
- gsm48_decode_lai(lai, &subscr->mcc, &subscr->mnc, &subscr->lac);
- /* MI */
- mi = gh->data + sizeof(struct gsm48_loc_area_id);
- mi_type = mi[1] & GSM_MI_TYPE_MASK;
- switch (mi_type) {
- case GSM_MI_TYPE_TMSI:
- if (payload_len + sizeof(struct gsm48_loc_area_id) < 6
- || mi[0] < 5)
- goto short_read;
- memcpy(&tmsi, mi+2, 4);
- subscr->tmsi = ntohl(tmsi);
- LOGP(DMM, LOGL_INFO, "TMSI 0x%08x (%u) assigned.\n",
- subscr->tmsi, subscr->tmsi);
- gsm48_mm_tx_tmsi_reall_cpl(ms);
- break;
- case GSM_MI_TYPE_IMSI:
- subscr->tmsi = 0xffffffff;
- LOGP(DMM, LOGL_INFO, "TMSI removed.\n");
- gsm48_mm_tx_tmsi_reall_cpl(ms);
- break;
- default:
- subscr->tmsi = 0xffffffff;
- LOGP(DMM, LOGL_NOTICE, "TMSI reallocation with unknown MI "
- "type %d.\n", mi_type);
- gsm48_mm_tx_mm_status(ms, GSM48_REJECT_INCORRECT_MESSAGE);
- }
-
- /* store LOCI on sim */
- gsm_subscr_write_loci(ms);
-
- return 0;
-}
-
-/* 4.3.2.2 AUTHENTICATION REQUEST is received */
-static int gsm48_mm_rx_auth_req(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm_settings *set = &ms->settings;
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct gsm48_hdr *gh = msgb_l3(msg);
- unsigned int payload_len = msgb_l3len(msg) - sizeof(*gh);
- struct gsm48_auth_req *ar = (struct gsm48_auth_req *) gh->data;
- uint8_t no_sim = 0;
-
- if (payload_len < sizeof(struct gsm48_auth_req)) {
- LOGP(DMM, LOGL_NOTICE, "Short read of AUTHENTICATION REQUEST "
- "message error.\n");
- return -EINVAL;
- }
-
- /* SIM is not available */
- if (!subscr->sim_valid) {
- LOGP(DMM, LOGL_INFO, "AUTHENTICATION REQUEST without SIM\n");
- return gsm48_mm_tx_mm_status(ms,
- GSM48_REJECT_MSG_NOT_COMPATIBLE);
- }
-
- LOGP(DMM, LOGL_INFO, "AUTHENTICATION REQUEST (seq %d)\n", ar->key_seq);
-
- /* key_seq and random
- * in case of test card, there is a dummy response.
- * authentication request is possible during emergency call, if
- * IMSI is known to the network. in case of emergency IMSI, we need to
- * send a dummy response also.
- */
- if (mm->est_cause == RR_EST_CAUSE_EMERGENCY && set->emergency_imsi[0])
- no_sim = 1;
- gsm_subscr_generate_kc(ms, ar->key_seq, ar->rand, no_sim);
-
- /* wait for auth response event from SIM */
- return 0;
-}
-
-/* 4.3.2.2 sending AUTHENTICATION RESPONSE */
-static int gsm48_mm_tx_auth_rsp(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mm_event *mme = (struct gsm48_mm_event *) msg->data;
- struct msgb *nmsg;
- struct gsm48_hdr *ngh;
- uint8_t *sres;
-
- LOGP(DMM, LOGL_INFO, "AUTHENTICATION RESPONSE\n");
-
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- ngh = (struct gsm48_hdr *)msgb_put(nmsg, sizeof(*ngh));
-
- ngh->proto_discr = GSM48_PDISC_MM;
- ngh->msg_type = GSM48_MT_MM_AUTH_RESP;
-
- /* SRES */
- sres = msgb_put(nmsg, 4);
- memcpy(sres, mme->sres, 4);
-
- /* push RR header and send down */
- return gsm48_mm_to_rr(ms, nmsg, GSM48_RR_DATA_REQ, 0);
-}
-
-/* 4.3.2.5 AUTHENTICATION REJECT is received */
-static int gsm48_mm_rx_auth_rej(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm48_mmlayer *mm = &ms->mmlayer;
-
- LOGP(DMM, LOGL_INFO, "AUTHENTICATION REJECT\n");
-
- stop_mm_t3212(mm); /* 4.4.2 */
-
- /* SIM invalid */
- subscr->sim_valid = 0;
-
- /* TMSI and LAI invalid */
- subscr->tmsi = 0xffffffff;
- subscr->lac = 0x0000;
-
- /* key is invalid */
- subscr->key_seq = 7;
-
- /* update status */
- new_sim_ustate(subscr, GSM_SIM_U3_ROAMING_NA);
-
- /* store LOCI on sim */
- gsm_subscr_write_loci(ms);
-
- /* abort IMSI detach procedure */
- if (mm->state == GSM48_MM_ST_IMSI_DETACH_INIT) {
- struct msgb *nmsg;
- struct gsm48_rr_hdr *nrrh;
-
- /* abort RR connection */
- nmsg = gsm48_rr_msgb_alloc(GSM48_RR_ABORT_REQ);
- if (!nmsg)
- return -ENOMEM;
- nrrh = (struct gsm48_rr_hdr *) nmsg->data;
- nrrh->cause = GSM48_RR_CAUSE_NORMAL;
- gsm48_rr_downmsg(ms, nmsg);
-
- /* return to MM IDLE */
- return gsm48_mm_return_idle(ms, NULL);
- }
-
- return 0;
-}
-
-/* 4.3.3.1 IDENTITY REQUEST is received */
-static int gsm48_mm_rx_id_req(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm48_hdr *gh = msgb_l3(msg);
- unsigned int payload_len = msgb_l3len(msg) - sizeof(*gh);
- uint8_t mi_type;
-
- if (payload_len < 1) {
- LOGP(DMM, LOGL_NOTICE, "Short read of IDENTITY REQUEST message "
- "error.\n");
- return -EINVAL;
- }
-
- /* id type */
- mi_type = *gh->data;
- LOGP(DMM, LOGL_INFO, "IDENTITY REQUEST (mi_type %d)\n", mi_type);
-
- /* check if request can be fulfilled */
- if (!subscr->sim_valid && mi_type != GSM_MI_TYPE_IMEI
- && mi_type != GSM_MI_TYPE_IMEISV) {
- LOGP(DMM, LOGL_INFO, "IDENTITY REQUEST without SIM\n");
- return gsm48_mm_tx_mm_status(ms,
- GSM48_REJECT_MSG_NOT_COMPATIBLE);
- }
- if (mi_type == GSM_MI_TYPE_TMSI && subscr->tmsi == 0xffffffff) {
- LOGP(DMM, LOGL_INFO, "IDENTITY REQUEST of TMSI, but we have no "
- "TMSI\n");
- return gsm48_mm_tx_mm_status(ms,
- GSM48_REJECT_MSG_NOT_COMPATIBLE);
- }
-
- return gsm48_mm_tx_id_rsp(ms, mi_type);
-}
-
-/* send IDENTITY RESPONSE message */
-static int gsm48_mm_tx_id_rsp(struct osmocom_ms *ms, uint8_t mi_type)
-{
- struct msgb *nmsg;
- struct gsm48_hdr *ngh;
- uint8_t buf[11];
-
- LOGP(DMM, LOGL_INFO, "IDENTITY RESPONSE\n");
-
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- ngh = (struct gsm48_hdr *)msgb_put(nmsg, sizeof(*ngh));
-
- ngh->proto_discr = GSM48_PDISC_MM;
- ngh->msg_type = GSM48_MT_MM_ID_RESP;
-
- /* MI */
- gsm48_encode_mi(buf, nmsg, ms, mi_type);
-
- /* push RR header and send down */
- return gsm48_mm_to_rr(ms, nmsg, GSM48_RR_DATA_REQ, 0);
-}
-
-/* 4.3.4.1 sending IMSI DETACH INDICATION message */
-static int gsm48_mm_tx_imsi_detach(struct osmocom_ms *ms, int rr_prim)
-{
- struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct gsm_support *sup = &ms->support;
- struct gsm_settings *set = &ms->settings;
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct msgb *nmsg;
- struct gsm48_hdr *ngh;
- uint8_t pwr_lev;
- uint8_t buf[11];
- struct gsm48_classmark1 cm;
-
-
- LOGP(DMM, LOGL_INFO, "IMSI DETACH INDICATION\n");
-
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- ngh = (struct gsm48_hdr *)msgb_put(nmsg, sizeof(*ngh));
-
- ngh->proto_discr = GSM48_PDISC_MM;
- ngh->msg_type = GSM48_MT_MM_IMSI_DETACH_IND;
-
- /* classmark 1 */
- if (rr_prim == GSM48_RR_EST_REQ)
- pwr_lev = gsm48_current_pwr_lev(set, cs->sel_arfcn);
- else
- pwr_lev = gsm48_current_pwr_lev(set, rr->cd_now.arfcn);
- gsm48_encode_classmark1(&cm, sup->rev_lev, sup->es_ind, set->a5_1,
- pwr_lev);
- msgb_v_put(nmsg, *((uint8_t *)&cm));
- /* MI */
- if (subscr->tmsi != 0xffffffff) { /* have TMSI ? */
- gsm48_encode_mi(buf, nmsg, ms, GSM_MI_TYPE_TMSI);
- LOGP(DMM, LOGL_INFO, " using TMSI 0x%08x\n", subscr->tmsi);
- } else {
- gsm48_encode_mi(buf, nmsg, ms, GSM_MI_TYPE_IMSI);
- LOGP(DMM, LOGL_INFO, " using IMSI %s\n", subscr->imsi);
- }
-
- /* push RR header and send down */
- mm->est_cause = RR_EST_CAUSE_OTHER_SDCCH;
- return gsm48_mm_to_rr(ms, nmsg, rr_prim, mm->est_cause);
-}
-
-/* detach has ended */
-static int gsm48_mm_imsi_detach_end(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct gsm_subscriber *subscr = &ms->subscr;
- struct msgb *nmsg;
-
- LOGP(DMM, LOGL_INFO, "IMSI has been detached.\n");
-
- /* stop IMSI detach timer (if running) */
- stop_mm_t3220(mm);
-
-
- /* SIM invalid */
- subscr->sim_valid = 0;
-
- /* wait for RR idle and then power off when IMSI is detached */
- if (ms->shutdown) {
- if (mm->state == GSM48_MM_ST_MM_IDLE) {
- mobile_exit(ms, 1);
- return 0;
- }
- /* power off when MM idle */
- mm->power_off_idle = 1;
-
- /* return to MM IDLE */
- return gsm48_mm_return_idle(ms, NULL);
- }
-
- /* send SIM remove event to gsm322 */
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_SIM_REMOVE);
- if (!nmsg)
- return -ENOMEM;
- gsm322_plmn_sendmsg(ms, nmsg);
-
- /* return to MM IDLE */
- return gsm48_mm_return_idle(ms, NULL);
-}
-
-/* start an IMSI detach in MM IDLE */
-static int gsm48_mm_imsi_detach_start(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct gsm48_sysinfo *s = &ms->cellsel.sel_si;
-
- /* we may silently finish IMSI detach */
- if (!s->att_allowed || !subscr->imsi_attached) {
- LOGP(DMM, LOGL_INFO, "IMSI detach not required.\n");
-
- return gsm48_mm_imsi_detach_end(ms, msg);
- }
- LOGP(DMM, LOGL_INFO, "IMSI detach started (MM IDLE)\n");
-
- new_mm_state(mm, GSM48_MM_ST_WAIT_RR_CONN_IMSI_D, 0);
-
- /* establish RR and send IMSI detach */
- return gsm48_mm_tx_imsi_detach(ms, GSM48_RR_EST_REQ);
-}
-
-/* IMSI detach has been sent, wait for RR release */
-static int gsm48_mm_imsi_detach_sent(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
-
- /* start T3220 (4.3.4.1) */
- start_mm_t3220(mm);
-
- LOGP(DMM, LOGL_INFO, "IMSI detach started (Wait for RR release)\n");
-
- new_mm_state(mm, GSM48_MM_ST_IMSI_DETACH_INIT, 0);
-
- return 0;
-}
-
-/* release MM connection and proceed with IMSI detach */
-static int gsm48_mm_imsi_detach_release(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct gsm48_sysinfo *s = &ms->cellsel.sel_si;
-
- /* stop MM connection timer */
- stop_mm_t3230(mm);
-
- /* release all connections */
- gsm48_mm_release_mm_conn(ms, 1, 16, 0);
-
- /* wait for release of RR */
- if (!s->att_allowed || !subscr->imsi_attached) {
- LOGP(DMM, LOGL_INFO, "IMSI detach not required.\n");
- new_mm_state(mm, GSM48_MM_ST_WAIT_NETWORK_CMD, 0);
-
- /* power off */
- if (ms->shutdown) {
- mobile_exit(ms, 1);
- return 0;
- }
-
- return 0;
- }
-
- /* send IMSI detach */
- gsm48_mm_tx_imsi_detach(ms, GSM48_RR_DATA_REQ);
-
- /* go to sent state */
- return gsm48_mm_imsi_detach_sent(ms, msg);
-}
-
-/* ignore ongoing IMSI detach */
-static int gsm48_mm_imsi_detach_ignore(struct osmocom_ms *ms, struct msgb *msg)
-{
- return 0;
-}
-
-/* delay until state change (and then retry) */
-static int gsm48_mm_imsi_detach_delay(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
-
- LOGP(DMM, LOGL_INFO, "IMSI detach delayed.\n");
-
- /* remember to detach later */
- mm->delay_detach = 1;
-
- return 0;
-}
-
-/* 4.3.5.2 ABORT is received */
-static int gsm48_mm_rx_abort(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm48_hdr *gh = msgb_l3(msg);
- unsigned int payload_len = msgb_l3len(msg) - sizeof(*gh);
- uint8_t reject_cause;
-
- if (payload_len < 1) {
- LOGP(DMM, LOGL_NOTICE, "Short read of ABORT message error.\n");
- return -EINVAL;
- }
-
- reject_cause = *gh->data;
-
- if (llist_empty(&mm->mm_conn)) {
- LOGP(DMM, LOGL_NOTICE, "ABORT (cause #%d) while no MM "
- "connection is established.\n", reject_cause);
- return gsm48_mm_tx_mm_status(ms,
- GSM48_REJECT_MSG_NOT_COMPATIBLE);
- } else {
- LOGP(DMM, LOGL_NOTICE, "ABORT (cause #%d) while MM connection "
- "is established.\n", reject_cause);
- /* stop MM connection timer */
- stop_mm_t3230(mm);
-
- gsm48_mm_release_mm_conn(ms, 1, 16, 0);
- }
-
- if (reject_cause == GSM48_REJECT_ILLEGAL_ME) {
- /* SIM invalid */
- subscr->sim_valid = 0;
-
- /* TMSI and LAI invalid */
- subscr->tmsi = 0xffffffff;
- subscr->lac = 0x0000;
-
- /* key is invalid */
- subscr->key_seq = 7;
-
- /* update status */
- new_sim_ustate(subscr, GSM_SIM_U3_ROAMING_NA);
-
- /* store LOCI on sim */
- gsm_subscr_write_loci(ms);
-
- /* return to MM IDLE */
- return gsm48_mm_return_idle(ms, NULL);
- }
-
- return 0;
-}
-
-/* 4.3.6.2 MM INFORMATION is received */
-static int gsm48_mm_rx_info(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct gsm48_hdr *gh = msgb_l3(msg);
- unsigned int payload_len = msgb_l3len(msg) - sizeof(*gh);
- struct tlv_parsed tp;
-
- if (payload_len < 0) {
- LOGP(DMM, LOGL_NOTICE, "Short read of MM INFORMATION message "
- "error.\n");
- return -EINVAL;
- }
- tlv_parse(&tp, &gsm48_mm_att_tlvdef, gh->data, payload_len, 0, 0);
-
- /* long name */
- if (TLVP_PRESENT(&tp, GSM48_IE_NAME_LONG)) {
- decode_network_name(mm->name_long, sizeof(mm->name_long),
- TLVP_VAL(&tp, GSM48_IE_NAME_LONG)-1);
- }
- /* short name */
- if (TLVP_PRESENT(&tp, GSM48_IE_NAME_SHORT)) {
- decode_network_name(mm->name_short, sizeof(mm->name_short),
- TLVP_VAL(&tp, GSM48_IE_NAME_SHORT)-1);
- }
-
- return 0;
-}
-
-/*
- * process handlers for Location Update + IMSI attach (MM specific procedures)
- */
-
-/* 4.4.2 received sysinfo change event */
-static int gsm48_mm_sysinfo(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct gsm48_sysinfo *s = &ms->cellsel.sel_si;
-
- /* t3212 not changed in these states */
- if (mm->state == GSM48_MM_ST_MM_IDLE
- && (mm->substate == GSM48_MM_SST_NO_CELL_AVAIL
- || mm->substate == GSM48_MM_SST_LIMITED_SERVICE
- || mm->substate == GSM48_MM_SST_PLMN_SEARCH
- || mm->substate == GSM48_MM_SST_PLMN_SEARCH_NORMAL))
- return 0;
-
- /* new periodic location update timer timeout */
- if (s->t3212 && s->t3212 != mm->t3212_value) {
- if (osmo_timer_pending(&mm->t3212)) {
- int t;
- struct timeval current_time;
-
- /* get rest time */
- gettimeofday(&current_time, NULL);
- t = mm->t3212.timeout.tv_sec - current_time.tv_sec;
- if (t < 0)
- t = 0;
- LOGP(DMM, LOGL_INFO, "New T3212 while timer is running "
- "(value %d rest %d)\n", s->t3212, t);
-
- /* rest time modulo given value */
- mm->t3212.timeout.tv_sec = current_time.tv_sec
- + (t % s->t3212);
- } else {
- uint32_t rand = random();
-
- LOGP(DMM, LOGL_INFO, "New T3212 while timer is not "
- "running (value %d)\n", s->t3212);
-
- /* value between 0 and given value */
- start_mm_t3212(mm, rand % (s->t3212 + 1));
- }
- mm->t3212_value = s->t3212;
- }
-
- return 0;
-}
-
-/* 4.4.4.1 (re)start location update
- *
- * this function is called by
- * - normal location update
- * - periodic location update
- * - imsi attach (normal loc. upd. function)
- * - retry timers (T3211 and T3213)
- */
-static int gsm48_mm_loc_upd(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct gsm48_sysinfo *s = &cs->sel_si;
- struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm_settings *set = &ms->settings;
- struct msgb *nmsg;
- int msg_type;
-
- /* (re)start only if we still require location update */
- if (!mm->lupd_pending) {
- LOGP(DMM, LOGL_INFO, "No loc. upd. pending.\n");
- /* use MM IDLE to selecte the idle state */
- return gsm48_mm_return_idle(ms, NULL);
- }
-
- /* must camp normally */
- if (cs->state != GSM322_C3_CAMPED_NORMALLY) {
- LOGP(DMM, LOGL_INFO, "Loc. upd. not camping normally.\n");
- msg_type = GSM322_EVENT_REG_FAILED;
- stop:
- LOGP(DSUM, LOGL_INFO, "Location updating not possible\n");
- _stop:
- mm->lupd_pending = 0;
-
-#if 0
- /* don't send message, if we got not triggered by PLMN search */
- if (!msg)
- return 0;
-#endif
-
- /* send message to PLMN search process */
- nmsg = gsm322_msgb_alloc(msg_type);
- if (!nmsg)
- return -ENOMEM;
- gsm322_plmn_sendmsg(ms, nmsg);
- /* use MM IDLE to selecte the idle state */
- return gsm48_mm_return_idle(ms, NULL);
- }
-
- /* deny network, if disabled */
- if (set->no_lupd) {
- LOGP(DMM, LOGL_INFO, "Loc. upd. disabled, adding "
- "forbidden PLMN.\n");
- LOGP(DSUM, LOGL_INFO, "Location updating is disabled by "
- "configuration\n");
- gsm_subscr_add_forbidden_plmn(subscr, cs->sel_mcc,
- cs->sel_mnc, GSM48_REJECT_PLMN_NOT_ALLOWED);
- msg_type = GSM322_EVENT_REG_FAILED;
- goto _stop;
- }
-
- /* if LAI is forbidden, don't start */
- if (gsm_subscr_is_forbidden_plmn(subscr, cs->sel_mcc, cs->sel_mnc)) {
- LOGP(DMM, LOGL_INFO, "Loc. upd. not allowed PLMN.\n");
- msg_type = GSM322_EVENT_REG_FAILED;
- goto stop;
- }
- if (gsm322_is_forbidden_la(ms, cs->sel_mcc,
- cs->sel_mnc, cs->sel_lac)) {
- LOGP(DMM, LOGL_INFO, "Loc. upd. not allowed LA.\n");
- msg_type = GSM322_EVENT_REG_FAILED;
- goto stop;
- }
-
- /* 4.4.4.9 if cell is barred, don't start */
- if ((!subscr->acc_barr && s->cell_barr)
- || (!subscr->acc_barr && !((subscr->acc_class & 0xfbff) &
- (s->class_barr ^ 0xffff)))) {
- LOGP(DMM, LOGL_INFO, "Loc. upd. no access.\n");
- msg_type = GSM322_EVENT_REG_FAILED;
- goto stop;
- }
-
- mm->lupd_mcc = cs->sel_mcc;
- mm->lupd_mnc = cs->sel_mnc;
- mm->lupd_lac = cs->sel_lac;
-
- LOGP(DSUM, LOGL_INFO, "Perform location update (MCC %s, MNC %s "
- "LAC 0x%04x)\n", gsm_print_mcc(mm->lupd_mcc),
- gsm_print_mnc(mm->lupd_mnc), mm->lupd_lac);
-
- return gsm48_mm_tx_loc_upd_req(ms);
-}
-
-/* initiate a normal location update / imsi attach */
-static int gsm48_mm_loc_upd_normal(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct gsm48_sysinfo *s = &cs->sel_si;
- struct msgb *nmsg;
-
- /* in case we already have a location update going on */
- if (mm->lupd_pending) {
- LOGP(DMM, LOGL_INFO, "Loc. upd. already pending.\n");
-
- return -EBUSY;
- }
-
- /* no location update, if limited service */
- if (cs->state != GSM322_C3_CAMPED_NORMALLY) {
- LOGP(DMM, LOGL_INFO, "Loc. upd. not allowed.\n");
-
-#if 0
- /* don't send message, if we got not triggered by PLMN search */
- if (!msg)
- return 0;
-#endif
-
- /* send message to PLMN search process */
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_REG_FAILED);
- if (!nmsg)
- return -ENOMEM;
- gsm322_plmn_sendmsg(ms, nmsg);
-
- return 0;
- }
-
- /* if location update is not required */
- if (subscr->ustate == GSM_SIM_U1_UPDATED
- && cs->selected
- && cs->sel_mcc == subscr->mcc
- && cs->sel_mnc == subscr->mnc
- && cs->sel_lac == subscr->lac
- && (subscr->imsi_attached
- || !s->att_allowed)) {
- LOGP(DMM, LOGL_INFO, "Loc. upd. not required.\n");
- subscr->imsi_attached = 1;
-
- /* go straight to normal service state */
- new_mm_state(mm, GSM48_MM_ST_MM_IDLE,
- GSM48_MM_SST_NORMAL_SERVICE);
-
-#if 0
- /* don't send message, if we got not triggered by PLMN search */
- if (!msg)
- return 0;
-#endif
-
- /* send message to PLMN search process */
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_REG_SUCCESS);
- if (!nmsg)
- return -ENOMEM;
- gsm322_plmn_sendmsg(ms, nmsg);
-
- return 0;
- }
-
- /* 4.4.3 is attachment required? */
- if (subscr->ustate == GSM_SIM_U1_UPDATED
- && cs->selected
- && cs->sel_mcc == subscr->mcc
- && cs->sel_mnc == subscr->mnc
- && cs->sel_lac == subscr->lac
- && !subscr->imsi_attached
- && s->att_allowed) {
- /* do location update for IMSI attach */
- LOGP(DMM, LOGL_INFO, "Do Loc. upd. for IMSI attach.\n");
- mm->lupd_type = 2;
- } else {
- /* do normal location update */
- LOGP(DMM, LOGL_INFO, "Do normal Loc. upd.\n");
- mm->lupd_type = 0;
- }
-
- /* start location update */
- mm->lupd_attempt = 0;
- mm->lupd_pending = 1;
- mm->lupd_ra_failure = 0;
-
- return gsm48_mm_loc_upd(ms, msg);
-}
-
-/* initiate a periodic location update */
-static int gsm48_mm_loc_upd_periodic(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
-
- /* in case we already have a location update going on */
- if (mm->lupd_pending) {
- LOGP(DMM, LOGL_INFO, "Loc. upd. already pending.\n");
- return -EBUSY;
- }
-
- /* start periodic location update */
- mm->lupd_type = 1;
- mm->lupd_pending = 1;
- mm->lupd_ra_failure = 0;
-
- return gsm48_mm_loc_upd(ms, msg);
-}
-
-/* ignore location update */
-static int gsm48_mm_loc_upd_ignore(struct osmocom_ms *ms, struct msgb *msg)
-{
- return 0;
-}
-
-/* 9.2.15 send LOCATION UPDATING REQUEST message */
-static int gsm48_mm_tx_loc_upd_req(struct osmocom_ms *ms)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct gsm_settings *set = &ms->settings;
- struct gsm_support *sup = &ms->support;
- struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct msgb *nmsg;
- struct gsm48_hdr *ngh;
- struct gsm48_loc_upd_req *nlu; /* NOTE: mi_len is part of struct */
- uint8_t pwr_lev;
- uint8_t buf[11];
-
- LOGP(DMM, LOGL_INFO, "LOCATION UPDATING REQUEST\n");
-
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- ngh = (struct gsm48_hdr *)msgb_put(nmsg, sizeof(*ngh));
- nlu = (struct gsm48_loc_upd_req *)msgb_put(nmsg, sizeof(*nlu));
-
- ngh->proto_discr = GSM48_PDISC_MM;
- ngh->msg_type = GSM48_MT_MM_LOC_UPD_REQUEST;
-
- /* location updating type */
- nlu->type = mm->lupd_type;
- /* cipering key */
- nlu->key_seq = subscr->key_seq;
- /* LAI (last SIM stored LAI)
- *
- * NOTE: The TMSI is only valid within a LAI!
- */
- gsm48_encode_lai(&nlu->lai, subscr->mcc, subscr->mnc, subscr->lac);
- LOGP(DMM, LOGL_INFO, " using LAI (mcc %s mnc %s " "lac 0x%04x)\n",
- gsm_print_mcc(subscr->mcc),
- gsm_print_mnc(subscr->mnc), subscr->lac);
- /* classmark 1 */
- pwr_lev = gsm48_current_pwr_lev(set, cs->sel_arfcn);
- gsm48_encode_classmark1(&nlu->classmark1, sup->rev_lev, sup->es_ind,
- set->a5_1, pwr_lev);
- /* MI */
- if (subscr->tmsi != 0xffffffff) { /* have TMSI ? */
- gsm48_encode_mi(buf, NULL, ms, GSM_MI_TYPE_TMSI);
- LOGP(DMM, LOGL_INFO, " using TMSI 0x%08x\n", subscr->tmsi);
- } else {
- gsm48_encode_mi(buf, NULL, ms, GSM_MI_TYPE_IMSI);
- LOGP(DMM, LOGL_INFO, " using IMSI %s\n", subscr->imsi);
- }
- msgb_put(nmsg, buf[1]); /* length is part of nlu */
- memcpy(&nlu->mi_len, buf + 1, 1 + buf[1]);
-
- new_mm_state(mm, GSM48_MM_ST_WAIT_RR_CONN_LUPD, 0);
-
- /* push RR header and send down */
- mm->est_cause = RR_EST_CAUSE_LOC_UPD;
- return gsm48_mm_to_rr(ms, nmsg, GSM48_RR_EST_REQ, mm->est_cause);
-}
-
-/* 4.4.4.1 RR is esablised during location update */
-static int gsm48_mm_est_loc_upd(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
-
- /* start location update timer */
- start_mm_t3210(mm);
-
- new_mm_state(mm, GSM48_MM_ST_LOC_UPD_INIT, 0);
-
- return 0;
-}
-
-/* 4.4.4.6 LOCATION UPDATING ACCEPT is received */
-static int gsm48_mm_rx_loc_upd_acc(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm48_hdr *gh = msgb_l3(msg);
- struct gsm48_loc_area_id *lai = (struct gsm48_loc_area_id *) gh->data;
- unsigned int payload_len = msgb_l3len(msg) - sizeof(*gh);
- struct tlv_parsed tp;
- struct msgb *nmsg;
-
- if (payload_len < sizeof(struct gsm48_loc_area_id)) {
- short_read:
- LOGP(DMM, LOGL_NOTICE, "Short read of LOCATION UPDATING ACCEPT "
- "message error.\n");
- return -EINVAL;
- }
- tlv_parse(&tp, &gsm48_mm_att_tlvdef,
- gh->data + sizeof(struct gsm48_loc_area_id),
- payload_len - sizeof(struct gsm48_loc_area_id), 0, 0);
-
- /* update has finished */
- mm->lupd_pending = 0;
-
- /* RA was successfull */
- mm->lupd_ra_failure = 0;
-
- /* stop periodic location updating timer */
- stop_mm_t3212(mm); /* 4.4.2 */
-
- /* LAI */
- gsm48_decode_lai(lai, &subscr->mcc, &subscr->mnc, &subscr->lac);
-
- /* stop location update timer */
- stop_mm_t3210(mm);
-
- /* reset attempt counter */
- mm->lupd_attempt = 0;
-
- /* mark SIM as attached */
- subscr->imsi_attached = 1;
-
- /* set the status in the sim to updated */
- new_sim_ustate(subscr, GSM_SIM_U1_UPDATED);
-
- /* store LOCI on sim */
- gsm_subscr_write_loci(ms);
-
- /* set last registered PLMN */
- if (subscr->lac > 0x0000 && subscr->lac < 0xfffe) {
- subscr->plmn_valid = 1;
- subscr->plmn_mcc = subscr->mcc;
- subscr->plmn_mnc = subscr->mnc;
- }
-
- LOGP(DSUM, LOGL_INFO, "Location update accepted\n");
- LOGP(DMM, LOGL_INFO, "LOCATION UPDATING ACCEPT (mcc %s mnc %s "
- "lac 0x%04x)\n", gsm_print_mcc(subscr->mcc),
- gsm_print_mnc(subscr->mnc), subscr->lac);
-
- /* remove LA from forbidden list */
- gsm322_del_forbidden_la(ms, subscr->mcc, subscr->mnc, subscr->lac);
-
- /* MI */
- if (TLVP_PRESENT(&tp, GSM48_IE_MOBILE_ID)) {
- const uint8_t *mi;
- uint8_t mi_type;
- uint32_t tmsi;
-
- mi = TLVP_VAL(&tp, GSM48_IE_MOBILE_ID)-1;
- if (mi[0] < 1)
- goto short_read;
- mi_type = mi[1] & GSM_MI_TYPE_MASK;
- switch (mi_type) {
- case GSM_MI_TYPE_TMSI:
- if (payload_len + sizeof(struct gsm48_loc_area_id) < 6
- || mi[0] < 5)
- goto short_read;
- memcpy(&tmsi, mi+2, 4);
- subscr->tmsi = ntohl(tmsi);
- LOGP(DMM, LOGL_INFO, "got TMSI 0x%08x (%u)\n",
- subscr->tmsi, subscr->tmsi);
-
- /* store LOCI on sim */
- gsm_subscr_write_loci(ms);
-
- /* send TMSI REALLOCATION COMPLETE */
- gsm48_mm_tx_tmsi_reall_cpl(ms);
- break;
- case GSM_MI_TYPE_IMSI:
- LOGP(DMM, LOGL_INFO, "TMSI removed\n");
- subscr->tmsi = 0xffffffff;
-
- /* store LOCI on sim */
- gsm_subscr_write_loci(ms);
-
- /* send TMSI REALLOCATION COMPLETE */
- gsm48_mm_tx_tmsi_reall_cpl(ms);
- break;
- default:
- LOGP(DMM, LOGL_NOTICE, "TMSI reallocation with unknown "
- "MI type %d.\n", mi_type);
- }
- }
-
- /* send message to PLMN search process */
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_REG_SUCCESS);
- if (!nmsg)
- return -ENOMEM;
- gsm322_plmn_sendmsg(ms, nmsg);
-
- /* follow on proceed */
- if (TLVP_PRESENT(&tp, GSM48_IE_MOBILE_ID))
- LOGP(DMM, LOGL_NOTICE, "follow-on proceed not supported.\n");
-
- /* start RR release timer */
- start_mm_t3240(mm);
-
- new_mm_state(mm, GSM48_MM_ST_WAIT_NETWORK_CMD, 0);
-
- return 0;
-}
-
-/* 4.4.4.7 LOCATION UPDATING REJECT is received */
-static int gsm48_mm_rx_loc_upd_rej(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct gsm48_hdr *gh = msgb_l3(msg);
- unsigned int payload_len = msgb_l3len(msg) - sizeof(*gh);
-
- if (payload_len < 1) {
- LOGP(DMM, LOGL_NOTICE, "Short read of LOCATION UPDATING REJECT "
- "message error.\n");
- return -EINVAL;
- }
-
- /* RA was successfull */
- mm->lupd_ra_failure = 0;
-
- /* stop periodic location updating timer */
- stop_mm_t3212(mm); /* 4.4.2 */
-
- /* stop location update timer */
- stop_mm_t3210(mm);
-
- /* store until RR is released */
- mm->lupd_rej_cause = *gh->data;
-
- /* start RR release timer */
- start_mm_t3240(mm);
-
- new_mm_state(mm, GSM48_MM_ST_LOC_UPD_REJ, 0);
-
- return 0;
-}
-
-/* 4.4.4.7 RR is released after location update reject */
-static int gsm48_mm_rel_loc_upd_rej(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct gsm_subscriber *subscr = &ms->subscr;
- struct msgb *nmsg;
- struct gsm322_msg *ngm;
-
- LOGP(DMM, LOGL_INFO, "Loc. upd. rejected (cause %d)\n",
- mm->lupd_rej_cause);
-
- /* stop RR release timer */
- stop_mm_t3240(mm);
-
- /* new status */
- switch (mm->lupd_rej_cause) {
- case GSM48_REJECT_IMSI_UNKNOWN_IN_HLR:
- case GSM48_REJECT_ILLEGAL_MS:
- case GSM48_REJECT_ILLEGAL_ME:
- /* reset attempt counter */
- mm->lupd_attempt = 0;
-
- /* SIM invalid */
- subscr->sim_valid = 0;
-
- // fall through
- case GSM48_REJECT_PLMN_NOT_ALLOWED:
- case GSM48_REJECT_LOC_NOT_ALLOWED:
- case GSM48_REJECT_ROAMING_NOT_ALLOWED:
- /* TMSI and LAI invalid */
- subscr->tmsi = 0xffffffff;
- subscr->lac = 0x0000;
-
- /* key is invalid */
- subscr->key_seq = 7;
-
- /* update status */
- new_sim_ustate(subscr, GSM_SIM_U3_ROAMING_NA);
-
- /* store LOCI on sim */
- gsm_subscr_write_loci(ms);
-
- /* update has finished */
- mm->lupd_pending = 0;
- }
-
- /* send event to PLMN search process */
- switch(mm->lupd_rej_cause) {
- case GSM48_REJECT_ROAMING_NOT_ALLOWED:
- case GSM48_REJECT_PLMN_NOT_ALLOWED:
- case GSM48_REJECT_LOC_NOT_ALLOWED:
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_ROAMING_NA);
- break;
- case GSM48_REJECT_IMSI_UNKNOWN_IN_HLR:
- case GSM48_REJECT_ILLEGAL_MS:
- case GSM48_REJECT_ILLEGAL_ME:
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_INVALID_SIM);
- break;
- default:
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_REG_FAILED);
- }
- if (!nmsg)
- return -ENOMEM;
- ngm = (struct gsm322_msg *)nmsg->data;
- ngm->reject = mm->lupd_rej_cause;
- gsm322_plmn_sendmsg(ms, nmsg);
-
- /* forbidden list */
- switch (mm->lupd_rej_cause) {
- case GSM48_REJECT_IMSI_UNKNOWN_IN_HLR:
- LOGP(DSUM, LOGL_INFO, "Location update failed (IMSI unknown "
- "in HLR)\n");
- break;
- case GSM48_REJECT_ILLEGAL_MS:
- LOGP(DSUM, LOGL_INFO, "Location update failed (Illegal MS)\n");
- break;
- case GSM48_REJECT_ILLEGAL_ME:
- LOGP(DSUM, LOGL_INFO, "Location update failed (Illegal ME)\n");
- break;
- case GSM48_REJECT_PLMN_NOT_ALLOWED:
- gsm_subscr_add_forbidden_plmn(subscr, mm->lupd_mcc,
- mm->lupd_mnc, mm->lupd_rej_cause);
- LOGP(DSUM, LOGL_INFO, "Location update failed (PLMN not "
- "allowed)\n");
- break;
- case GSM48_REJECT_LOC_NOT_ALLOWED:
- case GSM48_REJECT_ROAMING_NOT_ALLOWED:
- gsm322_add_forbidden_la(ms, mm->lupd_mcc, mm->lupd_mnc,
- mm->lupd_lac, mm->lupd_rej_cause);
- LOGP(DSUM, LOGL_INFO, "Location update failed (LAI not "
- "allowed)\n");
- break;
- default:
- /* 4.4.4.9 continue with failure handling */
- return gsm48_mm_loc_upd_failed(ms, NULL);
- }
-
- /* return to MM IDLE */
- return gsm48_mm_return_idle(ms, NULL);
-}
-
-/* 4.2.2 delay a location update */
-static int gsm48_mm_loc_upd_delay_per(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
-
- LOGP(DMM, LOGL_INFO, "Schedule a pending periodic loc. upd.\n");
- mm->lupd_periodic = 1;
-
- return 0;
-}
-
-/* delay a location update retry */
-static int gsm48_mm_loc_upd_delay_retry(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
-
- LOGP(DMM, LOGL_INFO, "Schedule a pending periodic loc. upd.\n");
- mm->lupd_retry = 1;
-
- return 0;
-}
-
-/* process failues as described in the lower part of 4.4.4.9 */
-static int gsm48_mm_loc_upd_failed(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct gsm_subscriber *subscr = &ms->subscr;
-
- LOGP(DSUM, LOGL_INFO, "Location update failed\n");
-
- /* stop location update timer, if running */
- stop_mm_t3210(mm);
-
- if (subscr->ustate == GSM_SIM_U1_UPDATED
- && mm->lupd_mcc == subscr->mcc
- && mm->lupd_mnc == subscr->mnc
- && mm->lupd_lac == subscr->lac) {
- if (mm->lupd_attempt < 4) {
- LOGP(DSUM, LOGL_INFO, "Try location update later\n");
- LOGP(DMM, LOGL_INFO, "Loc. upd. failed, retry #%d\n",
- mm->lupd_attempt);
-
- /* start update retry timer */
- start_mm_t3211(mm);
-
- /* return to MM IDLE */
- return gsm48_mm_return_idle(ms, NULL);
- } else
- LOGP(DMM, LOGL_INFO, "Loc. upd. failed too often.\n");
- }
-
- /* TMSI and LAI invalid */
- subscr->tmsi = 0xffffffff;
- subscr->lac = 0x0000;
-
- /* key is invalid */
- subscr->key_seq = 7;
-
- /* update status */
- new_sim_ustate(subscr, GSM_SIM_U2_NOT_UPDATED);
-
- /* store LOCI on sim */
- gsm_subscr_write_loci(ms);
-
- /* start update retry timer (RR connection is released) */
- if (mm->lupd_attempt < 4) {
- mm->start_t3211 = 1;
- LOGP(DSUM, LOGL_INFO, "Try location update later\n");
- }
-
- /* return to MM IDLE */
- return gsm48_mm_return_idle(ms, NULL);
-}
-
-/* abort a location update due to radio failure or release */
-static int gsm48_mm_rel_loc_upd_abort(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct gsm48_rr_hdr *rrh = (struct gsm48_rr_hdr *)msg->data;
-
- /* stop RR release timer */
- stop_mm_t3240(mm);
-
- if (rrh->msg_type == GSM48_RR_REL_IND) {
- LOGP(DMM, LOGL_INFO, "RR link released after loc. upd.\n");
-
- /* continue with failure handling */
- return gsm48_mm_loc_upd_failed(ms, NULL);
- }
-
- LOGP(DMM, LOGL_INFO, "Loc. upd. aborted by radio (cause #%d)\n",
- rrh->cause);
-
- /* random access failure, but not two successive failures */
- if (rrh->cause == RR_REL_CAUSE_RA_FAILURE && !mm->lupd_ra_failure) {
- mm->lupd_ra_failure = 1;
-
- /* start RA failure timer */
- start_mm_t3213(mm);
-
- return 0;
- }
-
- /* RA was successfull or sent twice */
- mm->lupd_ra_failure = 0;
-
- /* continue with failure handling */
- return gsm48_mm_loc_upd_failed(ms, NULL);
-}
-
-/* location update has timed out */
-static int gsm48_mm_loc_upd_timeout(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct msgb *nmsg;
- struct gsm48_rr_hdr *nrrh;
-
- /* abort RR connection */
- nmsg = gsm48_rr_msgb_alloc(GSM48_RR_ABORT_REQ);
- if (!nmsg)
- return -ENOMEM;
- nrrh = (struct gsm48_rr_hdr *) nmsg->data;
- nrrh->cause = GSM48_RR_CAUSE_ABNORMAL_TIMER;
- gsm48_rr_downmsg(ms, nmsg);
-
- /* continue with failure handling */
- return gsm48_mm_loc_upd_failed(ms, NULL);
-}
-
-/*
- * process handlers for MM connections
- */
-
-/* cm reestablish request message from upper layer */
-static int gsm48_mm_tx_cm_serv_req(struct osmocom_ms *ms, int rr_prim,
- uint8_t cm_serv)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm_settings *set = &ms->settings;
- struct msgb *nmsg;
- struct gsm48_hdr *ngh;
- struct gsm48_service_request *nsr; /* NOTE: includes MI length */
- uint8_t *cm2lv;
- uint8_t buf[11];
-
- LOGP(DMM, LOGL_INFO, "CM SERVICE REQUEST (cause %d)\n", mm->est_cause);
-
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- ngh = (struct gsm48_hdr *)msgb_put(nmsg, sizeof(*ngh));
- nsr = (struct gsm48_service_request *)msgb_put(nmsg, sizeof(*nsr));
- cm2lv = (uint8_t *)&nsr->classmark;
-
- ngh->proto_discr = GSM48_PDISC_MM;
- ngh->msg_type = GSM48_MT_MM_CM_SERV_REQ;
-
- /* type and key */
- nsr->cm_service_type = cm_serv;
- nsr->cipher_key_seq = subscr->key_seq;
- /* classmark 2 */
- cm2lv[0] = sizeof(struct gsm48_classmark2);
- gsm48_rr_enc_cm2(ms, (struct gsm48_classmark2 *)(cm2lv + 1),
- (rr_prim == GSM48_RR_EST_REQ) ? cs->sel_arfcn
- : rr->cd_now.arfcn);
- /* MI */
- if (mm->est_cause == RR_EST_CAUSE_EMERGENCY && set->emergency_imsi[0]) {
- LOGP(DMM, LOGL_INFO, "-> Using IMSI %s for emergency\n",
- set->emergency_imsi);
- gsm48_generate_mid_from_imsi(buf, set->emergency_imsi);
- } else
- if (!subscr->sim_valid) { /* have no SIM ? */
- LOGP(DMM, LOGL_INFO, "-> Using IMEI %s\n",
- set->imei);
- gsm48_encode_mi(buf, NULL, ms, GSM_MI_TYPE_IMEI);
- } else
- if (subscr->tmsi != 0xffffffff) { /* have TMSI ? */
- gsm48_encode_mi(buf, NULL, ms, GSM_MI_TYPE_TMSI);
- LOGP(DMM, LOGL_INFO, "-> Using TMSI\n");
- } else {
- gsm48_encode_mi(buf, NULL, ms, GSM_MI_TYPE_IMSI);
- LOGP(DMM, LOGL_INFO, "-> Using IMSI %s\n",
- subscr->imsi);
- }
- msgb_put(nmsg, buf[1]); /* length is part of nsr */
- memcpy(&nsr->mi_len, buf + 1, 1 + buf[1]);
- /* prio is optional for eMLPP */
-
- /* push RR header and send down */
- return gsm48_mm_to_rr(ms, nmsg, rr_prim, mm->est_cause);
-}
-
-/* cm service abort message from upper layer
- * NOTE: T3240 is started by the calling function
- */
-static int gsm48_mm_tx_cm_service_abort(struct osmocom_ms *ms)
-{
- struct msgb *nmsg;
- struct gsm48_hdr *ngh;
-
- LOGP(DMM, LOGL_INFO, "CM SERVICE ABORT\n");
-
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- ngh = (struct gsm48_hdr *)msgb_put(nmsg, sizeof(*ngh));
-
- ngh->proto_discr = GSM48_PDISC_MM;
- ngh->msg_type = GSM48_MT_MM_CM_SERV_ABORT;
-
- /* push RR header and send down */
- return gsm48_mm_to_rr(ms, nmsg, GSM48_RR_DATA_REQ, 0);
-}
-
-/* cm service acknowledge is received from lower layer */
-static int gsm48_mm_rx_cm_service_acc(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
-
- /* stop MM connection timer */
- stop_mm_t3230(mm);
-
- new_mm_state(mm, GSM48_MM_ST_MM_CONN_ACTIVE, 0);
-
- return gsm48_mm_conn_go_dedic(ms);
-}
-
-/* 9.2.6 CM SERVICE REJECT message received */
-static int gsm48_mm_rx_cm_service_rej(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm48_hdr *gh = msgb_l3(msg);
- unsigned int payload_len = msgb_l3len(msg) - sizeof(*gh);
- uint8_t abort_any = 0;
- uint8_t reject_cause;
-
- if (payload_len < 1) {
- LOGP(DMM, LOGL_NOTICE, "Short read of cm service reject "
- "message error.\n");
- return -EINVAL;
- }
-
- /* reject cause */
- reject_cause = *gh->data;
-
- LOGP(DMM, LOGL_INFO, "CM SERVICE REJECT (cause %d)\n", reject_cause);
-
- /* stop MM connection timer */
- stop_mm_t3230(mm);
-
- /* selection action on cause value */
- switch (reject_cause) {
- case GSM48_REJECT_IMSI_UNKNOWN_IN_VLR:
- case GSM48_REJECT_ILLEGAL_ME:
- abort_any = 1;
-
- /* TMSI and LAI invalid */
- subscr->tmsi = 0xffffffff;
- subscr->lac = 0x0000;
-
- /* key is invalid */
- subscr->key_seq = 7;
-
- /* update status */
- new_sim_ustate(subscr, GSM_SIM_U2_NOT_UPDATED);
-
- /* store LOCI on sim */
- gsm_subscr_write_loci(ms);
-
- /* change to WAIT_NETWORK_CMD state impied by abort_any == 1 */
-
- if (reject_cause == GSM48_REJECT_ILLEGAL_ME)
- subscr->sim_valid = 0;
-
- break;
- default:
- /* state implied by the number of remaining connections */
- ;
- }
-
- /* release MM connection(s) */
- gsm48_mm_release_mm_conn(ms, abort_any, 16, 0);
-
- /* state depends on the existance of remaining MM connections */
- if (llist_empty(&mm->mm_conn))
- new_mm_state(mm, GSM48_MM_ST_WAIT_NETWORK_CMD, 0);
- else
- new_mm_state(mm, GSM48_MM_ST_MM_CONN_ACTIVE, 0);
-
- return 0;
-}
-
-/* initiate an MM connection 4.5.1.1
- *
- * this function is called when:
- * - no RR connection exists
- * - an RR connection exists, but this is the first MM connection
- * - an RR connection exists, and there are already MM connection(s)
- */
-static int gsm48_mm_init_mm(struct osmocom_ms *ms, struct msgb *msg,
- int rr_prim)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm48_mmxx_hdr *mmh = (struct gsm48_mmxx_hdr *)msg->data;
- int msg_type = mmh->msg_type;
- int emergency = 0;
- uint8_t cause = 0, cm_serv = 0, proto = 0;
- struct msgb *nmsg;
- struct gsm48_mmxx_hdr *nmmh;
- struct gsm48_mm_conn *conn, *conn_found = NULL;
-
- /* reset loc. upd. counter on CM service request */
- mm->lupd_attempt = 0;
-
- /* find if there is already a pending connection */
- llist_for_each_entry(conn, &mm->mm_conn, list) {
- if (conn->state == GSM48_MMXX_ST_CONN_PEND) {
- conn_found = conn;
- break;
- }
- }
-
- /* if pending connection */
- if (conn_found) {
- LOGP(DMM, LOGL_INFO, "Init MM Connection, but already have "
- "pending MM Connection.\n");
- cause = 17;
- reject:
- nmsg = NULL;
- switch(msg_type) {
- case GSM48_MMCC_EST_REQ:
- nmsg = gsm48_mmxx_msgb_alloc(GSM48_MMCC_REL_IND,
- mmh->ref, mmh->transaction_id);
- break;
- case GSM48_MMSS_EST_REQ:
- nmsg = gsm48_mmxx_msgb_alloc(GSM48_MMSS_REL_IND,
- mmh->ref, mmh->transaction_id);
- break;
- case GSM48_MMSMS_EST_REQ:
- nmsg = gsm48_mmxx_msgb_alloc(GSM48_MMSMS_REL_IND,
- mmh->ref, mmh->transaction_id);
- break;
- }
- if (!nmsg)
- return -ENOMEM;
- nmmh = (struct gsm48_mmxx_hdr *)nmsg->data;
- nmmh->cause = cause;
- gsm48_mmxx_upmsg(ms, nmsg);
-
- return -EBUSY;
- }
- /* in case of an emergency setup */
- if (msg_type == GSM48_MMCC_EST_REQ && mmh->emergency)
- emergency = 1;
-
- /* if sim is not updated */
- if (!emergency && subscr->ustate != GSM_SIM_U1_UPDATED) {
- LOGP(DMM, LOGL_INFO, "Init MM Connection, but SIM not "
- "updated.\n");
- cause = 21;
- goto reject;
- }
-
- if (mm->state == GSM48_MM_ST_MM_IDLE) {
- /* current MM idle state */
- switch (mm->substate) {
- case GSM48_MM_SST_NORMAL_SERVICE:
- case GSM48_MM_SST_PLMN_SEARCH_NORMAL:
- LOGP(DMM, LOGL_INFO, "Init MM Connection.\n");
- break; /* allow when normal */
- case GSM48_MM_SST_LOC_UPD_NEEDED:
- case GSM48_MM_SST_ATTEMPT_UPDATE:
- /* store mm request if attempting to update */
- if (!emergency) {
- LOGP(DMM, LOGL_INFO, "Init MM Connection, but "
- "attempting to update.\n");
- cause = 21;
- goto reject;
- /* TODO: implement delay and start loc upd. */
- }
- break;
- default:
- /* reject if not emergency */
- if (!emergency) {
- LOGP(DMM, LOGL_INFO, "Init MM Connection, not "
- "in normal state.\n");
- cause = 21;
- goto reject;
- }
- break;
- }
- } else
- LOGP(DMM, LOGL_INFO, "Init another MM Connection.\n");
-
- /* set cause, service, proto */
- switch(msg_type) {
- case GSM48_MMCC_EST_REQ:
- if (emergency) {
- cause = RR_EST_CAUSE_EMERGENCY;
- cm_serv = GSM48_CMSERV_EMERGENCY;
- } else {
- cause = RR_EST_CAUSE_ORIG_TCHF;
- cm_serv = GSM48_CMSERV_MO_CALL_PACKET;
- }
- proto = GSM48_PDISC_CC;
- break;
- case GSM48_MMSS_EST_REQ:
- cause = RR_EST_CAUSE_OTHER_SDCCH;
- cm_serv = GSM48_CMSERV_SUP_SERV;
- proto = GSM48_PDISC_NC_SS;
- break;
- case GSM48_MMSMS_EST_REQ:
- cause = RR_EST_CAUSE_OTHER_SDCCH;
- cm_serv = GSM48_CMSERV_SMS;
- proto = GSM48_PDISC_SMS;
- break;
- }
-
- /* create MM connection instance */
- conn = mm_conn_new(mm, proto, mmh->transaction_id, mmh->ref);
- if (!conn)
- return -ENOMEM;
-
- new_conn_state(conn, GSM48_MMXX_ST_CONN_PEND);
-
- /* send CM SERVICE REQUEST */
- if (rr_prim) {
- mm->est_cause = cause;
- return gsm48_mm_tx_cm_serv_req(ms, rr_prim, cm_serv);
- } else
- return 0;
-}
-
-/* 4.5.1.1 a) MM connection request triggers RR connection */
-static int gsm48_mm_init_mm_no_rr(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- int rc;
-
- /* start MM connection by requesting RR connection */
- rc = gsm48_mm_init_mm(ms, msg, GSM48_RR_EST_REQ);
- if (rc)
- return rc;
-
- new_mm_state(mm, GSM48_MM_ST_WAIT_RR_CONN_MM_CON, 0);
-
- return 0;
-}
-
-/* 4.5.1.1 a) RR is esablised during mm connection, wait for CM accepted */
-static int gsm48_mm_est_mm_con(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
-
- /* 4.5.1.7 if there is no more MM connection */
- if (llist_empty(&mm->mm_conn)) {
- LOGP(DMM, LOGL_INFO, "MM Connection, are already gone.\n");
-
- /* start RR release timer */
- start_mm_t3240(mm);
-
- new_mm_state(mm, GSM48_MM_ST_WAIT_NETWORK_CMD, 0);
-
- /* send abort */
- return gsm48_mm_tx_cm_service_abort(ms);
- }
-
- /* start MM connection timer */
- start_mm_t3230(mm);
-
- new_mm_state(mm, GSM48_MM_ST_WAIT_OUT_MM_CONN, 0);
-
- return 0;
-}
-
-/* 4.5.1.1 b) MM connection request on existing RR connection */
-static int gsm48_mm_init_mm_first(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- int rc;
-
- /* start MM connection by sending data */
- rc = gsm48_mm_init_mm(ms, msg, GSM48_RR_DATA_REQ);
- if (rc)
- return rc;
-
- /* stop "RR connection release not allowed" timer */
- stop_mm_t3241(mm);
-
- /* start MM connection timer */
- start_mm_t3230(mm);
-
- new_mm_state(mm, GSM48_MM_ST_WAIT_OUT_MM_CONN, 0);
-
- return 0;
-}
-
-/* 4.5.1.1 b) another MM connection request on existing RR connection */
-static int gsm48_mm_init_mm_more(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- int rc;
-
- /* start MM connection by sending data */
- rc = gsm48_mm_init_mm(ms, msg, GSM48_RR_DATA_REQ);
- if (rc)
- return rc;
-
- /* start MM connection timer */
- start_mm_t3230(mm);
-
- new_mm_state(mm, GSM48_MM_ST_WAIT_ADD_OUT_MM_CON, 0);
-
- return 0;
-}
-
-/* 4.5.1.1 b) delay on WAIT FOR NETWORK COMMAND state */
-static int gsm48_mm_init_mm_wait(struct osmocom_ms *ms, struct msgb *msg)
-{
- /* reject */
- gsm48_mm_init_mm_reject(ms, msg);
-#if 0
- this requires handling when leaving this state...
-
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- int rc;
-
- /* just create the MM connection in pending state */
- rc = gsm48_mm_init_mm(ms, msg, 0);
- if (rc)
- return rc;
-
- /* start MM connection timer */
- start_mm_t3230(mm);
-
- new_mm_state(mm, GSM48_MM_ST_WAIT_ADD_OUT_MM_CON, 0);
-#endif
-
- return 0;
-}
-
-/* initiate an mm connection other cases */
-static int gsm48_mm_init_mm_reject(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmxx_hdr *mmh = (struct gsm48_mmxx_hdr *)msg->data;
- int msg_type = mmh->msg_type;
- struct msgb *nmsg;
- struct gsm48_mmxx_hdr *nmmh;
-
- /* reject */
- nmsg = NULL;
- switch(msg_type) {
- case GSM48_MMCC_EST_REQ:
- nmsg = gsm48_mmxx_msgb_alloc(GSM48_MMCC_REL_IND, mmh->ref,
- mmh->transaction_id);
- break;
- case GSM48_MMSS_EST_REQ:
- nmsg = gsm48_mmxx_msgb_alloc(GSM48_MMSS_REL_IND, mmh->ref,
- mmh->transaction_id);
- break;
- case GSM48_MMSMS_EST_REQ:
- nmsg = gsm48_mmxx_msgb_alloc(GSM48_MMSMS_REL_IND, mmh->ref,
- mmh->transaction_id);
- break;
- }
- if (!nmsg)
- return -ENOMEM;
- nmmh = (struct gsm48_mmxx_hdr *)nmsg->data;
- nmmh->cause = 17;
- gsm48_mmxx_upmsg(ms, nmsg);
-
- return 0;
-}
-
-/* accepting pending connection, got dedicated mode
- *
- * this function is called:
- * - when ciphering command is received
- * - when cm service is accepted
- */
-static int gsm48_mm_conn_go_dedic(struct osmocom_ms *ms)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct gsm48_mm_conn *conn, *conn_found = NULL;
- struct msgb *nmsg;
- struct gsm48_mmxx_hdr *nmmh;
-
- /* the first and only pending connection is the recent requested */
- llist_for_each_entry(conn, &mm->mm_conn, list) {
- if (conn->state == GSM48_MMXX_ST_CONN_PEND) {
- conn_found = conn;
- break;
- }
- }
-
- /* if no pending connection (anymore) */
- if (!conn_found) {
- LOGP(DMM, LOGL_INFO, "No pending MM Connection.\n");
-
- return 0;
- }
-
- new_conn_state(conn, GSM48_MMXX_ST_DEDICATED);
-
- /* send establishment confirm */
- nmsg = NULL;
- switch(conn_found->protocol) {
- case GSM48_PDISC_CC:
- nmsg = gsm48_mmxx_msgb_alloc(GSM48_MMCC_EST_CNF, conn->ref,
- conn->transaction_id);
- break;
- case GSM48_PDISC_NC_SS:
- nmsg = gsm48_mmxx_msgb_alloc(GSM48_MMSS_EST_CNF, conn->ref,
- conn->transaction_id);
- break;
- case GSM48_PDISC_SMS:
- nmsg = gsm48_mmxx_msgb_alloc(GSM48_MMSMS_EST_CNF, conn->ref,
- conn->transaction_id);
- break;
- }
- if (!nmsg)
- return -ENOMEM;
- nmmh = (struct gsm48_mmxx_hdr *)nmsg->data;
- nmmh->cause = 17;
- gsm48_mmxx_upmsg(ms, nmsg);
-
- return 0;
-}
-
-/* a RR-SYNC-IND is received during MM connection establishment */
-static int gsm48_mm_sync_ind_wait(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct gsm48_rr_hdr *rrh = (struct gsm48_rr_hdr *)msg->data;
-
- if (rrh->cause != RR_SYNC_CAUSE_CIPHERING) {
- LOGP(DMM, LOGL_NOTICE, "Ignore sync indication, not waiting "
- "for CM service\n");
- return -EINVAL;
- }
-
- /* stop MM connection timer */
- stop_mm_t3230(mm);
-
- new_mm_state(mm, GSM48_MM_ST_MM_CONN_ACTIVE, 0);
-
- return gsm48_mm_conn_go_dedic(ms);
-}
-
-/* a RR-SYNC-IND is received during MM connection active */
-static int gsm48_mm_sync_ind_active(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct gsm48_mm_conn *conn;
- struct msgb *nmsg;
- struct gsm48_mmxx_hdr *nmmh;
-
- /* stop MM connection timer */
- stop_mm_t3230(mm);
-
- /* broadcast all MMCC connection(s) */
- llist_for_each_entry(conn, &mm->mm_conn, list) {
- /* send MMCC-SYNC-IND */
- nmsg = NULL;
- switch(conn->protocol) {
- case GSM48_PDISC_CC:
- nmsg = gsm48_mmxx_msgb_alloc(GSM48_MMCC_SYNC_IND,
- conn->ref, conn->transaction_id);
- break;
- }
- if (!nmsg)
- continue; /* skip if not of CC type */
- nmmh = (struct gsm48_mmxx_hdr *)nmsg->data;
- nmmh->cause = 17;
- /* copy L3 message */
- nmsg->l3h = msgb_put(nmsg, msgb_l3len(msg));
- memcpy(nmsg->l3h, msg->l3h, msgb_l3len(msg));
- gsm48_mmxx_upmsg(ms, nmsg);
- }
-
- return 0;
-}
-
-/* 4.5.1.2 RR abort/release is received during MM connection establishment */
-static int gsm48_mm_abort_mm_con(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct gsm48_rr_hdr *rrh = (struct gsm48_rr_hdr *)msg->data;
- int cause;
-
- /* stop RR release timer */
- stop_mm_t3240(mm);
-
- /* this conversion is not of any standard */
- switch(rrh->cause) {
- case RR_REL_CAUSE_NOT_AUTHORIZED:
- case RR_REL_CAUSE_EMERGENCY_ONLY:
- case RR_REL_CAUSE_TRY_LATER:
- cause = 21;
- break;
- case RR_REL_CAUSE_NORMAL:
- cause = 16;
- break;
- default:
- cause = 47;
- }
-
- /* stop MM connection timer */
- stop_mm_t3230(mm);
-
- /* release all connections */
- gsm48_mm_release_mm_conn(ms, 1, cause, 1);
-
- /* return to MM IDLE */
- return gsm48_mm_return_idle(ms, NULL);
-}
-
-/* 4.5.1.2 timeout is received during MM connection establishment */
-static int gsm48_mm_timeout_mm_con(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
-
- /* release pending connection */
- gsm48_mm_release_mm_conn(ms, 0, 102, 0);
-
- /* state depends on the existance of remaining MM connections */
- if (llist_empty(&mm->mm_conn)) {
- /* start RR release timer */
- start_mm_t3240(mm);
-
- new_mm_state(mm, GSM48_MM_ST_WAIT_NETWORK_CMD, 0);
- } else
- new_mm_state(mm, GSM48_MM_ST_MM_CONN_ACTIVE, 0);
-
- return 0;
-}
-
-/* respond to paging */
-static int gsm48_mm_est(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
-
- mm->est_cause = RR_EST_CAUSE_ANS_PAG_ANY;
- new_mm_state(mm, GSM48_MM_ST_WAIT_NETWORK_CMD, 0);
-
- return 0;
-}
-
-/* send CM data */
-static int gsm48_mm_data(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct gsm48_mmxx_hdr *mmh = (struct gsm48_mmxx_hdr *)msg->data;
- struct gsm48_mm_conn *conn;
- int msg_type = mmh->msg_type;
-
- /* get connection, if not exist (anymore), release */
- conn = mm_conn_by_ref(mm, mmh->ref);
- if (!conn) {
- LOGP(DMM, LOGL_INFO, "MMXX_DATA_REQ with unknown (already "
- "released) ref=%x, sending MMXX_REL_IND\n", mmh->ref);
- switch(msg_type & GSM48_MMXX_MASK) {
- case GSM48_MMCC_CLASS:
- mmh->msg_type = GSM48_MMCC_REL_IND;
- break;
- case GSM48_MMSS_CLASS:
- mmh->msg_type = GSM48_MMSS_REL_IND;
- break;
- case GSM48_MMSMS_CLASS:
- mmh->msg_type = GSM48_MMSMS_REL_IND;
- break;
- }
- mmh->cause = 31;
-
- /* mirror message with REL_IND + cause */
- return gsm48_mmxx_upmsg(ms, msg);
- }
-
- /* pull MM header */
- msgb_pull(msg, sizeof(struct gsm48_mmxx_hdr));
-
- /* push RR header and send down */
- return gsm48_mm_to_rr(ms, msg, GSM48_RR_DATA_REQ, 0);
-}
-
-/* release of MM connection (active state) */
-static int gsm48_mm_release_active(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct gsm48_mmxx_hdr *mmh = (struct gsm48_mmxx_hdr *)msg->data;
- struct gsm48_mm_conn *conn;
-
- /* get connection, if not exist (anymore), release */
- conn = mm_conn_by_ref(mm, mmh->ref);
- if (conn)
- mm_conn_free(conn);
-
- /* state depends on the existance of remaining MM connections */
- if (llist_empty(&mm->mm_conn)) {
- /* start RR release timer */
- start_mm_t3240(mm);
-
- new_mm_state(mm, GSM48_MM_ST_WAIT_NETWORK_CMD, 0);
- } else
- new_mm_state(mm, GSM48_MM_ST_MM_CONN_ACTIVE, 0);
-
- return 0;
-}
-
-/* release of MM connection (wait for additional state) */
-static int gsm48_mm_release_wait_add(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct gsm48_mmxx_hdr *mmh = (struct gsm48_mmxx_hdr *)msg->data;
- struct gsm48_mm_conn *conn;
-
- /* get connection, if not exist (anymore), release */
- conn = mm_conn_by_ref(mm, mmh->ref);
- if (conn)
- mm_conn_free(conn);
-
- return 0;
-}
-
-/* release of MM connection (wait for active state) */
-static int gsm48_mm_release_wait_active(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct gsm48_mmxx_hdr *mmh = (struct gsm48_mmxx_hdr *)msg->data;
- struct gsm48_mm_conn *conn;
-
- /* get connection, if not exist (anymore), release */
- conn = mm_conn_by_ref(mm, mmh->ref);
- if (conn)
- mm_conn_free(conn);
-
- /* 4.5.1.7 if there is no MM connection during wait for active state */
- if (llist_empty(&mm->mm_conn)) {
- LOGP(DMM, LOGL_INFO, "No MM Connection during 'wait for "
- "active' state.\n");
-
- /* start RR release timer */
- start_mm_t3240(mm);
-
- new_mm_state(mm, GSM48_MM_ST_WAIT_NETWORK_CMD, 0);
-
- /* send abort */
- return gsm48_mm_tx_cm_service_abort(ms);
- }
-
- return 0;
-}
-
-/* release of MM connection (wait for RR state) */
-static int gsm48_mm_release_wait_rr(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct gsm48_mmxx_hdr *mmh = (struct gsm48_mmxx_hdr *)msg->data;
- struct gsm48_mm_conn *conn;
-
- /* get connection, if not exist (anymore), release */
- conn = mm_conn_by_ref(mm, mmh->ref);
- if (conn)
- mm_conn_free(conn);
-
- /* later, if RR connection is established, the CM SERIVE ABORT
- * message will be sent
- */
- return 0;
-}
-
-/* abort RR connection (due to T3240) */
-static int gsm48_mm_abort_rr(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct msgb *nmsg;
- struct gsm48_rr_hdr *nrrh;
-
- /* send abort to RR */
- nmsg = gsm48_rr_msgb_alloc(GSM48_RR_ABORT_REQ);
- if (!nmsg)
- return -ENOMEM;
- nrrh = (struct gsm48_rr_hdr *) nmsg->data;
- nrrh->cause = GSM48_RR_CAUSE_ABNORMAL_TIMER;
- gsm48_rr_downmsg(ms, nmsg);
-
- /* return to MM IDLE */
- return gsm48_mm_return_idle(ms, NULL);
-}
-
-/*
- * other processes
- */
-
-/* RR is released in other states */
-static int gsm48_mm_rel_other(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
-
- /* stop RR release timer (if running) */
- stop_mm_t3240(mm);
-
- /* return to MM IDLE */
- return gsm48_mm_return_idle(ms, NULL);
-}
-
-/*
- * state machines
- */
-
-/* state trasitions for MMxx-SAP messages from upper layers */
-static struct downstate {
- uint32_t states;
- uint32_t substates;
- int type;
- int (*rout) (struct osmocom_ms *ms, struct msgb *msg);
-} downstatelist[] = {
- /* 4.2.2.1 Normal service */
- {SBIT(GSM48_MM_ST_MM_IDLE), SBIT(GSM48_MM_SST_NORMAL_SERVICE),
- GSM48_MMCC_EST_REQ, gsm48_mm_init_mm_no_rr},
-
- {SBIT(GSM48_MM_ST_MM_IDLE), SBIT(GSM48_MM_SST_NORMAL_SERVICE),
- GSM48_MMSS_EST_REQ, gsm48_mm_init_mm_no_rr},
-
- {SBIT(GSM48_MM_ST_MM_IDLE), SBIT(GSM48_MM_SST_NORMAL_SERVICE),
- GSM48_MMSMS_EST_REQ, gsm48_mm_init_mm_no_rr},
-
- /* 4.2.2.2 Attempt to update / Loc. Upd. needed */
- {SBIT(GSM48_MM_ST_MM_IDLE), SBIT(GSM48_MM_SST_ATTEMPT_UPDATE) |
- SBIT(GSM48_MM_SST_LOC_UPD_NEEDED),
- GSM48_MMCC_EST_REQ, gsm48_mm_init_mm_no_rr}, /* emergency only */
-
- /* 4.2.2.3 Limited service */
- {SBIT(GSM48_MM_ST_MM_IDLE), SBIT(GSM48_MM_SST_LIMITED_SERVICE),
- GSM48_MMCC_EST_REQ, gsm48_mm_init_mm_no_rr},
-
- /* 4.2.2.4 No IMSI */
- {SBIT(GSM48_MM_ST_MM_IDLE), SBIT(GSM48_MM_SST_NO_IMSI),
- GSM48_MMCC_EST_REQ, gsm48_mm_init_mm_no_rr},
-
- /* 4.2.2.5 PLMN search, normal service */
- {SBIT(GSM48_MM_ST_MM_IDLE), SBIT(GSM48_MM_SST_PLMN_SEARCH_NORMAL),
- GSM48_MMCC_EST_REQ, gsm48_mm_init_mm_no_rr},
-
- {SBIT(GSM48_MM_ST_MM_IDLE), SBIT(GSM48_MM_SST_PLMN_SEARCH_NORMAL),
- GSM48_MMSS_EST_REQ, gsm48_mm_init_mm_no_rr},
-
- {SBIT(GSM48_MM_ST_MM_IDLE), SBIT(GSM48_MM_SST_PLMN_SEARCH_NORMAL),
- GSM48_MMSMS_EST_REQ, gsm48_mm_init_mm_no_rr},
-
- /* 4.2.2.6 PLMN search */
- {SBIT(GSM48_MM_ST_MM_IDLE), SBIT(GSM48_MM_SST_PLMN_SEARCH),
- GSM48_MMCC_EST_REQ, gsm48_mm_init_mm_no_rr},
-
- /* 4.5.1.1 MM Connection (EST) */
- {SBIT(GSM48_MM_ST_RR_CONN_RELEASE_NA), ALL_STATES,
- GSM48_MMCC_EST_REQ, gsm48_mm_init_mm_first},
-
- {SBIT(GSM48_MM_ST_RR_CONN_RELEASE_NA), ALL_STATES,
- GSM48_MMSS_EST_REQ, gsm48_mm_init_mm_first},
-
- {SBIT(GSM48_MM_ST_RR_CONN_RELEASE_NA), ALL_STATES,
- GSM48_MMSMS_EST_REQ, gsm48_mm_init_mm_first},
-
- {SBIT(GSM48_MM_ST_MM_CONN_ACTIVE), ALL_STATES,
- GSM48_MMCC_EST_REQ, gsm48_mm_init_mm_more},
-
- {SBIT(GSM48_MM_ST_MM_CONN_ACTIVE), ALL_STATES,
- GSM48_MMSS_EST_REQ, gsm48_mm_init_mm_more},
-
- {SBIT(GSM48_MM_ST_MM_CONN_ACTIVE), ALL_STATES,
- GSM48_MMSMS_EST_REQ, gsm48_mm_init_mm_more},
-
- {SBIT(GSM48_MM_ST_WAIT_NETWORK_CMD), ALL_STATES,
- GSM48_MMCC_EST_REQ, gsm48_mm_init_mm_wait},
-
- {SBIT(GSM48_MM_ST_WAIT_NETWORK_CMD), ALL_STATES,
- GSM48_MMSS_EST_REQ, gsm48_mm_init_mm_wait},
-
- {SBIT(GSM48_MM_ST_WAIT_NETWORK_CMD), ALL_STATES,
- GSM48_MMSMS_EST_REQ, gsm48_mm_init_mm_wait},
-
- {ALL_STATES, ALL_STATES,
- GSM48_MMCC_EST_REQ, gsm48_mm_init_mm_reject},
-
- {ALL_STATES, ALL_STATES,
- GSM48_MMSS_EST_REQ, gsm48_mm_init_mm_reject},
-
- {ALL_STATES, ALL_STATES,
- GSM48_MMSMS_EST_REQ, gsm48_mm_init_mm_reject},
-
- /* 4.5.2.1 MM Connection (DATA) */
- {SBIT(GSM48_MM_ST_MM_CONN_ACTIVE) |
- SBIT(GSM48_MM_ST_WAIT_ADD_OUT_MM_CON), ALL_STATES,
- GSM48_MMCC_DATA_REQ, gsm48_mm_data},
-
- {SBIT(GSM48_MM_ST_MM_CONN_ACTIVE) |
- SBIT(GSM48_MM_ST_WAIT_ADD_OUT_MM_CON), ALL_STATES,
- GSM48_MMSS_DATA_REQ, gsm48_mm_data},
-
- {SBIT(GSM48_MM_ST_MM_CONN_ACTIVE) |
- SBIT(GSM48_MM_ST_WAIT_ADD_OUT_MM_CON), ALL_STATES,
- GSM48_MMSMS_DATA_REQ, gsm48_mm_data},
-
- /* 4.5.2.1 MM Connection (REL) */
- {SBIT(GSM48_MM_ST_MM_CONN_ACTIVE), ALL_STATES,
- GSM48_MMCC_REL_REQ, gsm48_mm_release_active},
-
- {SBIT(GSM48_MM_ST_MM_CONN_ACTIVE), ALL_STATES,
- GSM48_MMSS_REL_REQ, gsm48_mm_release_active},
-
- {SBIT(GSM48_MM_ST_MM_CONN_ACTIVE), ALL_STATES,
- GSM48_MMSMS_REL_REQ, gsm48_mm_release_active},
-
- {SBIT(GSM48_MM_ST_WAIT_ADD_OUT_MM_CON), ALL_STATES,
- GSM48_MMCC_REL_REQ, gsm48_mm_release_wait_add},
-
- {SBIT(GSM48_MM_ST_WAIT_ADD_OUT_MM_CON), ALL_STATES,
- GSM48_MMSS_REL_REQ, gsm48_mm_release_wait_add},
-
- {SBIT(GSM48_MM_ST_WAIT_ADD_OUT_MM_CON), ALL_STATES,
- GSM48_MMSMS_REL_REQ, gsm48_mm_release_wait_add},
-
- {SBIT(GSM48_MM_ST_WAIT_OUT_MM_CONN), ALL_STATES,
- GSM48_MMCC_REL_REQ, gsm48_mm_release_wait_active},
-
- {SBIT(GSM48_MM_ST_WAIT_OUT_MM_CONN), ALL_STATES,
- GSM48_MMSS_REL_REQ, gsm48_mm_release_wait_active},
-
- {SBIT(GSM48_MM_ST_WAIT_OUT_MM_CONN), ALL_STATES,
- GSM48_MMSMS_REL_REQ, gsm48_mm_release_wait_active},
-
- {SBIT(GSM48_MM_ST_WAIT_RR_CONN_MM_CON), ALL_STATES,
- GSM48_MMCC_REL_REQ, gsm48_mm_release_wait_rr},
-
- {SBIT(GSM48_MM_ST_WAIT_RR_CONN_MM_CON), ALL_STATES,
- GSM48_MMSS_REL_REQ, gsm48_mm_release_wait_rr},
-
- {SBIT(GSM48_MM_ST_WAIT_RR_CONN_MM_CON), ALL_STATES,
- GSM48_MMSMS_REL_REQ, gsm48_mm_release_wait_rr},
-};
-
-#define DOWNSLLEN \
- (sizeof(downstatelist) / sizeof(struct downstate))
-
-int gsm48_mmxx_downmsg(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct gsm48_mmxx_hdr *mmh = (struct gsm48_mmxx_hdr *)msg->data;
- int msg_type = mmh->msg_type;
- struct gsm48_mm_conn *conn;
- int i, rc;
-
- /* keep up to date with the transaction ID */
- conn = mm_conn_by_ref(mm, mmh->ref);
- if (conn)
- conn->transaction_id = mmh->transaction_id;
-
- LOGP(DMM, LOGL_INFO, "(ms %s) Received '%s' event in state %s\n",
- ms->name, get_mmxx_name(msg_type),
- gsm48_mm_state_names[mm->state]);
- if (mm->state == GSM48_MM_ST_MM_IDLE)
- LOGP(DMM, LOGL_INFO, "-> substate %s\n",
- gsm48_mm_substate_names[mm->substate]);
- LOGP(DMM, LOGL_INFO, "-> callref %x, transaction_id %d\n",
- mmh->ref, mmh->transaction_id);
-
- /* Find function for current state and message */
- for (i = 0; i < DOWNSLLEN; i++)
- if ((msg_type == downstatelist[i].type)
- && ((1 << mm->state) & downstatelist[i].states)
- && ((1 << mm->substate) & downstatelist[i].substates))
- break;
- if (i == DOWNSLLEN) {
- LOGP(DMM, LOGL_NOTICE, "Message unhandled at this state.\n");
- msgb_free(msg);
- return 0;
- }
-
- rc = downstatelist[i].rout(ms, msg);
-
- if (downstatelist[i].rout != gsm48_mm_data)
- msgb_free(msg);
-
- return rc;
-}
-
-/* state trasitions for radio ressource messages (lower layer) */
-static struct rrdatastate {
- uint32_t states;
- int type;
- int (*rout) (struct osmocom_ms *ms, struct msgb *msg);
-} rrdatastatelist[] = {
- /* paging */
- {SBIT(GSM48_MM_ST_MM_IDLE),
- GSM48_RR_EST_IND, gsm48_mm_est},
-
- /* imsi detach */
- {SBIT(GSM48_MM_ST_WAIT_RR_CONN_IMSI_D), /* 4.3.4.4 */
- GSM48_RR_EST_CNF, gsm48_mm_imsi_detach_sent},
-
- {SBIT(GSM48_MM_ST_WAIT_RR_CONN_IMSI_D), /* 4.3.4.4 (unsuc.) */
- GSM48_RR_REL_IND, gsm48_mm_imsi_detach_end},
- /* also this may happen if SABM is ackwnowledged with DISC */
-
- {SBIT(GSM48_MM_ST_WAIT_RR_CONN_IMSI_D), /* 4.3.4.4 (lost) */
- GSM48_RR_ABORT_IND, gsm48_mm_imsi_detach_end},
-
- {SBIT(GSM48_MM_ST_IMSI_DETACH_INIT), /* 4.3.4.4 (unsuc.) */
- GSM48_RR_REL_IND, gsm48_mm_imsi_detach_end},
-
- {SBIT(GSM48_MM_ST_IMSI_DETACH_INIT), /* 4.3.4.4 (lost) */
- GSM48_RR_ABORT_IND, gsm48_mm_imsi_detach_end},
-
- /* location update */
- {SBIT(GSM48_MM_ST_WAIT_RR_CONN_LUPD), /* 4.4.4.1 */
- GSM48_RR_EST_CNF, gsm48_mm_est_loc_upd},
-
- {SBIT(GSM48_MM_ST_LOC_UPD_INIT) |
- SBIT(GSM48_MM_ST_WAIT_RR_CONN_LUPD), /* 4.4.4.9 */
- GSM48_RR_REL_IND, gsm48_mm_rel_loc_upd_abort},
-
- {SBIT(GSM48_MM_ST_LOC_UPD_INIT) |
- SBIT(GSM48_MM_ST_WAIT_RR_CONN_LUPD), /* 4.4.4.9 */
- GSM48_RR_ABORT_IND, gsm48_mm_rel_loc_upd_abort},
-
- {SBIT(GSM48_MM_ST_LOC_UPD_REJ), /* 4.4.4.7 */
- GSM48_RR_REL_IND, gsm48_mm_rel_loc_upd_rej},
-
- {SBIT(GSM48_MM_ST_LOC_UPD_REJ), /* 4.4.4.7 */
- GSM48_RR_ABORT_IND, gsm48_mm_rel_loc_upd_rej},
-
- /* MM connection (EST) */
- {SBIT(GSM48_MM_ST_WAIT_RR_CONN_MM_CON), /* 4.5.1.1 */
- GSM48_RR_EST_CNF, gsm48_mm_est_mm_con},
-
- /* MM connection (DATA) */
- {ALL_STATES,
- GSM48_RR_DATA_IND, gsm48_mm_data_ind},
-
- /* MM connection (SYNC) */
- {SBIT(GSM48_MM_ST_WAIT_OUT_MM_CONN) |
- SBIT(GSM48_MM_ST_WAIT_ADD_OUT_MM_CON), /* 4.5.1.1 */
- GSM48_RR_SYNC_IND, gsm48_mm_sync_ind_wait},
-
- {SBIT(GSM48_MM_ST_MM_CONN_ACTIVE),
- GSM48_RR_SYNC_IND, gsm48_mm_sync_ind_active},
-
- /* MM connection (REL/ABORT) */
- {SBIT(GSM48_MM_ST_WAIT_RR_CONN_MM_CON) |
- SBIT(GSM48_MM_ST_WAIT_OUT_MM_CONN) |
- SBIT(GSM48_MM_ST_WAIT_ADD_OUT_MM_CON), /* 4.5.1.2 */
- GSM48_RR_REL_IND, gsm48_mm_abort_mm_con},
-
- {SBIT(GSM48_MM_ST_WAIT_RR_CONN_MM_CON) |
- SBIT(GSM48_MM_ST_WAIT_OUT_MM_CONN) |
- SBIT(GSM48_MM_ST_WAIT_ADD_OUT_MM_CON), /* 4.5.1.2 */
- GSM48_RR_ABORT_IND, gsm48_mm_abort_mm_con},
-
- /* MM connection (REL/ABORT with re-establishment possibility) */
- {SBIT(GSM48_MM_ST_MM_CONN_ACTIVE), /* not supported */
- GSM48_RR_REL_IND, gsm48_mm_abort_mm_con},
-
- {SBIT(GSM48_MM_ST_MM_CONN_ACTIVE) |
- SBIT(GSM48_MM_ST_WAIT_ADD_OUT_MM_CON), /* not supported */
- GSM48_RR_ABORT_IND, gsm48_mm_abort_mm_con},
-
- /* other (also wait for network command) */
- {ALL_STATES,
- GSM48_RR_REL_IND, gsm48_mm_rel_other},
-
- {ALL_STATES,
- GSM48_RR_ABORT_IND, gsm48_mm_rel_other},
-};
-
-#define RRDATASLLEN \
- (sizeof(rrdatastatelist) / sizeof(struct rrdatastate))
-
-static int gsm48_rcv_rr(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct gsm48_rr_hdr *rrh = (struct gsm48_rr_hdr *)msg->data;
- int msg_type = rrh->msg_type;
- int i, rc;
-
- LOGP(DMM, LOGL_INFO, "(ms %s) Received '%s' from RR in state %s\n",
- ms->name, get_rr_name(msg_type),
- gsm48_mm_state_names[mm->state]);
-
- /* find function for current state and message */
- for (i = 0; i < RRDATASLLEN; i++)
- if ((msg_type == rrdatastatelist[i].type)
- && ((1 << mm->state) & rrdatastatelist[i].states))
- break;
- if (i == RRDATASLLEN) {
- LOGP(DMM, LOGL_NOTICE, "Message unhandled at this state.\n");
- msgb_free(msg);
- return 0;
- }
-
- rc = rrdatastatelist[i].rout(ms, msg);
-
- if (rrdatastatelist[i].rout != gsm48_mm_data_ind)
- msgb_free(msg);
-
- return rc;
-}
-
-/* state trasitions for mobile managemnt messages (lower layer) */
-static struct mmdatastate {
- uint32_t states;
- int type;
- int (*rout) (struct osmocom_ms *ms, struct msgb *msg);
-} mmdatastatelist[] = {
- {ALL_STATES, /* 4.3.1.2 */
- GSM48_MT_MM_TMSI_REALL_CMD, gsm48_mm_rx_tmsi_realloc_cmd},
-
- {ALL_STATES, /* 4.3.2.2 */
- GSM48_MT_MM_AUTH_REQ, gsm48_mm_rx_auth_req},
-
- {ALL_STATES, /* 4.3.2.5 */
- GSM48_MT_MM_AUTH_REJ, gsm48_mm_rx_auth_rej},
-
- {ALL_STATES, /* 4.3.3.2 */
- GSM48_MT_MM_ID_REQ, gsm48_mm_rx_id_req},
-
- {ALL_STATES, /* 4.3.5.2 */
- GSM48_MT_MM_ABORT, gsm48_mm_rx_abort},
-
- {ALL_STATES, /* 4.3.6.2 */
- GSM48_MT_MM_INFO, gsm48_mm_rx_info},
-
- {SBIT(GSM48_MM_ST_LOC_UPD_INIT), /* 4.4.4.6 */
- GSM48_MT_MM_LOC_UPD_ACCEPT, gsm48_mm_rx_loc_upd_acc},
-
- {SBIT(GSM48_MM_ST_LOC_UPD_INIT), /* 4.4.4.7 */
- GSM48_MT_MM_LOC_UPD_REJECT, gsm48_mm_rx_loc_upd_rej},
-
- {ALL_STATES, /* 4.5.1.1 */
- GSM48_MT_MM_CM_SERV_ACC, gsm48_mm_rx_cm_service_acc},
-
- {ALL_STATES, /* 4.5.1.1 */
- GSM48_MT_MM_CM_SERV_REJ, gsm48_mm_rx_cm_service_rej},
-};
-
-#define MMDATASLLEN \
- (sizeof(mmdatastatelist) / sizeof(struct mmdatastate))
-
-static int gsm48_mm_data_ind(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct gsm48_hdr *gh = msgb_l3(msg);
- uint8_t pdisc = gh->proto_discr & 0x0f;
- uint8_t msg_type = gh->msg_type & 0xbf;
- struct gsm48_mmxx_hdr *mmh;
- int msg_supported = 0; /* determine, if message is supported at all */
- int rr_prim = -1, rr_est = -1; /* no prim set */
- uint8_t skip_ind;
- int i, rc;
-
- /* 9.2.19 */
- if (msg_type == GSM48_MT_MM_NULL)
- return 0;
-
- if (mm->state == GSM48_MM_ST_IMSI_DETACH_INIT) {
- LOGP(DMM, LOGL_NOTICE, "DATA IND ignored during IMSI "
- "detach.\n");
- return 0;
- }
- /* pull the RR header */
- msgb_pull(msg, sizeof(struct gsm48_rr_hdr));
-
- /* create transaction (if not exists) and push message */
- switch (pdisc) {
- case GSM48_PDISC_CC:
- rr_prim = GSM48_MMCC_DATA_IND;
- rr_est = GSM48_MMCC_EST_IND;
- break;
-#if 0
- case GSM48_PDISC_NC_SS:
- rr_prim = GSM48_MMSS_DATA_IND;
- rr_est = GSM48_MMSS_EST_IND;
- break;
- case GSM48_PDISC_SMS:
- rr_prim = GSM48_MMSMS_DATA_IND;
- rr_est = GSM48_MMSMS_EST_IND;
- break;
-#endif
- }
- if (rr_prim != -1) {
- uint8_t transaction_id = ((gh->proto_discr & 0xf0) ^ 0x80) >> 4;
- /* flip */
- struct gsm48_mm_conn *conn;
-
- /* find transaction, if any */
- conn = mm_conn_by_id(mm, pdisc, transaction_id);
-
- /* create MM connection instance */
- if (!conn) {
- conn = mm_conn_new(mm, pdisc, transaction_id,
- mm_conn_new_ref++);
- rr_prim = rr_est;
- }
- if (!conn)
- return -ENOMEM;
-
- /* push new header */
- msgb_push(msg, sizeof(struct gsm48_mmxx_hdr));
- mmh = (struct gsm48_mmxx_hdr *)msg->data;
- mmh->msg_type = rr_prim;
- mmh->ref = conn->ref;
-
- /* go MM CONN ACTIVE state */
- if (mm->state == GSM48_MM_ST_WAIT_NETWORK_CMD
- || mm->state == GSM48_MM_ST_RR_CONN_RELEASE_NA) {
- /* stop RR release timer */
- stop_mm_t3240(mm);
-
- /* stop "RR connection release not allowed" timer */
- stop_mm_t3241(mm);
-
- new_mm_state(mm, GSM48_MM_ST_MM_CONN_ACTIVE, 0);
- }
- }
-
- /* forward message */
- switch (pdisc) {
- case GSM48_PDISC_MM:
- skip_ind = (gh->proto_discr & 0xf0) >> 4;
-
- /* ignore if skip indicator is not B'0000' */
- if (skip_ind)
- return 0;
- break; /* follow the selection proceedure below */
-
- case GSM48_PDISC_CC:
- return gsm48_rcv_cc(ms, msg);
-
-#if 0
- case GSM48_PDISC_NC_SS:
- return gsm48_rcv_ss(ms, msg);
-
- case GSM48_PDISC_SMS:
- return gsm48_rcv_sms(ms, msg);
-#endif
-
- default:
- LOGP(DMM, LOGL_NOTICE, "Protocol type 0x%02x unsupported.\n",
- pdisc);
- msgb_free(msg);
- return gsm48_mm_tx_mm_status(ms,
- GSM48_REJECT_MSG_TYPE_NOT_IMPLEMENTED);
- }
-
- LOGP(DMM, LOGL_INFO, "(ms %s) Received '%s' in MM state %s\n", ms->name,
- get_mm_name(msg_type), gsm48_mm_state_names[mm->state]);
-
- stop_mm_t3212(mm); /* 4.4.2 */
-
- /* 11.2 re-start pending RR release timer */
- if (osmo_timer_pending(&mm->t3240)) {
- stop_mm_t3240(mm);
- start_mm_t3240(mm);
- }
-
- /* find function for current state and message */
- for (i = 0; i < MMDATASLLEN; i++) {
- if (msg_type == mmdatastatelist[i].type)
- msg_supported = 1;
- if ((msg_type == mmdatastatelist[i].type)
- && ((1 << mm->state) & mmdatastatelist[i].states))
- break;
- }
- if (i == MMDATASLLEN) {
- msgb_free(msg);
- if (msg_supported) {
- LOGP(DMM, LOGL_NOTICE, "Message unhandled at this "
- "state.\n");
- return gsm48_mm_tx_mm_status(ms,
- GSM48_REJECT_MSG_TYPE_NOT_COMPATIBLE);
- } else {
- LOGP(DMM, LOGL_NOTICE, "Message not supported.\n");
- return gsm48_mm_tx_mm_status(ms,
- GSM48_REJECT_MSG_TYPE_NOT_IMPLEMENTED);
- }
- }
-
- rc = mmdatastatelist[i].rout(ms, msg);
-
- msgb_free(msg);
-
- return rc;
-}
-
-/* state trasitions for mobile management events */
-static struct eventstate {
- uint32_t states;
- uint32_t substates;
- int type;
- int (*rout) (struct osmocom_ms *ms, struct msgb *msg);
-} eventstatelist[] = {
- /* 4.2.3 return to MM IDLE */
- {ALL_STATES - SBIT(GSM48_MM_ST_MM_IDLE), ALL_STATES,
- GSM48_MM_EVENT_NO_CELL_FOUND, gsm48_mm_no_cell_found},
-
- {ALL_STATES - SBIT(GSM48_MM_ST_MM_IDLE), ALL_STATES,
- GSM48_MM_EVENT_CELL_SELECTED, gsm48_mm_return_idle},
-
- /* 4.2.2.1 Normal service */
- {SBIT(GSM48_MM_ST_MM_IDLE), SBIT(GSM48_MM_SST_NORMAL_SERVICE),
- GSM48_MM_EVENT_USER_PLMN_SEL, gsm48_mm_plmn_search}, /* 4.2.1.2 */
-
- {SBIT(GSM48_MM_ST_MM_IDLE), SBIT(GSM48_MM_SST_NORMAL_SERVICE),
- GSM48_MM_EVENT_LOST_COVERAGE, gsm48_mm_plmn_search}, /* 4.2.1.2 */
-
- {SBIT(GSM48_MM_ST_MM_IDLE), SBIT(GSM48_MM_SST_NORMAL_SERVICE),
- GSM48_MM_EVENT_CELL_SELECTED, gsm48_mm_loc_upd_normal}, /* change */
-
- {SBIT(GSM48_MM_ST_MM_IDLE), SBIT(GSM48_MM_SST_NORMAL_SERVICE),
- GSM48_MM_EVENT_TIMEOUT_T3211, gsm48_mm_loc_upd},
-
- {SBIT(GSM48_MM_ST_MM_IDLE), SBIT(GSM48_MM_SST_NORMAL_SERVICE),
- GSM48_MM_EVENT_TIMEOUT_T3213, gsm48_mm_loc_upd},
-
- {SBIT(GSM48_MM_ST_MM_IDLE), SBIT(GSM48_MM_SST_NORMAL_SERVICE),
- GSM48_MM_EVENT_TIMEOUT_T3212, gsm48_mm_loc_upd_periodic},
-
- {SBIT(GSM48_MM_ST_MM_IDLE), SBIT(GSM48_MM_SST_NORMAL_SERVICE),
- GSM48_MM_EVENT_IMSI_DETACH, gsm48_mm_imsi_detach_start},
-
- /* 4.2.2.2 Attempt to update / Loc. upd. needed */
- {SBIT(GSM48_MM_ST_MM_IDLE), SBIT(GSM48_MM_SST_ATTEMPT_UPDATE) |
- SBIT(GSM48_MM_SST_LOC_UPD_NEEDED),
- GSM48_MM_EVENT_USER_PLMN_SEL, gsm48_mm_plmn_search}, /* 4.2.1.2 */
-
- {SBIT(GSM48_MM_ST_MM_IDLE), SBIT(GSM48_MM_SST_ATTEMPT_UPDATE) |
- SBIT(GSM48_MM_SST_LOC_UPD_NEEDED),
- GSM48_MM_EVENT_LOST_COVERAGE, gsm48_mm_plmn_search}, /* 4.2.1.2 */
-
- {SBIT(GSM48_MM_ST_MM_IDLE), SBIT(GSM48_MM_SST_ATTEMPT_UPDATE) |
- SBIT(GSM48_MM_SST_LOC_UPD_NEEDED),
- GSM48_MM_EVENT_CELL_SELECTED, gsm48_mm_loc_upd_normal}, /* change */
-
- {SBIT(GSM48_MM_ST_MM_IDLE), SBIT(GSM48_MM_SST_ATTEMPT_UPDATE),
- GSM48_MM_EVENT_TIMEOUT_T3211, gsm48_mm_loc_upd},
-
- {SBIT(GSM48_MM_ST_MM_IDLE), SBIT(GSM48_MM_SST_ATTEMPT_UPDATE),
- GSM48_MM_EVENT_TIMEOUT_T3213, gsm48_mm_loc_upd},
-
- {SBIT(GSM48_MM_ST_MM_IDLE), SBIT(GSM48_MM_SST_ATTEMPT_UPDATE),
- GSM48_MM_EVENT_TIMEOUT_T3212, gsm48_mm_loc_upd_periodic},
-
- /* 4.2.2.3 Limited service */
- {SBIT(GSM48_MM_ST_MM_IDLE), SBIT(GSM48_MM_SST_LIMITED_SERVICE),
- GSM48_MM_EVENT_USER_PLMN_SEL, gsm48_mm_plmn_search}, /* 4.2.1.2 */
-
- {SBIT(GSM48_MM_ST_MM_IDLE), SBIT(GSM48_MM_SST_LIMITED_SERVICE),
- GSM48_MM_EVENT_LOST_COVERAGE, gsm48_mm_plmn_search}, /* 4.2.1.2 */
-
- {SBIT(GSM48_MM_ST_MM_IDLE), SBIT(GSM48_MM_SST_LIMITED_SERVICE),
- GSM48_MM_EVENT_CELL_SELECTED, gsm48_mm_loc_upd_normal}, /* if allow. */
-
- {SBIT(GSM48_MM_ST_MM_IDLE), SBIT(GSM48_MM_SST_LIMITED_SERVICE),
- GSM48_MM_EVENT_TIMEOUT_T3212, gsm48_mm_loc_upd_delay_per}, /* 4.4.2 */
-
- /* 4.2.2.4 No IMSI */
- /* 4.2.2.5 PLMN search, normal service */
- {SBIT(GSM48_MM_ST_MM_IDLE), SBIT(GSM48_MM_SST_PLMN_SEARCH_NORMAL),
- GSM48_MM_EVENT_NO_CELL_FOUND, gsm48_mm_no_cell_found}, /* 4.2.1.1 */
-
- {SBIT(GSM48_MM_ST_MM_IDLE), SBIT(GSM48_MM_SST_PLMN_SEARCH_NORMAL),
- GSM48_MM_EVENT_CELL_SELECTED, gsm48_mm_cell_selected}, /* 4.2.1.1 */
-
- {SBIT(GSM48_MM_ST_MM_IDLE), SBIT(GSM48_MM_SST_PLMN_SEARCH_NORMAL),
- GSM48_MM_EVENT_TIMEOUT_T3212, gsm48_mm_loc_upd_delay_per}, /* 4.4.2 */
-
- {SBIT(GSM48_MM_ST_MM_IDLE), SBIT(GSM48_MM_SST_PLMN_SEARCH_NORMAL),
- GSM48_MM_EVENT_IMSI_DETACH, gsm48_mm_imsi_detach_start},
-
- /* 4.2.2.6 PLMN search */
- {SBIT(GSM48_MM_ST_MM_IDLE), SBIT(GSM48_MM_SST_PLMN_SEARCH),
- GSM48_MM_EVENT_NO_CELL_FOUND, gsm48_mm_no_cell_found}, /* 4.2.1.1 */
-
- {SBIT(GSM48_MM_ST_MM_IDLE), SBIT(GSM48_MM_SST_PLMN_SEARCH),
- GSM48_MM_EVENT_CELL_SELECTED, gsm48_mm_cell_selected}, /* 4.2.1.1 */
-
- {SBIT(GSM48_MM_ST_MM_IDLE), SBIT(GSM48_MM_SST_PLMN_SEARCH),
- GSM48_MM_EVENT_TIMEOUT_T3212, gsm48_mm_loc_upd_delay_per}, /* 4.4.2 */
-
- /* No cell available */
- {SBIT(GSM48_MM_ST_MM_IDLE), SBIT(GSM48_MM_SST_NO_CELL_AVAIL),
- GSM48_MM_EVENT_CELL_SELECTED, gsm48_mm_cell_selected}, /* 4.2.1.1 */
-
- {SBIT(GSM48_MM_ST_MM_IDLE), SBIT(GSM48_MM_SST_NO_CELL_AVAIL),
- GSM48_MM_EVENT_TIMEOUT_T3212, gsm48_mm_loc_upd_delay_per}, /* 4.4.2 */
-
- /* IMSI detach in other cases */
- {SBIT(GSM48_MM_ST_MM_IDLE), ALL_STATES, /* silently detach */
- GSM48_MM_EVENT_IMSI_DETACH, gsm48_mm_imsi_detach_end},
-
- {SBIT(GSM48_MM_ST_WAIT_OUT_MM_CONN) |
- SBIT(GSM48_MM_ST_MM_CONN_ACTIVE) |
- SBIT(GSM48_MM_ST_PROCESS_CM_SERV_P) |
- SBIT(GSM48_MM_ST_WAIT_REEST) |
- SBIT(GSM48_MM_ST_WAIT_ADD_OUT_MM_CON) |
- SBIT(GSM48_MM_ST_MM_CONN_ACTIVE_VGCS) |
- SBIT(GSM48_MM_ST_WAIT_NETWORK_CMD), ALL_STATES, /* we can release */
- GSM48_MM_EVENT_IMSI_DETACH, gsm48_mm_imsi_detach_release},
-
- {SBIT(GSM48_MM_ST_WAIT_RR_CONN_IMSI_D) |
- SBIT(GSM48_MM_ST_IMSI_DETACH_INIT) |
- SBIT(GSM48_MM_ST_IMSI_DETACH_PEND), ALL_STATES, /* ignore */
- GSM48_MM_EVENT_IMSI_DETACH, gsm48_mm_imsi_detach_ignore},
-
- {ALL_STATES, ALL_STATES,
- GSM48_MM_EVENT_IMSI_DETACH, gsm48_mm_imsi_detach_delay},
-
- {GSM48_MM_ST_IMSI_DETACH_INIT, ALL_STATES,
- GSM48_MM_EVENT_TIMEOUT_T3220, gsm48_mm_imsi_detach_end},
-
- /* location update in other cases */
- {SBIT(GSM48_MM_ST_MM_IDLE), ALL_STATES,
- GSM48_MM_EVENT_TIMEOUT_T3211, gsm48_mm_loc_upd_delay_retry},
-
- {SBIT(GSM48_MM_ST_MM_IDLE), ALL_STATES,
- GSM48_MM_EVENT_TIMEOUT_T3213, gsm48_mm_loc_upd_delay_retry},
-
- {ALL_STATES, ALL_STATES,
- GSM48_MM_EVENT_TIMEOUT_T3212, gsm48_mm_loc_upd_ignore},
-
- {ALL_STATES - SBIT(GSM48_MM_ST_MM_IDLE), ALL_STATES,
- GSM48_MM_EVENT_TIMEOUT_T3210, gsm48_mm_loc_upd_timeout},
-
- {ALL_STATES - SBIT(GSM48_MM_ST_MM_IDLE), ALL_STATES,
- GSM48_MM_EVENT_TIMEOUT_T3213, gsm48_mm_loc_upd_failed},
- /* 4.4.4.9 c) (but without retry) */
-
- /* SYSINFO event */
- {ALL_STATES, ALL_STATES,
- GSM48_MM_EVENT_SYSINFO, gsm48_mm_sysinfo},
-
- /* T3240 timed out */
- {SBIT(GSM48_MM_ST_WAIT_NETWORK_CMD) |
- SBIT(GSM48_MM_ST_LOC_UPD_REJ), ALL_STATES, /* 4.4.4.8 */
- GSM48_MM_EVENT_TIMEOUT_T3240, gsm48_mm_abort_rr},
-
- /* T3230 timed out */
- {SBIT(GSM48_MM_ST_MM_IDLE), SBIT(GSM48_MM_SST_NORMAL_SERVICE),
- GSM48_MM_EVENT_TIMEOUT_T3230, gsm48_mm_timeout_mm_con},
-
- /* SIM reports SRES */
- {ALL_STATES, ALL_STATES, /* 4.3.2.2 */
- GSM48_MM_EVENT_AUTH_RESPONSE, gsm48_mm_tx_auth_rsp},
-
-#if 0
- /* change in classmark is reported */
- {ALL_STATES, ALL_STATES,
- GSM48_MM_EVENT_CLASSMARK_CHG, gsm48_mm_classm_chg},
-#endif
-};
-
-#define EVENTSLLEN \
- (sizeof(eventstatelist) / sizeof(struct eventstate))
-
-static int gsm48_mm_ev(struct osmocom_ms *ms, int msg_type, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- int i, rc;
-
- if (mm->state == GSM48_MM_ST_MM_IDLE) {
- if (msg_type != GSM48_MM_EVENT_SYSINFO)
- LOGP(DMM, LOGL_INFO, "(ms %s) Received '%s' event in "
- "state MM IDLE, %s\n", ms->name,
- get_mmevent_name(msg_type),
- gsm48_mm_substate_names[mm->substate]);
- } else
- LOGP(DMM, LOGL_INFO, "(ms %s) Received '%s' event in state "
- "%s\n", ms->name, get_mmevent_name(msg_type),
- gsm48_mm_state_names[mm->state]);
-
- /* Find function for current state and message */
- for (i = 0; i < EVENTSLLEN; i++)
- if ((msg_type == eventstatelist[i].type)
- && ((1 << mm->state) & eventstatelist[i].states)
- && ((1 << mm->substate) & eventstatelist[i].substates))
- break;
- if (i == EVENTSLLEN) {
- LOGP(DMM, LOGL_NOTICE, "Message unhandled at this state.\n");
- return 0;
- }
-
- rc = eventstatelist[i].rout(ms, msg);
-
- return rc;
-}
-
-/*
- * MM Register (SIM insert and remove)
- */
-
-/* register new SIM card and trigger attach */
-static int gsm48_mmr_reg_req(struct osmocom_ms *ms)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct msgb *nmsg;
-
- /* schedule insertion of SIM */
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_SIM_INSERT);
- if (!nmsg)
- return -ENOMEM;
- gsm322_plmn_sendmsg(ms, nmsg);
-
- /* 4.2.1.2 SIM is inserted in state NO IMSI */
- if (mm->state == GSM48_MM_ST_MM_IDLE
- && mm->substate == GSM48_MM_SST_NO_IMSI)
- new_mm_state(mm, GSM48_MM_ST_MM_IDLE,
- gsm48_mm_set_plmn_search(ms));
-
- return 0;
-}
-
-/* trigger detach of sim card */
-static int gsm48_mmr_nreg_req(struct osmocom_ms *ms)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
- struct msgb *nmsg;
-
- nmsg = gsm48_mmevent_msgb_alloc(GSM48_MM_EVENT_IMSI_DETACH);
- if (!nmsg)
- return -ENOMEM;
- gsm48_mmevent_msg(mm->ms, nmsg);
-
- return 0;
-}
-
-static int gsm48_rcv_mmr(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmr *mmr = (struct gsm48_mmr *)msg->data;
- int msg_type = mmr->msg_type;
- int rc = 0;
-
- LOGP(DMM, LOGL_INFO, "(ms %s) Received '%s' event\n", ms->name,
- get_mmr_name(msg_type));
- switch(msg_type) {
- case GSM48_MMR_REG_REQ:
- rc = gsm48_mmr_reg_req(ms);
- break;
- case GSM48_MMR_NREG_REQ:
- rc = gsm48_mmr_nreg_req(ms);
- break;
- default:
- LOGP(DMM, LOGL_NOTICE, "Message unhandled.\n");
- }
-
- return rc;
-}
-
-
diff --git a/Src/osmoconbb/src/host/layer23/src/mobile/gsm48_rr.c b/Src/osmoconbb/src/host/layer23/src/mobile/gsm48_rr.c
deleted file mode 100644
index c1e386a..0000000
--- a/Src/osmoconbb/src/host/layer23/src/mobile/gsm48_rr.c
+++ /dev/null
@@ -1,5265 +0,0 @@
-/*
- * (C) 2010 by Andreas Eversberg <jolly@eversberg.eu>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-/* Very short description of some of the procedures:
- *
- * A radio ressource request causes sendig a channel request on RACH.
- * After receiving of an immediate assignment the link will be establised.
- * After the link is established, the dedicated mode is entered and confirmed.
- *
- * A Paging request also triggers the channel request as above...
- * After the link is established, the dedicated mode is entered and indicated.
- *
- * During dedicated mode, messages are transferred.
- *
- * When an assignment command or a handover command is received, the current
- * link is released. After release, the new channel is activated and the
- * link is established again. After link is establised, pending messages from
- * radio ressource are sent.
- *
- * When the assignment or handover fails, the old channel is activate and the
- * link is established again. Also pending messages are sent.
- *
- */
-
-/* Testing delayed (immediate) assigment / handover
- *
- * When enabled, the starting time will be set by given frames in the future.
- * If a starting time is given by the network, this time is ignored.
- */
-//#define TEST_STARTING_TIMER 140
-
-/* Testing if frequency modification works correctly "after time".
- *
- * When enabled, the starting time will be set in the future.
- * A wrong channel is defined "before time", so noise is received until
- * starting time elapses.
- * If a starting time is given by the network, this time is ignored.
- * Also channel definitions "before time" are ignored.
- *
- * NOTE: TEST_STARTING_TIMER MUST be defined also.
- */
-//#define TEST_FREQUENCY_MOD
-
-#include <stdint.h>
-#include <errno.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <arpa/inet.h>
-
-#include <osmocom/core/msgb.h>
-#include <osmocom/core/utils.h>
-#include <osmocom/gsm/rsl.h>
-#include <osmocom/gsm/gsm48.h>
-#include <osmocom/core/bitvec.h>
-
-#include <osmocom/bb/common/osmocom_data.h>
-#include <osmocom/bb/common/l1l2_interface.h>
-#include <osmocom/bb/common/l23_app.h>
-#include <osmocom/bb/common/logging.h>
-#include <osmocom/bb/common/networks.h>
-#include <osmocom/bb/common/l1ctl.h>
-#include <osmocom/bb/mobile/vty.h>
-
-#include <l1ctl_proto.h>
-
-static void start_rr_t_meas(struct gsm48_rrlayer *rr, int sec, int micro);
-static void stop_rr_t_starting(struct gsm48_rrlayer *rr);
-static void stop_rr_t3124(struct gsm48_rrlayer *rr);
-static int gsm48_rcv_rsl(struct osmocom_ms *ms, struct msgb *msg);
-static int gsm48_rr_dl_est(struct osmocom_ms *ms);
-static int gsm48_rr_tx_meas_rep(struct osmocom_ms *ms);
-static int gsm48_rr_set_mode(struct osmocom_ms *ms, uint8_t chan_nr,
- uint8_t mode);
-static int gsm48_rr_rel_cnf(struct osmocom_ms *ms, struct msgb *msg);
-
-/*
- * support
- */
-
-#define MIN(a, b) ((a < b) ? a : b)
-
-int gsm48_encode_lai(struct gsm48_loc_area_id *lai, uint16_t mcc,
- uint16_t mnc, uint16_t lac)
-{
- lai->digits[0] = (mcc >> 8) | (mcc & 0xf0);
- lai->digits[1] = (mcc & 0x0f) | (mnc << 4);
- lai->digits[2] = (mnc >> 8) | (mnc & 0xf0);
- lai->lac = htons(lac);
-
- return 0;
-}
-
-/* decode "Power Command" (10.5.2.28) and (10.5.2.28a) */
-static int gsm48_decode_power_cmd_acc(struct gsm48_power_cmd *pc,
- uint8_t *power_level, uint8_t *atc)
-{
- *power_level = pc->power_level;
- if (atc) /* only in case of 10.5.2.28a */
- *atc = pc->atc;
-
- return 0;
-}
-
-/* 10.5.2.38 decode Starting time IE */
-static int gsm48_decode_start_time(struct gsm48_rr_cd *cd,
- struct gsm48_start_time *st)
-{
- cd->start = 1;
- cd->start_tm.t1 = st->t1;
- cd->start_tm.t2 = st->t2;
- cd->start_tm.t3 = (st->t3_high << 3) | st->t3_low;
- cd->start_tm.fn = gsm_gsmtime2fn(&cd->start_tm);
-
- return 0;
-}
-
-/* decode "BA Range" (10.5.2.1a) */
-static int gsm48_decode_ba_range(const uint8_t *ba, uint8_t ba_len,
- uint32_t *range, uint8_t *ranges, int max_ranges)
-{
- /* ba = pointer to IE without IE type and length octets
- * ba_len = number of octets
- * range = pointer to store decoded range
- * ranges = number of ranges decoded
- * max_ranges = maximum number of decoded ranges that can be stored
- */
- uint16_t lower, higher;
- int i, n, required_octets;
-
- /* find out how much ba ranges will be decoded */
- n = *ba++;
- ba_len --;
- required_octets = 5 * (n >> 1) + 3 * (n & 1);
- if (required_octets > ba_len) {
- LOGP(DRR, LOGL_NOTICE, "BA range IE too short: %d ranges "
- "require %d octets, but only %d octets remain.\n",
- n, required_octets, ba_len);
- *ranges = 0;
- return -EINVAL;
- }
- if (max_ranges > n)
- LOGP(DRR, LOGL_NOTICE, "BA range %d exceed the maximum number "
- "of ranges supported by this mobile (%d).\n",
- n, max_ranges);
- n = max_ranges;
-
- /* decode ranges */
- for (i = 0; i < n; i++) {
- if (!(i & 1)) {
- /* decode even range number */
- lower = *ba++ << 2;
- lower |= (*ba >> 6);
- higher = (*ba++ & 0x3f) << 4;
- higher |= *ba >> 4;
- } else {
- lower = (*ba++ & 0x0f) << 6;
- lower |= *ba >> 2;
- higher = (*ba++ & 0x03) << 8;
- higher |= *ba++;
- /* decode odd range number */
- }
- *range++ = (higher << 16) | lower;
- }
- *ranges = n;
-
- return 0;
-}
-
-/* decode "Cell Description" (10.5.2.2) */
-static int gsm48_decode_cell_desc(struct gsm48_cell_desc *cd, uint16_t *arfcn,
- uint8_t *ncc, uint8_t *bcc)
-{
- *arfcn = (cd->arfcn_hi << 8) + cd->arfcn_lo;
- *ncc = cd->ncc;
- *bcc = cd->bcc;
-
- return 0;
-}
-
-/* decode "Synchronization Indication" (10.5.2.39) */
-static int gsm48_decode_sync_ind(struct gsm48_rrlayer *rr,
- struct gsm48_sync_ind *si)
-{
- rr->hando_sync_ind = si->si;
- rr->hando_rot = si->rot;
- rr->hando_nci = si->nci;
-
- return 0;
-}
-
-/* 3.1.4.3 set sequence number and increment */
-static int gsm48_apply_v_sd(struct gsm48_rrlayer *rr, struct msgb *msg)
-{
- struct gsm48_hdr *gh = msgb_l3(msg);
- uint8_t pdisc = gh->proto_discr & 0x0f;
- uint8_t v_sd;
-
- switch (pdisc) {
- case GSM48_PDISC_MM:
- case GSM48_PDISC_CC:
- case GSM48_PDISC_NC_SS:
- /* all thre pdiscs share the same V(SD) */
- pdisc = GSM48_PDISC_MM;
- // fall through
- case GSM48_PDISC_GROUP_CC:
- case GSM48_PDISC_BCAST_CC:
- case GSM48_PDISC_PDSS1:
- case GSM48_PDISC_PDSS2:
- /* extract v_sd(pdisc) */
- v_sd = (rr->v_sd >> pdisc) & 1;
-
- /* replace bit 7 vy v_sd */
- gh->msg_type &= 0xbf;
- gh->msg_type |= (v_sd << 6);
-
- /* increment V(SD) */
- rr->v_sd ^= (1 << pdisc);
- LOGP(DRR, LOGL_INFO, "Using and incrementing V(SD) = %d "
- "(pdisc %x)\n", v_sd, pdisc);
- break;
- case GSM48_PDISC_RR:
- case GSM48_PDISC_SMS:
- /* no V(VSD) is required */
- break;
- default:
- LOGP(DRR, LOGL_ERROR, "Error, V(SD) of pdisc %x not handled\n",
- pdisc);
- return -ENOTSUP;
- }
-
- return 0;
-}
-
-/* set channel mode if supported, or return error cause */
-static uint8_t gsm48_rr_check_mode(struct osmocom_ms *ms, uint8_t chan_nr,
- uint8_t mode)
-{
- struct gsm_settings *set = &ms->settings;
- uint8_t ch_type, ch_subch, ch_ts;
-
- /* only complain if we use TCH/F or TCH/H */
- rsl_dec_chan_nr(chan_nr, &ch_type, &ch_subch, &ch_ts);
- if (ch_type != RSL_CHAN_Bm_ACCHs
- && ch_type != RSL_CHAN_Lm_ACCHs)
- return 0;
-
- switch (mode) {
- case GSM48_CMODE_SIGN:
- LOGP(DRR, LOGL_INFO, "Mode: signalling\n");
- break;
- case GSM48_CMODE_SPEECH_V1:
- if (ch_type == RSL_CHAN_Bm_ACCHs) {
- if (!set->full_v1) {
- LOGP(DRR, LOGL_NOTICE, "Not supporting "
- "full-rate speech V1\n");
- return GSM48_RR_CAUSE_CHAN_MODE_UNACCT;
- }
- LOGP(DRR, LOGL_INFO, "Mode: full-rate speech V1\n");
- } else {
- if (!set->half_v1) {
- LOGP(DRR, LOGL_NOTICE, "Not supporting "
- "half-rate speech V1\n");
- return GSM48_RR_CAUSE_CHAN_MODE_UNACCT;
- }
- LOGP(DRR, LOGL_INFO, "Mode: half-rate speech V1\n");
- }
- break;
- case GSM48_CMODE_SPEECH_EFR:
- if (ch_type == RSL_CHAN_Bm_ACCHs) {
- if (!set->full_v2) {
- LOGP(DRR, LOGL_NOTICE, "Not supporting "
- "full-rate speech V2\n");
- return GSM48_RR_CAUSE_CHAN_MODE_UNACCT;
- }
- LOGP(DRR, LOGL_INFO, "Mode: full-rate speech V2\n");
- } else {
- LOGP(DRR, LOGL_NOTICE, "Not supporting "
- "half-rate speech V2\n");
- return GSM48_RR_CAUSE_CHAN_MODE_UNACCT;
- }
- break;
- case GSM48_CMODE_SPEECH_AMR:
- if (ch_type == RSL_CHAN_Bm_ACCHs) {
- if (!set->full_v3) {
- LOGP(DRR, LOGL_NOTICE, "Not supporting "
- "full-rate speech V3\n");
- return GSM48_RR_CAUSE_CHAN_MODE_UNACCT;
- }
- LOGP(DRR, LOGL_INFO, "Mode: full-rate speech V3\n");
- } else {
- if (!set->half_v3) {
- LOGP(DRR, LOGL_NOTICE, "Not supporting "
- "half-rate speech V3\n");
- return GSM48_RR_CAUSE_CHAN_MODE_UNACCT;
- }
- LOGP(DRR, LOGL_INFO, "Mode: half-rate speech V3\n");
- }
- break;
- default:
- LOGP(DRR, LOGL_ERROR, "Mode 0x%02x not supported!\n", mode);
- return GSM48_RR_CAUSE_CHAN_MODE_UNACCT;
- }
-
- return 0;
-}
-
-/* apply new "alter_delay" in dedicated mode */
-int gsm48_rr_alter_delay(struct osmocom_ms *ms)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- struct gsm_settings *set = &rr->ms->settings;
-
- if (rr->state != GSM48_RR_ST_DEDICATED)
- return -EINVAL;
- l1ctl_tx_param_req(ms, rr->cd_now.ind_ta - set->alter_delay,
- (set->alter_tx_power) ? set->alter_tx_power_value
- : rr->cd_now.ind_tx_power);
-
- return 0;
-}
-
-/*
- * state transition
- */
-
-const char *gsm48_rr_state_names[] = {
- "idle",
- "connection pending",
- "dedicated",
- "release pending",
-};
-
-static void new_rr_state(struct gsm48_rrlayer *rr, int state)
-{
- if (state < 0 || state >=
- (sizeof(gsm48_rr_state_names) / sizeof(char *)))
- return;
-
- /* must check against equal state */
- if (rr->state == state) {
- LOGP(DRR, LOGL_INFO, "equal state ? %s\n",
- gsm48_rr_state_names[rr->state]);
- return;
- }
-
- LOGP(DRR, LOGL_INFO, "new state %s -> %s\n",
- gsm48_rr_state_names[rr->state], gsm48_rr_state_names[state]);
-
- /* abort handover, in case of release of dedicated mode */
- if (rr->state == GSM48_RR_ST_DEDICATED) {
- /* disable handover / assign state */
- rr->modify_state = GSM48_RR_MOD_NONE;
- /* stop start_time_timer */
- stop_rr_t_starting(rr);
- /* stop handover timer */
- stop_rr_t3124(rr);
- }
-
- rr->state = state;
-
- if (state == GSM48_RR_ST_IDLE) {
- struct msgb *msg, *nmsg;
- struct gsm322_msg *em;
-
- /* release dedicated mode, if any */
- l1ctl_tx_dm_rel_req(rr->ms);
- rr->ms->meas.rl_fail = 0;
- rr->dm_est = 0;
- l1ctl_tx_reset_req(rr->ms, L1CTL_RES_T_FULL);
- /* free establish message, if any */
- rr->rr_est_req = 0;
- if (rr->rr_est_msg) {
- msgb_free(rr->rr_est_msg);
- rr->rr_est_msg = NULL;
- }
- /* free all pending messages */
- while((msg = msgb_dequeue(&rr->downqueue)))
- msgb_free(msg);
- /* clear all descriptions of last channel */
- memset(&rr->cd_now, 0, sizeof(rr->cd_now));
- /* reset ciphering */
- rr->cipher_on = 0;
- /* reset audio mode */
- /* tell cell selection process to return to idle mode
- * NOTE: this must be sent unbuffered, because it will
- * leave camping state, so it locks against subsequent
- * establishment of dedicated channel, before the
- * cell selection process returned to camping state
- * again. (after cell reselection)
- */
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_RET_IDLE);
- if (!nmsg)
- return;
- /* return to same cell after LOC.UPD. */
- if (rr->est_cause == RR_EST_CAUSE_LOC_UPD) {
- em = (struct gsm322_msg *) nmsg->data;
- em->same_cell = 1;
- }
- gsm322_c_event(rr->ms, nmsg);
- msgb_free(nmsg);
- /* reset any BA range */
- rr->ba_ranges = 0;
- }
-}
-
-/*
- * messages
- */
-
-/* names of RR-SAP */
-static const struct value_string gsm48_rr_msg_names[] = {
- { GSM48_RR_EST_REQ, "RR_EST_REQ" },
- { GSM48_RR_EST_IND, "RR_EST_IND" },
- { GSM48_RR_EST_CNF, "RR_EST_CNF" },
- { GSM48_RR_REL_IND, "RR_REL_IND" },
- { GSM48_RR_SYNC_IND, "RR_SYNC_IND" },
- { GSM48_RR_DATA_REQ, "RR_DATA_REQ" },
- { GSM48_RR_DATA_IND, "RR_DATA_IND" },
- { GSM48_RR_UNIT_DATA_IND, "RR_UNIT_DATA_IND" },
- { GSM48_RR_ABORT_REQ, "RR_ABORT_REQ" },
- { GSM48_RR_ABORT_IND, "RR_ABORT_IND" },
- { GSM48_RR_ACT_REQ, "RR_ACT_REQ" },
- { 0, NULL }
-};
-
-const char *get_rr_name(int value)
-{
- return get_value_string(gsm48_rr_msg_names, value);
-}
-
-/* allocate GSM 04.08 layer 3 message */
-struct msgb *gsm48_l3_msgb_alloc(void)
-{
- struct msgb *msg;
-
- msg = msgb_alloc_headroom(L3_ALLOC_SIZE+L3_ALLOC_HEADROOM,
- L3_ALLOC_HEADROOM, "GSM 04.08 L3");
- if (!msg)
- return NULL;
- msg->l3h = msg->data;
-
- return msg;
-}
-
-/* allocate GSM 04.06 layer 2 RSL message */
-struct msgb *gsm48_rsl_msgb_alloc(void)
-{
- struct msgb *msg;
-
- msg = msgb_alloc_headroom(RSL_ALLOC_SIZE+RSL_ALLOC_HEADROOM,
- RSL_ALLOC_HEADROOM, "GSM 04.06 RSL");
- if (!msg)
- return NULL;
- msg->l2h = msg->data;
-
- return msg;
-}
-
-/* allocate GSM 04.08 message (RR-SAP) */
-struct msgb *gsm48_rr_msgb_alloc(int msg_type)
-{
- struct msgb *msg;
- struct gsm48_rr_hdr *rrh;
-
- msg = msgb_alloc_headroom(RR_ALLOC_SIZE+RR_ALLOC_HEADROOM,
- RR_ALLOC_HEADROOM, "GSM 04.08 RR");
- if (!msg)
- return NULL;
-
- rrh = (struct gsm48_rr_hdr *) msgb_put(msg, sizeof(*rrh));
- rrh->msg_type = msg_type;
-
- return msg;
-}
-
-/* queue message (RR-SAP) */
-int gsm48_rr_upmsg(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_mmlayer *mm = &ms->mmlayer;
-
- msgb_enqueue(&mm->rr_upqueue, msg);
-
- return 0;
-}
-
-/* push rsl header and send (RSL-SAP) */
-static int gsm48_send_rsl(struct osmocom_ms *ms, uint8_t msg_type,
- struct msgb *msg)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
-
- if (!msg->l3h) {
- LOGP(DRR, LOGL_ERROR, "FIX l3h\n");
- return -EINVAL;
- }
- rsl_rll_push_l3(msg, msg_type, rr->cd_now.chan_nr,
- rr->cd_now.link_id, 1);
-
- return lapdm_rslms_recvmsg(msg, &ms->lapdm_channel);
-}
-
-/* push rsl header + release mode and send (RSL-SAP) */
-static int gsm48_send_rsl_rel(struct osmocom_ms *ms, uint8_t msg_type,
- struct msgb *msg)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
-
- rsl_rll_push_hdr(msg, msg_type, rr->cd_now.chan_nr,
- rr->cd_now.link_id, 1);
-
- return lapdm_rslms_recvmsg(msg, &ms->lapdm_channel);
-}
-
-/* enqueue messages (RSL-SAP) */
-static int rcv_rsl(struct msgb *msg, struct lapdm_entity *le, void *l3ctx)
-{
- struct osmocom_ms *ms = l3ctx;
- struct gsm48_rrlayer *rr = &ms->rrlayer;
-
- msgb_enqueue(&rr->rsl_upqueue, msg);
-
- return 0;
-}
-
-/* dequeue messages (RSL-SAP) */
-int gsm48_rsl_dequeue(struct osmocom_ms *ms)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- struct msgb *msg;
- int work = 0;
-
- while ((msg = msgb_dequeue(&rr->rsl_upqueue))) {
- /* msg is freed there */
- gsm48_rcv_rsl(ms, msg);
- work = 1; /* work done */
- }
-
- return work;
-}
-
-int gsm48_rr_start_monitor(struct osmocom_ms *ms)
-{
- ms->rrlayer.monitor = 1;
-
- return 0;
-}
-
-int gsm48_rr_stop_monitor(struct osmocom_ms *ms)
-{
- ms->rrlayer.monitor = 0;
-
- return 0;
-}
-
-/*
- * timers handling
- */
-
-/* special timer to monitor measurements */
-static void timeout_rr_meas(void *arg)
-{
- struct gsm48_rrlayer *rr = arg;
- struct gsm322_cellsel *cs = &rr->ms->cellsel;
- struct rx_meas_stat *meas = &rr->ms->meas;
- struct gsm_settings *set = &rr->ms->settings;
- int rxlev, berr, snr;
- uint8_t ch_type, ch_subch, ch_ts;
- char text[256];
-
- /* don't monitor if no cell is selcted or if we scan neighbour cells */
- if (!cs->selected || cs->neighbour) {
- sprintf(text, "MON: not camping on serving cell");
- goto restart;
- } else if (!meas->frames) {
- sprintf(text, "MON: no cell info");
- } else {
- rxlev = (meas->rxlev + meas->frames / 2) / meas->frames;
- berr = (meas->berr + meas->frames / 2) / meas->frames;
- snr = (meas->snr + meas->frames / 2) / meas->frames;
- sprintf(text, "MON: f=%d lev=%s snr=%2d ber=%3d "
- "LAI=%s %s %04x ID=%04x", cs->sel_arfcn,
- gsm_print_rxlev(rxlev), berr, snr,
- gsm_print_mcc(cs->sel_mcc),
- gsm_print_mnc(cs->sel_mnc), cs->sel_lac, cs->sel_id);
- if (rr->state == GSM48_RR_ST_DEDICATED) {
- rsl_dec_chan_nr(rr->cd_now.chan_nr, &ch_type,
- &ch_subch, &ch_ts);
- sprintf(text + strlen(text), " TA=%d pwr=%d TS=%d",
- rr->cd_now.ind_ta - set->alter_delay,
- (set->alter_tx_power) ? set->alter_tx_power_value
- : rr->cd_now.ind_tx_power, ch_ts);
- if (ch_type == RSL_CHAN_SDCCH8_ACCH
- || ch_type == RSL_CHAN_SDCCH4_ACCH)
- sprintf(text + strlen(text), "/%d", ch_subch);
- } else
- gsm322_meas(rr->ms, rxlev);
- }
- LOGP(DRR, LOGL_INFO, "%s\n", text);
- if (rr->monitor)
- vty_notify(rr->ms, "%s\n", text);
-
- if (rr->dm_est)
- gsm48_rr_tx_meas_rep(rr->ms);
-
-restart:
- meas->frames = meas->snr = meas->berr = meas->rxlev = 0;
- start_rr_t_meas(rr, 1, 0);
-}
-
-/* special timer to assign / handover when starting time is reached */
-static void timeout_rr_t_starting(void *arg)
-{
- struct gsm48_rrlayer *rr = arg;
- struct msgb *nmsg;
-
- LOGP(DRR, LOGL_INFO, "starting timer has fired\n");
-
- /* open channel when starting timer of IMM.ASS has fired */
- if (rr->modify_state == GSM48_RR_MOD_IMM_ASS) {
- rr->modify_state = GSM48_RR_MOD_NONE;
- gsm48_rr_dl_est(rr->ms);
- return;
- }
-
- /* start suspension of current link */
- LOGP(DRR, LOGL_INFO, "request suspension of data link\n");
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return;
- gsm48_send_rsl(rr->ms, RSL_MT_SUSP_REQ, nmsg);
-}
-
-/* special timer to ensure that UA is sent before disconnecting channel */
-static void timeout_rr_t_rel_wait(void *arg)
-{
- struct gsm48_rrlayer *rr = arg;
-
- LOGP(DRR, LOGL_INFO, "L2 release timer has fired, done waiting\n");
-
- /* return to idle now */
- new_rr_state(rr, GSM48_RR_ST_IDLE);
-}
-
-/* 3.4.13.1.1: Timeout of T3110 */
-static void timeout_rr_t3110(void *arg)
-{
- struct gsm48_rrlayer *rr = arg;
- struct osmocom_ms *ms = rr->ms;
- struct msgb *nmsg;
- uint8_t *mode;
-
- LOGP(DRR, LOGL_INFO, "timer T3110 has fired, release locally\n");
-
- new_rr_state(rr, GSM48_RR_ST_REL_PEND);
-
- /* disconnect the main signalling link */
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return;
- mode = msgb_put(nmsg, 2);
- mode[0] = RSL_IE_RELEASE_MODE;
- mode[1] = 1; /* local release */
- gsm48_send_rsl_rel(ms, RSL_MT_REL_REQ, nmsg);
-
- return;
-}
-
-static void timeout_rr_t3122(void *arg)
-{
- LOGP(DRR, LOGL_INFO, "timer T3122 has fired\n");
-}
-
-static void timeout_rr_t3124(void *arg)
-{
- LOGP(DRR, LOGL_INFO, "timer T3124 has fired\n");
-}
-
-static void timeout_rr_t3126(void *arg)
-{
- struct gsm48_rrlayer *rr = arg;
- struct osmocom_ms *ms = rr->ms;
-
- LOGP(DRR, LOGL_INFO, "timer T3126 has fired\n");
- if (rr->rr_est_req) {
- struct msgb *msg = gsm48_rr_msgb_alloc(GSM48_RR_REL_IND);
- struct gsm48_rr_hdr *rrh;
-
- LOGP(DSUM, LOGL_INFO, "Requesting channel failed\n");
- if (!msg)
- return;
- rrh = (struct gsm48_rr_hdr *)msg->data;
- rrh->cause = RR_REL_CAUSE_RA_FAILURE;
- gsm48_rr_upmsg(ms, msg);
- }
-
- new_rr_state(rr, GSM48_RR_ST_IDLE);
-}
-
-static void start_rr_t_meas(struct gsm48_rrlayer *rr, int sec, int micro)
-{
- rr->t_meas.cb = timeout_rr_meas;
- rr->t_meas.data = rr;
- osmo_timer_schedule(&rr->t_meas, sec, micro);
-}
-
-static void start_rr_t_rel_wait(struct gsm48_rrlayer *rr, int sec, int micro)
-{
- LOGP(DRR, LOGL_INFO, "starting T_rel_wait with %d.%03d seconds\n", sec,
- micro / 1000);
- rr->t_rel_wait.cb = timeout_rr_t_rel_wait;
- rr->t_rel_wait.data = rr;
- osmo_timer_schedule(&rr->t_rel_wait, sec, micro);
-}
-
-static void start_rr_t_starting(struct gsm48_rrlayer *rr, int sec, int micro)
-{
- LOGP(DRR, LOGL_INFO, "starting T_starting with %d.%03d seconds\n", sec,
- micro / 1000);
- rr->t_starting.cb = timeout_rr_t_starting;
- rr->t_starting.data = rr;
- osmo_timer_schedule(&rr->t_starting, sec, micro);
-}
-
-static void start_rr_t3110(struct gsm48_rrlayer *rr, int sec, int micro)
-{
- LOGP(DRR, LOGL_INFO, "starting T3110 with %d.%03d seconds\n", sec,
- micro / 1000);
- rr->t3110.cb = timeout_rr_t3110;
- rr->t3110.data = rr;
- osmo_timer_schedule(&rr->t3110, sec, micro);
-}
-
-static void start_rr_t3122(struct gsm48_rrlayer *rr, int sec, int micro)
-{
- LOGP(DRR, LOGL_INFO, "starting T3122 with %d.%03d seconds\n", sec,
- micro / 1000);
- rr->t3122.cb = timeout_rr_t3122;
- rr->t3122.data = rr;
- osmo_timer_schedule(&rr->t3122, sec, micro);
-}
-
-static void start_rr_t3124(struct gsm48_rrlayer *rr, int sec, int micro)
-{
- LOGP(DRR, LOGL_INFO, "starting T3124 with %d.%03d seconds\n", sec,
- micro / 1000);
- rr->t3124.cb = timeout_rr_t3124;
- rr->t3124.data = rr;
- osmo_timer_schedule(&rr->t3124, sec, micro);
-}
-
-static void start_rr_t3126(struct gsm48_rrlayer *rr, int sec, int micro)
-{
- LOGP(DRR, LOGL_INFO, "starting T3126 with %d.%03d seconds\n", sec,
- micro / 1000);
- rr->t3126.cb = timeout_rr_t3126;
- rr->t3126.data = rr;
- osmo_timer_schedule(&rr->t3126, sec, micro);
-}
-
-static void stop_rr_t_meas(struct gsm48_rrlayer *rr)
-{
- if (osmo_timer_pending(&rr->t_meas)) {
- LOGP(DRR, LOGL_INFO, "stopping pending timer T_meas\n");
- osmo_timer_del(&rr->t_meas);
- }
-}
-
-static void stop_rr_t_starting(struct gsm48_rrlayer *rr)
-{
- if (osmo_timer_pending(&rr->t_starting)) {
- LOGP(DRR, LOGL_INFO, "stopping pending timer T_starting\n");
- osmo_timer_del(&rr->t_starting);
- }
-}
-
-static void stop_rr_t_rel_wait(struct gsm48_rrlayer *rr)
-{
- if (osmo_timer_pending(&rr->t_rel_wait)) {
- LOGP(DRR, LOGL_INFO, "stopping pending timer T_rel_wait\n");
- osmo_timer_del(&rr->t_rel_wait);
- }
-}
-
-static void stop_rr_t3110(struct gsm48_rrlayer *rr)
-{
- if (osmo_timer_pending(&rr->t3110)) {
- LOGP(DRR, LOGL_INFO, "stopping pending timer T3110\n");
- osmo_timer_del(&rr->t3110);
- }
-}
-
-static void stop_rr_t3122(struct gsm48_rrlayer *rr)
-{
- if (osmo_timer_pending(&rr->t3122)) {
- LOGP(DRR, LOGL_INFO, "stopping pending timer T3122\n");
- osmo_timer_del(&rr->t3122);
- }
-}
-
-static void stop_rr_t3124(struct gsm48_rrlayer *rr)
-{
- if (osmo_timer_pending(&rr->t3124)) {
- LOGP(DRR, LOGL_INFO, "stopping pending timer T3124\n");
- osmo_timer_del(&rr->t3124);
- }
-}
-
-static void stop_rr_t3126(struct gsm48_rrlayer *rr)
-{
- if (osmo_timer_pending(&rr->t3126)) {
- LOGP(DRR, LOGL_INFO, "stopping pending timer T3126\n");
- osmo_timer_del(&rr->t3126);
- }
-}
-
-/*
- * status
- */
-
-/* send rr status request */
-static int gsm48_rr_tx_rr_status(struct osmocom_ms *ms, uint8_t cause)
-{
- struct msgb *nmsg;
- struct gsm48_hdr *gh;
- struct gsm48_rr_status *st;
-
- LOGP(DRR, LOGL_INFO, "RR STATUS (cause #%d)\n", cause);
-
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- gh = (struct gsm48_hdr *) msgb_put(nmsg, sizeof(*gh));
- st = (struct gsm48_rr_status *) msgb_put(nmsg, sizeof(*st));
-
- gh->proto_discr = GSM48_PDISC_RR;
- gh->msg_type = GSM48_MT_RR_CIPH_M_COMPL;
-
- /* rr cause */
- st->rr_cause = cause;
-
- return gsm48_send_rsl(ms, RSL_MT_DATA_REQ, nmsg);
-}
-
-/*
- * ciphering
- */
-
-/* send chiperhing mode complete */
-static int gsm48_rr_tx_cip_mode_cpl(struct osmocom_ms *ms, uint8_t cr)
-{
- struct gsm_settings *set = &ms->settings;
- struct msgb *nmsg;
- struct gsm48_hdr *gh;
- struct gsm48_rr_hdr *nrrh;
- uint8_t buf[11], *tlv;
-
- LOGP(DRR, LOGL_INFO, "CIPHERING MODE COMPLETE (cr %d)\n", cr);
-
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- gh = (struct gsm48_hdr *) msgb_put(nmsg, sizeof(*gh));
-
- gh->proto_discr = GSM48_PDISC_RR;
- gh->msg_type = GSM48_MT_RR_CIPH_M_COMPL;
-
- /* MI */
- if (cr) {
- gsm48_generate_mid_from_imsi(buf, set->imeisv);
- /* alter MI type */
- buf[2] = (buf[2] & ~GSM_MI_TYPE_MASK) | GSM_MI_TYPE_IMEISV;
- tlv = msgb_put(nmsg, 2 + buf[1]);
- memcpy(tlv, buf, 2 + buf[1]);
- }
-
- gsm48_send_rsl(ms, RSL_MT_DATA_REQ, nmsg);
-
- /* send RR_SYNC_IND(ciphering) */
- nmsg = gsm48_rr_msgb_alloc(GSM48_RR_SYNC_IND);
- if (!nmsg)
- return -ENOMEM;
- nrrh = (struct gsm48_rr_hdr *)nmsg->data;
- nrrh->cause = RR_SYNC_CAUSE_CIPHERING;
- return gsm48_rr_upmsg(ms, nmsg);
-}
-
-/* receive ciphering mode command */
-static int gsm48_rr_rx_cip_mode_cmd(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm_settings *set = &ms->settings;
- struct gsm48_hdr *gh = msgb_l3(msg);
- struct gsm48_cip_mode_cmd *cm = (struct gsm48_cip_mode_cmd *)gh->data;
- int payload_len = msgb_l3len(msg) - sizeof(*gh) - sizeof(*cm);
- uint8_t sc, alg_id, cr;
-
- if (payload_len < 0) {
- LOGP(DRR, LOGL_NOTICE, "Short read of CIPHERING MODE COMMAND "
- "message.\n");
- return gsm48_rr_tx_rr_status(ms,
- GSM48_RR_CAUSE_PROT_ERROR_UNSPC);
- }
-
- /* cipher mode setting */
- sc = cm->sc;
- alg_id = cm->alg_id;
- /* cipher mode response */
- cr = cm->cr;
-
- if (!sc)
- LOGP(DRR, LOGL_INFO, "CIPHERING MODE COMMAND (sc=%u, cr=%u)\n",
- sc, cr);
- else
- LOGP(DRR, LOGL_INFO, "CIPHERING MODE COMMAND (sc=%u, "
- "algo=A5/%d cr=%u)\n", sc, alg_id + 1, cr);
-
- /* 3.4.7.2 */
- if (rr->cipher_on && sc) {
- LOGP(DRR, LOGL_NOTICE, "chiphering already applied\n");
- return gsm48_rr_tx_rr_status(ms,
- GSM48_RR_CAUSE_PROT_ERROR_UNSPC);
- }
-
- /* check if we actually support this cipher */
- if (sc && ((alg_id == GSM_CIPHER_A5_1 && !set->a5_1)
- || (alg_id == GSM_CIPHER_A5_2 && !set->a5_2)
- || (alg_id == GSM_CIPHER_A5_3 && !set->a5_3)
- || (alg_id == GSM_CIPHER_A5_4 && !set->a5_4)
- || (alg_id == GSM_CIPHER_A5_5 && !set->a5_5)
- || (alg_id == GSM_CIPHER_A5_6 && !set->a5_6)
- || (alg_id == GSM_CIPHER_A5_7 && !set->a5_7))) {
- LOGP(DRR, LOGL_NOTICE, "algo not supported\n");
- return gsm48_rr_tx_rr_status(ms,
- GSM48_RR_CAUSE_PROT_ERROR_UNSPC);
- }
-
- /* check if we have no key */
- if (sc && subscr->key_seq == 7) {
- LOGP(DRR, LOGL_NOTICE, "no key available\n");
- return gsm48_rr_tx_rr_status(ms,
- GSM48_RR_CAUSE_PROT_ERROR_UNSPC);
- }
-
- /* change to ciphering */
- rr->cipher_on = sc;
- rr->cipher_type = alg_id;
- if (rr->cipher_on)
- l1ctl_tx_crypto_req(ms, rr->cipher_type + 1, subscr->key, 8);
- else
- l1ctl_tx_crypto_req(ms, 0, NULL, 0);
-
- /* response (using the new mode) */
- return gsm48_rr_tx_cip_mode_cpl(ms, cr);
-}
-
-/*
- * classmark
- */
-
-/* Encode "Classmark 3" (10.5.1.7) */
-static int gsm48_rr_enc_cm3(struct osmocom_ms *ms, uint8_t *buf, uint8_t *len)
-{
- struct gsm_support *sup = &ms->support;
- struct gsm_settings *set = &ms->settings;
- struct bitvec bv;
-
- memset(&bv, 0, sizeof(bv));
- bv.data = buf;
- bv.data_len = 12;
-
- /* spare bit */
- bitvec_set_bit(&bv, 0);
- /* band 3 supported */
- if (set->dcs)
- bitvec_set_bit(&bv, ONE);
- else
- bitvec_set_bit(&bv, ZERO);
- /* band 2 supported */
- if (set->e_gsm || set->r_gsm)
- bitvec_set_bit(&bv, ONE);
- else
- bitvec_set_bit(&bv, ZERO);
- /* band 1 supported */
- if (set->p_gsm && !(set->e_gsm || set->r_gsm))
- bitvec_set_bit(&bv, ONE);
- else
- bitvec_set_bit(&bv, ZERO);
- /* a5 bits */
- if (set->a5_7)
- bitvec_set_bit(&bv, ONE);
- else
- bitvec_set_bit(&bv, ZERO);
- if (set->a5_6)
- bitvec_set_bit(&bv, ONE);
- else
- bitvec_set_bit(&bv, ZERO);
- if (set->a5_5)
- bitvec_set_bit(&bv, ONE);
- else
- bitvec_set_bit(&bv, ZERO);
- if (set->a5_4)
- bitvec_set_bit(&bv, ONE);
- else
- bitvec_set_bit(&bv, ZERO);
- /* radio capability */
- if (!set->dcs && !set->p_gsm && !(set->e_gsm || set->r_gsm)) {
- /* Fig. 10.5.7 / TS 24.0008: none of dcs, p, e, r */
- } else
- if (set->dcs && !set->p_gsm && !(set->e_gsm || set->r_gsm)) {
- /* dcs only */
- bitvec_set_uint(&bv, 0, 4);
- bitvec_set_uint(&bv, set->class_dcs, 4);
- } else
- if (set->dcs && (set->p_gsm || (set->e_gsm || set->r_gsm))) {
- /* dcs */
- bitvec_set_uint(&bv, set->class_dcs, 4);
- /* low band */
- bitvec_set_uint(&bv, set->class_900, 4);
- } else {
- /* low band only */
- bitvec_set_uint(&bv, 0, 4);
- bitvec_set_uint(&bv, set->class_900, 4);
- }
- /* r support */
- if (set->r_gsm) {
- bitvec_set_bit(&bv, ONE);
- bitvec_set_uint(&bv, set->class_900, 3);
- } else {
- bitvec_set_bit(&bv, ZERO);
- }
- /* multi slot support */
- if (sup->ms_sup) {
- bitvec_set_bit(&bv, ONE);
- bitvec_set_uint(&bv, sup->ms_sup, 5);
- } else {
- bitvec_set_bit(&bv, ZERO);
- }
- /* ucs2 treatment */
- if (sup->ucs2_treat) {
- bitvec_set_bit(&bv, ONE);
- } else {
- bitvec_set_bit(&bv, ZERO);
- }
- /* support extended measurements */
- if (sup->ext_meas) {
- bitvec_set_bit(&bv, ONE);
- } else {
- bitvec_set_bit(&bv, ZERO);
- }
- /* support measurement capability */
- if (sup->meas_cap) {
- bitvec_set_bit(&bv, ONE);
- bitvec_set_uint(&bv, sup->sms_val, 4);
- bitvec_set_uint(&bv, sup->sm_val, 4);
- } else {
- bitvec_set_bit(&bv, ZERO);
- }
- /* positioning method capability */
- if (sup->loc_serv) {
- bitvec_set_bit(&bv, ONE);
- bitvec_set_bit(&bv, sup->e_otd_ass == 1);
- bitvec_set_bit(&bv, sup->e_otd_based == 1);
- bitvec_set_bit(&bv, sup->gps_ass == 1);
- bitvec_set_bit(&bv, sup->gps_based == 1);
- bitvec_set_bit(&bv, sup->gps_conv == 1);
- } else {
- bitvec_set_bit(&bv, ZERO);
- }
- /* The following bits are described in TS 24.008 */
- /* EDGE multi slot support */
- if (set->edge_ms_sup) {
- bitvec_set_bit(&bv, ONE);
- bitvec_set_uint(&bv, set->edge_ms_sup, 5);
- } else {
- bitvec_set_bit(&bv, ZERO);
- }
- /* EDGE support */
- if (set->edge_psk_sup) {
- bitvec_set_bit(&bv, ONE);
- bitvec_set_bit(&bv, set->edge_psk_uplink == 1);
- if (set->p_gsm || (set->e_gsm || set->r_gsm)) {
- bitvec_set_bit(&bv, ONE);
- bitvec_set_uint(&bv, set->class_900_edge, 2);
- } else {
- bitvec_set_bit(&bv, ZERO);
- }
- if (set->dcs || set->pcs) {
- bitvec_set_bit(&bv, ONE);
- bitvec_set_uint(&bv, set->class_dcs_pcs_edge, 2);
- } else {
- bitvec_set_bit(&bv, ZERO);
- }
- } else {
- bitvec_set_bit(&bv, ZERO);
- }
- /* GSM 400 Bands */
- if (set->gsm_480 || set->gsm_450) {
- bitvec_set_bit(&bv, ONE);
- bitvec_set_bit(&bv, set->gsm_480 == 1);
- bitvec_set_bit(&bv, set->gsm_450 == 1);
- bitvec_set_uint(&bv, set->class_400, 4);
- } else {
- bitvec_set_bit(&bv, ZERO);
- }
- /* GSM 850 Band */
- if (set->gsm_850) {
- bitvec_set_bit(&bv, ONE);
- bitvec_set_uint(&bv, set->class_850, 4);
- } else {
- bitvec_set_bit(&bv, ZERO);
- }
- /* PCS Band */
- if (set->pcs) {
- bitvec_set_bit(&bv, ONE);
- bitvec_set_uint(&bv, set->class_pcs, 4);
- } else {
- bitvec_set_bit(&bv, ZERO);
- }
- /* RAT Capability */
- bitvec_set_bit(&bv, set->umts_fdd == 1);
- bitvec_set_bit(&bv, set->umts_tdd == 1);
- bitvec_set_bit(&bv, set->cdma_2000 == 1);
- /* DTM */
- if (set->dtm) {
- bitvec_set_bit(&bv, ONE);
- bitvec_set_uint(&bv, set->class_dtm, 2);
- bitvec_set_bit(&bv, set->dtm_mac == 1);
- bitvec_set_bit(&bv, set->dtm_egprs == 1);
- } else {
- bitvec_set_bit(&bv, ZERO);
- }
- /* info: The max number of bits are about 80. */
-
- /* partitial bytes will be completed */
- *len = (bv.cur_bit + 7) >> 3;
- bitvec_spare_padding(&bv, (*len * 8) - 1);
-
- return 0;
-}
-
-/* encode classmark 2 */
-int gsm48_rr_enc_cm2(struct osmocom_ms *ms, struct gsm48_classmark2 *cm,
- uint16_t arfcn)
-{
- struct gsm_support *sup = &ms->support;
- struct gsm_settings *set = &ms->settings;
-
- cm->pwr_lev = gsm48_current_pwr_lev(set, arfcn);
- cm->a5_1 = !set->a5_1;
- cm->es_ind = sup->es_ind;
- cm->rev_lev = sup->rev_lev;
- cm->fc = (set->r_gsm || set->e_gsm);
- cm->vgcs = sup->vgcs;
- cm->vbs = sup->vbs;
- cm->sm_cap = set->sms_ptp;
- cm->ss_scr = sup->ss_ind;
- cm->ps_cap = sup->ps_cap;
- cm->a5_2 = set->a5_2;
- cm->a5_3 = set->a5_3;
- cm->cmsp = sup->cmsp;
- cm->solsa = sup->solsa;
- cm->lcsva_cap = sup->lcsva;
-
- return 0;
-}
-
-/* send classmark change */
-static int gsm48_rr_tx_cm_change(struct osmocom_ms *ms)
-{
- struct gsm_support *sup = &ms->support;
- struct gsm_settings *set = &ms->settings;
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- struct msgb *nmsg;
- struct gsm48_hdr *gh;
- struct gsm48_cm_change *cc;
- uint8_t cm3[14], *tlv;
-
- LOGP(DRR, LOGL_INFO, "CLASSMARK CHANGE\n");
-
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- gh = (struct gsm48_hdr *) msgb_put(nmsg, sizeof(*gh));
- cc = (struct gsm48_cm_change *) msgb_put(nmsg, sizeof(*cc));
-
- gh->proto_discr = GSM48_PDISC_RR;
- gh->msg_type = GSM48_MT_RR_CLSM_CHG;
-
- /* classmark 2 */
- cc->cm2_len = sizeof(cc->cm2);
- gsm48_rr_enc_cm2(ms, &cc->cm2, rr->cd_now.arfcn);
-
- /* classmark 3 */
- if (set->dcs || set->pcs || set->e_gsm || set->r_gsm || set->gsm_850
- || set->a5_7 || set->a5_6 || set->a5_5 || set->a5_4
- || sup->ms_sup
- || sup->ucs2_treat
- || sup->ext_meas || sup->meas_cap
- || sup->loc_serv) {
- cc->cm2.cm3 = 1;
- cm3[0] = GSM48_IE_CLASSMARK3;
- gsm48_rr_enc_cm3(ms, cm3 + 2, &cm3[1]);
- tlv = msgb_put(nmsg, 2 + cm3[1]);
- memcpy(tlv, cm3, 2 + cm3[1]);
- }
-
- return gsm48_send_rsl(ms, RSL_MT_DATA_REQ, nmsg);
-}
-
-/* receiving classmark enquiry */
-static int gsm48_rr_rx_cm_enq(struct osmocom_ms *ms, struct msgb *msg)
-{
- /* send classmark */
- return gsm48_rr_tx_cm_change(ms);
-}
-
-/*
- * random access
- */
-
-/* start random access */
-static int gsm48_rr_chan_req(struct osmocom_ms *ms, int cause, int paging)
-{
- struct gsm_settings *set = &ms->settings;
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct gsm48_sysinfo *s = cs->si;
- struct msgb *nmsg;
- struct gsm48_rr_hdr *nrrh;
- uint8_t chan_req_val, chan_req_mask;
- int rc;
-
- LOGP(DSUM, LOGL_INFO, "Establish radio link due to %s request\n",
- (paging) ? "paging" : "mobility management");
-
- /* ignore paging, if not camping */
- if (paging
- && (!cs->selected || (cs->state != GSM322_C3_CAMPED_NORMALLY
- && cs->state != GSM322_C7_CAMPED_ANY_CELL))) {
- LOGP(DRR, LOGL_INFO, "Paging, but not camping, ignore.\n");
- return -EINVAL;
- }
-
- /* ignore channel request while not camping on a cell */
- if (!cs->selected) {
- LOGP(DRR, LOGL_INFO, "Channel request rejected, we did not "
- "properly select the serving cell.\n");
-
- goto rel_ind;
- }
-
- /* tell cell selection process to leave idle mode
- * NOTE: this must be sent unbuffered, because the state may not
- * change until idle mode is left
- */
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_LEAVE_IDLE);
- if (!nmsg)
- return -ENOMEM;
- rc = gsm322_c_event(ms, nmsg);
- msgb_free(nmsg);
- if (rc) {
- if (paging)
- return rc;
- LOGP(DRR, LOGL_INFO, "Failed to leave IDLE mode.\n");
- goto undefined;
- }
-
- /* 3.3.1.1.2 */
- new_rr_state(rr, GSM48_RR_ST_CONN_PEND);
-
- /* set assignment state */
- rr->wait_assign = 0;
-
- /* number of retransmissions (with first transmission) */
- rr->n_chan_req = s->max_retrans + 1;
-
- /* generate CHAN REQ (9.1.8) */
- switch (cause) {
- case RR_EST_CAUSE_EMERGENCY:
- /* 101xxxxx */
- chan_req_mask = 0x1f;
- chan_req_val = 0xa0;
- LOGP(DRR, LOGL_INFO, "CHANNEL REQUEST: %02x (Emergency call)\n",
- chan_req_val);
- break;
- case RR_EST_CAUSE_REESTAB_TCH_F:
- chan_req_mask = 0x1f;
- chan_req_val = 0xc0;
- LOGP(DRR, LOGL_INFO, "CHANNEL REQUEST: %02x (re-establish "
- "TCH/F)\n", chan_req_val);
- break;
- case RR_EST_CAUSE_REESTAB_TCH_H:
- if (s->neci) {
- chan_req_mask = 0x03;
- chan_req_val = 0x68;
- LOGP(DRR, LOGL_INFO, "CHANNEL REQUEST: %02x "
- "(re-establish TCH/H with NECI)\n",
- chan_req_val);
- } else {
- chan_req_mask = 0x1f;
- chan_req_val = 0xc0;
- LOGP(DRR, LOGL_INFO, "CHANNEL REQUEST: %02x "
- "(re-establish TCH/H no NECI)\n", chan_req_val);
- }
- break;
- case RR_EST_CAUSE_REESTAB_2_TCH_H:
- if (s->neci) {
- chan_req_mask = 0x03;
- chan_req_val = 0x6c;
- LOGP(DRR, LOGL_INFO, "CHANNEL REQUEST: %02x "
- "(re-establish TCH/H+TCH/H with NECI)\n",
- chan_req_val);
- } else {
- chan_req_mask = 0x1f;
- chan_req_val = 0xc0;
- LOGP(DRR, LOGL_INFO, "CHANNEL REQUEST: %02x "
- "(re-establish TCH/H+TCH/H no NECI)\n",
- chan_req_val);
- }
- break;
- case RR_EST_CAUSE_ANS_PAG_ANY:
- chan_req_mask = 0x1f;
- chan_req_val = 0x80;
- LOGP(DRR, LOGL_INFO, "CHANNEL REQUEST: %02x (PAGING "
- "Any channel)\n", chan_req_val);
- break;
- case RR_EST_CAUSE_ANS_PAG_SDCCH:
- chan_req_mask = 0x0f;
- chan_req_val = 0x10;
- LOGP(DRR, LOGL_INFO, "CHANNEL REQUEST: %02x (PAGING SDCCH)\n",
- chan_req_val);
- break;
- case RR_EST_CAUSE_ANS_PAG_TCH_F:
- switch (set->ch_cap) {
- case GSM_CAP_SDCCH:
- chan_req_mask = 0x0f;
- chan_req_val = 0x10;
- break;
- case GSM_CAP_SDCCH_TCHF:
- chan_req_mask = 0x1f;
- chan_req_val = 0x80;
- break;
- default:
- chan_req_mask = 0x0f;
- chan_req_val = 0x20;
- break;
- }
- LOGP(DRR, LOGL_INFO, "CHANNEL REQUEST: %02x (PAGING TCH/F)\n",
- chan_req_val);
- break;
- case RR_EST_CAUSE_ANS_PAG_TCH_ANY:
- switch (set->ch_cap) {
- case GSM_CAP_SDCCH:
- chan_req_mask = 0x0f;
- chan_req_val = 0x10;
- break;
- case GSM_CAP_SDCCH_TCHF:
- chan_req_mask = 0x1f;
- chan_req_val = 0x80;
- break;
- default:
- chan_req_mask = 0x0f;
- chan_req_val = 0x30;
- break;
- }
- LOGP(DRR, LOGL_INFO, "CHANNEL REQUEST: %02x (PAGING TCH/H or "
- "TCH/F)\n", chan_req_val);
- break;
- case RR_EST_CAUSE_ORIG_TCHF:
- /* ms supports no dual rate */
- chan_req_mask = 0x1f;
- chan_req_val = 0xe0;
- LOGP(DRR, LOGL_INFO, "CHANNEL REQUEST: %02x (Orig TCH/F)\n",
- chan_req_val);
- break;
- case RR_EST_CAUSE_LOC_UPD:
- if (s->neci) {
- chan_req_mask = 0x0f;
- chan_req_val = 0x00;
- LOGP(DRR, LOGL_INFO, "CHANNEL REQUEST: %02x (Location "
- "Update with NECI)\n", chan_req_val);
- } else {
- chan_req_mask = 0x1f;
- chan_req_val = 0x00;
- LOGP(DRR, LOGL_INFO, "CHANNEL REQUEST: %02x (Location "
- "Update no NECI)\n", chan_req_val);
- }
- break;
- case RR_EST_CAUSE_OTHER_SDCCH:
- if (s->neci) {
- chan_req_mask = 0x0f;
- chan_req_val = 0x10;
- LOGP(DRR, LOGL_INFO, "CHANNEL REQUEST: %02x (OHTER "
- "with NECI)\n", chan_req_val);
- } else {
- chan_req_mask = 0x1f;
- chan_req_val = 0xe0;
- LOGP(DRR, LOGL_INFO, "CHANNEL REQUEST: %02x (OTHER "
- "no NECI)\n", chan_req_val);
- }
- break;
- default:
- if (!rr->rr_est_req) /* no request from MM */
- return -EINVAL;
-
- LOGP(DRR, LOGL_INFO, "CHANNEL REQUEST: with unknown "
- "establishment cause: %d\n", cause);
- undefined:
- LOGP(DSUM, LOGL_INFO, "Requesting channel failed\n");
-
-rel_ind:
- nmsg = gsm48_rr_msgb_alloc(GSM48_RR_REL_IND);
- if (!nmsg)
- return -ENOMEM;
- nrrh = (struct gsm48_rr_hdr *)nmsg->data;
- nrrh->cause = RR_REL_CAUSE_UNDEFINED;
- gsm48_rr_upmsg(ms, nmsg);
- new_rr_state(rr, GSM48_RR_ST_IDLE);
- return -EINVAL;
- }
-
- /* store value, mask and history */
- rr->chan_req_val = chan_req_val;
- rr->chan_req_mask = chan_req_mask;
- rr->cr_hist[2].valid = 0;
- rr->cr_hist[1].valid = 0;
- rr->cr_hist[0].valid = 0;
-
- /* store establishment cause, so 'choose cell' selects the last cell
- * after location updating */
- rr->est_cause = cause;
-
- /* if channel is already active somehow */
- if (cs->ccch_state == GSM322_CCCH_ST_DATA)
- return gsm48_rr_tx_rand_acc(ms, NULL);
-
- return 0;
-}
-
-/* send first/next channel request in conn pend state */
-int gsm48_rr_tx_rand_acc(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct gsm48_sysinfo *s = &ms->cellsel.sel_si;
- struct gsm_settings *set = &ms->settings;
- struct msgb *nmsg;
- struct abis_rsl_cchan_hdr *ncch;
- int slots;
- uint8_t chan_req;
- uint8_t tx_power;
-
- /* already assigned */
- if (rr->wait_assign == 2)
- return 0;
-
- /* store frame number */
- if (msg) {
- struct abis_rsl_cchan_hdr *ch = msgb_l2(msg);
- struct gsm48_req_ref *ref =
- (struct gsm48_req_ref *) (ch->data + 1);
-
- if (msgb_l2len(msg) < sizeof(*ch) + sizeof(*ref)) {
- LOGP(DRR, LOGL_ERROR, "CHAN_CNF too slort\n");
- return -EINVAL;
- }
-
- /* shift history and store */
- memcpy(&(rr->cr_hist[2]), &(rr->cr_hist[1]),
- sizeof(struct gsm48_cr_hist));
- memcpy(&(rr->cr_hist[1]), &(rr->cr_hist[0]),
- sizeof(struct gsm48_cr_hist));
- rr->cr_hist[0].valid = 1;
- rr->cr_hist[0].ref.ra = rr->cr_ra;
- rr->cr_hist[0].ref.t1 = ref->t1;
- rr->cr_hist[0].ref.t2 = ref->t2;
- rr->cr_hist[0].ref.t3_low = ref->t3_low;
- rr->cr_hist[0].ref.t3_high = ref->t3_high;
- }
-
- if (cs->ccch_state != GSM322_CCCH_ST_DATA) {
- LOGP(DRR, LOGL_INFO, "CCCH channel activation failed.\n");
-fail:
- if (rr->rr_est_req) {
- struct msgb *msg =
- gsm48_rr_msgb_alloc(GSM48_RR_REL_IND);
- struct gsm48_rr_hdr *rrh;
-
- LOGP(DSUM, LOGL_INFO, "Requesting channel failed\n");
- if (!msg)
- return -ENOMEM;
- rrh = (struct gsm48_rr_hdr *)msg->data;
- rrh->cause = RR_REL_CAUSE_RA_FAILURE;
- gsm48_rr_upmsg(ms, msg);
- }
-
- new_rr_state(rr, GSM48_RR_ST_IDLE);
-
- return 0;
- }
-
- if (!s || !s->si3 || !s->tx_integer) {
- LOGP(DRR, LOGL_NOTICE, "Not enough SYSINFO\n");
- goto fail;
- }
-
- if (rr->state == GSM48_RR_ST_IDLE) {
- LOGP(DRR, LOGL_INFO, "MM already released RR.\n");
-
- return 0;
- }
-
- LOGP(DRR, LOGL_INFO, "RANDOM ACCESS (requests left %d)\n",
- rr->n_chan_req);
-
- if (!rr->n_chan_req) {
- LOGP(DRR, LOGL_INFO, "Done with sending RANDOM ACCESS "
- "bursts\n");
- if (!osmo_timer_pending(&rr->t3126))
- start_rr_t3126(rr, 5, 0); /* TODO improve! */
- return 0;
- }
- rr->n_chan_req--;
-
- if (rr->wait_assign == 0) {
- /* first random acces, without delay of slots */
- slots = 0;
- rr->wait_assign = 1;
- } else {
- /* subsequent random acces, with slots from table 3.1 */
- switch(s->tx_integer) {
- case 3: case 8: case 14: case 50:
- if (s->ccch_conf != 1) /* not combined CCCH */
- slots = 55;
- else
- slots = 41;
- break;
- case 4: case 9: case 16:
- if (s->ccch_conf != 1)
- slots = 76;
- else
- slots = 52;
- break;
- case 5: case 10: case 20:
- if (s->ccch_conf != 1)
- slots = 109;
- else
- slots = 58;
- break;
- case 6: case 11: case 25:
- if (s->ccch_conf != 1)
- slots = 163;
- else
- slots = 86;
- break;
- default:
- if (s->ccch_conf != 1)
- slots = 217;
- else
- slots = 115;
- break;
- }
- }
-
- chan_req = random();
- chan_req &= rr->chan_req_mask;
- chan_req |= rr->chan_req_val;
-
- LOGP(DRR, LOGL_INFO, "RANDOM ACCESS (Tx-integer %d combined %s "
- "S(lots) %d ra 0x%02x)\n", s->tx_integer,
- (s->ccch_conf == 1) ? "yes": "no", slots, chan_req);
-
- slots = (random() % s->tx_integer) + slots;
-
- /* (re)send CHANNEL RQD with new randiom */
- nmsg = gsm48_rsl_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- ncch = (struct abis_rsl_cchan_hdr *) msgb_put(nmsg, sizeof(*ncch)
- + 4 + 2 + 2);
- rsl_init_cchan_hdr(ncch, RSL_MT_CHAN_RQD);
- ncch->chan_nr = RSL_CHAN_RACH;
- ncch->data[0] = RSL_IE_REQ_REFERENCE;
- ncch->data[1] = chan_req;
- ncch->data[2] = (slots >> 8) | ((s->ccch_conf == 1) << 7);
- ncch->data[3] = slots;
- ncch->data[4] = RSL_IE_ACCESS_DELAY;
- ncch->data[5] = set->alter_delay; /* (-)=earlier (+)=later */
- ncch->data[6] = RSL_IE_MS_POWER;
- if (set->alter_tx_power) {
- tx_power = set->alter_tx_power_value;
- LOGP(DRR, LOGL_INFO, "Use alternative tx-power %d (%d dBm)\n",
- tx_power,
- ms_pwr_dbm(gsm_arfcn2band(cs->arfcn), tx_power));
- } else {
- tx_power = s->ms_txpwr_max_cch;
- /* power offset in case of DCS1800 */
- if (s->po && (cs->arfcn & 1023) >= 512
- && (cs->arfcn & 1023) <= 885) {
- LOGP(DRR, LOGL_INFO, "Use MS-TXPWR-MAX-CCH power value "
- "%d (%d dBm) with offset %d dBm\n", tx_power,
- ms_pwr_dbm(gsm_arfcn2band(cs->arfcn), tx_power),
- s->po_value * 2);
- /* use reserved bits 7,8 for offset (+ X * 2dB) */
- tx_power |= s->po_value << 6;
- } else
- LOGP(DRR, LOGL_INFO, "Use MS-TXPWR-MAX-CCH power value "
- "%d (%d dBm)\n", tx_power,
- ms_pwr_dbm(gsm_arfcn2band(cs->arfcn),
- tx_power));
- }
- ncch->data[7] = tx_power;
-
- /* set initial indications */
- rr->cd_now.ind_tx_power = s->ms_txpwr_max_cch;
- rr->cd_now.ind_ta = set->alter_delay;
-
- /* store ra until confirmed, then copy it with time into cr_hist */
- rr->cr_ra = chan_req;
-
- return lapdm_rslms_recvmsg(nmsg, &ms->lapdm_channel);
-}
-
-/*
- * system information
- */
-
-/* send sysinfo event to other layers */
-static int gsm48_new_sysinfo(struct osmocom_ms *ms, uint8_t type)
-{
- struct gsm48_sysinfo *s = ms->cellsel.si;
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct msgb *nmsg;
- struct gsm322_msg *em;
-
- /* update list of measurements, if BA(SACCH) is complete and new */
- if (s
- && (type == GSM48_MT_RR_SYSINFO_5
- || type == GSM48_MT_RR_SYSINFO_5bis
- || type == GSM48_MT_RR_SYSINFO_5ter)
- && s->si5
- && (!s->nb_ext_ind_si5 || s->si5bis)) {
- struct gsm48_rr_meas *rrmeas = &ms->rrlayer.meas;
- int n = 0, i, refer_pcs;
-
- LOGP(DRR, LOGL_NOTICE, "Complete set of SI5* for BA(%d)\n",
- s->nb_ba_ind_si5);
- rrmeas->nc_num = 0;
- refer_pcs = gsm_refer_pcs(cs->arfcn, s);
-
- /* collect channels from freq list (1..1023,0) */
- for (i = 1; i <= 1024; i++) {
- if ((s->freq[i & 1023].mask & FREQ_TYPE_REP)) {
- if (n == 32) {
- LOGP(DRR, LOGL_NOTICE, "SI5* report "
- "exceeds 32 BCCHs\n");
- break;
- }
- if (refer_pcs && i >= 512 && i <= 810)
- rrmeas->nc_arfcn[n] = i | ARFCN_PCS;
- else
- rrmeas->nc_arfcn[n] = i & 1023;
- rrmeas->nc_rxlev[n] = -128;
- LOGP(DRR, LOGL_NOTICE, "SI5* report arfcn %s\n",
- gsm_print_arfcn(rrmeas->nc_arfcn[n]));
- n++;
- }
- }
- rrmeas->nc_num = n;
- }
-
- /* send sysinfo event to other layers */
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_SYSINFO);
- if (!nmsg)
- return -ENOMEM;
- em = (struct gsm322_msg *) nmsg->data;
- em->sysinfo = type;
- gsm322_cs_sendmsg(ms, nmsg);
-
- /* if not camping, we don't care about SI */
- if (ms->cellsel.neighbour
- || (ms->cellsel.state != GSM322_C3_CAMPED_NORMALLY
- && ms->cellsel.state != GSM322_C7_CAMPED_ANY_CELL))
- return 0;
-
- /* send timer info to location update process */
- nmsg = gsm48_mmevent_msgb_alloc(GSM48_MM_EVENT_SYSINFO);
- if (!nmsg)
- return -ENOMEM;
- gsm48_mmevent_msg(ms, nmsg);
-
- return 0;
-}
-
-/* receive "SYSTEM INFORMATION 1" message (9.1.31) */
-static int gsm48_rr_rx_sysinfo1(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_system_information_type_1 *si = msgb_l3(msg);
- struct gsm48_sysinfo *s = ms->cellsel.si;
- int payload_len = msgb_l3len(msg) - sizeof(*si);
-
- if (!s) {
- LOGP(DRR, LOGL_INFO, "No cell selected, SYSTEM INFORMATION 1 "
- "ignored\n");
- return -EINVAL;
- }
-
- if (payload_len < 0) {
- LOGP(DRR, LOGL_NOTICE, "Short read of SYSTEM INFORMATION 1 "
- "message.\n");
- return -EINVAL;
- }
-
- if (!memcmp(si, s->si1_msg, MIN(msgb_l3len(msg), sizeof(s->si1_msg))))
- return 0;
-
- gsm48_decode_sysinfo1(s, si, msgb_l3len(msg));
-
- LOGP(DRR, LOGL_INFO, "New SYSTEM INFORMATION 1\n");
-
- return gsm48_new_sysinfo(ms, si->header.system_information);
-}
-
-/* receive "SYSTEM INFORMATION 2" message (9.1.32) */
-static int gsm48_rr_rx_sysinfo2(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_system_information_type_2 *si = msgb_l3(msg);
- struct gsm48_sysinfo *s = ms->cellsel.si;
- int payload_len = msgb_l3len(msg) - sizeof(*si);
-
- if (!s) {
- LOGP(DRR, LOGL_INFO, "No cell selected, SYSTEM INFORMATION 2 "
- "ignored\n");
- return -EINVAL;
- }
-
- if (payload_len < 0) {
- LOGP(DRR, LOGL_NOTICE, "Short read of SYSTEM INFORMATION 2 "
- "message.\n");
- return -EINVAL;
- }
-
- if (!memcmp(si, s->si2_msg, MIN(msgb_l3len(msg), sizeof(s->si2_msg))))
- return 0;
-
- gsm48_decode_sysinfo2(s, si, msgb_l3len(msg));
-
- LOGP(DRR, LOGL_INFO, "New SYSTEM INFORMATION 2\n");
-
- return gsm48_new_sysinfo(ms, si->header.system_information);
-}
-
-/* receive "SYSTEM INFORMATION 2bis" message (9.1.33) */
-static int gsm48_rr_rx_sysinfo2bis(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_system_information_type_2bis *si = msgb_l3(msg);
- struct gsm48_sysinfo *s = ms->cellsel.si;
- int payload_len = msgb_l3len(msg) - sizeof(*si);
-
- if (!s) {
- LOGP(DRR, LOGL_INFO, "No cell selected, SYSTEM INFORMATION 2bis"
- " ignored\n");
- return -EINVAL;
- }
-
- if (payload_len < 0) {
- LOGP(DRR, LOGL_NOTICE, "Short read of SYSTEM INFORMATION 2bis "
- "message.\n");
- return -EINVAL;
- }
-
- if (!memcmp(si, s->si2b_msg, MIN(msgb_l3len(msg), sizeof(s->si2b_msg))))
- return 0;
-
- gsm48_decode_sysinfo2bis(s, si, msgb_l3len(msg));
-
- LOGP(DRR, LOGL_INFO, "New SYSTEM INFORMATION 2bis\n");
-
- return gsm48_new_sysinfo(ms, si->header.system_information);
-}
-
-/* receive "SYSTEM INFORMATION 2ter" message (9.1.34) */
-static int gsm48_rr_rx_sysinfo2ter(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_system_information_type_2ter *si = msgb_l3(msg);
- struct gsm48_sysinfo *s = ms->cellsel.si;
- int payload_len = msgb_l3len(msg) - sizeof(*si);
-
- if (!s) {
- LOGP(DRR, LOGL_INFO, "No cell selected, SYSTEM INFORMATION 2ter"
- " ignored\n");
- return -EINVAL;
- }
-
- if (payload_len < 0) {
- LOGP(DRR, LOGL_NOTICE, "Short read of SYSTEM INFORMATION 2ter "
- "message.\n");
- return -EINVAL;
- }
-
- if (!memcmp(si, s->si2t_msg, MIN(msgb_l3len(msg), sizeof(s->si2t_msg))))
- return 0;
-
- gsm48_decode_sysinfo2ter(s, si, msgb_l3len(msg));
-
- LOGP(DRR, LOGL_INFO, "New SYSTEM INFORMATION 2ter\n");
-
- return gsm48_new_sysinfo(ms, si->header.system_information);
-}
-
-/* receive "SYSTEM INFORMATION 3" message (9.1.35) */
-static int gsm48_rr_rx_sysinfo3(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_system_information_type_3 *si = msgb_l3(msg);
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct gsm48_sysinfo *s = cs->si;
- int payload_len = msgb_l3len(msg) - sizeof(*si);
-
- if (!s) {
- LOGP(DRR, LOGL_INFO, "No cell selected, SYSTEM INFORMATION 3 "
- "ignored\n");
- return -EINVAL;
- }
-
- if (payload_len < 0) {
- LOGP(DRR, LOGL_NOTICE, "Short read of SYSTEM INFORMATION 3 "
- "message.\n");
- return -EINVAL;
- }
-
- if (!memcmp(si, s->si3_msg, MIN(msgb_l3len(msg), sizeof(s->si3_msg))))
- return 0;
-
- gsm48_decode_sysinfo3(s, si, msgb_l3len(msg));
-
- if (cs->ccch_mode == CCCH_MODE_NONE) {
- cs->ccch_mode = (s->ccch_conf == 1) ? CCCH_MODE_COMBINED :
- CCCH_MODE_NON_COMBINED;
- LOGP(DRR, LOGL_NOTICE, "Changing CCCH_MODE to %d\n",
- cs->ccch_mode);
- l1ctl_tx_ccch_mode_req(ms, cs->ccch_mode);
- }
-
- return gsm48_new_sysinfo(ms, si->header.system_information);
-}
-
-/* receive "SYSTEM INFORMATION 4" message (9.1.36) */
-static int gsm48_rr_rx_sysinfo4(struct osmocom_ms *ms, struct msgb *msg)
-{
- /* NOTE: pseudo length is not in this structure, so we skip */
- struct gsm48_system_information_type_4 *si = msgb_l3(msg);
- struct gsm48_sysinfo *s = ms->cellsel.si;
- int payload_len = msgb_l3len(msg) - sizeof(*si);
-
- if (!s) {
- LOGP(DRR, LOGL_INFO, "No cell selected, SYSTEM INFORMATION 4 "
- "ignored\n");
- return -EINVAL;
- }
-
- if (payload_len < 0) {
- LOGP(DRR, LOGL_NOTICE, "Short read of SYSTEM INFORMATION 4 "
- "message.\n");
- return -EINVAL;
- }
-
- if (!memcmp(si, s->si4_msg, MIN(msgb_l3len(msg), sizeof(s->si4_msg))))
- return 0;
-
- gsm48_decode_sysinfo4(s, si, msgb_l3len(msg));
-
- LOGP(DRR, LOGL_INFO, "New SYSTEM INFORMATION 4 (mcc %s mnc %s "
- "lac 0x%04x)\n", gsm_print_mcc(s->mcc),
- gsm_print_mnc(s->mnc), s->lac);
-
- return gsm48_new_sysinfo(ms, si->header.system_information);
-}
-
-/* receive "SYSTEM INFORMATION 5" message (9.1.37) */
-static int gsm48_rr_rx_sysinfo5(struct osmocom_ms *ms, struct msgb *msg)
-{
- /* NOTE: pseudo length is not in this structure, so we skip */
- struct gsm48_system_information_type_5 *si = msgb_l3(msg) + 1;
- struct gsm48_sysinfo *s = ms->cellsel.si;
- int payload_len = msgb_l3len(msg) - sizeof(*si) - 1;
-
- if (!s) {
- LOGP(DRR, LOGL_INFO, "No cell selected, SYSTEM INFORMATION 5 "
- "ignored\n");
- return -EINVAL;
- }
-
- if (payload_len < 0) {
- LOGP(DRR, LOGL_NOTICE, "Short read of SYSTEM INFORMATION 5 "
- "message.\n");
- return -EINVAL;
- }
-
- if (!memcmp(si, s->si5_msg, MIN(msgb_l3len(msg), sizeof(s->si5_msg))))
- return 0;
-
- gsm48_decode_sysinfo5(s, si, msgb_l3len(msg));
-
- LOGP(DRR, LOGL_INFO, "New SYSTEM INFORMATION 5\n");
-
- return gsm48_new_sysinfo(ms, si->system_information);
-}
-
-/* receive "SYSTEM INFORMATION 5bis" message (9.1.38) */
-static int gsm48_rr_rx_sysinfo5bis(struct osmocom_ms *ms, struct msgb *msg)
-{
- /* NOTE: pseudo length is not in this structure, so we skip */
- struct gsm48_system_information_type_5bis *si = msgb_l3(msg) + 1;
- struct gsm48_sysinfo *s = ms->cellsel.si;
- int payload_len = msgb_l3len(msg) - sizeof(*si) - 1;
-
- if (!s) {
- LOGP(DRR, LOGL_INFO, "No cell selected, SYSTEM INFORMATION 5bis"
- " ignored\n");
- return -EINVAL;
- }
-
- if (payload_len < 0) {
- LOGP(DRR, LOGL_NOTICE, "Short read of SYSTEM INFORMATION 5bis "
- "message.\n");
- return -EINVAL;
- }
-
- if (!memcmp(si, s->si5b_msg, MIN(msgb_l3len(msg),
- sizeof(s->si5b_msg))))
- return 0;
-
- gsm48_decode_sysinfo5bis(s, si, msgb_l3len(msg));
-
- LOGP(DRR, LOGL_INFO, "New SYSTEM INFORMATION 5bis\n");
-
- return gsm48_new_sysinfo(ms, si->system_information);
-}
-
-/* receive "SYSTEM INFORMATION 5ter" message (9.1.39) */
-static int gsm48_rr_rx_sysinfo5ter(struct osmocom_ms *ms, struct msgb *msg)
-{
- /* NOTE: pseudo length is not in this structure, so we skip */
- struct gsm48_system_information_type_5ter *si = msgb_l3(msg) + 1;
- struct gsm48_sysinfo *s = ms->cellsel.si;
- int payload_len = msgb_l3len(msg) - sizeof(*si) - 1;
-
- if (!s) {
- LOGP(DRR, LOGL_INFO, "No cell selected, SYSTEM INFORMATION 5ter"
- " ignored\n");
- return -EINVAL;
- }
-
- if (payload_len < 0) {
- LOGP(DRR, LOGL_NOTICE, "Short read of SYSTEM INFORMATION 5ter "
- "message.\n");
- return -EINVAL;
- }
-
- if (!memcmp(si, s->si5t_msg, MIN(msgb_l3len(msg),
- sizeof(s->si5t_msg))))
- return 0;
-
- gsm48_decode_sysinfo5ter(s, si, msgb_l3len(msg));
-
- LOGP(DRR, LOGL_INFO, "New SYSTEM INFORMATION 5ter\n");
-
- return gsm48_new_sysinfo(ms, si->system_information);
-}
-
-/* receive "SYSTEM INFORMATION 6" message (9.1.39) */
-static int gsm48_rr_rx_sysinfo6(struct osmocom_ms *ms, struct msgb *msg)
-{
- /* NOTE: pseudo length is not in this structure, so we skip */
- struct gsm48_system_information_type_6 *si = msgb_l3(msg) + 1;
- struct gsm48_sysinfo *s = ms->cellsel.si;
- struct rx_meas_stat *meas = &ms->meas;
- int payload_len = msgb_l3len(msg) - sizeof(*si) - 1;
-
- if (!s) {
- LOGP(DRR, LOGL_INFO, "No cell selected, SYSTEM INFORMATION 6 "
- "ignored\n");
- return -EINVAL;
- }
-
- if (payload_len < 0) {
- LOGP(DRR, LOGL_NOTICE, "Short read of SYSTEM INFORMATION 6 "
- "message.\n");
- return -EINVAL;
- }
-
- if (!memcmp(si, s->si6_msg, MIN(msgb_l3len(msg), sizeof(s->si6_msg))))
- return 0;
-
- gsm48_decode_sysinfo6(s, si, msgb_l3len(msg));
-
- LOGP(DRR, LOGL_INFO, "New SYSTEM INFORMATION 6 (mcc %s mnc %s "
- "lac 0x%04x SACCH-timeout %d)\n", gsm_print_mcc(s->mcc),
- gsm_print_mnc(s->mnc), s->lac, s->sacch_radio_link_timeout);
-
- meas->rl_fail = meas->s = s->sacch_radio_link_timeout;
- LOGP(DRR, LOGL_INFO, "using (new) SACCH timeout %d\n", meas->rl_fail);
-
- return gsm48_new_sysinfo(ms, si->system_information);
-}
-
-/*
- * paging
- */
-
-/* paging channel request */
-static int gsm48_rr_chan2cause[4] = {
- RR_EST_CAUSE_ANS_PAG_ANY,
- RR_EST_CAUSE_ANS_PAG_SDCCH,
- RR_EST_CAUSE_ANS_PAG_TCH_F,
- RR_EST_CAUSE_ANS_PAG_TCH_ANY
-};
-
-/* given LV of mobile identity is checked agains ms */
-static int gsm_match_mi(struct osmocom_ms *ms, uint8_t *mi)
-{
- struct gsm322_cellsel *cs = &ms->cellsel;
- char imsi[16];
- uint32_t tmsi;
- uint8_t mi_type;
-
- if (mi[0] < 1)
- return 0;
- mi_type = mi[1] & GSM_MI_TYPE_MASK;
- switch (mi_type) {
- case GSM_MI_TYPE_TMSI:
- if (mi[0] < 5)
- return 0;
- memcpy(&tmsi, mi+2, 4);
- if (ms->subscr.tmsi == ntohl(tmsi)
- && ms->subscr.mcc == cs->sel_mcc
- && ms->subscr.mnc == cs->sel_mnc
- && ms->subscr.lac == cs->sel_lac) {
- LOGP(DPAG, LOGL_INFO, " TMSI %08x matches\n",
- ntohl(tmsi));
-
- return 1;
- } else
- LOGP(DPAG, LOGL_INFO, " TMSI %08x (not for us)\n",
- ntohl(tmsi));
- break;
- case GSM_MI_TYPE_IMSI:
- gsm48_mi_to_string(imsi, sizeof(imsi), mi + 1, mi[0]);
- if (!strcmp(imsi, ms->subscr.imsi)) {
- LOGP(DPAG, LOGL_INFO, " IMSI %s matches\n", imsi);
-
- return 1;
- } else
- LOGP(DPAG, LOGL_INFO, " IMSI %s (not for us)\n", imsi);
- break;
- default:
- LOGP(DPAG, LOGL_NOTICE, "Paging with unsupported MI type %d.\n",
- mi_type);
- }
-
- return 0;
-}
-
-/* 9.1.22 PAGING REQUEST 1 message received */
-static int gsm48_rr_rx_pag_req_1(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct gsm48_paging1 *pa = msgb_l3(msg);
- int payload_len = msgb_l3len(msg) - sizeof(*pa);
- int chan_1, chan_2;
- uint8_t *mi;
-
- /* empty paging request */
- if (payload_len >= 2 && (pa->data[1] & GSM_MI_TYPE_MASK) == 0)
- return 0;
-
- /* 3.3.1.1.2: ignore paging while not camping on a cell */
- if (rr->state != GSM48_RR_ST_IDLE || !cs->selected
- || (cs->state != GSM322_C3_CAMPED_NORMALLY
- && cs->state != GSM322_C7_CAMPED_ANY_CELL)
- || cs->neighbour) {
- LOGP(DRR, LOGL_INFO, "PAGING ignored, we are not camping.\n");
-
- return 0;
- }
- LOGP(DPAG, LOGL_INFO, "PAGING REQUEST 1\n");
-
- if (payload_len < 2) {
- short_read:
- LOGP(DRR, LOGL_NOTICE, "Short read of PAGING REQUEST 1 "
- "message.\n");
-
- return -EINVAL;
- }
-
- /* channel needed */
- chan_1 = pa->cneed1;
- chan_2 = pa->cneed2;
- /* first MI */
- mi = pa->data;
- if (payload_len < mi[0] + 1)
- goto short_read;
- if (gsm_match_mi(ms, mi) > 0)
- return gsm48_rr_chan_req(ms, gsm48_rr_chan2cause[chan_1], 1);
- /* second MI */
- payload_len -= mi[0] + 1;
- mi = pa->data + mi[0] + 1;
- if (payload_len < 2)
- return 0;
- if (mi[0] != GSM48_IE_MOBILE_ID)
- return 0;
- if (payload_len < mi[1] + 2)
- goto short_read;
- if (gsm_match_mi(ms, mi + 1) > 0)
- return gsm48_rr_chan_req(ms, gsm48_rr_chan2cause[chan_2], 1);
-
- return 0;
-}
-
-/* 9.1.23 PAGING REQUEST 2 message received */
-static int gsm48_rr_rx_pag_req_2(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct gsm48_paging2 *pa = msgb_l3(msg);
- int payload_len = msgb_l3len(msg) - sizeof(*pa);
- uint8_t *mi;
- int chan_1, chan_2, chan_3;
-
- /* 3.3.1.1.2: ignore paging while not camping on a cell */
- if (rr->state != GSM48_RR_ST_IDLE || !cs->selected
- || (cs->state != GSM322_C3_CAMPED_NORMALLY
- && cs->state != GSM322_C7_CAMPED_ANY_CELL)
- || cs->neighbour) {
- LOGP(DRR, LOGL_INFO, "PAGING ignored, we are not camping.\n");
-
- return 0;
- }
- LOGP(DPAG, LOGL_INFO, "PAGING REQUEST 2\n");
-
- if (payload_len < 0) {
- short_read:
- LOGP(DRR, LOGL_NOTICE, "Short read of PAGING REQUEST 2 "
- "message .\n");
-
- return -EINVAL;
- }
-
- /* channel needed */
- chan_1 = pa->cneed1;
- chan_2 = pa->cneed2;
- /* first MI */
- if (ms->subscr.tmsi == ntohl(pa->tmsi1)
- && ms->subscr.mcc == cs->sel_mcc
- && ms->subscr.mnc == cs->sel_mnc
- && ms->subscr.lac == cs->sel_lac) {
- LOGP(DPAG, LOGL_INFO, " TMSI %08x matches\n", ntohl(pa->tmsi1));
- return gsm48_rr_chan_req(ms, gsm48_rr_chan2cause[chan_1], 1);
- } else
- LOGP(DPAG, LOGL_INFO, " TMSI %08x (not for us)\n",
- ntohl(pa->tmsi1));
- /* second MI */
- if (ms->subscr.tmsi == ntohl(pa->tmsi2)
- && ms->subscr.mcc == cs->sel_mcc
- && ms->subscr.mnc == cs->sel_mnc
- && ms->subscr.lac == cs->sel_lac) {
- LOGP(DPAG, LOGL_INFO, " TMSI %08x matches\n", ntohl(pa->tmsi2));
- return gsm48_rr_chan_req(ms, gsm48_rr_chan2cause[chan_2], 1);
- } else
- LOGP(DPAG, LOGL_INFO, " TMSI %08x (not for us)\n",
- ntohl(pa->tmsi2));
- /* third MI */
- mi = pa->data;
- if (payload_len < 2)
- return 0;
- if (mi[0] != GSM48_IE_MOBILE_ID)
- return 0;
- if (payload_len < mi[1] + 2 + 1) /* must include "channel needed" */
- goto short_read;
- chan_3 = mi[mi[1] + 2] & 0x03; /* channel needed */
- if (gsm_match_mi(ms, mi + 1) > 0)
- return gsm48_rr_chan_req(ms, gsm48_rr_chan2cause[chan_3], 1);
-
- return 0;
-}
-
-/* 9.1.24 PAGING REQUEST 3 message received */
-static int gsm48_rr_rx_pag_req_3(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct gsm48_paging3 *pa = msgb_l3(msg);
- int payload_len = msgb_l3len(msg) - sizeof(*pa);
- int chan_1, chan_2, chan_3, chan_4;
-
- /* 3.3.1.1.2: ignore paging while not camping on a cell */
- if (rr->state != GSM48_RR_ST_IDLE || !cs->selected
- || (cs->state != GSM322_C3_CAMPED_NORMALLY
- && cs->state != GSM322_C7_CAMPED_ANY_CELL)
- || cs->neighbour) {
- LOGP(DRR, LOGL_INFO, "PAGING ignored, we are not camping.\n");
-
- return 0;
- }
- LOGP(DPAG, LOGL_INFO, "PAGING REQUEST 3\n");
-
- if (payload_len < 0) { /* must include "channel needed", part of *pa */
- LOGP(DRR, LOGL_NOTICE, "Short read of PAGING REQUEST 3 "
- "message .\n");
-
- return -EINVAL;
- }
-
- /* channel needed */
- chan_1 = pa->cneed1;
- chan_2 = pa->cneed2;
- chan_3 = pa->cneed3;
- chan_4 = pa->cneed4;
- /* first MI */
- if (ms->subscr.tmsi == ntohl(pa->tmsi1)
- && ms->subscr.mcc == cs->sel_mcc
- && ms->subscr.mnc == cs->sel_mnc
- && ms->subscr.lac == cs->sel_lac) {
- LOGP(DPAG, LOGL_INFO, " TMSI %08x matches\n", ntohl(pa->tmsi1));
- return gsm48_rr_chan_req(ms, gsm48_rr_chan2cause[chan_1], 1);
- } else
- LOGP(DPAG, LOGL_INFO, " TMSI %08x (not for us)\n",
- ntohl(pa->tmsi1));
- /* second MI */
- if (ms->subscr.tmsi == ntohl(pa->tmsi2)
- && ms->subscr.mcc == cs->sel_mcc
- && ms->subscr.mnc == cs->sel_mnc
- && ms->subscr.lac == cs->sel_lac) {
- LOGP(DPAG, LOGL_INFO, " TMSI %08x matches\n", ntohl(pa->tmsi2));
- return gsm48_rr_chan_req(ms, gsm48_rr_chan2cause[chan_2], 1);
- } else
- LOGP(DPAG, LOGL_INFO, " TMSI %08x (not for us)\n",
- ntohl(pa->tmsi2));
- /* thrid MI */
- if (ms->subscr.tmsi == ntohl(pa->tmsi3)
- && ms->subscr.mcc == cs->sel_mcc
- && ms->subscr.mnc == cs->sel_mnc
- && ms->subscr.lac == cs->sel_lac) {
- LOGP(DPAG, LOGL_INFO, " TMSI %08x matches\n", ntohl(pa->tmsi3));
- return gsm48_rr_chan_req(ms, gsm48_rr_chan2cause[chan_3], 1);
- } else
- LOGP(DPAG, LOGL_INFO, " TMSI %08x (not for us)\n",
- ntohl(pa->tmsi3));
- /* fourth MI */
- if (ms->subscr.tmsi == ntohl(pa->tmsi4)
- && ms->subscr.mcc == cs->sel_mcc
- && ms->subscr.mnc == cs->sel_mnc
- && ms->subscr.lac == cs->sel_lac) {
- LOGP(DPAG, LOGL_INFO, " TMSI %08x matches\n", ntohl(pa->tmsi4));
- return gsm48_rr_chan_req(ms, gsm48_rr_chan2cause[chan_4], 1);
- } else
- LOGP(DPAG, LOGL_INFO, " TMSI %08x (not for us)\n",
- ntohl(pa->tmsi4));
-
- return 0;
-}
-
-/*
- * (immediate) assignment
- */
-
-/* match request reference agains request history */
-static int gsm48_match_ra(struct osmocom_ms *ms, struct gsm48_req_ref *ref)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- int i;
- uint8_t ia_t1, ia_t2, ia_t3;
- uint8_t cr_t1, cr_t2, cr_t3;
-
- for (i = 0; i < 3; i++) {
- /* filter confirmed RACH requests only */
- if (rr->cr_hist[i].valid && ref->ra == rr->cr_hist[i].ref.ra) {
- ia_t1 = ref->t1;
- ia_t2 = ref->t2;
- ia_t3 = (ref->t3_high << 3) | ref->t3_low;
- ref = &rr->cr_hist[i].ref;
- cr_t1 = ref->t1;
- cr_t2 = ref->t2;
- cr_t3 = (ref->t3_high << 3) | ref->t3_low;
- if (ia_t1 == cr_t1 && ia_t2 == cr_t2
- && ia_t3 == cr_t3) {
- LOGP(DRR, LOGL_INFO, "request %02x matches "
- "(fn=%d,%d,%d)\n", ref->ra, ia_t1,
- ia_t2, ia_t3);
- return 1;
- } else
- LOGP(DRR, LOGL_INFO, "request %02x matches "
- "but not frame number (IMM.ASS "
- "fn=%d,%d,%d != RACH fn=%d,%d,%d)\n",
- ref->ra, ia_t1, ia_t2, ia_t3,
- cr_t1, cr_t2, cr_t3);
- }
- }
-
- return 0;
-}
-
-/* 9.1.18 IMMEDIATE ASSIGNMENT is received */
-static int gsm48_rr_rx_imm_ass(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- struct gsm48_imm_ass *ia = msgb_l3(msg);
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct gsm48_sysinfo *s = cs->si;
- int ma_len = msgb_l3len(msg) - sizeof(*ia);
- uint8_t ch_type, ch_subch, ch_ts;
- struct gsm48_rr_cd cd;
-#ifndef TEST_STARTING_TIMER
- uint8_t *st, st_len;
-#endif
-
- /* ignore imm.ass. while not camping on a cell */
- if (!cs->selected || cs->neighbour || !s) {
- LOGP(DRR, LOGL_INFO, "IMMEDIATED ASSGINMENT ignored, we are "
- "have not proper selected the serving cell.\n");
-
- return 0;
- }
-
- memset(&cd, 0, sizeof(cd));
- cd.ind_tx_power = rr->cd_now.ind_tx_power;
-
- if (ma_len < 0 /* mobile allocation IE must be included */
- || ia->mob_alloc_len > ma_len) { /* short read of IE */
- LOGP(DRR, LOGL_NOTICE, "Short read of IMMEDIATE ASSIGNMENT "
- "message.\n");
- return -EINVAL;
- }
- if (ia->mob_alloc_len > 8) {
- LOGP(DRR, LOGL_NOTICE, "Moble allocation in IMMEDIATE "
- "ASSIGNMENT too large.\n");
- return -EINVAL;
- }
-
- /* starting time */
-#ifdef TEST_STARTING_TIMER
- cd.start = 1;
- cd.start_tm.fn = (ms->meas.last_fn + TEST_STARTING_TIMER) % 42432;
- LOGP(DRR, LOGL_INFO, " TESTING: starting time ahead\n");
-#else
- st_len = ma_len - ia->mob_alloc_len;
- st = ia->mob_alloc + ia->mob_alloc_len;
- if (st_len >= 3 && st[0] == GSM48_IE_START_TIME)
- gsm48_decode_start_time(&cd, (struct gsm48_start_time *)(st+1));
-#endif
-
- /* decode channel description */
- LOGP(DRR, LOGL_INFO, "IMMEDIATE ASSIGNMENT:\n");
- cd.chan_nr = ia->chan_desc.chan_nr;
- rsl_dec_chan_nr(cd.chan_nr, &ch_type, &ch_subch, &ch_ts);
- if (ia->chan_desc.h0.h) {
- cd.h = 1;
- gsm48_decode_chan_h1(&ia->chan_desc, &cd.tsc, &cd.maio,
- &cd.hsn);
- LOGP(DRR, LOGL_INFO, " (ta %d/%dm ra 0x%02x chan_nr 0x%02x "
- "MAIO %u HSN %u TS %u SS %u TSC %u)\n",
- ia->timing_advance,
- ia->timing_advance * GSM_TA_CM / 100,
- ia->req_ref.ra, ia->chan_desc.chan_nr, cd.maio,
- cd.hsn, ch_ts, ch_subch, cd.tsc);
- } else {
- cd.h = 0;
- gsm48_decode_chan_h0(&ia->chan_desc, &cd.tsc, &cd.arfcn);
- if (gsm_refer_pcs(cs->arfcn, s))
- cd.arfcn |= ARFCN_PCS;
- LOGP(DRR, LOGL_INFO, " (ta %d/%dm ra 0x%02x chan_nr 0x%02x "
- "ARFCN %s TS %u SS %u TSC %u)\n",
- ia->timing_advance,
- ia->timing_advance * GSM_TA_CM / 100,
- ia->req_ref.ra, ia->chan_desc.chan_nr,
- gsm_print_arfcn(cd.arfcn), ch_ts, ch_subch, cd.tsc);
- }
-
- /* 3.3.1.1.2: ignore assignment while idle */
- if (rr->state != GSM48_RR_ST_CONN_PEND || rr->wait_assign == 0) {
- LOGP(DRR, LOGL_INFO, "Not for us, no request.\n");
- return 0;
- }
-
- if (rr->wait_assign == 2) {
- LOGP(DRR, LOGL_INFO, "Ignoring, channel already assigned.\n");
- return 0;
- }
-
- /* request ref */
- if (gsm48_match_ra(ms, &ia->req_ref)) {
- /* channel description */
- memcpy(&rr->cd_now, &cd, sizeof(rr->cd_now));
- /* timing advance */
- rr->cd_now.ind_ta = ia->timing_advance;
- /* mobile allocation */
- memcpy(&rr->cd_now.mob_alloc_lv, &ia->mob_alloc_len,
- ia->mob_alloc_len + 1);
- rr->wait_assign = 2;
- /* reset scheduler */
- LOGP(DRR, LOGL_INFO, "resetting scheduler\n");
- l1ctl_tx_reset_req(ms, L1CTL_RES_T_SCHED);
-
- return gsm48_rr_dl_est(ms);
- }
- LOGP(DRR, LOGL_INFO, "Request, but not for us.\n");
-
- return 0;
-}
-
-/* 9.1.19 IMMEDIATE ASSIGNMENT EXTENDED is received */
-static int gsm48_rr_rx_imm_ass_ext(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct gsm48_sysinfo *s = cs->si;
- struct gsm48_imm_ass_ext *ia = msgb_l3(msg);
- int ma_len = msgb_l3len(msg) - sizeof(*ia);
- uint8_t ch_type, ch_subch, ch_ts;
- struct gsm48_rr_cd cd1, cd2;
-#ifndef TEST_STARTING_TIMER
- uint8_t *st, st_len;
-#endif
-
- /* ignore imm.ass.ext while not camping on a cell */
- if (!cs->selected || cs->neighbour || !s) {
- LOGP(DRR, LOGL_INFO, "IMMEDIATED ASSGINMENT ignored, we are "
- "have not proper selected the serving cell.\n");
-
- return 0;
- }
-
- memset(&cd1, 0, sizeof(cd1));
- cd1.ind_tx_power = rr->cd_now.ind_tx_power;
- memset(&cd2, 0, sizeof(cd2));
- cd2.ind_tx_power = rr->cd_now.ind_tx_power;
-
- if (ma_len < 0 /* mobile allocation IE must be included */
- || ia->mob_alloc_len > ma_len) { /* short read of IE */
- LOGP(DRR, LOGL_NOTICE, "Short read of IMMEDIATE ASSIGNMENT "
- "EXTENDED message.\n");
- return -EINVAL;
- }
- if (ia->mob_alloc_len > 4) {
- LOGP(DRR, LOGL_NOTICE, "Moble allocation in IMMEDIATE "
- "ASSIGNMENT EXTENDED too large.\n");
- return -EINVAL;
- }
-
-#ifdef TEST_STARTING_TIMER
- cd1.start = 1;
- cd2.start_tm.fn = (ms->meas.last_fn + TEST_STARTING_TIMER) % 42432;
- memcpy(&cd2, &cd1, sizeof(cd2));
- LOGP(DRR, LOGL_INFO, " TESTING: starting time ahead\n");
-#else
- /* starting time */
- st_len = ma_len - ia->mob_alloc_len;
- st = ia->mob_alloc + ia->mob_alloc_len;
- if (st_len >= 3 && st[0] == GSM48_IE_START_TIME) {
- gsm48_decode_start_time(&cd1,
- (struct gsm48_start_time *)(st+1));
- memcpy(&cd2, &cd1, sizeof(cd2));
- }
-#endif
-
- /* decode channel description */
- LOGP(DRR, LOGL_INFO, "IMMEDIATE ASSIGNMENT EXTENDED:\n");
- cd1.chan_nr = ia->chan_desc1.chan_nr;
- rsl_dec_chan_nr(cd1.chan_nr, &ch_type, &ch_subch, &ch_ts);
- if (ia->chan_desc1.h0.h) {
- cd1.h = 1;
- gsm48_decode_chan_h1(&ia->chan_desc1, &cd1.tsc, &cd1.maio,
- &cd1.hsn);
- LOGP(DRR, LOGL_INFO, " assignment 1 (ta %d/%dm ra 0x%02x "
- "chan_nr 0x%02x MAIO %u HSN %u TS %u SS %u TSC %u)\n",
- ia->timing_advance1,
- ia->timing_advance1 * GSM_TA_CM / 100,
- ia->req_ref1.ra, ia->chan_desc1.chan_nr, cd1.maio,
- cd1.hsn, ch_ts, ch_subch, cd1.tsc);
- } else {
- cd1.h = 0;
- gsm48_decode_chan_h0(&ia->chan_desc1, &cd1.tsc, &cd1.arfcn);
- if (gsm_refer_pcs(cs->arfcn, s))
- cd1.arfcn |= ARFCN_PCS;
- LOGP(DRR, LOGL_INFO, " assignment 1 (ta %d/%dm ra 0x%02x "
- "chan_nr 0x%02x ARFCN %s TS %u SS %u TSC %u)\n",
- ia->timing_advance1,
- ia->timing_advance1 * GSM_TA_CM / 100,
- ia->req_ref1.ra, ia->chan_desc1.chan_nr,
- gsm_print_arfcn(cd1.arfcn), ch_ts, ch_subch, cd1.tsc);
- }
- cd2.chan_nr = ia->chan_desc2.chan_nr;
- rsl_dec_chan_nr(cd2.chan_nr, &ch_type, &ch_subch, &ch_ts);
- if (ia->chan_desc2.h0.h) {
- cd2.h = 1;
- gsm48_decode_chan_h1(&ia->chan_desc2, &cd2.tsc, &cd2.maio,
- &cd2.hsn);
- LOGP(DRR, LOGL_INFO, " assignment 2 (ta %d/%dm ra 0x%02x "
- "chan_nr 0x%02x MAIO %u HSN %u TS %u SS %u TSC %u)\n",
- ia->timing_advance2,
- ia->timing_advance2 * GSM_TA_CM / 100,
- ia->req_ref2.ra, ia->chan_desc2.chan_nr, cd2.maio,
- cd2.hsn, ch_ts, ch_subch, cd2.tsc);
- } else {
- cd2.h = 0;
- gsm48_decode_chan_h0(&ia->chan_desc2, &cd2.tsc, &cd2.arfcn);
- if (gsm_refer_pcs(cs->arfcn, s))
- cd2.arfcn |= ARFCN_PCS;
- LOGP(DRR, LOGL_INFO, " assignment 2 (ta %d/%dm ra 0x%02x "
- "chan_nr 0x%02x ARFCN %s TS %u SS %u TSC %u)\n",
- ia->timing_advance2,
- ia->timing_advance2 * GSM_TA_CM / 100,
- ia->req_ref2.ra, ia->chan_desc2.chan_nr,
- gsm_print_arfcn(cd2.arfcn), ch_ts, ch_subch, cd2.tsc);
- }
-
- /* 3.3.1.1.2: ignore assignment while idle */
- if (rr->state != GSM48_RR_ST_CONN_PEND || rr->wait_assign == 0) {
- LOGP(DRR, LOGL_INFO, "Not for us, no request.\n");
- return 0;
- }
-
- if (rr->wait_assign == 2) {
- LOGP(DRR, LOGL_INFO, "Ignoring, channel already assigned.\n");
- return 0;
- }
-
- /* request ref 1 */
- if (gsm48_match_ra(ms, &ia->req_ref1)) {
- /* channel description */
- memcpy(&rr->cd_now, &cd1, sizeof(rr->cd_now));
- /* timing advance */
- rr->cd_now.ind_ta = ia->timing_advance1;
- /* mobile allocation */
- memcpy(&rr->cd_now.mob_alloc_lv, &ia->mob_alloc_len,
- ia->mob_alloc_len + 1);
- rr->wait_assign = 2;
- /* reset scheduler */
- LOGP(DRR, LOGL_INFO, "resetting scheduler\n");
- l1ctl_tx_reset_req(ms, L1CTL_RES_T_SCHED);
-
- return gsm48_rr_dl_est(ms);
- }
- /* request ref 2 */
- if (gsm48_match_ra(ms, &ia->req_ref2)) {
- /* channel description */
- memcpy(&rr->cd_now, &cd2, sizeof(rr->cd_now));
- /* timing advance */
- rr->cd_now.ind_ta = ia->timing_advance2;
- /* mobile allocation */
- memcpy(&rr->cd_now.mob_alloc_lv, &ia->mob_alloc_len,
- ia->mob_alloc_len + 1);
- rr->wait_assign = 2;
- /* reset scheduler */
- LOGP(DRR, LOGL_INFO, "resetting scheduler\n");
- l1ctl_tx_reset_req(ms, L1CTL_RES_T_SCHED);
-
- return gsm48_rr_dl_est(ms);
- }
- LOGP(DRR, LOGL_INFO, "Request, but not for us.\n");
-
- return 0;
-}
-
-/* 9.1.20 IMMEDIATE ASSIGNMENT REJECT is received */
-static int gsm48_rr_rx_imm_ass_rej(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- struct gsm48_imm_ass_rej *ia = msgb_l3(msg);
- int payload_len = msgb_l3len(msg) - sizeof(*ia);
- int i;
- struct gsm48_req_ref *req_ref;
- uint8_t t3122_value;
-
- /* 3.3.1.1.2: ignore assignment while idle */
- if (rr->state != GSM48_RR_ST_CONN_PEND || rr->wait_assign == 0)
- return 0;
-
- if (rr->wait_assign == 2) {
- return 0;
- }
-
- if (payload_len < 0) {
- LOGP(DRR, LOGL_NOTICE, "Short read of IMMEDIATE ASSIGNMENT "
- "REJECT message.\n");
- return -EINVAL;
- }
-
- for (i = 0; i < 4; i++) {
- /* request reference */
- req_ref = (struct gsm48_req_ref *)
- (((uint8_t *)&ia->req_ref1) + i * 4);
- LOGP(DRR, LOGL_INFO, "IMMEDIATE ASSIGNMENT REJECT "
- "(ref 0x%02x)\n", req_ref->ra);
- if (gsm48_match_ra(ms, req_ref)) {
- /* wait indication */
- t3122_value = *(((uint8_t *)&ia->wait_ind1) + i * 4);
- if (t3122_value)
- start_rr_t3122(rr, t3122_value, 0);
- /* start timer 3126 if not already */
- if (!osmo_timer_pending(&rr->t3126))
- start_rr_t3126(rr, 5, 0); /* TODO improve! */
- /* stop assignmnet requests */
- rr->n_chan_req = 0;
-
- /* wait until timer 3126 expires, then release
- * or wait for channel assignment */
- return 0;
- }
- }
-
- return 0;
-}
-
-/* 9.1.1 ADDITIONAL ASSIGMENT is received */
-static int gsm48_rr_rx_add_ass(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_hdr *gh = msgb_l3(msg);
- struct gsm48_add_ass *aa = (struct gsm48_add_ass *)gh->data;
- int payload_len = msgb_l3len(msg) - sizeof(*gh) - sizeof(*aa);
- struct tlv_parsed tp;
-
- if (payload_len < 0) {
- LOGP(DRR, LOGL_NOTICE, "Short read of ADDITIONAL ASSIGNMENT "
- "message.\n");
- return gsm48_rr_tx_rr_status(ms,
- GSM48_RR_CAUSE_PROT_ERROR_UNSPC);
- }
- tlv_parse(&tp, &gsm48_rr_att_tlvdef, aa->data, payload_len, 0, 0);
-
- return gsm48_rr_tx_rr_status(ms, GSM48_RR_CAUSE_PROT_ERROR_UNSPC);
-}
-
-/*
- * measturement reports
- */
-
-static int gsm48_rr_tx_meas_rep(struct osmocom_ms *ms)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- struct gsm48_sysinfo *s = ms->cellsel.si;
- struct rx_meas_stat *meas = &rr->ms->meas;
- struct gsm48_rr_meas *rrmeas = &rr->meas;
- struct msgb *nmsg;
- struct gsm48_hdr *gh;
- struct gsm48_meas_res *mr;
- uint8_t serv_rxlev_full = 0, serv_rxlev_sub = 0, serv_rxqual_full = 0,
- serv_rxqual_sub = 0;
- uint8_t ta, tx_power;
- uint8_t rep_ba = 0, rep_valid = 0, meas_valid = 0, multi_rep = 0;
- uint8_t n = 0, rxlev_nc[6], bsic_nc[6], bcch_f_nc[6];
-
- /* just in case! */
- if (!s)
- return -EINVAL;
-
- /* check if SI5* is completely received, check BA-IND */
- if (s->si5
- && (!s->nb_ext_ind_si5 || s->si5bis)) {
- rep_ba = s->nb_ba_ind_si5;
- if ((s->si5bis && s->nb_ext_ind_si5
- && s->nb_ba_ind_si5bis != rep_ba)
- || (s->si5ter && s->nb_ba_ind_si5ter != rep_ba)) {
- LOGP(DRR, LOGL_NOTICE, "BA-IND missmatch on SI5*");
- } else
- rep_valid = 1;
- }
-
- /* check for valid measurements, any frame must exist */
- if (meas->frames) {
- meas_valid = 1;
- serv_rxlev_full = serv_rxlev_sub =
- (meas->rxlev + (meas->frames / 2)) / meas->frames;
- serv_rxqual_full = serv_rxqual_sub = 0; // FIXME
- }
-
- memset(&rxlev_nc, 0, sizeof(rxlev_nc));
- memset(&bsic_nc, 0, sizeof(bsic_nc));
- memset(&bcch_f_nc, 0, sizeof(bcch_f_nc));
- if (rep_valid) {
- int8_t strongest, current;
- uint8_t ncc;
- int i, index;
-
- /* multiband reporting, if not: 0 = normal reporting */
- if (s->si5ter)
- multi_rep = s->nb_multi_rep_si5ter;
-
- /* get 6 strongest measurements */
- // FIXME: multiband report
- strongest = 127; /* infinite */
- for (n = 0; n < 6; n++) {
- current = -128; /* -infinite */
- index = 0;
- for (i = 0; i < rrmeas->nc_num; i++) {
- /* only check if NCC is permitted */
- ncc = rrmeas->nc_bsic[i] >> 3;
- if ((s->nb_ncc_permitted_si6 & (1 << ncc))
- && rrmeas->nc_rxlev[i] > current
- && rrmeas->nc_rxlev[i] < strongest) {
- current = rrmeas->nc_rxlev[i];
- index = i;
- }
- }
- if (current == -128) /* no more found */
- break;
- rxlev_nc[n] = rrmeas->nc_rxlev[index] + 110;
- bsic_nc[n] = rrmeas->nc_bsic[index];
- bcch_f_nc[n] = index;
- }
- }
-
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
-
- /* use indicated tx-power and TA (not the altered ones) */
- tx_power = rr->cd_now.ind_tx_power;
- // FIXME: degrade power to the max supported level
- ta = rr->cd_now.ind_ta;
-
- gh = (struct gsm48_hdr *) msgb_put(nmsg, sizeof(*gh));
- mr = (struct gsm48_meas_res *) msgb_put(nmsg, sizeof(*mr));
-
- gh->proto_discr = GSM48_PDISC_RR;
- gh->msg_type = GSM48_MT_RR_MEAS_REP;
-
- /* measurement results */
- mr->rxlev_full = serv_rxlev_full;
- mr->rxlev_sub = serv_rxlev_sub;
- mr->rxqual_full = serv_rxqual_full;
- mr->rxqual_sub = serv_rxqual_sub;
- mr->dtx_used = 0; // FIXME: no DTX yet
- mr->ba_used = rep_ba;
- mr->meas_valid = !meas_valid; /* 0 = valid */
- if (rep_valid) {
- mr->no_nc_n_hi = n >> 2;
- mr->no_nc_n_lo = n & 3;
- } else {
- /* no results for serving cells */
- mr->no_nc_n_hi = 1;
- mr->no_nc_n_lo = 3;
- }
- mr->rxlev_nc1 = rxlev_nc[0];
- mr->rxlev_nc2_hi = rxlev_nc[1] >> 1;
- mr->rxlev_nc2_lo = rxlev_nc[1] & 1;
- mr->rxlev_nc3_hi = rxlev_nc[2] >> 2;
- mr->rxlev_nc3_lo = rxlev_nc[2] & 3;
- mr->rxlev_nc4_hi = rxlev_nc[3] >> 3;
- mr->rxlev_nc4_lo = rxlev_nc[3] & 7;
- mr->rxlev_nc5_hi = rxlev_nc[4] >> 4;
- mr->rxlev_nc5_lo = rxlev_nc[4] & 15;
- mr->rxlev_nc6_hi = rxlev_nc[5] >> 5;
- mr->rxlev_nc6_lo = rxlev_nc[5] & 31;
- mr->bsic_nc1_hi = bsic_nc[0] >> 3;
- mr->bsic_nc1_lo = bsic_nc[0] & 7;
- mr->bsic_nc2_hi = bsic_nc[1] >> 4;
- mr->bsic_nc2_lo = bsic_nc[1] & 15;
- mr->bsic_nc3_hi = bsic_nc[2] >> 5;
- mr->bsic_nc3_lo = bsic_nc[2] & 31;
- mr->bsic_nc4 = bsic_nc[3];
- mr->bsic_nc5 = bsic_nc[4];
- mr->bsic_nc6 = bsic_nc[5];
- mr->bcch_f_nc1 = bcch_f_nc[0];
- mr->bcch_f_nc2 = bcch_f_nc[1];
- mr->bcch_f_nc3 = bcch_f_nc[2];
- mr->bcch_f_nc4 = bcch_f_nc[3];
- mr->bcch_f_nc5_hi = bcch_f_nc[4] >> 1;
- mr->bcch_f_nc5_lo = bcch_f_nc[4] & 1;
- mr->bcch_f_nc6_hi = bcch_f_nc[5] >> 2;
- mr->bcch_f_nc6_lo = bcch_f_nc[5] & 3;
-
- LOGP(DRR, LOGL_INFO, "MEAS REP: pwr=%d TA=%d meas-invalid=%d "
- "rxlev-full=%d rxlev-sub=%d rxqual-full=%d rxqual-sub=%d "
- "dtx %d ba %d no-ncell-n %d\n", tx_power, ta, mr->meas_valid,
- mr->rxlev_full - 110, mr->rxlev_sub - 110,
- mr->rxqual_full, mr->rxqual_sub, mr->dtx_used, mr->ba_used,
- (mr->no_nc_n_hi << 2) | mr->no_nc_n_lo);
-
- msgb_tv16_push(nmsg, RSL_IE_L3_INFO,
- nmsg->tail - (uint8_t *)msgb_l3(nmsg));
- msgb_push(nmsg, 2 + 2);
- nmsg->data[0] = RSL_IE_TIMING_ADVANCE;
- nmsg->data[1] = ta;
- nmsg->data[2] = RSL_IE_MS_POWER;
- nmsg->data[3] = tx_power;
- rsl_rll_push_hdr(nmsg, RSL_MT_UNIT_DATA_REQ, rr->cd_now.chan_nr,
- 0x40, 1);
-
- return lapdm_rslms_recvmsg(nmsg, &ms->lapdm_channel);
-}
-
-/*
- * link establishment and release
- */
-
-/* process "Loss Of Signal" */
-int gsm48_rr_los(struct osmocom_ms *ms)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- uint8_t *mode;
- struct msgb *nmsg;
- struct gsm48_rr_hdr *nrrh;
-
- LOGP(DSUM, LOGL_INFO, "Radio link lost signal\n");
-
- /* stop T3211 if running */
- stop_rr_t3110(rr);
-
- switch(rr->state) {
- case GSM48_RR_ST_CONN_PEND:
- LOGP(DRR, LOGL_INFO, "LOS during RACH request\n");
-
- /* stop pending RACH timer */
- stop_rr_t3126(rr);
- break;
- case GSM48_RR_ST_DEDICATED:
- LOGP(DRR, LOGL_INFO, "LOS during dedicated mode, release "
- "locally\n");
-
- new_rr_state(rr, GSM48_RR_ST_REL_PEND);
-
- /* release message */
- rel_local:
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- mode = msgb_put(nmsg, 2);
- mode[0] = RSL_IE_RELEASE_MODE;
- mode[1] = 1; /* local release */
- /* start release */
- return gsm48_send_rsl_rel(ms, RSL_MT_REL_REQ, nmsg);
- case GSM48_RR_ST_REL_PEND:
- LOGP(DRR, LOGL_INFO, "LOS during RR release procedure, release "
- "locally\n");
-
- /* stop pending RACH timer */
- stop_rr_t3110(rr);
-
- /* release locally */
- goto rel_local;
- default:
- /* this should not happen */
- LOGP(DRR, LOGL_ERROR, "LOS in IDLE state, ignoring\n");
- return -EINVAL;
- }
-
- /* send inication to upper layer */
- nmsg = gsm48_rr_msgb_alloc(GSM48_RR_REL_IND);
- if (!nmsg)
- return -ENOMEM;
- nrrh = (struct gsm48_rr_hdr *)nmsg->data;
- nrrh->cause = RR_REL_CAUSE_LOST_SIGNAL;
- gsm48_rr_upmsg(ms, nmsg);
-
- /* return idle */
- new_rr_state(rr, GSM48_RR_ST_IDLE);
- return 0;
-}
-
-/* activation of channel in dedicated mode */
-static int gsm48_rr_activate_channel(struct osmocom_ms *ms,
- struct gsm48_rr_cd *cd, uint16_t *ma, uint8_t ma_len)
-{
- struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- struct gsm_settings *set = &ms->settings;
- struct gsm48_sysinfo *s = ms->cellsel.si;
- struct rx_meas_stat *meas = &ms->meas;
- uint8_t ch_type, ch_subch, ch_ts;
- uint8_t timeout = 64;
-
- /* setting (new) timing advance */
- LOGP(DRR, LOGL_INFO, "setting indicated TA %d (actual TA %d)\n",
- cd->ind_ta, cd->ind_ta - set->alter_delay);
- l1ctl_tx_param_req(ms, cd->ind_ta - set->alter_delay,
- (set->alter_tx_power) ? set->alter_tx_power_value
- : cd->ind_tx_power);
-
- /* reset measurement and link timeout */
- meas->ds_fail = 0;
- if (s) {
- if (s->sacch_radio_link_timeout) {
- timeout = s->sacch_radio_link_timeout;
- LOGP(DRR, LOGL_INFO, "using last SACCH timeout %d\n",
- timeout);
- } else if (s->bcch_radio_link_timeout) {
- timeout = s->bcch_radio_link_timeout;
- LOGP(DRR, LOGL_INFO, "using last BCCH timeout %d\n",
- timeout);
- }
- }
- meas->rl_fail = meas->s = timeout;
-
- /* setting initial (invalid) measurement report, resetting SI5* */
- if (s) {
- memset(s->si5_msg, 0, sizeof(s->si5_msg));
- memset(s->si5b_msg, 0, sizeof(s->si5b_msg));
- memset(s->si5t_msg, 0, sizeof(s->si5t_msg));
- }
- meas->frames = meas->snr = meas->berr = meas->rxlev = 0;
- rr->meas.nc_num = 0;
- stop_rr_t_meas(rr);
- start_rr_t_meas(rr, 1, 0);
- gsm48_rr_tx_meas_rep(ms);
-
- /* establish */
- LOGP(DRR, LOGL_INFO, "establishing channel in dedicated mode\n");
- rsl_dec_chan_nr(cd->chan_nr, &ch_type, &ch_subch, &ch_ts);
- LOGP(DRR, LOGL_INFO, " Channel type %d, subch %d, ts %d, mode %d, "
- "audio-mode %d, cipher %d\n", ch_type, ch_subch, ch_ts,
- cd->mode, rr->audio_mode, rr->cipher_type + 1);
- if (cd->h)
- l1ctl_tx_dm_est_req_h1(ms, cd->maio, cd->hsn,
- ma, ma_len, cd->chan_nr, cd->tsc, cd->mode,
- rr->audio_mode);
- else
- l1ctl_tx_dm_est_req_h0(ms, cd->arfcn, cd->chan_nr, cd->tsc,
- cd->mode, rr->audio_mode);
- rr->dm_est = 1;
-
- /* old SI 5/6 are not valid on a new dedicated channel */
- s->si5 = s->si5bis = s->si5ter = s->si6 = 0;
-
- if (rr->cipher_on)
- l1ctl_tx_crypto_req(ms, rr->cipher_type + 1, subscr->key, 8);
-
- return 0;
-}
-
-/* frequency change of channel "after time" */
-static int gsm48_rr_channel_after_time(struct osmocom_ms *ms,
- struct gsm48_rr_cd *cd, uint16_t *ma, uint8_t ma_len, uint16_t fn)
-{
- struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm48_rrlayer *rr = &ms->rrlayer;
-
- if (cd->h)
- l1ctl_tx_dm_freq_req_h1(ms, cd->maio, cd->hsn,
- ma, ma_len, cd->tsc, fn);
- else
- l1ctl_tx_dm_freq_req_h0(ms, cd->arfcn, cd->tsc, fn);
-
- if (rr->cipher_on)
- l1ctl_tx_crypto_req(ms, rr->cipher_type + 1, subscr->key, 8);
-
- gsm48_rr_set_mode(ms, cd->chan_nr, cd->mode);
-
- return 0;
-}
-
-/* render list of hopping channels from channel description elements */
-static int gsm48_rr_render_ma(struct osmocom_ms *ms, struct gsm48_rr_cd *cd,
- uint16_t *ma, uint8_t *ma_len)
-{
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct gsm48_sysinfo *s = cs->si;
- struct gsm_settings *set = &ms->settings;
- int i, pcs, index;
- uint16_t arfcn;
-
- pcs = gsm_refer_pcs(cs->arfcn, s) ? ARFCN_PCS : 0;
-
- /* no hopping (no MA), channel description is valid */
- if (!cd->h) {
- *ma_len = 0;
- return 0;
- }
-
- /* decode mobile allocation */
- if (cd->mob_alloc_lv[0]) {
- struct gsm_sysinfo_freq *freq = s->freq;
-
- LOGP(DRR, LOGL_INFO, "decoding mobile allocation\n");
-
- if (cd->cell_desc_lv[0]) {
- LOGP(DRR, LOGL_INFO, "using cell channel descr.\n");
- if (cd->cell_desc_lv[0] != 16) {
- LOGP(DRR, LOGL_ERROR, "cell channel descr. "
- "has invalid lenght\n");
- return GSM48_RR_CAUSE_ABNORMAL_UNSPEC;
- }
- gsm48_decode_freq_list(freq, cd->cell_desc_lv + 1, 16,
- 0xce, FREQ_TYPE_SERV);
- }
-
- gsm48_decode_mobile_alloc(freq, cd->mob_alloc_lv + 1,
- cd->mob_alloc_lv[0], ma, ma_len, 0);
- if (*ma_len < 1) {
- LOGP(DRR, LOGL_NOTICE, "mobile allocation with no "
- "frequency available\n");
- return GSM48_RR_CAUSE_NO_CELL_ALLOC_A;
-
- }
- } else
- /* decode frequency list */
- if (cd->freq_list_lv[0]) {
- struct gsm_sysinfo_freq f[1024];
- int j = 0;
-
- LOGP(DRR, LOGL_INFO, "decoding frequency list\n");
-
- /* get bitmap */
- if (gsm48_decode_freq_list(f, cd->freq_list_lv + 1,
- cd->freq_list_lv[0], 0xce, FREQ_TYPE_SERV)) {
- LOGP(DRR, LOGL_NOTICE, "frequency list invalid\n");
- return GSM48_RR_CAUSE_ABNORMAL_UNSPEC;
- }
-
- /* collect channels from bitmap (1..1023,0) */
- for (i = 1; i <= 1024; i++) {
- if ((f[i & 1023].mask & FREQ_TYPE_SERV)) {
- LOGP(DRR, LOGL_INFO, "Listed ARFCN #%d: %s\n",
- j, gsm_print_arfcn((i & 1023) | pcs));
- if (j == 64) {
- LOGP(DRR, LOGL_NOTICE, "frequency list "
- "exceeds 64 entries!\n");
- return GSM48_RR_CAUSE_ABNORMAL_UNSPEC;
- }
- ma[j++] = i & 1023;
- }
- }
- *ma_len = j;
- } else
- /* decode frequency channel sequence */
- if (cd->freq_seq_lv[0]) {
- int j = 0, inc;
-
- LOGP(DRR, LOGL_INFO, "decoding frequency channel sequence\n");
-
- if (cd->freq_seq_lv[0] != 9) {
- LOGP(DRR, LOGL_NOTICE, "invalid frequency channel "
- "sequence\n");
- return GSM48_RR_CAUSE_ABNORMAL_UNSPEC;
- }
- arfcn = cd->freq_seq_lv[1] & 0x7f;
- LOGP(DRR, LOGL_INFO, "Listed Sequence ARFCN #%d: %s\n", j,
- gsm_print_arfcn(arfcn | pcs));
- ma[j++] = arfcn;
- for (i = 0; i < 16; i++) {
- if ((i & 1))
- inc = cd->freq_seq_lv[2 + (i >> 1)] & 0x0f;
- else
- inc = cd->freq_seq_lv[2 + (i >> 1)] >> 4;
- if (inc) {
- arfcn += inc;
- LOGP(DRR, LOGL_INFO, "Listed Sequence ARFCN "
- "#%d: %s\n", j,
- gsm_print_arfcn(i | pcs));
- ma[j++] = arfcn;
- } else
- arfcn += 15;
- }
- *ma_len = j;
- } else {
- LOGP(DRR, LOGL_NOTICE, "hopping, but nothing that tells us "
- "a sequence\n");
- return GSM48_RR_CAUSE_ABNORMAL_UNSPEC;
- }
-
- /* convert to band_arfcn and check for unsported frequency */
- for (i = 0; i < *ma_len; i++) {
- arfcn = ma[i] | pcs;
- ma[i] = arfcn;
- index = arfcn2index(arfcn);
- if (!(set->freq_map[index >> 3] & (1 << (index & 7)))) {
- LOGP(DRR, LOGL_NOTICE, "Hopping ARFCN %s not "
- "supported\n", gsm_print_arfcn(arfcn));
- return GSM48_RR_CAUSE_FREQ_NOT_IMPL;
- }
- }
-
- return 0;
-}
-
-/* activate link and send establish request */
-static int gsm48_rr_dl_est(struct osmocom_ms *ms)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct gsm_subscriber *subscr = &ms->subscr;
- struct msgb *nmsg;
- struct gsm48_hdr *gh;
- struct gsm48_pag_rsp *pr;
- uint8_t mi[11];
- uint16_t ma[64];
- uint8_t ma_len;
-
- /* 3.3.1.1.3.1 */
- stop_rr_t3126(rr);
-
- /* check if we have to change channel at starting time (we delay) */
- if (rr->cd_now.start) {
- int32_t now, start, diff;
- uint32_t start_mili = 0;
-
- /* how much time do we have left? */
- now = ms->meas.last_fn % 42432;
- start = rr->cd_now.start_tm.fn % 42432;
- diff = start - now;
- if (diff < 0)
- diff += 42432;
- LOGP(DRR, LOGL_INFO, " (Tnow %d Tstart %d diff %d)\n",
- now, start, diff);
- start_mili = (uint32_t)diff * 19580 / 42432 * 10;
- if (diff >= 32024 || !start_mili) {
- LOGP(DRR, LOGL_INFO, " -> Start time already "
- "elapsed\n");
- rr->cd_now.start = 0;
- } else {
- LOGP(DRR, LOGL_INFO, " -> Start time is %d ms in the "
- "future\n", start_mili);
- }
-
-#ifndef TEST_FREQUENCY_MOD
- /* schedule start of IMM.ASS */
- rr->modify_state = GSM48_RR_MOD_IMM_ASS;
- start_rr_t_starting(rr, start_mili / 1000,
- (start_mili % 1000) * 1000);
- /* when timer fires, start time is already elapsed */
- rr->cd_now.start = 0;
-
- return 0;
-#endif
- }
-
- /* get hopping sequence, if required */
- if (gsm48_rr_render_ma(ms, &rr->cd_now, ma, &ma_len))
- return -EINVAL;
-
- /* clear all sequence numbers for all possible PDs */
- rr->v_sd = 0;
-
- /* send DL_EST_REQ */
- if (rr->rr_est_msg) {
- LOGP(DRR, LOGL_INFO, "sending establish message\n");
-
- /* use queued message */
- nmsg = rr->rr_est_msg;
- rr->rr_est_msg = 0;
-
- /* set sequence number and increment */
- gsm48_apply_v_sd(rr, nmsg);
- } else {
- /* create paging response */
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- gh = (struct gsm48_hdr *) msgb_put(nmsg, sizeof(*gh));
- gh->proto_discr = GSM48_PDISC_RR;
- gh->msg_type = GSM48_MT_RR_PAG_RESP;
- pr = (struct gsm48_pag_rsp *) msgb_put(nmsg, sizeof(*pr));
- /* key sequence */
- pr->key_seq = subscr->key_seq;
- /* classmark 2 */
- pr->cm2_len = sizeof(pr->cm2);
- gsm48_rr_enc_cm2(ms, &pr->cm2, rr->cd_now.arfcn);
- /* mobile identity */
- if (ms->subscr.tmsi != 0xffffffff
- && ms->subscr.mcc == cs->sel_mcc
- && ms->subscr.mnc == cs->sel_mnc
- && ms->subscr.lac == cs->sel_lac) {
- gsm48_generate_mid_from_tmsi(mi, subscr->tmsi);
- LOGP(DRR, LOGL_INFO, "sending paging response with "
- "TMSI\n");
- } else if (subscr->imsi[0]) {
- gsm48_generate_mid_from_imsi(mi, subscr->imsi);
- LOGP(DRR, LOGL_INFO, "sending paging response with "
- "IMSI\n");
- } else {
- mi[1] = 1;
- mi[2] = 0xf0 | GSM_MI_TYPE_NONE;
- LOGP(DRR, LOGL_INFO, "sending paging response without "
- "TMSI/IMSI\n");
- }
- msgb_put(nmsg, 1 + mi[1]);
- memcpy(pr->data, mi + 1, 1 + mi[1]);
- }
-
-#ifdef TEST_FREQUENCY_MOD
- LOGP(DRR, LOGL_INFO, " TESTING: frequency modify IMM.ASS\n");
- memcpy(&rr->cd_before, &rr->cd_now, sizeof(rr->cd_before));
- rr->cd_before.h = 0;
- rr->cd_before.arfcn = 0;
- /* activate channel */
- gsm48_rr_activate_channel(ms, &rr->cd_before, ma, ma_len);
- /* render channel "after time" */
- gsm48_rr_render_ma(ms, &rr->cd_now, ma, &ma_len);
- /* schedule change of channel */
- gsm48_rr_channel_after_time(ms, &rr->cd_now, ma, ma_len,
- rr->cd_now.start_tm.fn);
-#else
- /* activate channel */
- gsm48_rr_activate_channel(ms, &rr->cd_now, ma, ma_len);
-#endif
-
- /* start establishmnet */
- return gsm48_send_rsl(ms, RSL_MT_EST_REQ, nmsg);
-}
-
-/* the link is established */
-static int gsm48_rr_estab_cnf(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- uint8_t *mode;
- struct msgb *nmsg;
-
- /* if MM has releases before confirm, we start release */
- if (rr->state == GSM48_RR_ST_REL_PEND) {
- LOGP(DRR, LOGL_INFO, "MM already released RR.\n");
- /* release message */
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- mode = msgb_put(nmsg, 2);
- mode[0] = RSL_IE_RELEASE_MODE;
- mode[1] = 0; /* normal release */
- /* start release */
- return gsm48_send_rsl_rel(ms, RSL_MT_REL_REQ, nmsg);
- }
-
- /* 3.3.1.1.4 */
- new_rr_state(rr, GSM48_RR_ST_DEDICATED);
-
- /* send confirm to upper layer */
- nmsg = gsm48_rr_msgb_alloc(
- (rr->rr_est_req) ? GSM48_RR_EST_CNF : GSM48_RR_EST_IND);
- if (!nmsg)
- return -ENOMEM;
- return gsm48_rr_upmsg(ms, nmsg);
-}
-
-/* the link is released in pending state (by l2) */
-static int gsm48_rr_rel_ind(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- struct msgb *nmsg;
- struct gsm48_rr_hdr *nrrh;
-
- /* switch back to old channel, if modify/ho failed */
- switch (rr->modify_state) {
- case GSM48_RR_MOD_ASSIGN:
- case GSM48_RR_MOD_HANDO:
- /* channel is deactivate there */
- return gsm48_rr_rel_cnf(ms, msg);
- case GSM48_RR_MOD_ASSIGN_RESUME:
- case GSM48_RR_MOD_HANDO_RESUME:
- rr->modify_state = GSM48_RR_MOD_NONE;
- break;
- }
-
- LOGP(DSUM, LOGL_INFO, "Radio link is released\n");
-
- /* send inication to upper layer */
- nmsg = gsm48_rr_msgb_alloc(GSM48_RR_REL_IND);
- if (!nmsg)
- return -ENOMEM;
- nrrh = (struct gsm48_rr_hdr *)nmsg->data;
- nrrh->cause = RR_REL_CAUSE_NORMAL;
- gsm48_rr_upmsg(ms, nmsg);
-
- /* start release timer, so UA will be transmitted */
- start_rr_t_rel_wait(rr, 1, 500000);
-
- /* pending release */
- new_rr_state(rr, GSM48_RR_ST_REL_PEND);
-
- return 0;
-}
-
-/* 9.1.7 CHANNEL RELEASE is received */
-static int gsm48_rr_rx_chan_rel(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- struct gsm48_hdr *gh = msgb_l3(msg);
- struct gsm48_chan_rel *cr = (struct gsm48_chan_rel *)gh->data;
- int payload_len = msgb_l3len(msg) - sizeof(*gh) - sizeof(*cr);
- struct tlv_parsed tp;
- struct msgb *nmsg;
- uint8_t *mode;
-
- if (payload_len < 0) {
- LOGP(DRR, LOGL_NOTICE, "Short read of CHANNEL RELEASE "
- "message.\n");
- return gsm48_rr_tx_rr_status(ms,
- GSM48_RR_CAUSE_PROT_ERROR_UNSPC);
- }
- tlv_parse(&tp, &gsm48_rr_att_tlvdef, cr->data, payload_len, 0, 0);
-
- LOGP(DRR, LOGL_INFO, "channel release request with cause 0x%02x)\n",
- cr->rr_cause);
-
- /* BA range */
- if (TLVP_PRESENT(&tp, GSM48_IE_BA_RANGE)) {
- gsm48_decode_ba_range(TLVP_VAL(&tp, GSM48_IE_BA_RANGE),
- *(TLVP_VAL(&tp, GSM48_IE_BA_RANGE) - 1), rr->ba_range,
- &rr->ba_ranges,
- sizeof(rr->ba_range) / sizeof(rr->ba_range[0]));
- /* NOTE: the ranges are kept until IDLE state is returned
- * (see new_rr_state)
- */
- }
-
- new_rr_state(rr, GSM48_RR_ST_REL_PEND);
-
- /* start T3110, so that two DISCs can be sent due to T200 timeout */
- start_rr_t3110(rr, 1, 500000);
-
- /* disconnect the main signalling link */
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- mode = msgb_put(nmsg, 2);
- mode[0] = RSL_IE_RELEASE_MODE;
- mode[1] = 0; /* normal release */
- return gsm48_send_rsl_rel(ms, RSL_MT_REL_REQ, nmsg);
-}
-
-/*
- * frequency redefition, chanel mode modify, assignment, and handover
- */
-
-/* set channel mode in case of TCH */
-static int gsm48_rr_set_mode(struct osmocom_ms *ms, uint8_t chan_nr,
- uint8_t mode)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- uint8_t ch_type, ch_subch, ch_ts;
-
- /* only apply mode to TCH/F or TCH/H */
- rsl_dec_chan_nr(chan_nr, &ch_type, &ch_subch, &ch_ts);
- if (ch_type != RSL_CHAN_Bm_ACCHs
- && ch_type != RSL_CHAN_Lm_ACCHs)
- return -ENOTSUP;
-
- /* setting (new) timing advance */
- LOGP(DRR, LOGL_INFO, "setting TCH mode to %d, audio mode to %d\n",
- mode, rr->audio_mode);
- l1ctl_tx_tch_mode_req(ms, mode, rr->audio_mode);
-
- return 0;
-}
-
-/* 9.1.13 FREQUENCY REDEFINITION is received */
-static int gsm48_rr_rx_frq_redef(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct gsm48_sysinfo *s = cs->si;
- struct gsm48_frq_redef *fr = msgb_l3(msg);
- int mob_al_len = msgb_l3len(msg) - sizeof(*fr);
- uint8_t ch_type, ch_subch, ch_ts;
- struct gsm48_rr_cd cd;
- uint8_t cause;
- uint8_t *st;
- uint16_t ma[64];
- uint8_t ma_len;
-
- memcpy(&cd, &rr->cd_now, sizeof(cd));
-
- if (mob_al_len < 0 /* mobile allocation IE must be included */
- || fr->mob_alloc_len + 2 > mob_al_len) { /* short read of IE */
- LOGP(DRR, LOGL_NOTICE, "Short read of FREQUENCY REDEFINITION "
- "message.\n");
- return -EINVAL;
- }
- if (fr->mob_alloc_len > 8) {
- LOGP(DRR, LOGL_NOTICE, "Moble allocation in FREQUENCY "
- "REDEFINITION too large.\n");
- return -EINVAL;
- }
-
- /* decode channel description */
- LOGP(DRR, LOGL_INFO, "FREQUENCY REDEFINITION:\n");
- cd.chan_nr = fr->chan_desc.chan_nr;
- rsl_dec_chan_nr(cd.chan_nr, &ch_type, &ch_subch, &ch_ts);
- if (fr->chan_desc.h0.h) {
- cd.h = 1;
- gsm48_decode_chan_h1(&fr->chan_desc, &cd.tsc, &cd.maio,
- &cd.hsn);
- LOGP(DRR, LOGL_INFO, " (MAIO %u HSN %u TS %u SS %u TSC %u)\n",
- cd.maio, cd.hsn, ch_ts, ch_subch, cd.tsc);
- } else {
- cd.h = 0;
- gsm48_decode_chan_h0(&fr->chan_desc, &cd.tsc, &cd.arfcn);
- if (gsm_refer_pcs(cs->arfcn, s))
- cd.arfcn |= ARFCN_PCS;
- LOGP(DRR, LOGL_INFO, " (ARFCN %s TS %u SS %u TSC %u)\n",
- gsm_print_arfcn(cd.arfcn), ch_ts, ch_subch, cd.tsc);
- }
-
- /* mobile allocation */
- memcpy(rr->cd_now.mob_alloc_lv, &fr->mob_alloc_len,
- fr->mob_alloc_len + 1);
-
- /* starting time */
- st = fr->mob_alloc + fr->mob_alloc_len;
- gsm48_decode_start_time(&cd, (struct gsm48_start_time *)(st+1));
-
- /* cell channel description */
- if (mob_al_len >= fr->mob_alloc_len + 2 + 17
- && fr->mob_alloc[fr->mob_alloc_len + 2] == GSM48_IE_CELL_CH_DESC) {
- const uint8_t *v = fr->mob_alloc + fr->mob_alloc_len + 2 + 1;
-
- LOGP(DRR, LOGL_INFO, " using cell channel description)\n");
- cd.cell_desc_lv[0] = 16;
- memcpy(cd.cell_desc_lv + 1, v, 17);
- }
-
- /* render channel "after time" */
- cause = gsm48_rr_render_ma(ms, &rr->cd_now, ma, &ma_len);
- if (cause)
- return gsm48_rr_tx_rr_status(ms, cause);
-
- /* update to new channel data */
- memcpy(&rr->cd_now, &cd, sizeof(rr->cd_now));
-
- /* schedule change of channel */
- gsm48_rr_channel_after_time(ms, &rr->cd_now, ma, ma_len,
- rr->cd_now.start_tm.fn);
-
- rr->cd_now.start = 0;
-
- return 0;
-}
-
-/* 9.1.6 sending CHANNEL MODE MODIFY ACKNOWLEDGE */
-static int gsm48_rr_tx_chan_modify_ack(struct osmocom_ms *ms,
- struct gsm48_chan_desc *cd, uint8_t mode)
-{
- struct msgb *nmsg;
- struct gsm48_hdr *gh;
- struct gsm48_chan_mode_modify *cm;
-
- LOGP(DRR, LOGL_INFO, "CHAN.MODE.MOD ACKNOWLEDGE\n");
-
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- gh = (struct gsm48_hdr *) msgb_put(nmsg, sizeof(*gh));
- cm = (struct gsm48_chan_mode_modify *) msgb_put(nmsg, sizeof(*cm));
-
- gh->proto_discr = GSM48_PDISC_RR;
- gh->msg_type = GSM48_MT_RR_CHAN_MODE_MODIF_ACK;
-
- /* CD */
- memcpy(&cm->chan_desc, cd, sizeof(struct gsm48_chan_desc));
- /* mode */
- cm->mode = mode;
-
- return gsm48_send_rsl(ms, RSL_MT_DATA_REQ, nmsg);
-}
-
-/* 9.1.5 CHANNEL MODE MODIFY is received */
-static int gsm48_rr_rx_chan_modify(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct gsm48_sysinfo *s = cs->si;
- struct gsm48_hdr *gh = msgb_l3(msg);
- struct gsm48_chan_mode_modify *cm =
- (struct gsm48_chan_mode_modify *)gh->data;
- int payload_len = msgb_l3len(msg) - sizeof(*gh) - sizeof(*cm);
- struct gsm48_rr_cd *cd = &rr->cd_now;
- uint8_t ch_type, ch_subch, ch_ts;
- uint8_t cause;
-
- LOGP(DRR, LOGL_INFO, "CHANNEL MODE MODIFY\n");
-
-
- if (payload_len < 0) {
- LOGP(DRR, LOGL_NOTICE, "Short read of CHANNEL MODE MODIFY "
- "message.\n");
- return gsm48_rr_tx_rr_status(ms,
- GSM48_RR_CAUSE_PROT_ERROR_UNSPC);
- }
-
- /* decode channel description */
- cd->chan_nr = cm->chan_desc.chan_nr;
- rsl_dec_chan_nr(cd->chan_nr, &ch_type, &ch_subch, &ch_ts);
- if (cm->chan_desc.h0.h) {
- cd->h = 1;
- gsm48_decode_chan_h1(&cm->chan_desc, &cd->tsc, &cd->maio,
- &cd->hsn);
- LOGP(DRR, LOGL_INFO, " (chan_nr 0x%02x MAIO %u HSN %u TS %u "
- "SS %u TSC %u mode %u)\n", cm->chan_desc.chan_nr,
- cd->maio, cd->hsn, ch_ts, ch_subch, cd->tsc, cm->mode);
- } else {
- cd->h = 0;
- gsm48_decode_chan_h0(&cm->chan_desc, &cd->tsc, &cd->arfcn);
- if (gsm_refer_pcs(cs->arfcn, s))
- cd->arfcn |= ARFCN_PCS;
- LOGP(DRR, LOGL_INFO, " (chan_nr 0x%02x ARFCN %s TS %u SS %u "
- "TSC %u mode %u)\n", cm->chan_desc.chan_nr,
- gsm_print_arfcn(cd->arfcn), ch_ts, ch_subch, cd->tsc,
- cm->mode);
- }
- /* mode */
- cause = gsm48_rr_check_mode(ms, cd->chan_nr, cm->mode);
- if (cause)
- return gsm48_rr_tx_rr_status(ms, cause);
- cd->mode = cm->mode;
- gsm48_rr_set_mode(ms, cd->chan_nr, cd->mode);
-
- return gsm48_rr_tx_chan_modify_ack(ms, &cm->chan_desc, cm->mode);
-}
-
-/* 9.1.3 sending ASSIGNMENT COMPLETE */
-static int gsm48_rr_tx_ass_cpl(struct osmocom_ms *ms, uint8_t cause)
-{
- struct msgb *nmsg;
- struct gsm48_hdr *gh;
- struct gsm48_ass_cpl *ac;
-
- LOGP(DRR, LOGL_INFO, "ASSIGNMENT COMPLETE (cause #%d)\n", cause);
-
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- gh = (struct gsm48_hdr *) msgb_put(nmsg, sizeof(*gh));
- ac = (struct gsm48_ass_cpl *) msgb_put(nmsg, sizeof(*ac));
-
- gh->proto_discr = GSM48_PDISC_RR;
- gh->msg_type = GSM48_MT_RR_ASS_COMPL;
-
- /* RR_CAUSE */
- ac->rr_cause = cause;
-
- return gsm48_send_rsl(ms, RSL_MT_RES_REQ, nmsg);
-}
-
-/* 9.1.4 sending ASSIGNMENT FAILURE */
-static int gsm48_rr_tx_ass_fail(struct osmocom_ms *ms, uint8_t cause,
- uint8_t rsl_prim)
-{
- struct msgb *nmsg;
- struct gsm48_hdr *gh;
- struct gsm48_ass_fail *af;
-
- LOGP(DRR, LOGL_INFO, "ASSIGNMENT FAILURE (cause #%d)\n", cause);
-
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- gh = (struct gsm48_hdr *) msgb_put(nmsg, sizeof(*gh));
- af = (struct gsm48_ass_fail *) msgb_put(nmsg, sizeof(*af));
-
- gh->proto_discr = GSM48_PDISC_RR;
- gh->msg_type = GSM48_MT_RR_ASS_COMPL;
-
- /* RR_CAUSE */
- af->rr_cause = cause;
-
- return gsm48_send_rsl(ms, rsl_prim, nmsg);
-}
-
-/* 9.1.2 ASSIGNMENT COMMAND is received */
-static int gsm48_rr_rx_ass_cmd(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct gsm48_sysinfo *s = cs->si;
- struct gsm48_hdr *gh = msgb_l3(msg);
- struct gsm48_ass_cmd *ac = (struct gsm48_ass_cmd *)gh->data;
- int payload_len = msgb_l3len(msg) - sizeof(*gh) - sizeof(*ac);
- struct tlv_parsed tp;
- struct gsm48_rr_cd *cda = &rr->cd_after;
- struct gsm48_rr_cd *cdb = &rr->cd_before;
- uint8_t ch_type, ch_subch, ch_ts;
- uint8_t before_time = 0;
- uint16_t ma[64];
- uint8_t ma_len;
- uint32_t start_mili = 0;
- uint8_t cause;
- struct msgb *nmsg;
-
-
- LOGP(DRR, LOGL_INFO, "ASSIGNMENT COMMAND\n");
-
- memset(cda, 0, sizeof(*cda));
- cda->ind_tx_power = rr->cd_now.ind_tx_power;
- memset(cdb, 0, sizeof(*cdb));
- cdb->ind_tx_power = rr->cd_now.ind_tx_power;
-
- if (payload_len < 0) {
- LOGP(DRR, LOGL_NOTICE, "Short read of ASSIGNMENT COMMAND "
- "message.\n");
- return gsm48_rr_tx_rr_status(ms,
- GSM48_RR_CAUSE_PROT_ERROR_UNSPC);
- }
- tlv_parse(&tp, &gsm48_rr_att_tlvdef, ac->data, payload_len, 0, 0);
-
- /* decode channel description (before time) */
- if (TLVP_PRESENT(&tp, GSM48_IE_CH_DESC_1_BEFORE)) {
- struct gsm48_chan_desc *ccd = (struct gsm48_chan_desc *)
- TLVP_VAL(&tp, GSM48_IE_CH_DESC_1_BEFORE);
- cdb->chan_nr = ccd->chan_nr;
- rsl_dec_chan_nr(cdb->chan_nr, &ch_type, &ch_subch, &ch_ts);
- if (ccd->h0.h) {
- cdb->h = 1;
- gsm48_decode_chan_h1(ccd, &cdb->tsc, &cdb->maio,
- &cdb->hsn);
- LOGP(DRR, LOGL_INFO, " before: (chan_nr 0x%02x MAIO %u "
- "HSN %u TS %u SS %u TSC %u)\n", ccd->chan_nr,
- cdb->maio, cdb->hsn, ch_ts, ch_subch, cdb->tsc);
- } else {
- cdb->h = 0;
- gsm48_decode_chan_h0(ccd, &cdb->tsc, &cdb->arfcn);
- if (gsm_refer_pcs(cs->arfcn, s))
- cdb->arfcn |= ARFCN_PCS;
- LOGP(DRR, LOGL_INFO, " before: (chan_nr 0x%02x "
- "ARFCN %s TS %u SS %u TSC %u)\n", ccd->chan_nr,
- gsm_print_arfcn(cdb->arfcn),
- ch_ts, ch_subch, cdb->tsc);
- }
- before_time = 1;
- }
-
- /* decode channel description (after time) */
- cda->chan_nr = ac->chan_desc.chan_nr;
- rsl_dec_chan_nr(cda->chan_nr, &ch_type, &ch_subch, &ch_ts);
- if (ac->chan_desc.h0.h) {
- cda->h = 1;
- gsm48_decode_chan_h1(&ac->chan_desc, &cda->tsc, &cda->maio,
- &cda->hsn);
- LOGP(DRR, LOGL_INFO, " after: (chan_nr 0x%02x MAIO %u HSN %u "
- "TS %u SS %u TSC %u)\n", ac->chan_desc.chan_nr,
- cda->maio, cda->hsn, ch_ts, ch_subch, cda->tsc);
- } else {
- cda->h = 0;
- gsm48_decode_chan_h0(&ac->chan_desc, &cda->tsc, &cda->arfcn);
- if (gsm_refer_pcs(cs->arfcn, s))
- cda->arfcn |= ARFCN_PCS;
- LOGP(DRR, LOGL_INFO, " after: (chan_nr 0x%02x ARFCN %s TS %u "
- "SS %u TSC %u)\n", ac->chan_desc.chan_nr,
- gsm_print_arfcn(cda->arfcn), ch_ts, ch_subch, cda->tsc);
- }
-
- /* starting time */
-#ifdef TEST_STARTING_TIMER
- cda->start = 1;
- cda->start_tm.fn = (ms->meas.last_fn + TEST_STARTING_TIMER) % 42432;
- LOGP(DRR, LOGL_INFO, " TESTING: starting time ahead\n");
-#else
- if (TLVP_PRESENT(&tp, GSM48_IE_START_TIME)) {
- gsm48_decode_start_time(cda, (struct gsm48_start_time *)
- TLVP_VAL(&tp, GSM48_IE_START_TIME));
- /* 9.1.2.5 "... before time IE is not present..." */
- if (!before_time) {
- LOGP(DRR, LOGL_INFO, " -> channel description after "
- "time only, but starting time\n");
- } else
- LOGP(DRR, LOGL_INFO, " -> channel description before "
- "and after time\n");
- } else {
- /* 9.1.2.5 "... IEs unnecessary in this message." */
- if (before_time) {
- before_time = 0;
- LOGP(DRR, LOGL_INFO, " -> channel description before "
- "time, but no starting time, ignoring!\n");
- }
- }
-#endif
-
- /* mobile allocation / frequency list after time */
- if (cda->h) {
- if (TLVP_PRESENT(&tp, GSM48_IE_MA_AFTER)) {
- const uint8_t *lv =
- TLVP_VAL(&tp, GSM48_IE_MA_AFTER) - 1;
-
- LOGP(DRR, LOGL_INFO, " after: hopping required and "
- "mobile allocation available\n");
- if (*lv + 1 > sizeof(cda->mob_alloc_lv)) {
- LOGP(DRR, LOGL_ERROR, "Error: no LV space!\n");
- return -ENOMEM;
- }
- memcpy(cda->mob_alloc_lv, lv, *lv + 1);
- } else
- if (TLVP_PRESENT(&tp, GSM48_IE_FREQ_L_AFTER)) {
- const uint8_t *lv =
- TLVP_VAL(&tp, GSM48_IE_FREQ_L_AFTER) - 1;
-
- LOGP(DRR, LOGL_INFO, " after: hopping required and "
- "frequency list available\n");
- if (*lv + 1 > sizeof(cda->freq_list_lv)) {
- LOGP(DRR, LOGL_ERROR, "Error: no LV space!\n");
- return -ENOMEM;
- }
- memcpy(cda->freq_list_lv, lv, *lv + 1);
- } else {
- LOGP(DRR, LOGL_NOTICE, " after: hopping required, but "
- "no mobile allocation / frequency list\n");
- }
- }
-
- /* mobile allocation / frequency list before time */
- if (cdb->h) {
- if (TLVP_PRESENT(&tp, GSM48_IE_MA_BEFORE)) {
- const uint8_t *lv =
- TLVP_VAL(&tp, GSM48_IE_MA_BEFORE) - 1;
-
- LOGP(DRR, LOGL_INFO, " before: hopping required and "
- "mobile allocation available\n");
- if (*lv + 1 > sizeof(cdb->mob_alloc_lv)) {
- LOGP(DRR, LOGL_ERROR, "Error: no LV space!\n");
- return -ENOMEM;
- }
- memcpy(cdb->mob_alloc_lv, lv, *lv + 1);
- } else
- if (TLVP_PRESENT(&tp, GSM48_IE_FREQ_L_BEFORE)) {
- const uint8_t *lv =
- TLVP_VAL(&tp, GSM48_IE_FREQ_L_BEFORE) - 1;
-
- LOGP(DRR, LOGL_INFO, " before: hopping required and "
- "frequency list available\n");
- if (*lv + 1 > sizeof(cdb->freq_list_lv)) {
- LOGP(DRR, LOGL_ERROR, "Error: no LV space!\n");
- return -ENOMEM;
- }
- memcpy(cdb->freq_list_lv, lv, *lv + 1);
- } else
- if (TLVP_PRESENT(&tp, GSM48_IE_F_CH_SEQ_BEFORE)) {
- const uint8_t *v =
- TLVP_VAL(&tp, GSM48_IE_F_CH_SEQ_BEFORE);
- uint8_t len = TLVP_LEN(&tp, GSM48_IE_F_CH_SEQ_BEFORE);
-
- LOGP(DRR, LOGL_INFO, " before: hopping required and "
- "frequency channel sequence available\n");
- if (len + 1 > sizeof(cdb->freq_seq_lv)) {
- LOGP(DRR, LOGL_ERROR, "Error: no LV space!\n");
- return -ENOMEM;
- }
- cdb->freq_seq_lv[0] = len;
- memcpy(cdb->freq_seq_lv + 1, v, len);
- } else
- if (cda->mob_alloc_lv[0]) {
- LOGP(DRR, LOGL_INFO, " before: hopping required and "
- "mobile allocation not available, using "
- "mobile allocation after time\n");
- memcpy(cdb->mob_alloc_lv, cda->mob_alloc_lv,
- sizeof(cdb->mob_alloc_lv));
- } else
- if (cda->freq_list_lv[0]) {
- LOGP(DRR, LOGL_INFO, " before: hopping required and "
- "frequency list not available, using "
- "frequency list after time\n");
- memcpy(cdb->freq_list_lv, cda->freq_list_lv,
- sizeof(cdb->freq_list_lv));
- } else {
- LOGP(DRR, LOGL_NOTICE, " before: hopping required, but "
- "no mobile allocation / frequency list\n");
- }
- }
-
- /* cell channel description */
- if (TLVP_PRESENT(&tp, GSM48_IE_CELL_CH_DESC)) {
- const uint8_t *v = TLVP_VAL(&tp, GSM48_IE_CELL_CH_DESC);
- uint8_t len = TLVP_LEN(&tp, GSM48_IE_CELL_CH_DESC);
-
- LOGP(DRR, LOGL_INFO, " both: using cell channel description "
- "in case of mobile allocation\n");
- if (len + 1 > sizeof(cdb->cell_desc_lv)) {
- LOGP(DRR, LOGL_ERROR, "Error: no LV space!\n");
- return -ENOMEM;
- }
- cdb->cell_desc_lv[0] = len;
- memcpy(cdb->cell_desc_lv + 1, v, len);
- cda->cell_desc_lv[0] = len;
- memcpy(cda->cell_desc_lv + 1, v, len);
- } else {
- /* keep old */
- memcpy(cdb->cell_desc_lv, rr->cd_now.cell_desc_lv,
- sizeof(cdb->cell_desc_lv));
- memcpy(cda->cell_desc_lv, rr->cd_now.cell_desc_lv,
- sizeof(cda->cell_desc_lv));
- }
-
- /* channel mode */
- if (TLVP_PRESENT(&tp, GSM48_IE_CHANMODE_1)) {
- cda->mode = cdb->mode = *TLVP_VAL(&tp, GSM48_IE_CHANMODE_1);
- LOGP(DRR, LOGL_INFO, " both: changing channel mode 0x%02x\n",
- cda->mode);
- } else
- cda->mode = cdb->mode = rr->cd_now.mode;
-
- /* cipher mode setting */
- if (TLVP_PRESENT(&tp, GSM48_IE_CIP_MODE_SET)) {
- cda->cipher = cdb->cipher =
- *TLVP_VAL(&tp, GSM48_IE_CIP_MODE_SET);
- LOGP(DRR, LOGL_INFO, " both: changing cipher mode 0x%02x\n",
- cda->cipher);
- } else
- cda->cipher = cdb->cipher = rr->cd_now.cipher;
-
- /* power command and TA (before and after time) */
- gsm48_decode_power_cmd_acc(
- (struct gsm48_power_cmd *) &ac->power_command,
- &cda->ind_tx_power, NULL);
- cdb->ind_tx_power = cda->ind_tx_power;
- cda->ind_ta = cdb->ind_ta = rr->cd_now.ind_ta; /* same cell */
- LOGP(DRR, LOGL_INFO, " both: (tx_power %d TA %d)\n", cda->ind_tx_power,
- cda->ind_ta);
-
- /* check if we have to change channel at starting time */
- if (cda->start) {
- int32_t now, start, diff;
-
- /* how much time do we have left? */
- now = ms->meas.last_fn % 42432;
- start = cda->start_tm.fn % 42432;
- diff = start - now;
- if (diff < 0)
- diff += 42432;
- LOGP(DRR, LOGL_INFO, " after: (Tnow %d Tstart %d diff %d)\n",
- now, start, diff);
- start_mili = (uint32_t)diff * 19580 / 42432 * 10;
- if (diff >= 32024 || !start_mili) {
- LOGP(DRR, LOGL_INFO, " -> Start time already "
- "elapsed\n");
- before_time = 0;
- cda->start = 0;
- } else {
- LOGP(DRR, LOGL_INFO, " -> Start time is %d ms in the "
- "future\n", start_mili);
- }
- }
-
- /* check if channels are valid */
- cause = gsm48_rr_check_mode(ms, cda->chan_nr, cda->mode);
- if (cause)
- return gsm48_rr_tx_ass_fail(ms, cause, RSL_MT_DATA_REQ);
- if (before_time) {
- cause = gsm48_rr_render_ma(ms, cdb, ma, &ma_len);
- if (cause)
- return gsm48_rr_tx_ass_fail(ms, cause, RSL_MT_DATA_REQ);
- }
- cause = gsm48_rr_render_ma(ms, cda, ma, &ma_len);
- if (cause)
- return gsm48_rr_tx_ass_fail(ms, cause, RSL_MT_DATA_REQ);
-
-#ifdef TEST_FREQUENCY_MOD
- LOGP(DRR, LOGL_INFO, " TESTING: frequency modify ASS.CMD\n");
- before_time = 1;
- memcpy(cdb, cda, sizeof(*cdb));
- cdb->h = 0;
- cdb->arfcn = 0;
-#endif
-
- /* schedule start of assignment */
- rr->modify_state = GSM48_RR_MOD_ASSIGN;
- if (!before_time && cda->start) {
- start_rr_t_starting(rr, start_mili / 1000, start_mili % 1000);
- /* when timer fires, start time is already elapsed */
- cda->start = 0;
-
- return 0;
- }
-
- /* if no starting time, start suspension of current link directly */
- LOGP(DRR, LOGL_INFO, "request suspension of data link\n");
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- gsm48_send_rsl(ms, RSL_MT_SUSP_REQ, nmsg);
-
- return 0;
-}
-
-/* 9.1.16 sending HANDOVER COMPLETE */
-static int gsm48_rr_tx_hando_cpl(struct osmocom_ms *ms, uint8_t cause)
-{
- struct msgb *nmsg;
- struct gsm48_hdr *gh;
- struct gsm48_ho_cpl *hc;
-
- LOGP(DRR, LOGL_INFO, "HANDOVER COMPLETE (cause #%d)\n", cause);
-
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- gh = (struct gsm48_hdr *) msgb_put(nmsg, sizeof(*gh));
- hc = (struct gsm48_ho_cpl *) msgb_put(nmsg, sizeof(*hc));
-
- gh->proto_discr = GSM48_PDISC_RR;
- gh->msg_type = GSM48_MT_RR_HANDO_COMPL;
-
- /* RR_CAUSE */
- hc->rr_cause = cause;
-
- // FIXME: mobile observed time
-
- return gsm48_send_rsl(ms, RSL_MT_RES_REQ, nmsg);
-}
-
-/* 9.1.4 sending HANDOVER FAILURE */
-static int gsm48_rr_tx_hando_fail(struct osmocom_ms *ms, uint8_t cause,
- uint8_t rsl_prim)
-{
- struct msgb *nmsg;
- struct gsm48_hdr *gh;
- struct gsm48_ho_fail *hf;
-
- LOGP(DRR, LOGL_INFO, "HANDOVER FAILURE (cause #%d)\n", cause);
-
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- gh = (struct gsm48_hdr *) msgb_put(nmsg, sizeof(*gh));
- hf = (struct gsm48_ho_fail *) msgb_put(nmsg, sizeof(*hf));
-
- gh->proto_discr = GSM48_PDISC_RR;
- gh->msg_type = GSM48_MT_RR_ASS_COMPL;
-
- /* RR_CAUSE */
- hf->rr_cause = cause;
-
- return gsm48_send_rsl(ms, rsl_prim, nmsg);
-}
-
-/* receiving HANDOVER COMMAND message (9.1.15) */
-static int gsm48_rr_rx_hando_cmd(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct gsm48_sysinfo *s = cs->si;
- struct gsm48_hdr *gh = msgb_l3(msg);
- struct gsm48_ho_cmd *ho = (struct gsm48_ho_cmd *)gh->data;
- int payload_len = msgb_l3len(msg) - sizeof(*gh) - sizeof(*ho);
- struct tlv_parsed tp;
- struct gsm48_rr_cd *cda = &rr->cd_after;
- struct gsm48_rr_cd *cdb = &rr->cd_before;
- uint16_t arfcn;
- uint8_t bcc, ncc;
- uint8_t ch_type, ch_subch, ch_ts;
- uint8_t before_time = 0;
- uint16_t ma[64];
- uint8_t ma_len;
- uint32_t start_mili = 0;
- uint8_t cause;
- struct msgb *nmsg;
-
- LOGP(DRR, LOGL_INFO, "HANDOVER COMMAND\n");
-
- memset(cda, 0, sizeof(*cda));
- cda->ind_tx_power = rr->cd_now.ind_tx_power;
- memset(cdb, 0, sizeof(*cdb));
- cdb->ind_tx_power = rr->cd_now.ind_tx_power;
-
- if (payload_len < 0) {
- LOGP(DRR, LOGL_NOTICE, "Short read of HANDOVER COMMAND "
- "message.\n");
- return gsm48_rr_tx_rr_status(ms,
- GSM48_RR_CAUSE_PROT_ERROR_UNSPC);
- }
-
- /* cell description */
- gsm48_decode_cell_desc(&ho->cell_desc, &arfcn, &ncc, &bcc);
-
- /* handover reference */
- rr->chan_req_val = ho->ho_ref;
- rr->chan_req_mask = 0x00;
-
- tlv_parse(&tp, &gsm48_rr_att_tlvdef, ho->data, payload_len, 0, 0);
-
- /* sync ind */
- if (TLVP_PRESENT(&tp, GSM48_IE_SYNC_IND)) {
- gsm48_decode_sync_ind(rr, (struct gsm48_sync_ind *)
- TLVP_VAL(&tp, GSM48_IE_SYNC_IND));
- LOGP(DRR, LOGL_INFO, " (sync_ind=%d rot=%d nci=%d)\n",
- rr->hando_sync_ind, rr->hando_rot, rr->hando_nci);
- }
-
- /* decode channel description (before time) */
- if (TLVP_PRESENT(&tp, GSM48_IE_CH_DESC_1_BEFORE)) {
- struct gsm48_chan_desc *ccd = (struct gsm48_chan_desc *)
- TLVP_VAL(&tp, GSM48_IE_CH_DESC_1_BEFORE);
- cdb->chan_nr = ccd->chan_nr;
- rsl_dec_chan_nr(cdb->chan_nr, &ch_type, &ch_subch, &ch_ts);
- if (ccd->h0.h) {
- cdb->h = 1;
- gsm48_decode_chan_h1(ccd, &cdb->tsc, &cdb->maio,
- &cdb->hsn);
- LOGP(DRR, LOGL_INFO, " before: (chan_nr 0x%02x MAIO %u "
- "HSN %u TS %u SS %u TSC %u)\n", ccd->chan_nr,
- cdb->maio, cdb->hsn, ch_ts, ch_subch, cdb->tsc);
- } else {
- cdb->h = 0;
- gsm48_decode_chan_h0(ccd, &cdb->tsc, &cdb->arfcn);
- if (gsm_refer_pcs(cs->arfcn, s))
- cdb->arfcn |= ARFCN_PCS;
- LOGP(DRR, LOGL_INFO, " before: (chan_nr 0x%02x "
- "ARFCN %s TS %u SS %u TSC %u)\n", ccd->chan_nr,
- gsm_print_arfcn(cdb->arfcn),
- ch_ts, ch_subch, cdb->tsc);
- }
- before_time = 1;
- }
-
- /* decode channel description (after time) */
- cda->chan_nr = ho->chan_desc.chan_nr;
- rsl_dec_chan_nr(cda->chan_nr, &ch_type, &ch_subch, &ch_ts);
- if (ho->chan_desc.h0.h) {
- cda->h = 1;
- gsm48_decode_chan_h1(&ho->chan_desc, &cda->tsc, &cda->maio,
- &cda->hsn);
- LOGP(DRR, LOGL_INFO, " after: (chan_nr 0x%02x MAIO %u HSN %u "
- "TS %u SS %u TSC %u)\n", ho->chan_desc.chan_nr,
- cda->maio, cda->hsn, ch_ts, ch_subch, cda->tsc);
- } else {
- cda->h = 0;
- gsm48_decode_chan_h0(&ho->chan_desc, &cda->tsc, &cda->arfcn);
- if (gsm_refer_pcs(cs->arfcn, s))
- cda->arfcn |= ARFCN_PCS;
- LOGP(DRR, LOGL_INFO, " after: (chan_nr 0x%02x ARFCN %s TS %u "
- "SS %u TSC %u)\n", ho->chan_desc.chan_nr,
- gsm_print_arfcn(cda->arfcn), ch_ts, ch_subch, cda->tsc);
- }
-
- /* starting time */
-#ifdef TEST_STARTING_TIMER
- cda->start = 1;
- cda->start_tm.fn = (ms->meas.last_fn + TEST_STARTING_TIMER) % 42432;
- LOGP(DRR, LOGL_INFO, " TESTING: starting time ahead\n");
-#else
- if (TLVP_PRESENT(&tp, GSM48_IE_START_TIME)) {
- gsm48_decode_start_time(cda, (struct gsm48_start_time *)
- TLVP_VAL(&tp, GSM48_IE_START_TIME));
- /* 9.1.2.5 "... before time IE is not present..." */
- if (!before_time) {
- LOGP(DRR, LOGL_INFO, " -> channel description after "
- "time only, but starting time\n");
- } else
- LOGP(DRR, LOGL_INFO, " -> channel description before "
- "and after time\n");
- } else {
- /* 9.1.2.5 "... IEs unnecessary in this message." */
- if (before_time) {
- before_time = 0;
- LOGP(DRR, LOGL_INFO, " -> channel description before "
- "time, but no starting time, ignoring!\n");
- }
- }
-#endif
-
- /* mobile allocation / frequency list after time */
- if (cda->h) {
- if (TLVP_PRESENT(&tp, GSM48_IE_MA_AFTER)) {
- const uint8_t *lv =
- TLVP_VAL(&tp, GSM48_IE_MA_AFTER) - 1;
-
- LOGP(DRR, LOGL_INFO, " after: hopping required and "
- "mobile allocation available\n");
- if (*lv + 1 > sizeof(cda->mob_alloc_lv)) {
- LOGP(DRR, LOGL_ERROR, "Error: no LV space!\n");
- return -ENOMEM;
- }
- memcpy(cda->mob_alloc_lv, lv, *lv + 1);
- } else
- if (TLVP_PRESENT(&tp, GSM48_IE_FREQ_L_AFTER)) {
- const uint8_t *lv =
- TLVP_VAL(&tp, GSM48_IE_FREQ_L_AFTER) - 1;
-
- LOGP(DRR, LOGL_INFO, " after: hopping required and "
- "frequency list available\n");
- if (*lv + 1 > sizeof(cda->freq_list_lv)) {
- LOGP(DRR, LOGL_ERROR, "Error: no LV space!\n");
- return -ENOMEM;
- }
- memcpy(cda->freq_list_lv, lv, *lv + 1);
- } else {
- LOGP(DRR, LOGL_NOTICE, " after: hopping required, but "
- "no mobile allocation / frequency list\n");
- }
- }
-
- /* mobile allocation / frequency list before time */
- if (cdb->h) {
- if (TLVP_PRESENT(&tp, GSM48_IE_MA_BEFORE)) {
- const uint8_t *lv =
- TLVP_VAL(&tp, GSM48_IE_MA_BEFORE) - 1;
-
- LOGP(DRR, LOGL_INFO, " before: hopping required and "
- "mobile allocation available\n");
- if (*lv + 1 > sizeof(cdb->mob_alloc_lv)) {
- LOGP(DRR, LOGL_ERROR, "Error: no LV space!\n");
- return -ENOMEM;
- }
- memcpy(cdb->mob_alloc_lv, lv, *lv + 1);
- } else
- if (TLVP_PRESENT(&tp, GSM48_IE_FREQ_L_BEFORE)) {
- const uint8_t *lv =
- TLVP_VAL(&tp, GSM48_IE_FREQ_L_BEFORE) - 1;
-
- LOGP(DRR, LOGL_INFO, " before: hopping required and "
- "frequency list available\n");
- if (*lv + 1 > sizeof(cdb->freq_list_lv)) {
- LOGP(DRR, LOGL_ERROR, "Error: no LV space!\n");
- return -ENOMEM;
- }
- memcpy(cdb->freq_list_lv, lv, *lv + 1);
- } else
- if (TLVP_PRESENT(&tp, GSM48_IE_F_CH_SEQ_BEFORE)) {
- const uint8_t *v =
- TLVP_VAL(&tp, GSM48_IE_F_CH_SEQ_BEFORE);
- uint8_t len = TLVP_LEN(&tp, GSM48_IE_F_CH_SEQ_BEFORE);
-
- LOGP(DRR, LOGL_INFO, " before: hopping required and "
- "frequency channel sequence available\n");
- if (len + 1 > sizeof(cdb->freq_seq_lv)) {
- LOGP(DRR, LOGL_ERROR, "Error: no LV space!\n");
- return -ENOMEM;
- }
- cdb->freq_seq_lv[0] = len;
- memcpy(cdb->freq_seq_lv, v + 1, *v);
- } else
- if (cda->mob_alloc_lv[0]) {
- LOGP(DRR, LOGL_INFO, " before: hopping required and "
- "mobile allocation not available, using "
- "mobile allocation after time\n");
- memcpy(cdb->mob_alloc_lv, cda->mob_alloc_lv,
- sizeof(cdb->mob_alloc_lv));
- } else
- if (cda->freq_list_lv[0]) {
- LOGP(DRR, LOGL_INFO, " before: hopping required and "
- "frequency list not available, using "
- "frequency list after time\n");
- memcpy(cdb->freq_list_lv, cda->freq_list_lv,
- sizeof(cdb->freq_list_lv));
- } else {
- LOGP(DRR, LOGL_NOTICE, " before: hopping required, but "
- "no mobile allocation / frequency list\n");
- }
- }
-
- /* cell channel description */
- if (TLVP_PRESENT(&tp, GSM48_IE_CELL_CH_DESC)) {
- const uint8_t *v = TLVP_VAL(&tp, GSM48_IE_CELL_CH_DESC);
- uint8_t len = TLVP_LEN(&tp, GSM48_IE_CELL_CH_DESC);
-
- LOGP(DRR, LOGL_INFO, " both: using cell channel description "
- "in case of mobile allocation\n");
- if (len + 1 > sizeof(cdb->cell_desc_lv)) {
- LOGP(DRR, LOGL_ERROR, "Error: no LV space!\n");
- return -ENOMEM;
- }
- cdb->cell_desc_lv[0] = len;
- memcpy(cdb->cell_desc_lv + 1, v, len);
- cda->cell_desc_lv[0] = len;
- memcpy(cda->cell_desc_lv + 1, v, len);
- } else {
- /* keep old */
- memcpy(cdb->cell_desc_lv, rr->cd_now.cell_desc_lv,
- sizeof(cdb->cell_desc_lv));
- memcpy(cda->cell_desc_lv, rr->cd_now.cell_desc_lv,
- sizeof(cda->cell_desc_lv));
- }
-
- /* channel mode */
- if (TLVP_PRESENT(&tp, GSM48_IE_CHANMODE_1)) {
- cda->mode = cdb->mode = *TLVP_VAL(&tp, GSM48_IE_CHANMODE_1);
- LOGP(DRR, LOGL_INFO, " both: changing channel mode 0x%02x\n",
- cda->mode);
- } else
- cda->mode = cdb->mode = rr->cd_now.mode;
-
- /* cipher mode setting */
- if (TLVP_PRESENT(&tp, GSM48_IE_CIP_MODE_SET)) {
- cda->cipher = cdb->cipher =
- *TLVP_VAL(&tp, GSM48_IE_CIP_MODE_SET);
- LOGP(DRR, LOGL_INFO, " both: changing cipher mode 0x%02x\n",
- cda->cipher);
- } else
- cda->cipher = cdb->cipher = rr->cd_now.cipher;
-
- /* power command and TA (before and after time) */
- gsm48_decode_power_cmd_acc(
- (struct gsm48_power_cmd *) &ho->power_command,
- &cda->ind_tx_power, &rr->hando_act);
- cdb->ind_tx_power = cda->ind_tx_power;
- cda->ind_ta = cdb->ind_ta = rr->cd_now.ind_ta; /* same cell */
- LOGP(DRR, LOGL_INFO, " both: (tx_power %d TA %d access=%s)\n",
- cda->ind_tx_power, cda->ind_ta,
- (rr->hando_act) ? "optional" : "mandatory");
-
- /* check if we have to change channel at starting time */
- if (cda->start) {
- int32_t now, start, diff;
-
- /* how much time do we have left? */
- now = ms->meas.last_fn % 42432;
- start = cda->start_tm.fn % 42432;
- diff = start - now;
- if (diff < 0)
- diff += 42432;
- LOGP(DRR, LOGL_INFO, " after: (Tnow %d Tstart %d diff %d)\n",
- now, start, diff);
- start_mili = (uint32_t)diff * 19580 / 42432 * 10;
- if (diff >= 32024 || !start_mili) {
- LOGP(DRR, LOGL_INFO, " -> Start time already "
- "elapsed\n");
- before_time = 0;
- cda->start = 0;
- } else {
- LOGP(DRR, LOGL_INFO, " -> Start time is %d ms in the "
- "future\n", start_mili);
- }
- }
-
- /* check if channels are valid */
- if (before_time) {
- cause = gsm48_rr_render_ma(ms, cdb, ma, &ma_len);
- if (cause)
- return gsm48_rr_tx_hando_fail(ms, cause, RSL_MT_DATA_REQ);
- }
- cause = gsm48_rr_render_ma(ms, cda, ma, &ma_len);
- if (cause)
- return gsm48_rr_tx_hando_fail(ms, cause, RSL_MT_DATA_REQ);
-
-
-#if 0
- if (not supported) {
- LOGP(DRR, LOGL_NOTICE, "New channel is not supported.\n");
- return GSM48_RR_CAUSE_CHAN_MODE_UNACCEPT;
- }
-#endif
-
-#ifdef TEST_FREQUENCY_MOD
- LOGP(DRR, LOGL_INFO, " TESTING: frequency modify HANDO.CMD\n");
- before_time = 1;
- memcpy(cdb, cda, sizeof(*cdb));
- cdb->h = 0;
- cdb->arfcn = 0;
-#endif
-
- /* schedule start of handover */
- rr->modify_state = GSM48_RR_MOD_HANDO;
- if (!before_time && cda->start) {
- start_rr_t_starting(rr, start_mili / 1000, start_mili % 1000);
- /* when timer fires, start time is already elapsed */
- cda->start = 0;
-
- return 0;
- }
-
- /* if no starting time, start suspension of current link directly */
- LOGP(DRR, LOGL_INFO, "request suspension of data link\n");
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- gsm48_send_rsl(ms, RSL_MT_SUSP_REQ, nmsg);
-
- return 0;
-}
-
-/* send all queued messages down to layer 2 */
-static int gsm48_rr_dequeue_down(struct osmocom_ms *ms)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- struct msgb *msg;
-
- while((msg = msgb_dequeue(&rr->downqueue))) {
- LOGP(DRR, LOGL_INFO, "Sending queued message.\n");
- gsm48_send_rsl(ms, RSL_MT_DATA_REQ, msg);
- }
-
- return 0;
-}
-
-/* channel is resumed in dedicated mode */
-static int gsm48_rr_estab_cnf_dedicated(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
-
- LOGP(DRR, LOGL_INFO, "data link is resumed\n");
-
- /* transmit queued frames during ho / ass transition */
- gsm48_rr_dequeue_down(ms);
-
- rr->modify_state = GSM48_RR_MOD_NONE;
-
- return 0;
-}
-
-/* suspend confirm in dedicated mode */
-static int gsm48_rr_susp_cnf_dedicated(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
-
- if (rr->modify_state) {
- uint16_t ma[64];
- uint8_t ma_len;
-
- /* deactivating dedicated mode */
- LOGP(DRR, LOGL_INFO, "suspension coplete, leaving dedicated "
- "mode\n");
- l1ctl_tx_dm_rel_req(ms);
- ms->meas.rl_fail = 0;
- rr->dm_est = 0;
- l1ctl_tx_reset_req(ms, L1CTL_RES_T_SCHED);
-
- /* store current channel descriptions */
- memcpy(&rr->cd_last, &rr->cd_now, sizeof(rr->cd_last));
-
- /* copy channel description "after time" */
- memcpy(&rr->cd_now, &rr->cd_after, sizeof(rr->cd_now));
-
- if (rr->cd_after.start) {
- /* render channel "before time" */
- gsm48_rr_render_ma(ms, &rr->cd_before, ma, &ma_len);
-
- /* activate channel */
- gsm48_rr_activate_channel(ms, &rr->cd_before, ma,
- ma_len);
-
- /* render channel "after time" */
- gsm48_rr_render_ma(ms, &rr->cd_now, ma, &ma_len);
-
- /* schedule change of channel */
- gsm48_rr_channel_after_time(ms, &rr->cd_now, ma, ma_len,
- rr->cd_now.start_tm.fn);
- } else {
- /* render channel "after time" */
- gsm48_rr_render_ma(ms, &rr->cd_now, ma, &ma_len);
-
- /* activate channel */
- gsm48_rr_activate_channel(ms, &rr->cd_now, ma, ma_len);
- }
-
- /* send DL-RESUME REQUEST */
- LOGP(DRR, LOGL_INFO, "request resume of data link\n");
- switch (rr->modify_state) {
- case GSM48_RR_MOD_ASSIGN:
- gsm48_rr_tx_ass_cpl(ms, GSM48_RR_CAUSE_NORMAL);
- break;
- case GSM48_RR_MOD_HANDO:
- gsm48_rr_tx_hando_cpl(ms, GSM48_RR_CAUSE_NORMAL);
- break;
- }
-
-#ifdef TODO
- /* trigger RACH */
- if (rr->modify_state == GSM48_RR_MOD_HANDO) {
- gsm48_rr_tx_hando_access(ms);
- rr->hando_acc_left = 3;
- }
-#endif
- }
- return 0;
-}
-
-/*
- * radio ressource requests
- */
-
-/* establish request for dedicated mode */
-static int gsm48_rr_est_req(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct gsm48_sysinfo *s = &cs->sel_si;
- struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm48_rr_hdr *rrh = (struct gsm48_rr_hdr *) msg->data;
- struct gsm48_hdr *gh = msgb_l3(msg);
- uint8_t cause;
- struct msgb *nmsg;
- struct gsm48_rr_hdr *nrrh;
- uint16_t acc_class;
-
- /* 3.3.1.1.3.2 */
- if (osmo_timer_pending(&rr->t3122)) {
- if (rrh->cause != RR_EST_CAUSE_EMERGENCY) {
- LOGP(DRR, LOGL_INFO, "T3122 running, rejecting!\n");
- cause = RR_REL_CAUSE_T3122;
- reject:
- LOGP(DSUM, LOGL_INFO, "Establishing radio link not "
- "possible\n");
- nmsg = gsm48_rr_msgb_alloc(GSM48_RR_REL_IND);
- if (!nmsg)
- return -ENOMEM;
- nrrh = (struct gsm48_rr_hdr *)nmsg->data;
- nrrh->cause = cause;
- return gsm48_rr_upmsg(ms, nmsg);
- }
- LOGP(DRR, LOGL_INFO, "T3122 running, but emergency call\n");
- stop_rr_t3122(rr);
- }
-
- /* if state is not idle */
- if (rr->state != GSM48_RR_ST_IDLE) {
- LOGP(DRR, LOGL_INFO, "We are not IDLE yet, rejecting!\n");
- cause = RR_REL_CAUSE_TRY_LATER;
- goto reject;
- }
-
- /* cell selected */
- if (!cs->selected) {
- LOGP(DRR, LOGL_INFO, "No cell selected, rejecting!\n");
- cause = RR_REL_CAUSE_TRY_LATER;
- goto reject;
- }
-
- /* check if camping */
- if (cs->state != GSM322_C3_CAMPED_NORMALLY
- && rrh->cause != RR_EST_CAUSE_EMERGENCY) {
- LOGP(DRR, LOGL_INFO, "Not camping normally, rejecting! "
- "(cs->state = %d)\n", cs->state);
- cause = RR_REL_CAUSE_EMERGENCY_ONLY;
- goto reject;
- }
- if (cs->state != GSM322_C3_CAMPED_NORMALLY
- && cs->state != GSM322_C7_CAMPED_ANY_CELL) {
- LOGP(DRR, LOGL_INFO, "Not camping, rejecting! "
- "(cs->state = %d)\n", cs->state);
- cause = RR_REL_CAUSE_TRY_LATER;
- goto reject;
- }
-
- /* check for relevant informations */
- if (!s->si3) {
- LOGP(DRR, LOGL_INFO, "Not enough SI, rejecting!\n");
- cause = RR_REL_CAUSE_TRY_LATER;
- goto reject;
- }
-
- /* 3.3.1.1.1 */
- if (!subscr->acc_barr && s->cell_barr) {
- LOGP(DRR, LOGL_INFO, "Cell barred, rejecting!\n");
- cause = RR_REL_CAUSE_NOT_AUTHORIZED;
- goto reject;
- }
- if (rrh->cause == RR_EST_CAUSE_EMERGENCY)
- acc_class = subscr->acc_class | 0x0400;
- else
- acc_class = subscr->acc_class & 0xfbff;
- if (!subscr->acc_barr && !(acc_class & (s->class_barr ^ 0xffff))) {
- LOGP(DRR, LOGL_INFO, "Cell barred for our access class (access "
- "%04x barred %04x)!\n", acc_class, s->class_barr);
- cause = RR_REL_CAUSE_NOT_AUTHORIZED;
- goto reject;
- }
-
- /* requested by RR */
- rr->rr_est_req = 1;
-
- /* clone and store REQUEST message */
- if (!gh) {
- LOGP(DRR, LOGL_ERROR, "Error, missing l3 message\n");
- return -EINVAL;
- }
- rr->rr_est_msg = gsm48_l3_msgb_alloc();
- if (!rr->rr_est_msg)
- return -ENOMEM;
- memcpy(msgb_put(rr->rr_est_msg, msgb_l3len(msg)),
- msgb_l3(msg), msgb_l3len(msg));
-
- /* request channel */
- return gsm48_rr_chan_req(ms, rrh->cause, 0);
-}
-
-/* 3.4.2 transfer data in dedicated mode */
-static int gsm48_rr_data_req(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
-
- if (rr->state != GSM48_RR_ST_DEDICATED) {
- msgb_free(msg);
- return -EINVAL;
- }
-
- /* pull RR header */
- msgb_pull(msg, sizeof(struct gsm48_rr_hdr));
-
- /* set sequence number and increment */
- gsm48_apply_v_sd(rr, msg);
-
- /* queue message, during handover or assignment procedure */
- if (rr->modify_state == GSM48_RR_MOD_ASSIGN
- || rr->modify_state == GSM48_RR_MOD_HANDO) {
- LOGP(DRR, LOGL_INFO, "Queueing message during suspend.\n");
- msgb_enqueue(&rr->downqueue, msg);
- return 0;
- }
-
- /* forward message */
- return gsm48_send_rsl(ms, RSL_MT_DATA_REQ, msg);
-}
-
-/*
- * data indications from data link
- */
-
-/* 3.4.2 data from layer 2 to RR and upper layer*/
-static int gsm48_rr_data_ind(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_hdr *gh = msgb_l3(msg);
- struct gsm48_rr_hdr *rrh;
- uint8_t pdisc = gh->proto_discr & 0x0f;
-
- if (pdisc == GSM48_PDISC_RR) {
- int rc = -EINVAL;
- uint8_t skip_ind = (gh->proto_discr & 0xf0) >> 4;
-
- /* ignore if skip indicator is not B'0000' */
- if (skip_ind)
- return 0;
-
- switch(gh->msg_type) {
- case GSM48_MT_RR_ADD_ASS:
- rc = gsm48_rr_rx_add_ass(ms, msg);
- break;
- case GSM48_MT_RR_ASS_CMD:
- rc = gsm48_rr_rx_ass_cmd(ms, msg);
- break;
- case GSM48_MT_RR_CIPH_M_CMD:
- rc = gsm48_rr_rx_cip_mode_cmd(ms, msg);
- break;
- case GSM48_MT_RR_CLSM_ENQ:
- rc = gsm48_rr_rx_cm_enq(ms, msg);
- break;
- case GSM48_MT_RR_CHAN_MODE_MODIF:
- rc = gsm48_rr_rx_chan_modify(ms, msg);
- break;
- case GSM48_MT_RR_HANDO_CMD:
- rc = gsm48_rr_rx_hando_cmd(ms, msg);
- break;
- case GSM48_MT_RR_FREQ_REDEF:
- rc = gsm48_rr_rx_frq_redef(ms, msg);
- break;
- case GSM48_MT_RR_CHAN_REL:
- rc = gsm48_rr_rx_chan_rel(ms, msg);
- break;
- case GSM48_MT_RR_APP_INFO:
- LOGP(DRR, LOGL_NOTICE, "APP INFO not supported!\n");
- break;
- default:
- LOGP(DRR, LOGL_NOTICE, "Message type 0x%02x unknown.\n",
- gh->msg_type);
-
- /* status message */
- gsm48_rr_tx_rr_status(ms, GSM48_RR_CAUSE_MSG_TYPE_N);
- }
-
- msgb_free(msg);
- return rc;
- }
-
- /* pull off RSL header up to L3 message */
- msgb_pull(msg, (long)msgb_l3(msg) - (long)msg->data);
-
- /* push RR header */
- msgb_push(msg, sizeof(struct gsm48_rr_hdr));
- rrh = (struct gsm48_rr_hdr *)msg->data;
- rrh->msg_type = GSM48_RR_DATA_IND;
-
- return gsm48_rr_upmsg(ms, msg);
-}
-
-/* receive BCCH at RR layer */
-static int gsm48_rr_rx_bcch(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_system_information_type_header *sih = msgb_l3(msg);
-
- switch (sih->system_information) {
- case GSM48_MT_RR_SYSINFO_1:
- return gsm48_rr_rx_sysinfo1(ms, msg);
- case GSM48_MT_RR_SYSINFO_2:
- return gsm48_rr_rx_sysinfo2(ms, msg);
- case GSM48_MT_RR_SYSINFO_2bis:
- return gsm48_rr_rx_sysinfo2bis(ms, msg);
- case GSM48_MT_RR_SYSINFO_2ter:
- return gsm48_rr_rx_sysinfo2ter(ms, msg);
- case GSM48_MT_RR_SYSINFO_3:
- return gsm48_rr_rx_sysinfo3(ms, msg);
- case GSM48_MT_RR_SYSINFO_4:
- return gsm48_rr_rx_sysinfo4(ms, msg);
- default:
-#if 0
- LOGP(DRR, LOGL_NOTICE, "BCCH message type 0x%02x not sup.\n",
- sih->system_information);
-#endif
- return -EINVAL;
- }
-}
-
-/* receive CCCH at RR layer */
-static int gsm48_rr_rx_pch_agch(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_system_information_type_header *sih = msgb_l3(msg);
-
- switch (sih->system_information) {
- case GSM48_MT_RR_PAG_REQ_1:
- return gsm48_rr_rx_pag_req_1(ms, msg);
- case GSM48_MT_RR_PAG_REQ_2:
- return gsm48_rr_rx_pag_req_2(ms, msg);
- case GSM48_MT_RR_PAG_REQ_3:
- return gsm48_rr_rx_pag_req_3(ms, msg);
-
- case GSM48_MT_RR_IMM_ASS:
- return gsm48_rr_rx_imm_ass(ms, msg);
- case GSM48_MT_RR_IMM_ASS_EXT:
- return gsm48_rr_rx_imm_ass_ext(ms, msg);
- case GSM48_MT_RR_IMM_ASS_REJ:
- return gsm48_rr_rx_imm_ass_rej(ms, msg);
- default:
-#if 0
- LOGP(DRR, LOGL_NOTICE, "CCCH message type 0x%02x unknown.\n",
- sih->system_information);
-#endif
- return -EINVAL;
- }
-}
-
-/* receive ACCH at RR layer */
-static int gsm48_rr_rx_acch(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- struct gsm_settings *set = &ms->settings;
- struct abis_rsl_rll_hdr *rllh = msgb_l2(msg);
- struct gsm48_system_information_type_header *sih = msgb_l3(msg);
- uint8_t ind_ta, ind_tx_power;
-
- if (msgb_l2len(msg) < sizeof(*rllh) + 2 + 2) {
- LOGP(DRR, LOGL_ERROR, "Missing TA and TX_POWER IEs\n");
- return -EINVAL;
- }
-
- ind_ta = rllh->data[1];
- ind_tx_power = rllh->data[3];
- LOGP(DRR, LOGL_INFO, "Indicated ta %d (actual ta %d)\n",
- ind_ta, ind_ta - set->alter_delay);
- LOGP(DRR, LOGL_INFO, "Indicated tx_power %d\n",
- ind_tx_power);
- if (ind_ta != rr->cd_now.ind_ta
- || ind_tx_power != rr->cd_now.ind_tx_power) {
- LOGP(DRR, LOGL_INFO, "setting new ta and tx_power\n");
- l1ctl_tx_param_req(ms, ind_ta - set->alter_delay,
- (set->alter_tx_power) ? set->alter_tx_power_value
- : ind_tx_power);
- rr->cd_now.ind_ta = ind_ta;
- rr->cd_now.ind_tx_power = ind_tx_power;
- }
-
- switch (sih->system_information) {
- case GSM48_MT_RR_SYSINFO_5:
- return gsm48_rr_rx_sysinfo5(ms, msg);
- case GSM48_MT_RR_SYSINFO_5bis:
- return gsm48_rr_rx_sysinfo5bis(ms, msg);
- case GSM48_MT_RR_SYSINFO_5ter:
- return gsm48_rr_rx_sysinfo5ter(ms, msg);
- case GSM48_MT_RR_SYSINFO_6:
- return gsm48_rr_rx_sysinfo6(ms, msg);
- default:
- LOGP(DRR, LOGL_NOTICE, "ACCH message type 0x%02x unknown.\n",
- sih->system_information);
- return -EINVAL;
- }
-}
-
-/* unit data from layer 2 to RR layer */
-static int gsm48_rr_unit_data_ind(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm322_cellsel *cs = &ms->cellsel;
- struct abis_rsl_rll_hdr *rllh = msgb_l2(msg);
- struct tlv_parsed tv;
- uint8_t ch_type, ch_subch, ch_ts;
-
- DEBUGP(DRSL, "RSLms UNIT DATA IND chan_nr=0x%02x link_id=0x%02x\n",
- rllh->chan_nr, rllh->link_id);
-
- rsl_tlv_parse(&tv, rllh->data, msgb_l2len(msg)-sizeof(*rllh));
- if (!TLVP_PRESENT(&tv, RSL_IE_L3_INFO)) {
- DEBUGP(DRSL, "UNIT_DATA_IND without L3 INFO ?!?\n");
- return -EIO;
- }
- msg->l3h = (uint8_t *) TLVP_VAL(&tv, RSL_IE_L3_INFO);
-
- if (cs->ccch_state != GSM322_CCCH_ST_SYNC
- && cs->ccch_state != GSM322_CCCH_ST_DATA)
- return -EINVAL;
-
- /* temporary moved here until confirm is fixed */
- if (cs->ccch_state != GSM322_CCCH_ST_DATA) {
- LOGP(DCS, LOGL_INFO, "Channel provides data.\n");
- cs->ccch_state = GSM322_CCCH_ST_DATA;
-
- /* in dedicated mode */
- if (ms->rrlayer.state == GSM48_RR_ST_CONN_PEND)
- return gsm48_rr_tx_rand_acc(ms, NULL);
-
- /* set timer for reading BCCH */
- if (cs->state == GSM322_C2_STORED_CELL_SEL
- || cs->state == GSM322_C1_NORMAL_CELL_SEL
- || cs->state == GSM322_C6_ANY_CELL_SEL
- || cs->state == GSM322_C4_NORMAL_CELL_RESEL
- || cs->state == GSM322_C8_ANY_CELL_RESEL
- || cs->state == GSM322_C5_CHOOSE_CELL
- || cs->state == GSM322_C9_CHOOSE_ANY_CELL
- || cs->state == GSM322_PLMN_SEARCH
- || cs->state == GSM322_HPLMN_SEARCH)
- start_cs_timer(cs, ms->support.scan_to, 0);
- // TODO: timer depends on BCCH config
- }
-
- rsl_dec_chan_nr(rllh->chan_nr, &ch_type, &ch_subch, &ch_ts);
- switch (ch_type) {
- case RSL_CHAN_PCH_AGCH:
- return gsm48_rr_rx_pch_agch(ms, msg);
- case RSL_CHAN_BCCH:
- return gsm48_rr_rx_bcch(ms, msg);
- case RSL_CHAN_Bm_ACCHs:
- case RSL_CHAN_Lm_ACCHs:
- case RSL_CHAN_SDCCH4_ACCH:
- case RSL_CHAN_SDCCH8_ACCH:
- return gsm48_rr_rx_acch(ms, msg);
- default:
- LOGP(DRSL, LOGL_NOTICE, "RSL with chan_nr 0x%02x unknown.\n",
- rllh->chan_nr);
- return -EINVAL;
- }
-}
-
-/* 3.4.13.3 RR abort in dedicated mode (also in conn. pending mode) */
-static int gsm48_rr_abort_req(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- uint8_t *mode;
-
- /* stop pending RACH timer */
- stop_rr_t3126(rr);
-
- /* release "normally" if we are in dedicated mode */
- if (rr->state == GSM48_RR_ST_DEDICATED) {
- struct msgb *nmsg;
-
- LOGP(DRR, LOGL_INFO, "Abort in dedicated state, send release "
- "to layer 2.\n");
-
- new_rr_state(rr, GSM48_RR_ST_REL_PEND);
-
- /* release message */
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- mode = msgb_put(nmsg, 2);
- mode[0] = RSL_IE_RELEASE_MODE;
- mode[1] = 0; /* normal release */
- return gsm48_send_rsl_rel(ms, RSL_MT_REL_REQ, nmsg);
- }
-
- LOGP(DRR, LOGL_INFO, "Abort in connection pending state, return to "
- "idle state.\n");
- /* return idle */
- new_rr_state(rr, GSM48_RR_ST_IDLE);
-
- return 0;
-}
-
-/* release confirm */
-static int gsm48_rr_rel_cnf(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- struct msgb *nmsg;
- struct gsm48_rr_hdr *nrrh;
- uint8_t cause = RR_REL_CAUSE_NORMAL;
- uint16_t ma[64];
- uint8_t ma_len;
-
- /* switch back to old channel, if modify/ho failed */
- switch (rr->modify_state) {
- case GSM48_RR_MOD_ASSIGN:
- case GSM48_RR_MOD_HANDO:
- /* deactivate channel */
- l1ctl_tx_dm_rel_req(ms);
- ms->meas.rl_fail = 0;
- rr->dm_est = 0;
- l1ctl_tx_reset_req(ms, L1CTL_RES_T_SCHED);
-
- /* get old channel description */
- memcpy(&rr->cd_now, &rr->cd_last, sizeof(rr->cd_now));
-
- /* render and change radio to old channel */
- gsm48_rr_render_ma(ms, &rr->cd_now, ma, &ma_len);
- gsm48_rr_activate_channel(ms, &rr->cd_now, ma, ma_len);
-
- /* re-establish old link */
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- if (rr->modify_state == GSM48_RR_MOD_ASSIGN) {
- rr->modify_state = GSM48_RR_MOD_ASSIGN_RESUME;
- return gsm48_rr_tx_ass_fail(ms,
- GSM48_RR_CAUSE_ABNORMAL_UNSPEC,
- RSL_MT_RECON_REQ);
- } else {
- rr->modify_state = GSM48_RR_MOD_HANDO_RESUME;
- return gsm48_rr_tx_hando_fail(ms,
- GSM48_RR_CAUSE_ABNORMAL_UNSPEC,
- RSL_MT_RECON_REQ);
- }
- /* returns above */
- case GSM48_RR_MOD_ASSIGN_RESUME:
- case GSM48_RR_MOD_HANDO_RESUME:
- rr->modify_state = GSM48_RR_MOD_NONE;
- cause = RR_REL_CAUSE_LINK_FAILURE;
- break;
- }
-
- LOGP(DSUM, LOGL_INFO, "Requested channel aborted\n");
-
- /* stop T3211 if running */
- stop_rr_t3110(rr);
-
- /* send release indication */
- nmsg = gsm48_rr_msgb_alloc(GSM48_RR_REL_IND);
- if (!nmsg)
- return -ENOMEM;
- nrrh = (struct gsm48_rr_hdr *)nmsg->data;
- nrrh->cause = cause;
- gsm48_rr_upmsg(ms, nmsg);
-
- /* return idle */
- new_rr_state(rr, GSM48_RR_ST_IDLE);
- return 0;
-}
-
-/* MDL-ERROR */
-static int gsm48_rr_mdl_error_ind(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- struct abis_rsl_rll_hdr *rllh = msgb_l2(msg);
- struct msgb *nmsg;
- struct gsm48_rr_hdr *nrrh;
- uint8_t *mode;
- uint8_t cause = rllh->data[2];
-
- switch (cause) {
- case RLL_CAUSE_SEQ_ERR:
- case RLL_CAUSE_UNSOL_DM_RESP_MF:
- break;
- default:
- LOGP(DRR, LOGL_NOTICE, "MDL-Error (cause %d) ignoring\n",
- cause);
- }
-
- LOGP(DRR, LOGL_NOTICE, "MDL-Error (cause %d) aborting\n", cause);
-
- /* disconnect the main signalling link */
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- mode = msgb_put(nmsg, 2);
- mode[0] = RSL_IE_RELEASE_MODE;
- mode[1] = 1; /* local release */
- gsm48_send_rsl_rel(ms, RSL_MT_REL_REQ, nmsg);
-
- /* in case of modify/hando: wait for confirm */
- if (rr->modify_state)
- return 0;
-
- /* send abort ind to upper layer */
- nmsg = gsm48_rr_msgb_alloc(GSM48_RR_ABORT_IND);
- if (!nmsg)
- return -ENOMEM;
- nrrh = (struct gsm48_rr_hdr *)nmsg->data;
- nrrh->cause = RR_REL_CAUSE_LINK_FAILURE;
- gsm48_rr_upmsg(ms, nmsg);
-
- /* return idle */
- new_rr_state(rr, GSM48_RR_ST_IDLE);
- return 0;
-}
-
-/*
- * state machines
- */
-
-/* state trasitions for link layer messages (lower layer) */
-static struct dldatastate {
- uint32_t states;
- int type;
- int (*rout) (struct osmocom_ms *ms, struct msgb *msg);
-} dldatastatelist[] = {
- /* data transfer */
- {SBIT(GSM48_RR_ST_IDLE) |
- SBIT(GSM48_RR_ST_CONN_PEND) |
- SBIT(GSM48_RR_ST_DEDICATED) |
- SBIT(GSM48_RR_ST_REL_PEND),
- RSL_MT_UNIT_DATA_IND, gsm48_rr_unit_data_ind},
-
- {SBIT(GSM48_RR_ST_DEDICATED), /* 3.4.2 */
- RSL_MT_DATA_IND, gsm48_rr_data_ind},
-
- /* esablish */
- {SBIT(GSM48_RR_ST_IDLE) |
- SBIT(GSM48_RR_ST_CONN_PEND) |
- SBIT(GSM48_RR_ST_REL_PEND),
- RSL_MT_EST_CONF, gsm48_rr_estab_cnf},
-
- /* resume */
- {SBIT(GSM48_RR_ST_DEDICATED),
- RSL_MT_EST_CONF, gsm48_rr_estab_cnf_dedicated},
-
- /* release */
- {SBIT(GSM48_RR_ST_CONN_PEND) |
- SBIT(GSM48_RR_ST_DEDICATED),
- RSL_MT_REL_IND, gsm48_rr_rel_ind},
-
- {SBIT(GSM48_RR_ST_REL_PEND),
- RSL_MT_REL_CONF, gsm48_rr_rel_cnf},
-
- /* reconnect */
- {SBIT(GSM48_RR_ST_CONN_PEND) |
- SBIT(GSM48_RR_ST_DEDICATED),
- RSL_MT_REL_CONF, gsm48_rr_rel_cnf},
-
- /* suspenion */
- {SBIT(GSM48_RR_ST_DEDICATED),
- RSL_MT_SUSP_CONF, gsm48_rr_susp_cnf_dedicated},
-
-#if 0
- {SBIT(GSM48_RR_ST_DEDICATED),
- RSL_MT_CHAN_CNF, gsm48_rr_rand_acc_cnf_dedicated},
-#endif
-
- {SBIT(GSM48_RR_ST_DEDICATED),
- RSL_MT_ERROR_IND, gsm48_rr_mdl_error_ind},
-};
-
-#define DLDATASLLEN \
- (sizeof(dldatastatelist) / sizeof(struct dldatastate))
-
-static int gsm48_rcv_rll(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- struct abis_rsl_rll_hdr *rllh = msgb_l2(msg);
- int msg_type = rllh->c.msg_type;
- int i;
- int rc;
-
- if (msg_type != RSL_MT_UNIT_DATA_IND) {
- LOGP(DRSL, LOGL_INFO, "(ms %s) Received '%s' from L2 in state "
- "%s\n", ms->name, rsl_msg_name(msg_type),
- gsm48_rr_state_names[rr->state]);
- }
-
- /* find function for current state and message */
- for (i = 0; i < DLDATASLLEN; i++)
- if ((msg_type == dldatastatelist[i].type)
- && ((1 << rr->state) & dldatastatelist[i].states))
- break;
- if (i == DLDATASLLEN) {
- LOGP(DRSL, LOGL_NOTICE, "RSLms message unhandled\n");
- msgb_free(msg);
- return 0;
- }
-
- rc = dldatastatelist[i].rout(ms, msg);
-
- /* free msgb unless it is forwarded */
- if (dldatastatelist[i].rout != gsm48_rr_data_ind)
- msgb_free(msg);
-
- return rc;
-}
-
-static int gsm48_rcv_cch(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- struct abis_rsl_cchan_hdr *ch = msgb_l2(msg);
- int msg_type = ch->c.msg_type;
- int rc;
-
- LOGP(DRSL, LOGL_INFO, "(ms %s) Received '%s' from L2 in state "
- "%s\n", ms->name, rsl_msg_name(msg_type),
- gsm48_rr_state_names[rr->state]);
-
- if (rr->state == GSM48_RR_ST_CONN_PEND
- && msg_type == RSL_MT_CHAN_CONF) {
- rc = gsm48_rr_tx_rand_acc(ms, msg);
- msgb_free(msg);
- return rc;
- }
-
- LOGP(DRSL, LOGL_NOTICE, "RSLms message unhandled\n");
- msgb_free(msg);
- return 0;
-}
-
-
-/* input function for L2 messags up to L3 */
-static int gsm48_rcv_rsl(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct abis_rsl_common_hdr *rslh = msgb_l2(msg);
- int rc = 0;
-
- switch (rslh->msg_discr & 0xfe) {
- case ABIS_RSL_MDISC_RLL:
- rc = gsm48_rcv_rll(ms, msg);
- break;
- case ABIS_RSL_MDISC_COM_CHAN:
- rc = gsm48_rcv_cch(ms, msg);
- break;
- default:
- /* FIXME: implement this */
- LOGP(DRSL, LOGL_NOTICE, "unknown RSLms msg_discr 0x%02x\n",
- rslh->msg_discr);
- msgb_free(msg);
- rc = -EINVAL;
- break;
- }
-
- return rc;
-}
-
-/* state trasitions for RR-SAP messages from up */
-static struct rrdownstate {
- uint32_t states;
- int type;
- int (*rout) (struct osmocom_ms *ms, struct msgb *msg);
-} rrdownstatelist[] = {
- /* NOTE: If not IDLE, it is rejected there. */
- {ALL_STATES, /* 3.3.1.1 */
- GSM48_RR_EST_REQ, gsm48_rr_est_req},
-
- {SBIT(GSM48_RR_ST_DEDICATED), /* 3.4.2 */
- GSM48_RR_DATA_REQ, gsm48_rr_data_req},
-
- {SBIT(GSM48_RR_ST_CONN_PEND) |
- SBIT(GSM48_RR_ST_DEDICATED), /* 3.4.13.3 */
- GSM48_RR_ABORT_REQ, gsm48_rr_abort_req},
-};
-
-#define RRDOWNSLLEN \
- (sizeof(rrdownstatelist) / sizeof(struct rrdownstate))
-
-int gsm48_rr_downmsg(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- struct gsm48_rr_hdr *rrh = (struct gsm48_rr_hdr *) msg->data;
- int msg_type = rrh->msg_type;
- int i;
- int rc;
-
- LOGP(DRR, LOGL_INFO, "(ms %s) Message '%s' received in state %s\n",
- ms->name, get_rr_name(msg_type),
- gsm48_rr_state_names[rr->state]);
-
- /* find function for current state and message */
- for (i = 0; i < RRDOWNSLLEN; i++)
- if ((msg_type == rrdownstatelist[i].type)
- && ((1 << rr->state) & rrdownstatelist[i].states))
- break;
- if (i == RRDOWNSLLEN) {
- LOGP(DRR, LOGL_NOTICE, "Message unhandled at this state.\n");
- msgb_free(msg);
- return 0;
- }
-
- rc = rrdownstatelist[i].rout(ms, msg);
-
- /* free msgb uless it is forwarded */
- if (rrdownstatelist[i].rout != gsm48_rr_data_req)
- msgb_free(msg);
-
- return rc;
-}
-
-/*
- * init/exit
- */
-
-int gsm48_rr_init(struct osmocom_ms *ms)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
-
- memset(rr, 0, sizeof(*rr));
- rr->ms = ms;
-
- LOGP(DRR, LOGL_INFO, "init Radio Ressource process\n");
-
- INIT_LLIST_HEAD(&rr->rsl_upqueue);
- INIT_LLIST_HEAD(&rr->downqueue);
- /* downqueue is handled here, so don't add_work */
-
- lapdm_channel_set_l3(&ms->lapdm_channel, &rcv_rsl, ms);
-
- start_rr_t_meas(rr, 1, 0);
-
- rr->audio_mode = AUDIO_TX_MICROPHONE | AUDIO_RX_SPEAKER;
-
- return 0;
-}
-
-int gsm48_rr_exit(struct osmocom_ms *ms)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- struct msgb *msg;
-
- LOGP(DRR, LOGL_INFO, "exit Radio Ressource process\n");
-
- /* flush queues */
- while ((msg = msgb_dequeue(&rr->rsl_upqueue)))
- msgb_free(msg);
- while ((msg = msgb_dequeue(&rr->downqueue)))
- msgb_free(msg);
-
- if (rr->rr_est_msg) {
- msgb_free(rr->rr_est_msg);
- rr->rr_est_msg = NULL;
- }
-
- stop_rr_t_meas(rr);
- stop_rr_t_starting(rr);
- stop_rr_t_rel_wait(rr);
- stop_rr_t3110(rr);
- stop_rr_t3122(rr);
- stop_rr_t3124(rr);
- stop_rr_t3126(rr);
-
- return 0;
-}
-
-#if 0
-
-todo rr_sync_ind when receiving ciph, re ass, channel mode modify
-
-
-static void timeout_rr_t3124(void *arg)
-{
- struct gsm48_rrlayer *rr = arg;
- struct msgb *nmsg;
-
- /* stop sending more access bursts when timer expired */
- hando_acc_left = 0;
-
- /* get old channel description */
- memcpy(&rr->chan_desc, &rr->chan_last, sizeof(rr->chan_desc));
-
- /* change radio to old channel */
- tx_ph_dm_est_req(ms, rr->cd_now.arfcn, rr->cd_now.chan_nr,
- rr->cd_now.tsc);
- rr->dm_est = 1;
-
- /* re-establish old link */
- nmsg = gsm48_l3_msgb_alloc();
- if (!nmsg)
- return -ENOMEM;
- return gsm48_send_rsl(ms, RSL_MT_REEST_REQ, nmsg);
-
- todo
-}
-
-/* send HANDOVER ACCESS burst (9.1.14) */
-static int gsm48_rr_tx_hando_access(struct osmocom_ms *ms)
-{
- nmsg = msgb_alloc_headroom(20, 16, "HAND_ACCESS");
- if (!nmsg)
- return -ENOMEM;
- *msgb_put(nmsg, 1) = rr->hando_ref;
- todo burst
- return gsm48_send_rsl(ms, RSL_MT_RAND_ACC_REQ, nmsg);
-}
-
-/* send next channel request in dedicated state */
-static int gsm48_rr_rand_acc_cnf_dedicated(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- struct msgb *nmsg;
- int s;
-
- if (rr->modify_state != GSM48_RR_MOD_HANDO) {
- LOGP(DRR, LOGL_NOTICE, "Random acces confirm, but not in handover state.\n");
- return 0;
- }
-
- /* send up to four handover access bursts */
- if (rr->hando_acc_left) {
- rr->hando_acc_left--;
- gsm48_rr_tx_hando_access(ms);
- return;
- }
-
- /* start timer for sending next HANDOVER ACCESS bursts afterwards */
- if (!osmo_timer_pending(&rr->t3124)) {
- if (allocated channel is SDCCH)
- start_rr_t3124(rr, GSM_T3124_675);
- else
- start_rr_t3124(rr, GSM_T3124_320);
- }
- if (!rr->n_chan_req) {
- start_rr_t3126(rr, 5, 0); /* TODO improve! */
- return 0;
- }
- rr->n_chan_req--;
-
- /* wait for PHYSICAL INFORMATION message or T3124 timeout */
- return 0;
-
-}
-
-#endif
-
-int gsm48_rr_tx_voice(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- uint8_t ch_type, ch_subch, ch_ts;
-
- if (!rr->dm_est) {
- LOGP(DRR, LOGL_INFO, "Current channel is not active\n");
- msgb_free(msg);
- return -ENOTSUP;
- }
-
- rsl_dec_chan_nr(rr->cd_now.chan_nr, &ch_type, &ch_subch, &ch_ts);
- if (ch_type != RSL_CHAN_Bm_ACCHs) {
- LOGP(DRR, LOGL_INFO, "Current channel is not (yet) TCH/F\n");
- msgb_free(msg);
- return -ENOTSUP;
- }
-
- return l1ctl_tx_traffic_req(ms, msg, rr->cd_now.chan_nr,
- rr->cd_now.link_id);
-}
-
-int gsm48_rr_audio_mode(struct osmocom_ms *ms, uint8_t mode)
-{
- struct gsm48_rrlayer *rr = &ms->rrlayer;
- uint8_t ch_type, ch_subch, ch_ts;
-
- LOGP(DRR, LOGL_INFO, "setting audio mode to %d\n", mode);
-
- rr->audio_mode = mode;
-
- if (!rr->dm_est)
- return 0;
-
- rsl_dec_chan_nr(rr->cd_now.chan_nr, &ch_type, &ch_subch, &ch_ts);
- if (ch_type != RSL_CHAN_Bm_ACCHs
- && ch_type != RSL_CHAN_Lm_ACCHs)
- return 0;
-
- return l1ctl_tx_tch_mode_req(ms, rr->cd_now.mode, mode);
-}
-
diff --git a/Src/osmoconbb/src/host/layer23/src/mobile/main.c b/Src/osmoconbb/src/host/layer23/src/mobile/main.c
deleted file mode 100644
index ed961c5..0000000
--- a/Src/osmoconbb/src/host/layer23/src/mobile/main.c
+++ /dev/null
@@ -1,209 +0,0 @@
-/* Main method of the layer2/3 stack */
-
-/* (C) 2010 by Holger Hans Peter Freyther
- * (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <osmocom/bb/common/osmocom_data.h>
-#include <osmocom/bb/common/logging.h>
-#include <osmocom/bb/mobile/app_mobile.h>
-
-#include <osmocom/core/talloc.h>
-#include <osmocom/core/linuxlist.h>
-#include <osmocom/core/gsmtap_util.h>
-#include <osmocom/core/gsmtap.h>
-#include <osmocom/core/signal.h>
-
-#include <arpa/inet.h>
-
-#define _GNU_SOURCE
-#include <getopt.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <string.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <signal.h>
-#include <time.h>
-#include <libgen.h>
-
-struct log_target *stderr_target;
-
-void *l23_ctx = NULL;
-struct llist_head ms_list;
-static char *gsmtap_ip = 0;
-struct gsmtap_inst *gsmtap_inst = NULL;
-unsigned short vty_port = 4247;
-int debug_set = 0;
-char *config_dir = NULL;
-
-int mobile_delete(struct osmocom_ms *ms, int force);
-int mobile_signal_cb(unsigned int subsys, unsigned int signal,
- void *handler_data, void *signal_data);
-int mobile_work(struct osmocom_ms *ms);
-int mobile_exit(struct osmocom_ms *ms, int force);
-
-
-const char *openbsc_copyright =
- "Copyright (C) 2008-2010 ...\n"
- "Contributions by ...\n\n"
- "License GPLv2+: GNU GPL version 2 or later "
- "<http://gnu.org/licenses/gpl.html>\n"
- "This is free software: you are free to change and redistribute it.\n"
- "There is NO WARRANTY, to the extent permitted by law.\n";
-
-static void print_usage(const char *app)
-{
- printf("Usage: %s\n", app);
-}
-
-static void print_help()
-{
- printf(" Some help...\n");
- printf(" -h --help this text\n");
- printf(" -i --gsmtap-ip The destination IP used for GSMTAP.\n");
- printf(" -v --vty-port The VTY port number to telnet to. "
- "(default %u)\n", vty_port);
- printf(" -d --debug Change debug flags.\n");
-}
-
-static void handle_options(int argc, char **argv)
-{
- while (1) {
- int option_index = 0, c;
- static struct option long_options[] = {
- {"help", 0, 0, 'h'},
- {"gsmtap-ip", 1, 0, 'i'},
- {"vty-port", 1, 0, 'v'},
- {"debug", 1, 0, 'd'},
- {0, 0, 0, 0},
- };
-
- c = getopt_long(argc, argv, "hi:v:d:",
- long_options, &option_index);
- if (c == -1)
- break;
-
- switch (c) {
- case 'h':
- print_usage(argv[0]);
- print_help();
- exit(0);
- break;
- case 'i':
- gsmtap_ip = optarg;
- break;
- case 'v':
- vty_port = atoi(optarg);
- break;
- case 'd':
- log_parse_category_mask(stderr_target, optarg);
- debug_set = 1;
- break;
- default:
- break;
- }
- }
-}
-
-void sighandler(int sigset)
-{
- if (sigset == SIGHUP || sigset == SIGPIPE)
- return;
-
- fprintf(stderr, "Signal %d received.\n", sigset);
-
- /* in case there is a lockup during exit */
- signal(SIGINT, SIG_DFL);
- signal(SIGHUP, SIG_DFL);
- signal(SIGTERM, SIG_DFL);
- signal(SIGPIPE, SIG_DFL);
-
- osmo_signal_dispatch(SS_GLOBAL, S_GLOBAL_SHUTDOWN, NULL);
-}
-
-int main(int argc, char **argv)
-{
- int quit = 0;
- int rc;
- char const * home;
- size_t len;
- const char osmocomcfg[] = ".osmocom/bb/mobile.cfg";
- char *config_file = NULL;
-
- printf("%s\n", openbsc_copyright);
-
- srand(time(NULL));
-
- INIT_LLIST_HEAD(&ms_list);
- log_init(&log_info, NULL);
- stderr_target = log_target_create_stderr();
- log_add_target(stderr_target);
- log_set_all_filter(stderr_target, 1);
-
- l23_ctx = talloc_named_const(NULL, 1, "layer2 context");
-
- handle_options(argc, argv);
-
- if (!debug_set)
- log_parse_category_mask(stderr_target, "DCS:DNB:DPLMN:DRR:DMM:DSIM:DCC:DMNCC:DPAG:DSUM");
- log_set_log_level(stderr_target, LOGL_DEBUG);
-
- if (gsmtap_ip) {
- gsmtap_inst = gsmtap_source_init(gsmtap_ip, GSMTAP_UDP_PORT, 1);
- if (!gsmtap_inst) {
- fprintf(stderr, "Failed during gsmtap_init()\n");
- exit(1);
- }
- gsmtap_source_add_sink(gsmtap_inst);
- }
-
- home = getenv("HOME");
- if (home != NULL) {
- len = strlen(home) + 1 + sizeof(osmocomcfg);
- config_file = talloc_size(l23_ctx, len);
- if (config_file != NULL)
- snprintf(config_file, len, "%s/%s", home, osmocomcfg);
- }
- /* save the config file directory name */
- config_dir = talloc_strdup(l23_ctx, config_file);
- config_dir = dirname(config_dir);
-
- rc = l23_app_init(NULL, config_file, vty_port);
- if (rc)
- exit(rc);
-
- signal(SIGINT, sighandler);
- signal(SIGHUP, sighandler);
- signal(SIGTERM, sighandler);
- signal(SIGPIPE, sighandler);
-
- while (1) {
- l23_app_work(&quit);
- if (quit && llist_empty(&ms_list))
- break;
- osmo_select_main(0);
- }
-
- l23_app_exit();
-
- return 0;
-}
diff --git a/Src/osmoconbb/src/host/layer23/src/mobile/mnccms.c b/Src/osmoconbb/src/host/layer23/src/mobile/mnccms.c
deleted file mode 100644
index 8d3abe6..0000000
--- a/Src/osmoconbb/src/host/layer23/src/mobile/mnccms.c
+++ /dev/null
@@ -1,777 +0,0 @@
-/*
- * (C) 2010 by Andreas Eversberg <jolly@eversberg.eu>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <errno.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include <osmocom/core/talloc.h>
-
-#include <osmocom/bb/common/logging.h>
-#include <osmocom/bb/common/osmocom_data.h>
-#include <osmocom/bb/mobile/mncc.h>
-#include <osmocom/bb/mobile/vty.h>
-
-void *l23_ctx;
-static uint32_t new_callref = 1;
-static LLIST_HEAD(call_list);
-
-void mncc_set_cause(struct gsm_mncc *data, int loc, int val);
-static int dtmf_statemachine(struct gsm_call *call, struct gsm_mncc *mncc);
-static void timeout_dtmf(void *arg);
-int mncc_answer(struct osmocom_ms *ms);
-
-/*
- * support functions
- */
-
-/* DTMF timer */
-static void start_dtmf_timer(struct gsm_call *call, uint16_t ms)
-{
- LOGP(DCC, LOGL_INFO, "starting DTMF timer %d ms\n", ms);
- call->dtmf_timer.cb = timeout_dtmf;
- call->dtmf_timer.data = call;
- osmo_timer_schedule(&call->dtmf_timer, 0, ms * 1000);
-}
-
-static void stop_dtmf_timer(struct gsm_call *call)
-{
- if (osmo_timer_pending(&call->dtmf_timer)) {
- LOGP(DCC, LOGL_INFO, "stopping pending DTMF timer\n");
- osmo_timer_del(&call->dtmf_timer);
- }
-}
-
-/* free call instance */
-static void free_call(struct gsm_call *call)
-{
- stop_dtmf_timer(call);
-
- llist_del(&call->entry);
- DEBUGP(DMNCC, "(call %x) Call removed.\n", call->callref);
- talloc_free(call);
-}
-
-
-struct gsm_call *get_call_ref(uint32_t callref)
-{
- struct gsm_call *callt;
-
- llist_for_each_entry(callt, &call_list, entry) {
- if (callt->callref == callref)
- return callt;
- }
- return NULL;
-}
-
-static int8_t mncc_get_bearer(struct gsm_settings *set, uint8_t speech_ver)
-{
- switch (speech_ver) {
- case 4:
- if (set->full_v3)
- LOGP(DMNCC, LOGL_INFO, " net suggests full rate v3\n");
- else {
- LOGP(DMNCC, LOGL_INFO, " full rate v3 not supported\n");
- speech_ver = -1;
- }
- break;
- case 2:
- if (set->full_v2)
- LOGP(DMNCC, LOGL_INFO, " net suggests full rate v2\n");
- else {
- LOGP(DMNCC, LOGL_INFO, " full rate v2 not supported\n");
- speech_ver = -1;
- }
- break;
- case 0: /* mandatory */
- if (set->full_v1)
- LOGP(DMNCC, LOGL_INFO, " net suggests full rate v1\n");
- else {
- LOGP(DMNCC, LOGL_INFO, " full rate v1 not supported\n");
- speech_ver = -1;
- }
- break;
- case 5:
- if (set->half_v3)
- LOGP(DMNCC, LOGL_INFO, " net suggests half rate v3\n");
- else {
- LOGP(DMNCC, LOGL_INFO, " half rate v3 not supported\n");
- speech_ver = -1;
- }
- break;
- case 1:
- if (set->half_v1)
- LOGP(DMNCC, LOGL_INFO, " net suggests half rate v1\n");
- else {
- LOGP(DMNCC, LOGL_INFO, " half rate v1 not supported\n");
- speech_ver = -1;
- }
- break;
- default:
- LOGP(DMNCC, LOGL_INFO, " net suggests unknown speech version "
- "%d\n", speech_ver);
- speech_ver = -1;
- }
-
- return speech_ver;
-}
-
-static void mncc_set_bearer(struct osmocom_ms *ms, int8_t speech_ver,
- struct gsm_mncc *mncc)
-{
- struct gsm_settings *set = &ms->settings;
- int i = 0;
-
- mncc->fields |= MNCC_F_BEARER_CAP;
- mncc->bearer_cap.coding = 0;
- if (set->ch_cap == GSM_CAP_SDCCH_TCHF_TCHH
- && (set->half_v1 || set->half_v3)) {
- mncc->bearer_cap.radio = 3;
- LOGP(DMNCC, LOGL_INFO, " support TCH/H also\n");
- } else {
- mncc->bearer_cap.radio = 1;
- LOGP(DMNCC, LOGL_INFO, " support TCH/F only\n");
- }
- mncc->bearer_cap.speech_ctm = 0;
- /* if no specific speech_ver is given */
- if (speech_ver < 0) {
- /* if half rate is supported and prefered */
- if (set->half_v3 && set->half && set->half_prefer) {
- mncc->bearer_cap.speech_ver[i++] = 5;
- LOGP(DMNCC, LOGL_INFO, " support half rate v3\n");
- }
- if (set->half_v1 && set->half && set->half_prefer) {
- mncc->bearer_cap.speech_ver[i++] = 1;
- LOGP(DMNCC, LOGL_INFO, " support half rate v1\n");
- }
- /* if full rate is supported */
- if (set->full_v3) {
- mncc->bearer_cap.speech_ver[i++] = 4;
- LOGP(DMNCC, LOGL_INFO, " support full rate v3\n");
- }
- if (set->full_v2) {
- mncc->bearer_cap.speech_ver[i++] = 2;
- LOGP(DMNCC, LOGL_INFO, " support full rate v2\n");
- }
- if (set->full_v1) { /* mandatory, so it's always true */
- mncc->bearer_cap.speech_ver[i++] = 0;
- LOGP(DMNCC, LOGL_INFO, " support full rate v1\n");
- }
- /* if half rate is supported and not prefered */
- if (set->half_v3 && set->half && !set->half_prefer) {
- mncc->bearer_cap.speech_ver[i++] = 5;
- LOGP(DMNCC, LOGL_INFO, " support half rate v3\n");
- }
- if (set->half_v1 && set->half && !set->half_prefer) {
- mncc->bearer_cap.speech_ver[i++] = 1;
- LOGP(DMNCC, LOGL_INFO, " support half rate v1\n");
- }
- /* if specific speech_ver is given (it must be supported) */
- } else
- mncc->bearer_cap.speech_ver[i++] = speech_ver;
- mncc->bearer_cap.speech_ver[i] = -1; /* end of list */
- mncc->bearer_cap.transfer = 0;
- mncc->bearer_cap.mode = 0;
-}
-
-/*
- * MNCCms dummy application
- */
-
-/* this is a minimal implementation as required by GSM 04.08 */
-int mncc_recv_dummy(struct osmocom_ms *ms, int msg_type, void *arg)
-{
- struct gsm_mncc *data = arg;
- uint32_t callref = data->callref;
- struct gsm_mncc rel;
-
- if (msg_type == MNCC_REL_IND || msg_type == MNCC_REL_CNF)
- return 0;
-
- LOGP(DMNCC, LOGL_INFO, "Rejecting incoming call\n");
-
- /* reject, as we don't support Calls */
- memset(&rel, 0, sizeof(struct gsm_mncc));
- rel.callref = callref;
- mncc_set_cause(&rel, GSM48_CAUSE_LOC_USER,
- GSM48_CC_CAUSE_INCOMPAT_DEST);
-
- return mncc_send(ms, MNCC_REL_REQ, &rel);
-}
-
-/*
- * MNCCms basic call application
- */
-
-int mncc_recv_mobile(struct osmocom_ms *ms, int msg_type, void *arg)
-{
- struct gsm_settings *set = &ms->settings;
- struct gsm_mncc *data = arg;
- struct gsm_call *call = get_call_ref(data->callref);
- struct gsm_mncc mncc;
- uint8_t cause;
- int8_t speech_ver = -1, speech_ver_half = -1, temp;
- int first_call = 0;
-
- /* call does not exist */
- if (!call && msg_type != MNCC_SETUP_IND) {
- LOGP(DMNCC, LOGL_INFO, "Rejecting incoming call "
- "(callref %x)\n", data->callref);
- if (msg_type == MNCC_REL_IND || msg_type == MNCC_REL_CNF)
- return 0;
- cause = GSM48_CC_CAUSE_INCOMPAT_DEST;
- release:
- memset(&mncc, 0, sizeof(struct gsm_mncc));
- mncc.callref = data->callref;
- mncc_set_cause(&mncc, GSM48_CAUSE_LOC_USER, cause);
- return mncc_send(ms, MNCC_REL_REQ, &mncc);
- }
-
- /* setup without call */
- if (!call) {
- if (llist_empty(&call_list))
- first_call = 1;
- call = talloc_zero(l23_ctx, struct gsm_call);
- if (!call)
- return -ENOMEM;
- call->ms = ms;
- call->callref = data->callref;
- llist_add_tail(&call->entry, &call_list);
- }
-
- /* not in initiated state anymore */
- call->init = 0;
-
- switch (msg_type) {
- case MNCC_DISC_IND:
- vty_notify(ms, NULL);
- switch (data->cause.value) {
- case GSM48_CC_CAUSE_UNASSIGNED_NR:
- vty_notify(ms, "Call: Number not assigned\n");
- break;
- case GSM48_CC_CAUSE_NO_ROUTE:
- vty_notify(ms, "Call: Destination unreachable\n");
- break;
- case GSM48_CC_CAUSE_NORM_CALL_CLEAR:
- vty_notify(ms, "Call: Remote hangs up\n");
- break;
- case GSM48_CC_CAUSE_USER_BUSY:
- vty_notify(ms, "Call: Remote busy\n");
- break;
- case GSM48_CC_CAUSE_USER_NOTRESPOND:
- vty_notify(ms, "Call: Remote not responding\n");
- break;
- case GSM48_CC_CAUSE_USER_ALERTING_NA:
- vty_notify(ms, "Call: Remote not answering\n");
- break;
- case GSM48_CC_CAUSE_CALL_REJECTED:
- vty_notify(ms, "Call has been rejected\n");
- break;
- case GSM48_CC_CAUSE_NUMBER_CHANGED:
- vty_notify(ms, "Call: Number changed\n");
- break;
- case GSM48_CC_CAUSE_PRE_EMPTION:
- vty_notify(ms, "Call: Cleared due to pre-emption\n");
- break;
- case GSM48_CC_CAUSE_DEST_OOO:
- vty_notify(ms, "Call: Remote out of order\n");
- break;
- case GSM48_CC_CAUSE_INV_NR_FORMAT:
- vty_notify(ms, "Call: Number invalid or imcomplete\n");
- break;
- case GSM48_CC_CAUSE_NO_CIRCUIT_CHAN:
- vty_notify(ms, "Call: No channel available\n");
- break;
- case GSM48_CC_CAUSE_NETWORK_OOO:
- vty_notify(ms, "Call: Network out of order\n");
- break;
- case GSM48_CC_CAUSE_TEMP_FAILURE:
- vty_notify(ms, "Call: Temporary failure\n");
- break;
- case GSM48_CC_CAUSE_SWITCH_CONG:
- vty_notify(ms, "Congestion\n");
- break;
- default:
- vty_notify(ms, "Call has been disconnected "
- "(clear cause %d)\n", data->cause.value);
- }
- LOGP(DMNCC, LOGL_INFO, "Call has been disconnected "
- "(cause %d)\n", data->cause.value);
- if ((data->fields & MNCC_F_PROGRESS)
- && data->progress.descr == 8) {
- vty_notify(ms, "Please hang up!\n");
- break;
- }
- free_call(call);
- cause = GSM48_CC_CAUSE_NORM_CALL_CLEAR;
- goto release;
- case MNCC_REL_IND:
- case MNCC_REL_CNF:
- vty_notify(ms, NULL);
- if (data->cause.value == GSM48_CC_CAUSE_CALL_REJECTED)
- vty_notify(ms, "Call has been rejected\n");
- else
- vty_notify(ms, "Call has been released\n");
- LOGP(DMNCC, LOGL_INFO, "Call has been released (cause %d)\n",
- data->cause.value);
- free_call(call);
- break;
- case MNCC_CALL_PROC_IND:
- vty_notify(ms, NULL);
- vty_notify(ms, "Call is proceeding\n");
- LOGP(DMNCC, LOGL_INFO, "Call is proceeding\n");
- if ((data->fields & MNCC_F_BEARER_CAP)
- && data->bearer_cap.speech_ver[0] >= 0) {
- mncc_get_bearer(set, data->bearer_cap.speech_ver[0]);
- }
- break;
- case MNCC_ALERT_IND:
- vty_notify(ms, NULL);
- vty_notify(ms, "Call is alerting\n");
- LOGP(DMNCC, LOGL_INFO, "Call is alerting\n");
- break;
- case MNCC_SETUP_CNF:
- vty_notify(ms, NULL);
- vty_notify(ms, "Call is answered\n");
- LOGP(DMNCC, LOGL_INFO, "Call is answered\n");
- break;
- case MNCC_SETUP_IND:
- vty_notify(ms, NULL);
- if (!first_call && !ms->settings.cw) {
- vty_notify(ms, "Incoming call rejected while busy\n");
- LOGP(DMNCC, LOGL_INFO, "Incoming call but busy\n");
- cause = GSM48_CC_CAUSE_USER_BUSY;
- goto release;
- }
- /* select first supported speech_ver */
- if ((data->fields & MNCC_F_BEARER_CAP)) {
- int i;
-
- for (i = 0; data->bearer_cap.speech_ver[i] >= 0; i++) {
-
- temp = mncc_get_bearer(set,
- data->bearer_cap.speech_ver[i]);
- if (temp < 0)
- continue;
- if (temp == 5 || temp == 1) { /* half */
- /* only the first half rate */
- if (speech_ver_half < 0)
- speech_ver_half = temp;
- } else {
- /* only the first full rate */
- if (speech_ver < 0)
- speech_ver = temp;
- }
- }
- /* half and full given */
- if (speech_ver_half >= 0 && speech_ver >= 0) {
- if (set->half_prefer) {
- LOGP(DMNCC, LOGL_INFO, " both supported"
- " codec rates are given, using "
- "preferred half rate\n");
- speech_ver = speech_ver_half;
- } else
- LOGP(DMNCC, LOGL_INFO, " both supported"
- " codec rates are given, using "
- "preferred full rate\n");
- } else if (speech_ver_half < 0 && speech_ver < 0) {
- LOGP(DMNCC, LOGL_INFO, " no supported codec "
- "rate is given\n");
- /* only half rate is given, use it */
- } else if (speech_ver_half >= 0) {
- LOGP(DMNCC, LOGL_INFO, " only supported half "
- "rate codec is given, using it\n");
- speech_ver = speech_ver_half;
- /* only full rate is given, use it */
- } else {
- LOGP(DMNCC, LOGL_INFO, " only supported full "
- "rate codec is given, using it\n");
- }
- }
- /* presentation allowed if present == 0 */
- if (data->calling.present || !data->calling.number[0])
- vty_notify(ms, "Incoming call (anonymous)\n");
- else if (data->calling.type == 1)
- vty_notify(ms, "Incoming call (from +%s)\n",
- data->calling.number);
- else if (data->calling.type == 2)
- vty_notify(ms, "Incoming call (from 0-%s)\n",
- data->calling.number);
- else
- vty_notify(ms, "Incoming call (from %s)\n",
- data->calling.number);
- LOGP(DMNCC, LOGL_INFO, "Incoming call (from %s callref %x)\n",
- data->calling.number, call->callref);
- memset(&mncc, 0, sizeof(struct gsm_mncc));
- mncc.callref = call->callref;
- /* only include bearer cap, if not given in setup
- * or if multiple codecs are given
- * or if not only full rate
- * or if given codec is unimplemented
- */
- if (!(data->fields & MNCC_F_BEARER_CAP) || speech_ver < 0)
- mncc_set_bearer(ms, -1, &mncc);
- else if (data->bearer_cap.speech_ver[1] >= 0
- || speech_ver != 0)
- mncc_set_bearer(ms, speech_ver, &mncc);
- /* CC capabilities (optional) */
- if (ms->settings.cc_dtmf) {
- mncc.fields |= MNCC_F_CCCAP;
- mncc.cccap.dtmf = 1;
- }
- mncc_send(ms, MNCC_CALL_CONF_REQ, &mncc);
- if (first_call)
- LOGP(DMNCC, LOGL_INFO, "Ring!\n");
- else {
- LOGP(DMNCC, LOGL_INFO, "Knock!\n");
- call->hold = 1;
- }
- call->ring = 1;
- memset(&mncc, 0, sizeof(struct gsm_mncc));
- mncc.callref = call->callref;
- mncc_send(ms, MNCC_ALERT_REQ, &mncc);
- if (ms->settings.auto_answer) {
- LOGP(DMNCC, LOGL_INFO, "Auto-answering call\n");
- mncc_answer(ms);
- }
- break;
- case MNCC_SETUP_COMPL_IND:
- vty_notify(ms, NULL);
- vty_notify(ms, "Call is connected\n");
- LOGP(DMNCC, LOGL_INFO, "Call is connected\n");
- break;
- case MNCC_HOLD_CNF:
- vty_notify(ms, NULL);
- vty_notify(ms, "Call is on hold\n");
- LOGP(DMNCC, LOGL_INFO, "Call is on hold\n");
- call->hold = 1;
- break;
- case MNCC_HOLD_REJ:
- vty_notify(ms, NULL);
- vty_notify(ms, "Call hold was rejected\n");
- LOGP(DMNCC, LOGL_INFO, "Call hold was rejected\n");
- break;
- case MNCC_RETRIEVE_CNF:
- vty_notify(ms, NULL);
- vty_notify(ms, "Call is retrieved\n");
- LOGP(DMNCC, LOGL_INFO, "Call is retrieved\n");
- call->hold = 0;
- break;
- case MNCC_RETRIEVE_REJ:
- vty_notify(ms, NULL);
- vty_notify(ms, "Call retrieve was rejected\n");
- LOGP(DMNCC, LOGL_INFO, "Call retrieve was rejected\n");
- break;
- case MNCC_FACILITY_IND:
- LOGP(DMNCC, LOGL_INFO, "Facility info not displayed, "
- "unsupported\n");
- break;
- case MNCC_START_DTMF_RSP:
- case MNCC_START_DTMF_REJ:
- case MNCC_STOP_DTMF_RSP:
- dtmf_statemachine(call, data);
- break;
- default:
- LOGP(DMNCC, LOGL_INFO, "Message 0x%02x unsupported\n",
- msg_type);
- return -EINVAL;
- }
-
- return 0;
-}
-
-int mncc_call(struct osmocom_ms *ms, char *number)
-{
- struct gsm_call *call;
- struct gsm_mncc setup;
-
- llist_for_each_entry(call, &call_list, entry) {
- if (!call->hold) {
- vty_notify(ms, NULL);
- vty_notify(ms, "Please put active call on hold "
- "first!\n");
- LOGP(DMNCC, LOGL_INFO, "Cannot make a call, busy!\n");
- return -EBUSY;
- }
- }
-
- call = talloc_zero(l23_ctx, struct gsm_call);
- if (!call)
- return -ENOMEM;
- call->ms = ms;
- call->callref = new_callref++;
- call->init = 1;
- llist_add_tail(&call->entry, &call_list);
-
- memset(&setup, 0, sizeof(struct gsm_mncc));
- setup.callref = call->callref;
-
- if (!strncasecmp(number, "emerg", 5)) {
- LOGP(DMNCC, LOGL_INFO, "Make emergency call\n");
- /* emergency */
- setup.emergency = 1;
- } else {
- LOGP(DMNCC, LOGL_INFO, "Make call to %s\n", number);
- /* called number */
- setup.fields |= MNCC_F_CALLED;
- if (number[0] == '+') {
- number++;
- setup.called.type = 1; /* international */
- } else
- setup.called.type = 0; /* auto/unknown - prefix must be
- used */
- setup.called.plan = 1; /* ISDN */
- strncpy(setup.called.number, number,
- sizeof(setup.called.number) - 1);
-
- /* bearer capability (mandatory) */
- mncc_set_bearer(ms, -1, &setup);
- if (ms->settings.clir)
- setup.clir.sup = 1;
- else if (ms->settings.clip)
- setup.clir.inv = 1;
-
- /* CC capabilities (optional) */
- if (ms->settings.cc_dtmf) {
- setup.fields |= MNCC_F_CCCAP;
- setup.cccap.dtmf = 1;
- }
- }
-
- return mncc_send(ms, MNCC_SETUP_REQ, &setup);
-}
-
-int mncc_hangup(struct osmocom_ms *ms)
-{
- struct gsm_call *call, *found = NULL;
- struct gsm_mncc disc;
-
- llist_for_each_entry(call, &call_list, entry) {
- if (!call->hold) {
- found = call;
- break;
- }
- }
- if (!found) {
- LOGP(DMNCC, LOGL_INFO, "No active call to hangup\n");
- vty_notify(ms, NULL);
- vty_notify(ms, "No active call\n");
- return -EINVAL;
- }
-
- memset(&disc, 0, sizeof(struct gsm_mncc));
- disc.callref = found->callref;
- mncc_set_cause(&disc, GSM48_CAUSE_LOC_USER,
- GSM48_CC_CAUSE_NORM_CALL_CLEAR);
- return mncc_send(ms, (call->init) ? MNCC_REL_REQ : MNCC_DISC_REQ,
- &disc);
-}
-
-int mncc_answer(struct osmocom_ms *ms)
-{
- struct gsm_call *call, *alerting = NULL;
- struct gsm_mncc rsp;
- int active = 0;
-
- llist_for_each_entry(call, &call_list, entry) {
- if (call->ring)
- alerting = call;
- else if (!call->hold)
- active = 1;
- }
- if (!alerting) {
- LOGP(DMNCC, LOGL_INFO, "No call alerting\n");
- vty_notify(ms, NULL);
- vty_notify(ms, "No alerting call\n");
- return -EBUSY;
- }
- if (active) {
- LOGP(DMNCC, LOGL_INFO, "Answer but we have an active call\n");
- vty_notify(ms, NULL);
- vty_notify(ms, "Please put active call on hold first!\n");
- return -EBUSY;
- }
- alerting->ring = 0;
- alerting->hold = 0;
-
- memset(&rsp, 0, sizeof(struct gsm_mncc));
- rsp.callref = alerting->callref;
- return mncc_send(ms, MNCC_SETUP_RSP, &rsp);
-}
-
-int mncc_hold(struct osmocom_ms *ms)
-{
- struct gsm_call *call, *found = NULL;
- struct gsm_mncc hold;
-
- llist_for_each_entry(call, &call_list, entry) {
- if (!call->hold) {
- found = call;
- break;
- }
- }
- if (!found) {
- LOGP(DMNCC, LOGL_INFO, "No active call to hold\n");
- vty_notify(ms, NULL);
- vty_notify(ms, "No active call\n");
- return -EINVAL;
- }
-
- memset(&hold, 0, sizeof(struct gsm_mncc));
- hold.callref = found->callref;
- return mncc_send(ms, MNCC_HOLD_REQ, &hold);
-}
-
-int mncc_retrieve(struct osmocom_ms *ms, int number)
-{
- struct gsm_call *call;
- struct gsm_mncc retr;
- int holdnum = 0, active = 0, i = 0;
-
- llist_for_each_entry(call, &call_list, entry) {
- if (call->hold)
- holdnum++;
- if (!call->hold)
- active = 1;
- }
- if (active) {
- LOGP(DMNCC, LOGL_INFO, "Cannot retrieve during active call\n");
- vty_notify(ms, NULL);
- vty_notify(ms, "Hold active call first!\n");
- return -EINVAL;
- }
- if (holdnum == 0) {
- vty_notify(ms, NULL);
- vty_notify(ms, "No call on hold!\n");
- return -EINVAL;
- }
- if (holdnum > 1 && number <= 0) {
- vty_notify(ms, NULL);
- vty_notify(ms, "Select call 1..%d\n", holdnum);
- return -EINVAL;
- }
- if (holdnum == 1 && number <= 0)
- number = 1;
- if (number > holdnum) {
- vty_notify(ms, NULL);
- vty_notify(ms, "Given number %d out of range!\n", number);
- vty_notify(ms, "Select call 1..%d\n", holdnum);
- return -EINVAL;
- }
-
- llist_for_each_entry(call, &call_list, entry) {
- i++;
- if (i == number)
- break;
- }
-
- memset(&retr, 0, sizeof(struct gsm_mncc));
- retr.callref = call->callref;
- return mncc_send(ms, MNCC_RETRIEVE_REQ, &retr);
-}
-
-/*
- * DTMF
- */
-
-static int dtmf_statemachine(struct gsm_call *call, struct gsm_mncc *mncc)
-{
- struct osmocom_ms *ms = call->ms;
- struct gsm_mncc dtmf;
-
- switch (call->dtmf_state) {
- case DTMF_ST_SPACE:
- case DTMF_ST_IDLE:
- /* end of string */
- if (!call->dtmf[call->dtmf_index]) {
- LOGP(DMNCC, LOGL_INFO, "done with DTMF\n");
- call->dtmf_state = DTMF_ST_IDLE;
- return -EOF;
- }
- memset(&dtmf, 0, sizeof(struct gsm_mncc));
- dtmf.callref = call->callref;
- dtmf.keypad = call->dtmf[call->dtmf_index++];
- call->dtmf_state = DTMF_ST_START;
- LOGP(DMNCC, LOGL_INFO, "start DTMF (keypad %c)\n",
- dtmf.keypad);
- return mncc_send(ms, MNCC_START_DTMF_REQ, &dtmf);
- case DTMF_ST_START:
- if (mncc->msg_type != MNCC_START_DTMF_RSP) {
- LOGP(DMNCC, LOGL_INFO, "DTMF was rejected\n");
- return -ENOTSUP;
- }
- start_dtmf_timer(call, 70);
- call->dtmf_state = DTMF_ST_MARK;
- LOGP(DMNCC, LOGL_INFO, "DTMF is on\n");
- break;
- case DTMF_ST_MARK:
- memset(&dtmf, 0, sizeof(struct gsm_mncc));
- dtmf.callref = call->callref;
- call->dtmf_state = DTMF_ST_STOP;
- LOGP(DMNCC, LOGL_INFO, "stop DTMF\n");
- return mncc_send(ms, MNCC_STOP_DTMF_REQ, &dtmf);
- case DTMF_ST_STOP:
- start_dtmf_timer(call, 120);
- call->dtmf_state = DTMF_ST_SPACE;
- LOGP(DMNCC, LOGL_INFO, "DTMF is off\n");
- break;
- }
-
- return 0;
-}
-
-static void timeout_dtmf(void *arg)
-{
- struct gsm_call *call = arg;
-
- LOGP(DCC, LOGL_INFO, "DTMF timer has fired\n");
- dtmf_statemachine(call, NULL);
-}
-
-int mncc_dtmf(struct osmocom_ms *ms, char *dtmf)
-{
- struct gsm_call *call, *found = NULL;
-
- llist_for_each_entry(call, &call_list, entry) {
- if (!call->hold) {
- found = call;
- break;
- }
- }
- if (!found) {
- LOGP(DMNCC, LOGL_INFO, "No active call to send DTMF\n");
- vty_notify(ms, NULL);
- vty_notify(ms, "No active call\n");
- return -EINVAL;
- }
-
- if (call->dtmf_state != DTMF_ST_IDLE) {
- LOGP(DMNCC, LOGL_INFO, "sending DTMF already\n");
- return -EINVAL;
- }
-
- call->dtmf_index = 0;
- strncpy(call->dtmf, dtmf, sizeof(call->dtmf) - 1);
- return dtmf_statemachine(call, NULL);
-}
-
diff --git a/Src/osmoconbb/src/host/layer23/src/mobile/settings.c b/Src/osmoconbb/src/host/layer23/src/mobile/settings.c
deleted file mode 100644
index 592f8a8..0000000
--- a/Src/osmoconbb/src/host/layer23/src/mobile/settings.c
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * (C) 2010 by Andreas Eversberg <jolly@eversberg.eu>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <errno.h>
-#include <string.h>
-#include <osmocom/core/talloc.h>
-
-#include <osmocom/bb/common/logging.h>
-#include <osmocom/bb/common/osmocom_data.h>
-#include <osmocom/bb/common/networks.h>
-
-static char *layer2_socket_path = "/tmp/osmocom_l2";
-static char *sap_socket_path = "/tmp/osmocom_sap";
-
-int gsm_settings_init(struct osmocom_ms *ms)
-{
- struct gsm_settings *set = &ms->settings;
- struct gsm_support *sup = &ms->support;
-
- strcpy(set->layer2_socket_path, layer2_socket_path);
- strcpy(set->sap_socket_path, sap_socket_path);
-
- /* network search */
- set->plmn_mode = PLMN_MODE_AUTO;
-
- /* IMEI */
- sprintf(set->imei, "000000000000000");
- sprintf(set->imeisv, "0000000000000000");
-
- /* SIM type */
-#warning TODO: Enable after SIM reader is available in master branch.
-// set->sim_type = SIM_TYPE_READER;
-
- /* test SIM */
- strcpy(set->test_imsi, "001010000000000");
- set->test_rplmn_mcc = set->test_rplmn_mnc = 1;
- set->test_lac = 0x0000;
- set->test_tmsi = 0xffffffff;
-
- /* set all supported features */
- set->sms_ptp = sup->sms_ptp;
- set->a5_1 = sup->a5_1;
- set->a5_2 = sup->a5_2;
- set->a5_3 = sup->a5_3;
- set->a5_4 = sup->a5_4;
- set->a5_5 = sup->a5_5;
- set->a5_6 = sup->a5_6;
- set->a5_7 = sup->a5_7;
- set->p_gsm = sup->p_gsm;
- set->e_gsm = sup->e_gsm;
- set->r_gsm = sup->r_gsm;
- set->dcs = sup->dcs;
- set->class_900 = sup->class_900;
- set->class_dcs = sup->class_dcs;
- set->class_850 = sup->class_850;
- set->class_pcs = sup->class_pcs;
- set->class_400 = sup->class_400;
- set->full_v1 = sup->full_v1;
- set->full_v2 = sup->full_v2;
- set->full_v3 = sup->full_v3;
- set->half_v1 = sup->half_v1;
- set->half_v3 = sup->half_v3;
- set->ch_cap = sup->ch_cap;
- set->min_rxlev_db = sup->min_rxlev_db;
- set->dsc_max = sup->dsc_max;
-
- if (sup->half_v1 || sup->half_v3)
- set->half = 1;
-
-
- /* software features */
- set->cc_dtmf = 1;
-
- INIT_LLIST_HEAD(&set->abbrev);
-
- return 0;
-}
-
-int gsm_settings_arfcn(struct osmocom_ms *ms)
-{
- int i;
- struct gsm_settings *set = &ms->settings;
-
- /* set supported frequencies */
- memset(set->freq_map, 0, sizeof(set->freq_map));
- if (set->p_gsm)
- for(i = 1; i <= 124; i++)
- set->freq_map[i >> 3] |= (1 << (i & 7));
- if (set->gsm_850)
- for(i = 128; i <= 251; i++)
- set->freq_map[i >> 3] |= (1 << (i & 7));
- if (set->gsm_450)
- for(i = 259; i <= 293; i++)
- set->freq_map[i >> 3] |= (1 << (i & 7));
- if (set->gsm_480)
- for(i = 306; i <= 340; i++)
- set->freq_map[i >> 3] |= (1 << (i & 7));
- if (set->dcs)
- for(i = 512; i <= 885; i++)
- set->freq_map[i >> 3] |= (1 << (i & 7));
- if (set->pcs)
- for(i = 1024; i <= 1024-512+810; i++)
- set->freq_map[i >> 3] |= (1 << (i & 7));
- if (set->e_gsm) {
- for(i = 975; i <= 1023; i++)
- set->freq_map[i >> 3] |= (1 << (i & 7));
- set->freq_map[0] |= 1;
- }
- if (set->r_gsm)
- for(i = 955; i <= 974; i++)
- set->freq_map[i >> 3] |= (1 << (i & 7));
-
- return 0;
-}
-
-int gsm_settings_exit(struct osmocom_ms *ms)
-{
- struct gsm_settings *set = &ms->settings;
- struct gsm_settings_abbrev *abbrev;
-
- while (!llist_empty(&set->abbrev)) {
- abbrev = llist_entry(set->abbrev.next,
- struct gsm_settings_abbrev, list);
- llist_del(&abbrev->list);
- talloc_free(abbrev);
- }
-
- return 0;
-}
-
-char *gsm_check_imei(const char *imei, const char *sv)
-{
- int i;
-
- if (!imei || strlen(imei) != 15)
- return "IMEI must have 15 digits!";
-
- for (i = 0; i < strlen(imei); i++) {
- if (imei[i] < '0' || imei[i] > '9')
- return "IMEI must have digits 0 to 9 only!";
- }
-
- if (!sv || strlen(sv) != 1)
- return "Software version must have 1 digit!";
-
- if (sv[0] < '0' || sv[0] > '9')
- return "Software version must have digits 0 to 9 only!";
-
- return NULL;
-}
-
-int gsm_random_imei(struct gsm_settings *set)
-{
- int digits = set->imei_random;
- char rand[16];
-
- if (digits <= 0)
- return 0;
- if (digits > 15)
- digits = 15;
-
- sprintf(rand, "%08ld", random() % 100000000);
- sprintf(rand + 8, "%07ld", random() % 10000000);
-
- strcpy(set->imei + 15 - digits, rand + 15 - digits);
- strncpy(set->imeisv, set->imei, 15);
-
- return 0;
-}
-
diff --git a/Src/osmoconbb/src/host/layer23/src/mobile/subscriber.c b/Src/osmoconbb/src/host/layer23/src/mobile/subscriber.c
deleted file mode 100644
index 6de742a..0000000
--- a/Src/osmoconbb/src/host/layer23/src/mobile/subscriber.c
+++ /dev/null
@@ -1,1207 +0,0 @@
-/*
- * (C) 2010 by Andreas Eversberg <jolly@eversberg.eu>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <errno.h>
-#include <string.h>
-#include <arpa/inet.h>
-#include <osmocom/core/talloc.h>
-#include <osmocom/gsm/comp128.h>
-
-#include <osmocom/bb/common/logging.h>
-#include <osmocom/bb/common/osmocom_data.h>
-#include <osmocom/bb/common/networks.h>
-#include <osmocom/bb/mobile/vty.h>
-
-/* enable to get an empty list of forbidden PLMNs, even if stored on SIM.
- * if list is changed, the result is not written back to SIM */
-//#define TEST_EMPTY_FPLMN
-
-void *l23_ctx;
-
-static void subscr_sim_query_cb(struct osmocom_ms *ms, struct msgb *msg);
-static void subscr_sim_update_cb(struct osmocom_ms *ms, struct msgb *msg);
-static void subscr_sim_key_cb(struct osmocom_ms *ms, struct msgb *msg);
-
-/*
- * support
- */
-
-char *gsm_check_imsi(const char *imsi)
-{
- int i;
-
- if (!imsi || strlen(imsi) != 15)
- return "IMSI must have 15 digits!";
-
- for (i = 0; i < strlen(imsi); i++) {
- if (imsi[i] < '0' || imsi[i] > '9')
- return "IMSI must have digits 0 to 9 only!";
- }
-
- return NULL;
-}
-
-static char *sim_decode_bcd(uint8_t *data, uint8_t length)
-{
- int i, j = 0;
- static char result[32], c;
-
- for (i = 0; i < (length << 1); i++) {
- if ((i & 1))
- c = (data[i >> 1] >> 4);
- else
- c = (data[i >> 1] & 0xf);
- if (c == 0xf)
- break;
- result[j++] = c + '0';
- if (j == sizeof(result) - 1)
- break;
- }
- result[j] = '\0';
-
- return result;
-}
-
-static void xor96(uint8_t *ki, uint8_t *rand, uint8_t *sres, uint8_t *kc)
-{
- int i;
-
- for (i=0; i < 4; i++)
- sres[i] = rand[i] ^ ki[i];
- for (i=0; i < 8; i++)
- kc[i] = rand[i] ^ ki[i+4];
-}
-
-/*
- * init/exit
- */
-
-int gsm_subscr_init(struct osmocom_ms *ms)
-{
- struct gsm_subscriber *subscr = &ms->subscr;
-
- memset(subscr, 0, sizeof(*subscr));
- subscr->ms = ms;
-
- /* set TMSI / LAC invalid */
- subscr->tmsi = 0xffffffff;
- subscr->lac = 0x0000;
-
- /* set key invalid */
- subscr->key_seq = 7;
-
- /* any cell selection timer timeout */
- subscr->any_timeout = 30;
-
- /* init lists */
- INIT_LLIST_HEAD(&subscr->plmn_list);
- INIT_LLIST_HEAD(&subscr->plmn_na);
-
- /* open SIM */
- subscr->sim_handle_query = sim_open(ms, subscr_sim_query_cb);
- subscr->sim_handle_update = sim_open(ms, subscr_sim_update_cb);
- subscr->sim_handle_key = sim_open(ms, subscr_sim_key_cb);
-
- return 0;
-}
-
-int gsm_subscr_exit(struct osmocom_ms *ms)
-{
- struct gsm_subscriber *subscr = &ms->subscr;
- struct llist_head *lh, *lh2;
-
- if (subscr->sim_handle_query) {
- sim_close(ms, subscr->sim_handle_query);
- subscr->sim_handle_query = 0;
- }
- if (subscr->sim_handle_update) {
- sim_close(ms, subscr->sim_handle_update);
- subscr->sim_handle_update = 0;
- }
- if (subscr->sim_handle_key) {
- sim_close(ms, subscr->sim_handle_key);
- subscr->sim_handle_key = 0;
- }
-
- /* flush lists */
- llist_for_each_safe(lh, lh2, &subscr->plmn_list) {
- llist_del(lh);
- talloc_free(lh);
- }
- llist_for_each_safe(lh, lh2, &subscr->plmn_na) {
- llist_del(lh);
- talloc_free(lh);
- }
-
- return 0;
-}
-
-/*
- * test card
- */
-
-/* Attach test card, no SIM must be currently attached */
-int gsm_subscr_testcard(struct osmocom_ms *ms, uint16_t mcc, uint16_t mnc,
- uint16_t lac, uint32_t tmsi)
-{
- struct gsm_settings *set = &ms->settings;
- struct gsm_subscriber *subscr = &ms->subscr;
- struct msgb *nmsg;
- char *error;
-
- if (subscr->sim_valid) {
- LOGP(DMM, LOGL_ERROR, "Cannot insert card, until current card "
- "is detached.\n");
- return -EBUSY;
- }
-
- error = gsm_check_imsi(set->test_imsi);
- if (error) {
- LOGP(DMM, LOGL_ERROR, "%s\n", error);
- return -EINVAL;
- }
-
- /* reset subscriber */
- gsm_subscr_exit(ms);
- gsm_subscr_init(ms);
-
- subscr->sim_type = GSM_SIM_TYPE_TEST;
- sprintf(subscr->sim_name, "test");
- subscr->sim_valid = 1;
- subscr->ustate = GSM_SIM_U2_NOT_UPDATED;
- subscr->acc_barr = set->test_barr; /* we may access barred cell */
- subscr->acc_class = 0xffff; /* we have any access class */
- subscr->plmn_valid = set->test_rplmn_valid;
- subscr->plmn_mcc = mcc;
- subscr->plmn_mnc = mnc;
- subscr->mcc = mcc;
- subscr->mnc = mnc;
- subscr->lac = lac;
- subscr->tmsi = tmsi;
- subscr->always_search_hplmn = set->test_always;
- subscr->t6m_hplmn = 1; /* try to find home network every 6 min */
- strcpy(subscr->imsi, set->test_imsi);
-
- LOGP(DMM, LOGL_INFO, "(ms %s) Inserting test card (IMSI=%s %s, %s)\n",
- ms->name, subscr->imsi, gsm_imsi_mcc(subscr->imsi),
- gsm_imsi_mnc(subscr->imsi));
-
- if (subscr->plmn_valid)
- LOGP(DMM, LOGL_INFO, "-> Test card registered to %s %s 0x%04x"
- "(%s, %s)\n", gsm_print_mcc(mcc),
- gsm_print_mnc(mnc), lac, gsm_get_mcc(mcc),
- gsm_get_mnc(mcc, mnc));
- else
- LOGP(DMM, LOGL_INFO, "-> Test card not registered\n");
-
- /* insert card */
- nmsg = gsm48_mmr_msgb_alloc(GSM48_MMR_REG_REQ);
- if (!nmsg)
- return -ENOMEM;
- gsm48_mmr_downmsg(ms, nmsg);
-
- return 0;
-}
-
-/*
- * sim card
- */
-
-static int subscr_sim_iccid(struct osmocom_ms *ms, uint8_t *data,
- uint8_t length)
-{
- struct gsm_subscriber *subscr = &ms->subscr;
-
- strcpy(subscr->iccid, sim_decode_bcd(data, length));
- sprintf(subscr->sim_name, "sim-%s", subscr->iccid);
- LOGP(DMM, LOGL_INFO, "received ICCID %s from SIM\n", subscr->iccid);
-
- return 0;
-}
-
-static int subscr_sim_imsi(struct osmocom_ms *ms, uint8_t *data,
- uint8_t length)
-{
- struct gsm_subscriber *subscr = &ms->subscr;
- char *imsi;
-
- /* get actual length */
- if (length < 1)
- return -EINVAL;
- if (data[0] + 1 < length) {
- LOGP(DMM, LOGL_NOTICE, "invalid length = %d\n", length);
- return -EINVAL;
- }
- length = data[0];
-
- /* decode IMSI, skip first digit (parity) */
- imsi = sim_decode_bcd(data + 1, length);
- if (strlen(imsi) - 1 > GSM_IMSI_LENGTH - 1 || strlen(imsi) - 1 < 6) {
- LOGP(DMM, LOGL_NOTICE, "IMSI invalid length = %d\n",
- strlen(imsi) - 1);
- return -EINVAL;
- }
-
- strncpy(subscr->imsi, imsi + 1, sizeof(subscr->imsi) - 1);
-
- LOGP(DMM, LOGL_INFO, "received IMSI %s from SIM\n", subscr->imsi);
-
- return 0;
-}
-
-static int subscr_sim_loci(struct osmocom_ms *ms, uint8_t *data,
- uint8_t length)
-{
- struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm1111_ef_loci *loci;
-
- if (length < 11)
- return -EINVAL;
- loci = (struct gsm1111_ef_loci *) data;
-
- /* TMSI */
- subscr->tmsi = ntohl(loci->tmsi);
-
- /* LAI */
- gsm48_decode_lai(&loci->lai, &subscr->mcc, &subscr->mnc, &subscr->lac);
-
- /* location update status */
- switch (loci->lupd_status & 0x07) {
- case 0x00:
- subscr->ustate = GSM_SIM_U1_UPDATED;
- break;
- case 0x02:
- case 0x03:
- subscr->ustate = GSM_SIM_U3_ROAMING_NA;
- break;
- default:
- subscr->ustate = GSM_SIM_U2_NOT_UPDATED;
- }
-
- LOGP(DMM, LOGL_INFO, "received LOCI from SIM (mcc=%s mnc=%s lac=0x%04x "
- "U%d)\n", gsm_print_mcc(subscr->mcc),
- gsm_print_mnc(subscr->mnc), subscr->lac, subscr->ustate);
-
- return 0;
-}
-
-static int subscr_sim_msisdn(struct osmocom_ms *ms, uint8_t *data,
- uint8_t length)
-{
- struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm1111_ef_adn *adn;
-
- if (length < sizeof(*adn))
- return -EINVAL;
- adn = (struct gsm1111_ef_adn *) (data + length - sizeof(*adn));
-
- /* empty */
- subscr->msisdn[0] = '\0';
- if (adn->len_bcd <= 1)
- return 0;
-
- /* number */
- if (adn->ton_npi == 1)
- strcpy(subscr->msisdn, "+");
- if (adn->ton_npi == 2)
- strcpy(subscr->msisdn, "0");
- strncat(subscr->msisdn, sim_decode_bcd(adn->number, adn->len_bcd - 1),
- sizeof(subscr->msisdn) - 2);
-
- LOGP(DMM, LOGL_INFO, "received MSISDN %s from SIM\n", subscr->msisdn);
-
- return 0;
-}
-
-static int subscr_sim_kc(struct osmocom_ms *ms, uint8_t *data,
- uint8_t length)
-{
- struct gsm_subscriber *subscr = &ms->subscr;
-
- if (length < 9)
- return -EINVAL;
-
- /* key */
- memcpy(subscr->key, data, 8);
-
- /* key sequence */
- subscr->key_seq = data[8] & 0x07;
-
- LOGP(DMM, LOGL_INFO, "received KEY from SIM\n");
-
- return 0;
-}
-
-static int subscr_sim_plmnsel(struct osmocom_ms *ms, uint8_t *data,
- uint8_t length)
-{
- struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm_sub_plmn_list *plmn;
- struct llist_head *lh, *lh2;
- uint8_t lai[5];
- uint16_t dummy_lac;
-
- /* flush list */
- llist_for_each_safe(lh, lh2, &subscr->plmn_list) {
- llist_del(lh);
- talloc_free(lh);
- }
-
- while(length >= 3) {
- /* end of list inside mandatory fields */
- if (data[0] == 0xff && data[1] == 0xff && data[2] == 0x0ff)
- break;
-
- /* add to list */
- plmn = talloc_zero(l23_ctx, struct gsm_sub_plmn_list);
- if (!plmn)
- return -ENOMEM;
- lai[0] = data[0];
- lai[1] = data[1];
- lai[2] = data[2];
- gsm48_decode_lai((struct gsm48_loc_area_id *)lai, &plmn->mcc,
- &plmn->mnc, &dummy_lac);
- llist_add_tail(&plmn->entry, &subscr->plmn_list);
-
- LOGP(DMM, LOGL_INFO, "received PLMN selector (mcc=%s mnc=%s) "
- "from SIM\n",
- gsm_print_mcc(plmn->mcc), gsm_print_mnc(plmn->mnc));
-
- data += 3;
- length -= 3;
- }
-
- return 0;
-}
-
-static int subscr_sim_hpplmn(struct osmocom_ms *ms, uint8_t *data,
- uint8_t length)
-{
- struct gsm_subscriber *subscr = &ms->subscr;
-
- if (length < 1)
- return -EINVAL;
-
- /* HPLMN search interval */
- subscr->t6m_hplmn = *data; /* multiple of 6 minutes */
-
- LOGP(DMM, LOGL_INFO, "received HPPLMN %d (%d mins) from SIM\n",
- subscr->t6m_hplmn, subscr->t6m_hplmn * 6);
-
- return 0;
-}
-
-static int subscr_sim_spn(struct osmocom_ms *ms, uint8_t *data,
- uint8_t length)
-{
- struct gsm_subscriber *subscr = &ms->subscr;
- int i;
-
- /* UCS2 code not supported */
- if (length < 17 || data[1] >= 0x80)
- return -ENOTSUP;
-
- data++;
- for (i = 0; i < 16; i++) {
- if (*data == 0xff)
- break;
- subscr->sim_spn[i] = *data++;
- }
- subscr->sim_spn[i] = '\0';
-
- LOGP(DMM, LOGL_INFO, "received SPN %s from SIM\n", subscr->sim_spn);
-
- return 0;
-}
-
-static int subscr_sim_acc(struct osmocom_ms *ms, uint8_t *data,
- uint8_t length)
-{
- struct gsm_subscriber *subscr = &ms->subscr;
- uint16_t ac;
-
- if (length < 2)
- return -EINVAL;
-
- /* cell access */
- memcpy(&ac, data, sizeof(ac));
- subscr->acc_class = ntohs(ac);
-
- LOGP(DMM, LOGL_INFO, "received ACC %04x from SIM\n", subscr->acc_class);
-
- return 0;
-}
-
-static int subscr_sim_fplmn(struct osmocom_ms *ms, uint8_t *data,
- uint8_t length)
-{
- struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm_sub_plmn_na *na;
- struct llist_head *lh, *lh2;
- uint8_t lai[5];
- uint16_t dummy_lac;
-
-#ifdef TEST_EMPTY_FPLMN
- return 0;
-#endif
-
- /* flush list */
- llist_for_each_safe(lh, lh2, &subscr->plmn_na) {
- llist_del(lh);
- talloc_free(lh);
- }
-
- while (length >= 3) {
- /* end of list inside mandatory fields */
- if (data[0] == 0xff && data[1] == 0xff && data[2] == 0x0ff)
- break;
-
- /* add to list */
- na = talloc_zero(l23_ctx, struct gsm_sub_plmn_na);
- if (!na)
- return -ENOMEM;
- lai[0] = data[0];
- lai[1] = data[1];
- lai[2] = data[2];
- gsm48_decode_lai((struct gsm48_loc_area_id *)lai, &na->mcc,
- &na->mnc, &dummy_lac);
- na->cause = -1; /* must have a value, but SIM stores no cause */
- llist_add_tail(&na->entry, &subscr->plmn_na);
-
- data += 3;
- length -= 3;
- }
- return 0;
-}
-
-static struct subscr_sim_file {
- uint8_t mandatory;
- uint16_t path[MAX_SIM_PATH_LENGTH];
- uint16_t file;
- int (*func)(struct osmocom_ms *ms, uint8_t *data,
- uint8_t length);
-} subscr_sim_files[] = {
- { 1, { 0 }, 0x2fe2, subscr_sim_iccid },
- { 1, { 0x7f20, 0 }, 0x6f07, subscr_sim_imsi },
- { 1, { 0x7f20, 0 }, 0x6f7e, subscr_sim_loci },
- { 0, { 0x7f10, 0 }, 0x6f40, subscr_sim_msisdn },
- { 0, { 0x7f20, 0 }, 0x6f20, subscr_sim_kc },
- { 0, { 0x7f20, 0 }, 0x6f30, subscr_sim_plmnsel },
- { 0, { 0x7f20, 0 }, 0x6f31, subscr_sim_hpplmn },
- { 0, { 0x7f20, 0 }, 0x6f46, subscr_sim_spn },
- { 0, { 0x7f20, 0 }, 0x6f78, subscr_sim_acc },
- { 0, { 0x7f20, 0 }, 0x6f7b, subscr_sim_fplmn },
- { 0, { 0 }, 0, NULL }
-};
-
-/* request file from SIM */
-static int subscr_sim_request(struct osmocom_ms *ms)
-{
- struct gsm_subscriber *subscr = &ms->subscr;
- struct subscr_sim_file *sf = &subscr_sim_files[subscr->sim_file_index];
- struct msgb *nmsg;
- struct sim_hdr *nsh;
- int i;
-
- /* we are done, fire up PLMN and cell selection process */
- if (!sf->func) {
- LOGP(DMM, LOGL_INFO, "(ms %s) Done reading SIM card "
- "(IMSI=%s %s, %s)\n", ms->name, subscr->imsi,
- gsm_imsi_mcc(subscr->imsi), gsm_imsi_mnc(subscr->imsi));
-
- /* if LAI is valid, set RPLMN */
- if (subscr->lac > 0x0000 && subscr->lac < 0xfffe) {
- subscr->plmn_valid = 1;
- subscr->plmn_mcc = subscr->mcc;
- subscr->plmn_mnc = subscr->mnc;
- LOGP(DMM, LOGL_INFO, "-> SIM card registered to %s %s "
- "(%s, %s)\n", gsm_print_mcc(subscr->plmn_mcc),
- gsm_print_mnc(subscr->plmn_mnc),
- gsm_get_mcc(subscr->plmn_mcc),
- gsm_get_mnc(subscr->plmn_mcc,
- subscr->plmn_mnc));
- } else
- LOGP(DMM, LOGL_INFO, "-> SIM card not registered\n");
-
- /* insert card */
- nmsg = gsm48_mmr_msgb_alloc(GSM48_MMR_REG_REQ);
- if (!nmsg)
- return -ENOMEM;
- gsm48_mmr_downmsg(ms, nmsg);
-
- return 0;
- }
-
- /* trigger SIM reading */
- nmsg = gsm_sim_msgb_alloc(subscr->sim_handle_query,
- SIM_JOB_READ_BINARY);
- if (!nmsg)
- return -ENOMEM;
- nsh = (struct sim_hdr *) nmsg->data;
- i = 0;
- while (sf->path[i]) {
- nsh->path[i] = sf->path[i];
- i++;
- }
- nsh->path[i] = 0; /* end of path */
- nsh->file = sf->file;
- LOGP(DMM, LOGL_INFO, "Requesting SIM file 0x%04x\n", nsh->file);
- sim_job(ms, nmsg);
-
- return 0;
-}
-
-static void subscr_sim_query_cb(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm_subscriber *subscr = &ms->subscr;
- struct sim_hdr *sh = (struct sim_hdr *) msg->data;
- uint8_t *payload = msg->data + sizeof(*sh);
- uint16_t payload_len = msg->len - sizeof(*sh);
- int rc;
- struct subscr_sim_file *sf = &subscr_sim_files[subscr->sim_file_index];
- struct msgb *nmsg;
-
- /* error handling */
- if (sh->job_type == SIM_JOB_ERROR) {
- uint8_t cause = payload[0];
-
- switch (cause) {
- /* unlocking required */
- case SIM_CAUSE_PIN1_REQUIRED:
- LOGP(DMM, LOGL_INFO, "PIN is required, %d tries left\n",
- payload[1]);
-
- vty_notify(ms, NULL);
- vty_notify(ms, "Please give PIN for ICCID %s (you have "
- "%d tries left)\n", subscr->iccid, payload[1]);
- subscr->sim_pin_required = 1;
- break;
- case SIM_CAUSE_PIN1_BLOCKED:
- LOGP(DMM, LOGL_NOTICE, "PIN is blocked\n");
-
- vty_notify(ms, NULL);
- vty_notify(ms, "PIN is blocked\n");
- if (payload[1]) {
- vty_notify(ms, "Please give PUC for ICCID %s "
- "(you have %d tries left)\n",
- subscr->iccid, payload[1]);
- }
- subscr->sim_pin_required = 1;
- break;
- case SIM_CAUSE_PUC_BLOCKED:
- LOGP(DMM, LOGL_NOTICE, "PUC is blocked\n");
-
- vty_notify(ms, NULL);
- vty_notify(ms, "PUC is blocked\n");
- subscr->sim_pin_required = 1;
- break;
- default:
- if (sf->func && !sf->mandatory) {
- LOGP(DMM, LOGL_NOTICE, "SIM reading failed, "
- "ignoring!\n");
- goto ignore;
- }
- LOGP(DMM, LOGL_NOTICE, "SIM reading failed\n");
-
- vty_notify(ms, NULL);
- vty_notify(ms, "SIM failed, replace SIM!\n");
-
- /* detach simcard */
- subscr->sim_valid = 0;
- nmsg = gsm48_mmr_msgb_alloc(GSM48_MMR_NREG_REQ);
- if (!nmsg)
- return;
- gsm48_mmr_downmsg(ms, nmsg);
- }
- msgb_free(msg);
-
- return;
- }
-
- /* if pin was successfully unlocked, then resend request */
- if (subscr->sim_pin_required) {
- subscr->sim_pin_required = 0;
- subscr_sim_request(ms);
- return;
- }
-
- /* done when nothing more to read. this happens on PIN requests */
- if (!sf->func)
- return;
-
- /* call function do decode SIM reply */
- rc = sf->func(ms, payload, payload_len);
- if (rc) {
- LOGP(DMM, LOGL_NOTICE, "SIM reading failed, file invalid\n");
- if (subscr_sim_files[subscr->sim_file_index].mandatory) {
- vty_notify(ms, NULL);
- vty_notify(ms, "SIM failed, data invalid, replace "
- "SIM!\n");
- msgb_free(msg);
-
- return;
- }
- }
-
-ignore:
- msgb_free(msg);
-
- /* trigger next file */
- subscr->sim_file_index++;
- subscr_sim_request(ms);
-}
-
-/* enter PIN */
-void gsm_subscr_sim_pin(struct osmocom_ms *ms, char *pin1, char *pin2,
- int8_t mode)
-{
- struct gsm_subscriber *subscr = &ms->subscr;
- struct msgb *nmsg;
- uint8_t job;
-
- /* skip, if no real valid SIM */
- if (subscr->sim_type != GSM_SIM_TYPE_READER)
- return;
-
- switch (mode) {
- case -1:
- job = SIM_JOB_PIN1_DISABLE;
- LOGP(DMM, LOGL_INFO, "disabling PIN %s\n", pin1);
- break;
- case 1:
- job = SIM_JOB_PIN1_ENABLE;
- LOGP(DMM, LOGL_INFO, "enabling PIN %s\n", pin1);
- break;
- case 2:
- job = SIM_JOB_PIN1_CHANGE;
- LOGP(DMM, LOGL_INFO, "changing PIN %s to %s\n", pin1, pin2);
- break;
- case 99:
- job = SIM_JOB_PIN1_UNBLOCK;
- LOGP(DMM, LOGL_INFO, "unblocking PIN %s with PUC %s\n", pin1,
- pin2);
- break;
- default:
- if (!subscr->sim_pin_required) {
- LOGP(DMM, LOGL_ERROR, "No PIN required now\n");
- return;
- }
- LOGP(DMM, LOGL_INFO, "entering PIN %s\n", pin1);
- job = SIM_JOB_PIN1_UNLOCK;
- }
-
- nmsg = gsm_sim_msgb_alloc(subscr->sim_handle_query, job);
- if (!nmsg)
- return;
- memcpy(msgb_put(nmsg, strlen(pin1) + 1), pin1, strlen(pin1) + 1);
- memcpy(msgb_put(nmsg, strlen(pin2) + 1), pin2, strlen(pin2) + 1);
- sim_job(ms, nmsg);
-}
-
-/* Attach SIM reader, no SIM must be currently attached */
-int gsm_subscr_simcard(struct osmocom_ms *ms)
-{
- struct gsm_subscriber *subscr = &ms->subscr;
-
- if (subscr->sim_valid) {
- LOGP(DMM, LOGL_ERROR, "Cannot attach card, until current card "
- "is detached.\n");
- return -EBUSY;
- }
-
- /* reset subscriber */
- gsm_subscr_exit(ms);
- gsm_subscr_init(ms);
-
- subscr->sim_type = GSM_SIM_TYPE_READER;
- sprintf(subscr->sim_name, "sim");
- subscr->sim_valid = 1;
- subscr->ustate = GSM_SIM_U2_NOT_UPDATED;
-
- /* start with first index */
- subscr->sim_file_index = 0;
- return subscr_sim_request(ms);
-}
-
-/* update plmn not allowed list on SIM */
-static int subscr_write_plmn_na(struct osmocom_ms *ms)
-{
- struct gsm_subscriber *subscr = &ms->subscr;
- struct msgb *nmsg;
- struct sim_hdr *nsh;
- struct gsm_sub_plmn_na *na, *nas[4] = { NULL, NULL, NULL, NULL };
- int count = 0, i;
- uint8_t *data;
- uint8_t lai[5];
-
-#ifdef TEST_EMPTY_FPLMN
- return 0;
-#endif
-
- /* skip, if no real valid SIM */
- if (subscr->sim_type != GSM_SIM_TYPE_READER || !subscr->sim_valid)
- return 0;
-
- /* get tail list from "PLMN not allowed" */
- llist_for_each_entry(na, &subscr->plmn_na, entry) {
- if (count < 4)
- nas[count] = na;
- else {
- nas[0] = nas[1];
- nas[1] = nas[2];
- nas[2] = nas[3];
- nas[3] = na;
- }
- count++;
- }
-
- /* write to SIM */
- LOGP(DMM, LOGL_INFO, "Updating FPLMN on SIM\n");
- nmsg = gsm_sim_msgb_alloc(subscr->sim_handle_update,
- SIM_JOB_UPDATE_BINARY);
- if (!nmsg)
- return -ENOMEM;
- nsh = (struct sim_hdr *) nmsg->data;
- data = msgb_put(nmsg, 12);
- nsh->path[0] = 0x7f20;
- nsh->path[1] = 0;
- nsh->file = 0x6f7b;
- for (i = 0; i < 4; i++) {
- if (nas[i]) {
- gsm48_encode_lai((struct gsm48_loc_area_id *)lai,
- nas[i]->mcc, nas[i]->mnc, 0);
- *data++ = lai[0];
- *data++ = lai[1];
- *data++ = lai[2];
- } else {
- *data++ = 0xff;
- *data++ = 0xff;
- *data++ = 0xff;
- }
- }
- sim_job(ms, nmsg);
-
- return 0;
-}
-
-/* update LOCI on SIM */
-int gsm_subscr_write_loci(struct osmocom_ms *ms)
-{
- struct gsm_subscriber *subscr = &ms->subscr;
- struct msgb *nmsg;
- struct sim_hdr *nsh;
- struct gsm1111_ef_loci *loci;
-
- /* skip, if no real valid SIM */
- if (subscr->sim_type != GSM_SIM_TYPE_READER || !subscr->sim_valid)
- return 0;
-
- LOGP(DMM, LOGL_INFO, "Updating LOCI on SIM\n");
-
- /* write to SIM */
- nmsg = gsm_sim_msgb_alloc(subscr->sim_handle_update,
- SIM_JOB_UPDATE_BINARY);
- if (!nmsg)
- return -ENOMEM;
- nsh = (struct sim_hdr *) nmsg->data;
- nsh->path[0] = 0x7f20;
- nsh->path[1] = 0;
- nsh->file = 0x6f7e;
- loci = (struct gsm1111_ef_loci *)msgb_put(nmsg, sizeof(*loci));
-
- /* TMSI */
- loci->tmsi = htonl(subscr->tmsi);
-
- /* LAI */
- gsm48_encode_lai(&loci->lai, subscr->mcc, subscr->mnc, subscr->lac);
-
- /* TMSI time */
- loci->tmsi_time = 0xff;
-
- /* location update status */
- switch (subscr->ustate) {
- case GSM_SIM_U1_UPDATED:
- loci->lupd_status = 0x00;
- break;
- case GSM_SIM_U3_ROAMING_NA:
- loci->lupd_status = 0x03;
- break;
- default:
- loci->lupd_status = 0x01;
- }
-
- sim_job(ms, nmsg);
-
- return 0;
-}
-
-static void subscr_sim_update_cb(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct sim_hdr *sh = (struct sim_hdr *) msg->data;
- uint8_t *payload = msg->data + sizeof(*sh);
-
- /* error handling */
- if (sh->job_type == SIM_JOB_ERROR)
- LOGP(DMM, LOGL_NOTICE, "SIM update failed (cause %d)\n",
- *payload);
-
- msgb_free(msg);
-}
-
-int gsm_subscr_generate_kc(struct osmocom_ms *ms, uint8_t key_seq,
- uint8_t *rand, uint8_t no_sim)
-{
- struct gsm_subscriber *subscr = &ms->subscr;
- struct msgb *nmsg;
- struct sim_hdr *nsh;
-
- /* not a SIM */
- if ((subscr->sim_type != GSM_SIM_TYPE_READER
- && subscr->sim_type != GSM_SIM_TYPE_TEST)
- || !subscr->sim_valid || no_sim) {
- struct gsm48_mm_event *nmme;
-
- LOGP(DMM, LOGL_INFO, "Sending dummy authentication response\n");
- nmsg = gsm48_mmevent_msgb_alloc(GSM48_MM_EVENT_AUTH_RESPONSE);
- if (!nmsg)
- return -ENOMEM;
- nmme = (struct gsm48_mm_event *) nmsg->data;
- nmme->sres[0] = 0x12;
- nmme->sres[1] = 0x34;
- nmme->sres[2] = 0x56;
- nmme->sres[3] = 0x78;
- gsm48_mmevent_msg(ms, nmsg);
-
- return 0;
- }
-
- /* test SIM */
- if (subscr->sim_type == GSM_SIM_TYPE_TEST) {
- struct gsm48_mm_event *nmme;
- uint8_t sres[4];
- struct gsm_settings *set = &ms->settings;
-
- if (set->test_ki_type == GSM_SIM_KEY_COMP128)
- comp128(set->test_ki, rand, sres, subscr->key);
- else
- xor96(set->test_ki, rand, sres, subscr->key);
- /* store sequence */
- subscr->key_seq = key_seq;
-
- LOGP(DMM, LOGL_INFO, "Sending authentication response\n");
- nmsg = gsm48_mmevent_msgb_alloc(GSM48_MM_EVENT_AUTH_RESPONSE);
- if (!nmsg)
- return -ENOMEM;
- nmme = (struct gsm48_mm_event *) nmsg->data;
- memcpy(nmme->sres, sres, 4);
- gsm48_mmevent_msg(ms, nmsg);
-
- return 0;
- }
-
- LOGP(DMM, LOGL_INFO, "Generating KEY at SIM\n");
-
- /* command to SIM */
- nmsg = gsm_sim_msgb_alloc(subscr->sim_handle_key, SIM_JOB_RUN_GSM_ALGO);
- if (!nmsg)
- return -ENOMEM;
- nsh = (struct sim_hdr *) nmsg->data;
- nsh->path[0] = 0x7f20;
- nsh->path[1] = 0;
-
- /* random */
- memcpy(msgb_put(nmsg, 16), rand, 16);
-
- /* store sequence */
- subscr->key_seq = key_seq;
-
- sim_job(ms, nmsg);
-
- return 0;
-}
-
-static void subscr_sim_key_cb(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm_subscriber *subscr = &ms->subscr;
- struct sim_hdr *sh = (struct sim_hdr *) msg->data;
- uint8_t *payload = msg->data + sizeof(*sh);
- uint16_t payload_len = msg->len - sizeof(*sh);
- struct msgb *nmsg;
- struct sim_hdr *nsh;
- struct gsm48_mm_event *nmme;
- uint8_t *data;
-
- /* error handling */
- if (sh->job_type == SIM_JOB_ERROR) {
- LOGP(DMM, LOGL_NOTICE, "key generation on SIM failed "
- "(cause %d)\n", *payload);
-
- msgb_free(msg);
-
- return;
- }
-
- if (payload_len < 12) {
- LOGP(DMM, LOGL_NOTICE, "response from SIM too short\n");
- return;
- }
-
- /* store key */
- memcpy(subscr->key, payload + 4, 8);
-
- /* write to SIM */
- LOGP(DMM, LOGL_INFO, "Updating KC on SIM\n");
- nmsg = gsm_sim_msgb_alloc(subscr->sim_handle_update,
- SIM_JOB_UPDATE_BINARY);
- if (!nmsg)
- return;
- nsh = (struct sim_hdr *) nmsg->data;
- nsh->path[0] = 0x7f20;
- nsh->path[1] = 0;
- nsh->file = 0x6f20;
- data = msgb_put(nmsg, 9);
- memcpy(data, subscr->key, 8);
- data[8] = subscr->key_seq;
- sim_job(ms, nmsg);
-
- /* return signed response */
- nmsg = gsm48_mmevent_msgb_alloc(GSM48_MM_EVENT_AUTH_RESPONSE);
- if (!nmsg)
- return;
- nmme = (struct gsm48_mm_event *) nmsg->data;
- memcpy(nmme->sres, payload, 4);
- gsm48_mmevent_msg(ms, nmsg);
-
- msgb_free(msg);
-}
-
-/*
- * detach
- */
-
-/* Detach card */
-int gsm_subscr_remove(struct osmocom_ms *ms)
-{
- struct gsm_subscriber *subscr = &ms->subscr;
- struct msgb *nmsg;
-
- if (!subscr->sim_valid) {
- LOGP(DMM, LOGL_ERROR, "Cannot remove card, no card present\n");
- return -EINVAL;
- }
-
- /* remove card */
- nmsg = gsm48_mmr_msgb_alloc(GSM48_MMR_NREG_REQ);
- if (!nmsg)
- return -ENOMEM;
- gsm48_mmr_downmsg(ms, nmsg);
-
- return 0;
-}
-
-/*
- * state and lists
- */
-
-static const char *subscr_ustate_names[] = {
- "U0_NULL",
- "U1_UPDATED",
- "U2_NOT_UPDATED",
- "U3_ROAMING_NA"
-};
-
-/* change to new U state */
-void new_sim_ustate(struct gsm_subscriber *subscr, int state)
-{
- LOGP(DMM, LOGL_INFO, "(ms %s) new state %s -> %s\n", subscr->ms->name,
- subscr_ustate_names[subscr->ustate],
- subscr_ustate_names[state]);
-
- subscr->ustate = state;
-}
-
-/* del forbidden PLMN. if MCC==0, flush complete list */
-int gsm_subscr_del_forbidden_plmn(struct gsm_subscriber *subscr, uint16_t mcc,
- uint16_t mnc)
-{
- struct gsm_sub_plmn_na *na, *na2;
- int deleted = 0;
-
- llist_for_each_entry_safe(na, na2, &subscr->plmn_na, entry) {
- if (!mcc || (na->mcc == mcc && na->mnc == mnc)) {
- LOGP(DPLMN, LOGL_INFO, "Delete from list of forbidden "
- "PLMNs (mcc=%s, mnc=%s)\n",
- gsm_print_mcc(mcc), gsm_print_mnc(mnc));
- llist_del(&na->entry);
- talloc_free(na);
- deleted = 1;
- if (mcc)
- break;
- }
- }
-
- if (deleted) {
- /* update plmn not allowed list on SIM */
- subscr_write_plmn_na(subscr->ms);
- }
-
- return -EINVAL;
-}
-
-/* add forbidden PLMN */
-int gsm_subscr_add_forbidden_plmn(struct gsm_subscriber *subscr, uint16_t mcc,
- uint16_t mnc, uint8_t cause)
-{
- struct gsm_sub_plmn_na *na;
-
- /* if already in the list, remove and add to tail */
- gsm_subscr_del_forbidden_plmn(subscr, mcc, mnc);
-
- LOGP(DPLMN, LOGL_INFO, "Add to list of forbidden PLMNs "
- "(mcc=%s, mnc=%s)\n", gsm_print_mcc(mcc), gsm_print_mnc(mnc));
- na = talloc_zero(l23_ctx, struct gsm_sub_plmn_na);
- if (!na)
- return -ENOMEM;
- na->mcc = mcc;
- na->mnc = mnc;
- na->cause = cause ? : -1; /* cause 0 is not allowed */
- llist_add_tail(&na->entry, &subscr->plmn_na);
-
- /* don't add Home PLMN to SIM */
- if (subscr->sim_valid && gsm_match_mnc(mcc, mnc, subscr->imsi))
- return -EINVAL;
-
- /* update plmn not allowed list on SIM */
- subscr_write_plmn_na(subscr->ms);
-
- return 0;
-}
-
-/* search forbidden PLMN */
-int gsm_subscr_is_forbidden_plmn(struct gsm_subscriber *subscr, uint16_t mcc,
- uint16_t mnc)
-{
- struct gsm_sub_plmn_na *na;
-
- llist_for_each_entry(na, &subscr->plmn_na, entry) {
- if (na->mcc == mcc && na->mnc == mnc)
- return 1;
- }
-
- return 0;
-}
-
-int gsm_subscr_dump_forbidden_plmn(struct osmocom_ms *ms,
- void (*print)(void *, const char *, ...), void *priv)
-{
- struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm_sub_plmn_na *temp;
-
- print(priv, "MCC |MNC |cause\n");
- print(priv, "-------+-------+-------\n");
- llist_for_each_entry(temp, &subscr->plmn_na, entry)
- print(priv, "%s |%s%s |#%d\n",
- gsm_print_mcc(temp->mcc), gsm_print_mnc(temp->mnc),
- ((temp->mnc & 0x00f) == 0x00f) ? " ":"", temp->cause);
-
- return 0;
-}
-
-/* dump subscriber */
-void gsm_subscr_dump(struct gsm_subscriber *subscr,
- void (*print)(void *, const char *, ...), void *priv)
-{
- int i;
- struct gsm_sub_plmn_list *plmn_list;
- struct gsm_sub_plmn_na *plmn_na;
-
- print(priv, "Mobile Subscriber of MS '%s':\n", subscr->ms->name);
-
- if (!subscr->sim_valid) {
- print(priv, " No SIM present.\n");
- return;
- }
-
- print(priv, " IMSI: %s\n", subscr->imsi);
- if (subscr->iccid[0])
- print(priv, " ICCID: %s\n", subscr->iccid);
- if (subscr->sim_spn[0])
- print(priv, " Service Provider Name: %s\n", subscr->sim_spn);
- if (subscr->msisdn[0])
- print(priv, " MSISDN: %s\n", subscr->msisdn);
- print(priv, " Status: %s IMSI %s", subscr_ustate_names[subscr->ustate],
- (subscr->imsi_attached) ? "attached" : "detached");
- if (subscr->tmsi != 0xffffffff)
- print(priv, " TSMI 0x%08x", subscr->tmsi);
- if (subscr->lac > 0x0000 && subscr->lac < 0xfffe) {
- print(priv, "\n");
- print(priv, " LAI: MCC %s MNC %s LAC 0x%04x "
- "(%s, %s)\n", gsm_print_mcc(subscr->mcc),
- gsm_print_mnc(subscr->mnc), subscr->lac,
- gsm_get_mcc(subscr->mcc),
- gsm_get_mnc(subscr->mcc, subscr->mnc));
- } else
- print(priv, " LAI: invalid\n");
- if (subscr->key_seq != 7) {
- print(priv, " Key: sequence %d ", subscr->key_seq);
- for (i = 0; i < sizeof(subscr->key); i++)
- print(priv, " %02x", subscr->key[i]);
- print(priv, "\n");
- }
- if (subscr->plmn_valid)
- print(priv, " Registered PLMN: MCC %s MNC %s (%s, %s)\n",
- gsm_print_mcc(subscr->plmn_mcc),
- gsm_print_mnc(subscr->plmn_mnc),
- gsm_get_mcc(subscr->plmn_mcc),
- gsm_get_mnc(subscr->plmn_mcc, subscr->plmn_mnc));
- print(priv, " Access barred cells: %s\n",
- (subscr->acc_barr) ? "yes" : "no");
- print(priv, " Access classes:");
- for (i = 0; i < 16; i++)
- if ((subscr->acc_class & (1 << i)))
- print(priv, " C%d", i);
- print(priv, "\n");
- if (!llist_empty(&subscr->plmn_list)) {
- print(priv, " List of preferred PLMNs:\n");
- print(priv, " MCC |MNC\n");
- print(priv, " -------+-------\n");
- llist_for_each_entry(plmn_list, &subscr->plmn_list, entry)
- print(priv, " %s |%s (%s, %s)\n",
- gsm_print_mcc(plmn_list->mcc),
- gsm_print_mnc(plmn_list->mnc),
- gsm_get_mcc(plmn_list->mcc),
- gsm_get_mnc(plmn_list->mcc, plmn_list->mnc));
- }
- if (!llist_empty(&subscr->plmn_na)) {
- print(priv, " List of forbidden PLMNs:\n");
- print(priv, " MCC |MNC |cause\n");
- print(priv, " -------+-------+-------\n");
- llist_for_each_entry(plmn_na, &subscr->plmn_na, entry)
- print(priv, " %s |%s%s |#%d "
- "(%s, %s)\n", gsm_print_mcc(plmn_na->mcc),
- gsm_print_mnc(plmn_na->mnc),
- ((plmn_na->mnc & 0x00f) == 0x00f) ? " ":"",
- plmn_na->cause, gsm_get_mcc(plmn_na->mcc),
- gsm_get_mnc(plmn_na->mcc, plmn_na->mnc));
- }
-}
-
diff --git a/Src/osmoconbb/src/host/layer23/src/mobile/support.c b/Src/osmoconbb/src/host/layer23/src/mobile/support.c
deleted file mode 100644
index c4269ac..0000000
--- a/Src/osmoconbb/src/host/layer23/src/mobile/support.c
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * (C) 2010 by Andreas Eversberg <jolly@eversberg.eu>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdio.h>
-#include <stdint.h>
-#include <string.h>
-
-#include <osmocom/bb/common/osmocom_data.h>
-
-void gsm_support_init(struct osmocom_ms *ms)
-{
- struct gsm_support *sup = &ms->support;
-
- memset(sup, 0, sizeof(*sup));
- sup->ms = ms;
-
- /* controlled early classmark sending */
- sup->es_ind = 0; /* no */
- /* revision level */
- sup->rev_lev = 1; /* phase 2 mobile station */
- /* support of VGCS */
- sup->vgcs = 0; /* no */
- /* support of VBS */
- sup->vbs = 0; /* no */
- /* support of SMS */
- sup->sms_ptp = 0; /* no */
- /* screening indicator */
- sup->ss_ind = 1; /* phase 2 error handling */
- /* pseudo synchronised capability */
- sup->ps_cap = 0; /* no */
- /* CM service prompt */
- sup->cmsp = 0; /* no */
- /* solsa support */
- sup->solsa = 0; /* no */
- /* location service support */
- sup->lcsva = 0; /* no */
- sup->loc_serv = 0; /* no */
- /* codec supprot */
- sup->a5_1 = 1;
- sup->a5_2 = 1;
- sup->a5_3 = 0;
- sup->a5_4 = 0;
- sup->a5_5 = 0;
- sup->a5_6 = 0;
- sup->a5_7 = 0;
- /* radio support */
- sup->p_gsm = 1; /* P-GSM */
- sup->e_gsm = 1; /* E-GSM */
- sup->r_gsm = 1; /* R-GSM */
- sup->dcs = 1;
- sup->gsm_850 = 1;
- sup->pcs = 1;
- sup->gsm_480 = 0;
- sup->gsm_450 = 0;
- /* rf power capability */
- sup->class_900 = 4; /* CLASS 4: Handheld 2W */
- sup->class_850 = 4;
- sup->class_400 = 4;
- sup->class_dcs = 1; /* CLASS 1: Handheld 1W */
- sup->class_pcs = 1;
- /* multi slot support */
- sup->ms_sup = 0; /* no */
- /* ucs2 treatment */
- sup->ucs2_treat = 0; /* default */
- /* support extended measurements */
- sup->ext_meas = 0; /* no */
- /* support switched measurement capability */
- sup->meas_cap = 0; /* no */
- //sup->sms_val = ;
- //sup->sm_val = ;
-
- /* radio */
- sup->ch_cap = GSM_CAP_SDCCH_TCHF_TCHH;
- sup->min_rxlev_db = -106; // TODO
- sup->sync_to = 6; /* how long to wait sync (0.9 s) */
- sup->scan_to = 4; /* how long to wait for all sysinfos (>=4 s) */
- sup->dsc_max = 90; /* the specs defines 90 */
-
- /* codec */
- sup->full_v1 = 1;
- sup->full_v2 = 1;
- sup->full_v3 = 0;
- sup->half_v1 = 1;
- sup->half_v3 = 0;
-}
-
-/* (3.2.1) maximum channels to scan within each band */
-struct gsm_support_scan_max gsm_sup_smax[] = {
- { 259, 293, 15, 0 }, /* GSM 450 */
- { 306, 340, 15, 0 }, /* GSM 480 */
- { 438, 511, 25, 0 },
- { 128, 251, 30, 0 }, /* GSM 850 */
- { 955, 124, 30, 0 }, /* P,E,R GSM */
- { 512, 885, 40, 0 }, /* DCS 1800 */
- { 1024, 1322, 40, 0 }, /* PCS 1900 */
- { 0, 0, 0, 0 }
-};
-
-#define SUP_SET(item) \
- ((sup->item) ? ((set->item) ? "yes" : "disabled") : "no")
-/* dump support */
-void gsm_support_dump(struct osmocom_ms *ms,
- void (*print)(void *, const char *, ...), void *priv)
-{
- struct gsm_support *sup = &ms->support;
- struct gsm_settings *set = &ms->settings;
-
- print(priv, "Supported features of MS '%s':\n", sup->ms->name);
- print(priv, " Phase %d mobile station\n", sup->rev_lev + 1);
- print(priv, " R-GSM : %s\n", SUP_SET(r_gsm));
- print(priv, " E-GSM : %s\n", SUP_SET(e_gsm));
- print(priv, " P-GSM : %s\n", SUP_SET(p_gsm));
- if (set->r_gsm || set->e_gsm || set->p_gsm)
- print(priv, " GSM900 Class : %d\n", set->class_900);
- print(priv, " DCS 1800 : %s\n", SUP_SET(dcs));
- if (set->dcs)
- print(priv, " DCS Class : %d\n", set->class_dcs);
- print(priv, " GSM 850 : %s\n", SUP_SET(gsm_850));
- if (set->gsm_850)
- print(priv, " GSM 850 Class: %d\n", set->class_850);
- print(priv, " PCS 1900 : %s\n", SUP_SET(pcs));
- if (set->pcs)
- print(priv, " PCS Class : %d\n", set->class_pcs);
- print(priv, " GSM 480 : %s\n", SUP_SET(gsm_480));
- print(priv, " GSM 450 : %s\n", SUP_SET(gsm_450));
- if (set->gsm_480 | set->gsm_450)
- print(priv, " GSM 400 Class: %d\n", set->class_400);
- print(priv, " CECS : %s\n", (sup->es_ind) ? "yes" : "no");
- print(priv, " VGCS : %s\n", (sup->vgcs) ? "yes" : "no");
- print(priv, " VBS : %s\n", (sup->vbs) ? "yes" : "no");
- print(priv, " SMS : %s\n", SUP_SET(sms_ptp));
- print(priv, " SS_IND : %s\n", (sup->ss_ind) ? "yes" : "no");
- print(priv, " PS_CAP : %s\n", (sup->ps_cap) ? "yes" : "no");
- print(priv, " CMSP : %s\n", (sup->cmsp) ? "yes" : "no");
- print(priv, " SoLSA : %s\n", (sup->solsa) ? "yes" : "no");
- print(priv, " LCSVA : %s\n", (sup->lcsva) ? "yes" : "no");
- print(priv, " LOC_SERV : %s\n", (sup->loc_serv) ? "yes" : "no");
- print(priv, " A5/1 : %s\n", SUP_SET(a5_1));
- print(priv, " A5/2 : %s\n", SUP_SET(a5_2));
- print(priv, " A5/3 : %s\n", SUP_SET(a5_3));
- print(priv, " A5/4 : %s\n", SUP_SET(a5_4));
- print(priv, " A5/5 : %s\n", SUP_SET(a5_5));
- print(priv, " A5/6 : %s\n", SUP_SET(a5_6));
- print(priv, " A5/7 : %s\n", SUP_SET(a5_7));
- print(priv, " A5/1 : %s\n", SUP_SET(a5_1));
- switch (set->ch_cap) {
- case GSM_CAP_SDCCH:
- print(priv, " Channels : SDCCH only\n");
- break;
- case GSM_CAP_SDCCH_TCHF:
- print(priv, " Channels : SDCCH + TCH/F\n");
- break;
- case GSM_CAP_SDCCH_TCHF_TCHH:
- print(priv, " Channels : SDCCH + TCH/F + TCH/H\n");
- break;
- }
- print(priv, " Full-Rate V1 : %s\n", SUP_SET(full_v1));
- print(priv, " Full-Rate V2 : %s\n", SUP_SET(full_v2));
- print(priv, " Full-Rate V3 : %s\n", SUP_SET(full_v3));
- print(priv, " Half-Rate V1 : %s\n", SUP_SET(half_v1));
- print(priv, " Half-Rate V3 : %s\n", SUP_SET(half_v3));
- print(priv, " Min RXLEV : %d\n", set->min_rxlev_db);
-}
-
diff --git a/Src/osmoconbb/src/host/layer23/src/mobile/transaction.c b/Src/osmoconbb/src/host/layer23/src/mobile/transaction.c
deleted file mode 100644
index 4b66050..0000000
--- a/Src/osmoconbb/src/host/layer23/src/mobile/transaction.c
+++ /dev/null
@@ -1,143 +0,0 @@
-/* GSM 04.07 Transaction handling */
-
-/* (C) 2009 by Harald Welte <laforge@gnumonks.org>
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-
-#include <osmocom/core/talloc.h>
-#include <osmocom/core/timer.h>
-#include <osmocom/core/msgb.h>
-
-#include <osmocom/bb/common/osmocom_data.h>
-#include <osmocom/bb/common/logging.h>
-#include <osmocom/bb/mobile/mncc.h>
-#include <osmocom/bb/mobile/transaction.h>
-
-extern void *l23_ctx;
-
-void _gsm48_cc_trans_free(struct gsm_trans *trans);
-
-struct gsm_trans *trans_find_by_id(struct osmocom_ms *ms,
- uint8_t proto, uint8_t trans_id)
-{
- struct gsm_trans *trans;
-
- llist_for_each_entry(trans, &ms->trans_list, entry) {
- if (trans->protocol == proto &&
- trans->transaction_id == trans_id)
- return trans;
- }
- return NULL;
-}
-
-struct gsm_trans *trans_find_by_callref(struct osmocom_ms *ms,
- uint32_t callref)
-{
- struct gsm_trans *trans;
-
- llist_for_each_entry(trans, &ms->trans_list, entry) {
- if (trans->callref == callref)
- return trans;
- }
- return NULL;
-}
-
-struct gsm_trans *trans_alloc(struct osmocom_ms *ms,
- uint8_t protocol, uint8_t trans_id,
- uint32_t callref)
-{
- struct gsm_trans *trans;
-
- trans = talloc_zero(l23_ctx, struct gsm_trans);
- if (!trans)
- return NULL;
-
- DEBUGP(DCC, "ms %s allocates transaction (proto %d trans_id %d "
- "callref %x mem %p)\n", ms->name, protocol, trans_id, callref,
- trans);
-
- trans->ms = ms;
-
- trans->protocol = protocol;
- trans->transaction_id = trans_id;
- trans->callref = callref;
-
- llist_add_tail(&trans->entry, &ms->trans_list);
-
- return trans;
-}
-
-void trans_free(struct gsm_trans *trans)
-{
- switch (trans->protocol) {
- case GSM48_PDISC_CC:
- _gsm48_cc_trans_free(trans);
- break;
-#if 0
- case GSM48_PDISC_SS:
- _gsm411_ss_trans_free(trans);
- break;
- case GSM48_PDISC_SMS:
- _gsm411_sms_trans_free(trans);
- break;
-#endif
- }
-
- DEBUGP(DCC, "ms %s frees transaction (mem %p)\n", trans->ms->name,
- trans);
-
- llist_del(&trans->entry);
-
- talloc_free(trans);
-}
-
-/* allocate an unused transaction ID
- * in the given protocol using the ti_flag specified */
-int trans_assign_trans_id(struct osmocom_ms *ms,
- uint8_t protocol, uint8_t ti_flag)
-{
- struct gsm_trans *trans;
- unsigned int used_tid_bitmask = 0;
- int i, j, h;
-
- if (ti_flag)
- ti_flag = 0x8;
-
- /* generate bitmask of already-used TIDs for this (proto) */
- llist_for_each_entry(trans, &ms->trans_list, entry) {
- if (trans->protocol != protocol ||
- trans->transaction_id == 0xff)
- continue;
- used_tid_bitmask |= (1 << trans->transaction_id);
- }
-
- /* find a new one, trying to go in a 'circular' pattern */
- for (h = 6; h > 0; h--)
- if (used_tid_bitmask & (1 << (h | ti_flag)))
- break;
- for (i = 0; i < 7; i++) {
- j = ((h + i) % 7) | ti_flag;
- if ((used_tid_bitmask & (1 << j)) == 0)
- return j;
- }
-
- return -1;
-}
-
diff --git a/Src/osmoconbb/src/host/layer23/src/mobile/voice.c b/Src/osmoconbb/src/host/layer23/src/mobile/voice.c
deleted file mode 100644
index b767833..0000000
--- a/Src/osmoconbb/src/host/layer23/src/mobile/voice.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * (C) 2010 by Andreas Eversberg <jolly@eversberg.eu>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdlib.h>
-
-#include <osmocom/core/msgb.h>
-
-#include <osmocom/bb/common/osmocom_data.h>
-#include <osmocom/bb/mobile/mncc.h>
-#include <osmocom/bb/mobile/voice.h>
-
-
-/*
- * receive voice
- */
-
-static int gsm_recv_voice(struct osmocom_ms *ms, struct msgb *msg)
-{
- struct gsm_data_frame *mncc;
-
- /* distribute and then free */
- if (ms->mncc_entity.mncc_recv && ms->mncc_entity.ref) {
- /* push mncc header in front of data */
- mncc = (struct gsm_data_frame *)
- msgb_push(msg, sizeof(struct gsm_data_frame));
- mncc->msg_type = GSM_TCHF_FRAME;
- mncc->callref = ms->mncc_entity.ref;
- ms->mncc_entity.mncc_recv(ms, mncc->msg_type, mncc);
- }
-
- msgb_free(msg);
- return 0;
-}
-
-/*
- * send voice
- */
-int gsm_send_voice(struct osmocom_ms *ms, struct gsm_data_frame *data)
-{
- struct msgb *nmsg;
-
- nmsg = msgb_alloc_headroom(33 + 64, 64, "TCH/F");
- if (!nmsg)
- return -ENOMEM;
- nmsg->l2h = msgb_put(nmsg, 33);
- memcpy(nmsg->l2h, data->data, 33);
-
- return gsm48_rr_tx_voice(ms, nmsg);
-}
-
-/*
- * init
- */
-
-int gsm_voice_init(struct osmocom_ms *ms)
-{
- ms->l1_entity.l1_traffic_ind = gsm_recv_voice;
-
- return 0;
-}
diff --git a/Src/osmoconbb/src/host/layer23/src/mobile/vty_interface.c b/Src/osmoconbb/src/host/layer23/src/mobile/vty_interface.c
deleted file mode 100644
index c0a7cef..0000000
--- a/Src/osmoconbb/src/host/layer23/src/mobile/vty_interface.c
+++ /dev/null
@@ -1,2798 +0,0 @@
-/*
- * (C) 2010 by Andreas Eversberg <jolly@eversberg.eu>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <string.h>
-#include <stdlib.h>
-#include <stdarg.h>
-#include <unistd.h>
-#include <sys/types.h>
-
-#include <osmocom/core/utils.h>
-#include <osmocom/gsm/gsm48.h>
-#include <osmocom/core/talloc.h>
-#include <osmocom/core/signal.h>
-
-#include <osmocom/bb/common/osmocom_data.h>
-#include <osmocom/bb/common/networks.h>
-#include <osmocom/bb/common/gps.h>
-#include <osmocom/bb/mobile/mncc.h>
-#include <osmocom/bb/mobile/transaction.h>
-#include <osmocom/bb/mobile/vty.h>
-#include <osmocom/bb/mobile/app_mobile.h>
-#include <osmocom/vty/telnet_interface.h>
-
-void *l23_ctx;
-
-int mncc_call(struct osmocom_ms *ms, char *number);
-int mncc_hangup(struct osmocom_ms *ms);
-int mncc_answer(struct osmocom_ms *ms);
-int mncc_hold(struct osmocom_ms *ms);
-int mncc_retrieve(struct osmocom_ms *ms, int number);
-int mncc_dtmf(struct osmocom_ms *ms, char *dtmf);
-
-extern struct llist_head ms_list;
-extern struct llist_head active_connections;
-
-struct cmd_node ms_node = {
- MS_NODE,
- "%s(ms)#",
- 1
-};
-
-struct cmd_node testsim_node = {
- TESTSIM_NODE,
- "%s(test-sim)#",
- 1
-};
-
-struct cmd_node support_node = {
- SUPPORT_NODE,
- "%s(support)#",
- 1
-};
-
-static void print_vty(void *priv, const char *fmt, ...)
-{
- char buffer[1000];
- struct vty *vty = priv;
- va_list args;
-
- va_start(args, fmt);
- vsnprintf(buffer, sizeof(buffer) - 1, fmt, args);
- buffer[sizeof(buffer) - 1] = '\0';
- va_end(args);
-
- if (buffer[0]) {
- if (buffer[strlen(buffer) - 1] == '\n') {
- buffer[strlen(buffer) - 1] = '\0';
- vty_out(vty, "%s%s", buffer, VTY_NEWLINE);
- } else
- vty_out(vty, "%s", buffer);
- }
-}
-
-int vty_check_number(struct vty *vty, const char *number)
-{
- int i;
-
- for (i = 0; i < strlen(number); i++) {
- /* allow international notation with + */
- if (i == 0 && number[i] == '+')
- continue;
- if (!(number[i] >= '0' && number[i] <= '9')
- && number[i] != '*'
- && number[i] != '#'
- && !(number[i] >= 'a' && number[i] <= 'c')) {
- vty_out(vty, "Invalid digit '%c' of number!%s",
- number[i], VTY_NEWLINE);
- return -EINVAL;
- }
- }
- if (number[0] == '\0' || (number[0] == '+' && number[1] == '\0')) {
- vty_out(vty, "Given number has no digits!%s", VTY_NEWLINE);
- return -EINVAL;
- }
-
- return 0;
-}
-
-int vty_reading = 0;
-static int hide_default = 0;
-
-static void vty_restart(struct vty *vty, struct osmocom_ms *ms)
-{
- if (vty_reading)
- return;
- if (ms->shutdown != 0)
- return;
- vty_out(vty, "You must restart MS '%s' ('shutdown / no shutdown') for "
- "change to take effect!%s", ms->name, VTY_NEWLINE);
-}
-
-static void vty_restart_if_started(struct vty *vty, struct osmocom_ms *ms)
-{
- if (!ms->started)
- return;
- vty_restart(vty, ms);
-}
-
-static struct osmocom_ms *get_ms(const char *name, struct vty *vty)
-{
- struct osmocom_ms *ms;
-
- llist_for_each_entry(ms, &ms_list, entity) {
- if (!strcmp(ms->name, name)) {
- if (ms->shutdown) {
- vty_out(vty, "MS '%s' is admin down.%s", name,
- VTY_NEWLINE);
- return NULL;
- }
- return ms;
- }
- }
- vty_out(vty, "MS name '%s' does not exits.%s", name, VTY_NEWLINE);
-
- return NULL;
-}
-
-static void gsm_ms_dump(struct osmocom_ms *ms, struct vty *vty)
-{
- struct gsm_settings *set = &ms->settings;
- struct gsm_trans *trans;
- char *service = "";
-
- if (!ms->started)
- service = ", radio is not started";
- else if (ms->mmlayer.state == GSM48_MM_ST_MM_IDLE) {
- /* current MM idle state */
- switch (ms->mmlayer.substate) {
- case GSM48_MM_SST_NORMAL_SERVICE:
- case GSM48_MM_SST_PLMN_SEARCH_NORMAL:
- service = ", service is normal";
- break;
- case GSM48_MM_SST_LOC_UPD_NEEDED:
- case GSM48_MM_SST_ATTEMPT_UPDATE:
- service = ", service is limited (pending)";
- break;
- case GSM48_MM_SST_NO_CELL_AVAIL:
- service = ", service is unavailable";
- break;
- default:
- if (ms->subscr.sim_valid)
- service = ", service is limited";
- else
- service = ", service is limited "
- "(IMSI detached)";
- break;
- }
- } else
- service = ", MM connection active";
-
- vty_out(vty, "MS '%s' is %s%s%s%s", ms->name,
- (ms->shutdown) ? "administratively " : "",
- (ms->shutdown || !ms->started) ? "down" : "up",
- (!ms->shutdown) ? service : "",
- VTY_NEWLINE);
- vty_out(vty, " IMEI: %s%s", set->imei, VTY_NEWLINE);
- vty_out(vty, " IMEISV: %s%s", set->imeisv, VTY_NEWLINE);
- if (set->imei_random)
- vty_out(vty, " IMEI generation: random (%d trailing "
- "digits)%s", set->imei_random, VTY_NEWLINE);
- else
- vty_out(vty, " IMEI generation: fixed%s", VTY_NEWLINE);
-
- if (ms->shutdown)
- return;
-
- if (set->plmn_mode == PLMN_MODE_AUTO)
- vty_out(vty, " automatic network selection state: %s%s",
- get_a_state_name(ms->plmn.state), VTY_NEWLINE);
- else
- vty_out(vty, " manual network selection state : %s%s",
- get_m_state_name(ms->plmn.state), VTY_NEWLINE);
- if (ms->plmn.mcc)
- vty_out(vty, " MCC=%s "
- "MNC=%s (%s, %s)%s", gsm_print_mcc(ms->plmn.mcc),
- gsm_print_mnc(ms->plmn.mnc), gsm_get_mcc(ms->plmn.mcc),
- gsm_get_mnc(ms->plmn.mcc, ms->plmn.mnc), VTY_NEWLINE);
- vty_out(vty, " cell selection state: %s%s",
- get_cs_state_name(ms->cellsel.state), VTY_NEWLINE);
- if (ms->cellsel.sel_mcc) {
- vty_out(vty, " ARFCN=%s MCC=%s MNC=%s "
- "LAC=0x%04x CELLID=0x%04x%s",
- gsm_print_arfcn(ms->cellsel.sel_arfcn),
- gsm_print_mcc(ms->cellsel.sel_mcc),
- gsm_print_mnc(ms->cellsel.sel_mnc),
- ms->cellsel.sel_lac, ms->cellsel.sel_id, VTY_NEWLINE);
- vty_out(vty, " (%s, %s)%s",
- gsm_get_mcc(ms->cellsel.sel_mcc),
- gsm_get_mnc(ms->cellsel.sel_mcc, ms->cellsel.sel_mnc),
- VTY_NEWLINE);
- }
- vty_out(vty, " radio ressource layer state: %s%s",
- gsm48_rr_state_names[ms->rrlayer.state], VTY_NEWLINE);
- vty_out(vty, " mobility management layer state: %s",
- gsm48_mm_state_names[ms->mmlayer.state]);
- if (ms->mmlayer.state == GSM48_MM_ST_MM_IDLE)
- vty_out(vty, ", %s",
- gsm48_mm_substate_names[ms->mmlayer.substate]);
- vty_out(vty, "%s", VTY_NEWLINE);
- llist_for_each_entry(trans, &ms->trans_list, entry) {
- vty_out(vty, " call control state: %s%s",
- gsm48_cc_state_name(trans->cc.state), VTY_NEWLINE);
- }
-}
-
-
-DEFUN(show_ms, show_ms_cmd, "show ms [MS_NAME]",
- SHOW_STR "Display available MS entities\n")
-{
- struct osmocom_ms *ms;
-
- if (argc) {
- llist_for_each_entry(ms, &ms_list, entity) {
- if (!strcmp(ms->name, argv[0])) {
- gsm_ms_dump(ms, vty);
- return CMD_SUCCESS;
- }
- }
- vty_out(vty, "MS name '%s' does not exits.%s", argv[0],
- VTY_NEWLINE);
- return CMD_WARNING;
- } else {
- llist_for_each_entry(ms, &ms_list, entity) {
- gsm_ms_dump(ms, vty);
- vty_out(vty, "%s", VTY_NEWLINE);
- }
- }
-
- return CMD_SUCCESS;
-}
-
-DEFUN(show_support, show_support_cmd, "show support [MS_NAME]",
- SHOW_STR "Display information about MS support\n"
- "Name of MS (see \"show ms\")")
-{
- struct osmocom_ms *ms;
-
- if (argc) {
- ms = get_ms(argv[0], vty);
- if (!ms)
- return CMD_WARNING;
- gsm_support_dump(ms, print_vty, vty);
- } else {
- llist_for_each_entry(ms, &ms_list, entity) {
- gsm_support_dump(ms, print_vty, vty);
- vty_out(vty, "%s", VTY_NEWLINE);
- }
- }
-
- return CMD_SUCCESS;
-}
-
-DEFUN(show_subscr, show_subscr_cmd, "show subscriber [MS_NAME]",
- SHOW_STR "Display information about subscriber\n"
- "Name of MS (see \"show ms\")")
-{
- struct osmocom_ms *ms;
-
- if (argc) {
- ms = get_ms(argv[0], vty);
- if (!ms)
- return CMD_WARNING;
- gsm_subscr_dump(&ms->subscr, print_vty, vty);
- } else {
- llist_for_each_entry(ms, &ms_list, entity) {
- if (!ms->shutdown) {
- gsm_subscr_dump(&ms->subscr, print_vty, vty);
- vty_out(vty, "%s", VTY_NEWLINE);
- }
- }
- }
-
- return CMD_SUCCESS;
-}
-
-DEFUN(show_cell, show_cell_cmd, "show cell MS_NAME",
- SHOW_STR "Display information about received cells\n"
- "Name of MS (see \"show ms\")")
-{
- struct osmocom_ms *ms;
-
- ms = get_ms(argv[0], vty);
- if (!ms)
- return CMD_WARNING;
-
- gsm322_dump_cs_list(&ms->cellsel, GSM322_CS_FLAG_SUPPORT, print_vty,
- vty);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(show_cell_si, show_cell_si_cmd, "show cell MS_NAME <0-1023> [pcs]",
- SHOW_STR "Display information about received cell\n"
- "Name of MS (see \"show ms\")\nRadio frequency number\n"
- "Given frequency is PCS band (1900) rather than DCS band.")
-{
- struct osmocom_ms *ms;
- struct gsm48_sysinfo *s;
- uint16_t arfcn = atoi(argv[1]);
-
- ms = get_ms(argv[0], vty);
- if (!ms)
- return CMD_WARNING;
-
- if (argc > 2) {
- if (arfcn < 512 || arfcn > 810) {
- vty_out(vty, "Given ARFCN not in PCS band%s",
- VTY_NEWLINE);
- return CMD_WARNING;
- }
- arfcn |= ARFCN_PCS;
- }
-
- s = ms->cellsel.list[arfcn2index(arfcn)].sysinfo;
- if (!s) {
- vty_out(vty, "Given ARFCN '%s' has no sysinfo available%s",
- argv[1], VTY_NEWLINE);
- return CMD_SUCCESS;
- }
-
- gsm48_sysinfo_dump(s, arfcn, print_vty, vty, ms->settings.freq_map);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(show_nbcells, show_nbcells_cmd, "show neighbour-cells MS_NAME",
- SHOW_STR "Display information about current neighbour cells\n"
- "Name of MS (see \"show ms\")")
-{
- struct osmocom_ms *ms;
-
- ms = get_ms(argv[0], vty);
- if (!ms)
- return CMD_WARNING;
-
- gsm322_dump_nb_list(&ms->cellsel, print_vty, vty);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(show_ba, show_ba_cmd, "show ba MS_NAME [MCC] [MNC]",
- SHOW_STR "Display information about band allocations\n"
- "Name of MS (see \"show ms\")\nMobile Country Code\n"
- "Mobile Network Code")
-{
- struct osmocom_ms *ms;
- uint16_t mcc = 0, mnc = 0;
-
- ms = get_ms(argv[0], vty);
- if (!ms)
- return CMD_WARNING;
-
- if (argc >= 3) {
- mcc = gsm_input_mcc((char *)argv[1]);
- mnc = gsm_input_mnc((char *)argv[2]);
- if (mcc == GSM_INPUT_INVALID) {
- vty_out(vty, "Given MCC invalid%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
- if (mnc == GSM_INPUT_INVALID) {
- vty_out(vty, "Given MNC invalid%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
- }
-
- gsm322_dump_ba_list(&ms->cellsel, mcc, mnc, print_vty, vty);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(show_forb_plmn, show_forb_plmn_cmd, "show forbidden plmn MS_NAME",
- SHOW_STR "Display information about forbidden cells / networks\n"
- "Display forbidden PLMNs\nName of MS (see \"show ms\")")
-{
- struct osmocom_ms *ms;
-
- ms = get_ms(argv[0], vty);
- if (!ms)
- return CMD_WARNING;
-
- gsm_subscr_dump_forbidden_plmn(ms, print_vty, vty);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(show_forb_la, show_forb_la_cmd, "show forbidden location-area MS_NAME",
- SHOW_STR "Display information about forbidden cells / networks\n"
- "Display forbidden location areas\nName of MS (see \"show ms\")")
-{
- struct osmocom_ms *ms;
-
- ms = get_ms(argv[0], vty);
- if (!ms)
- return CMD_WARNING;
-
- gsm322_dump_forbidden_la(ms, print_vty, vty);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(monitor_network, monitor_network_cmd, "monitor network MS_NAME",
- "Monitor...\nMonitor network information\nName of MS (see \"show ms\")")
-{
- struct osmocom_ms *ms;
-
- ms = get_ms(argv[0], vty);
- if (!ms)
- return CMD_WARNING;
-
- gsm48_rr_start_monitor(ms);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(no_monitor_network, no_monitor_network_cmd, "no monitor network MS_NAME",
- NO_STR "Monitor...\nDeactivate monitor of network information\n"
- "Name of MS (see \"show ms\")")
-{
- struct osmocom_ms *ms;
-
- ms = get_ms(argv[0], vty);
- if (!ms)
- return CMD_WARNING;
-
- gsm48_rr_stop_monitor(ms);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(sim_test, sim_test_cmd, "sim testcard MS_NAME [MCC] [MNC] [LAC] [TMSI]",
- "SIM actions\nAttach bulit in test SIM\nName of MS (see \"show ms\")\n"
- "Mobile Country Code of RPLMN\nMobile Network Code of RPLMN\n"
- "Optionally location area code\nOptionally current assigned TMSI")
-{
- struct osmocom_ms *ms;
- uint16_t mcc = 0x001, mnc = 0x01f, lac = 0x0000;
- uint32_t tmsi = 0xffffffff;
-
- ms = get_ms(argv[0], vty);
- if (!ms)
- return CMD_WARNING;
-
- if (ms->subscr.sim_valid) {
- vty_out(vty, "SIM already attached, remove first!%s",
- VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- if (argc >= 3) {
- mcc = gsm_input_mcc((char *)argv[1]);
- mnc = gsm_input_mnc((char *)argv[2]);
- if (mcc == GSM_INPUT_INVALID) {
- vty_out(vty, "Given MCC invalid%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
- if (mnc == GSM_INPUT_INVALID) {
- vty_out(vty, "Given MNC invalid%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
- }
-
- if (argc >= 4)
- lac = strtoul(argv[3], NULL, 16);
-
- if (argc >= 5)
- tmsi = strtoul(argv[4], NULL, 16);
-
- gsm_subscr_testcard(ms, mcc, mnc, lac, tmsi);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(sim_reader, sim_reader_cmd, "sim reader MS_NAME",
- "SIM actions\nAttach SIM from reader\nName of MS (see \"show ms\")")
-{
- struct osmocom_ms *ms;
-
- ms = get_ms(argv[0], vty);
- if (!ms)
- return CMD_WARNING;
-
- if (ms->subscr.sim_valid) {
- vty_out(vty, "SIM already attached, remove first!%s",
- VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- gsm_subscr_simcard(ms);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(sim_remove, sim_remove_cmd, "sim remove MS_NAME",
- "SIM actions\nDetach SIM card\nName of MS (see \"show ms\")")
-{
- struct osmocom_ms *ms;
-
- ms = get_ms(argv[0], vty);
- if (!ms)
- return CMD_WARNING;
-
- if (!ms->subscr.sim_valid) {
- vty_out(vty, "No SIM attached!%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- gsm_subscr_remove(ms);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(sim_pin, sim_pin_cmd, "sim pin MS_NAME PIN",
- "SIM actions\nEnter PIN for SIM card\nName of MS (see \"show ms\")\n"
- "PIN number")
-{
- struct osmocom_ms *ms;
-
- ms = get_ms(argv[0], vty);
- if (!ms)
- return CMD_WARNING;
-
- if (strlen(argv[1]) < 4 || strlen(argv[1]) > 8) {
- vty_out(vty, "PIN must be in range 4..8!%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- if (!ms->subscr.sim_pin_required) {
- vty_out(vty, "No PIN is required at this time!%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- gsm_subscr_sim_pin(ms, (char *)argv[1], "", 0);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(sim_disable_pin, sim_disable_pin_cmd, "sim disable-pin MS_NAME PIN",
- "SIM actions\nDisable PIN of SIM card\nName of MS (see \"show ms\")\n"
- "PIN number")
-{
- struct osmocom_ms *ms;
-
- ms = get_ms(argv[0], vty);
- if (!ms)
- return CMD_WARNING;
-
- if (strlen(argv[1]) < 4 || strlen(argv[1]) > 8) {
- vty_out(vty, "PIN must be in range 4..8!%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- gsm_subscr_sim_pin(ms, (char *)argv[1], "", -1);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(sim_enable_pin, sim_enable_pin_cmd, "sim enable-pin MS_NAME PIN",
- "SIM actions\nEnable PIN of SIM card\nName of MS (see \"show ms\")\n"
- "PIN number")
-{
- struct osmocom_ms *ms;
-
- ms = get_ms(argv[0], vty);
- if (!ms)
- return CMD_WARNING;
-
- if (strlen(argv[1]) < 4 || strlen(argv[1]) > 8) {
- vty_out(vty, "PIN must be in range 4..8!%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- gsm_subscr_sim_pin(ms, (char *)argv[1], "", 1);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(sim_change_pin, sim_change_pin_cmd, "sim change-pin MS_NAME OLD NEW",
- "SIM actions\nChange PIN of SIM card\nName of MS (see \"show ms\")\n"
- "Old PIN number\nNew PIN number")
-{
- struct osmocom_ms *ms;
-
- ms = get_ms(argv[0], vty);
- if (!ms)
- return CMD_WARNING;
-
- if (strlen(argv[1]) < 4 || strlen(argv[1]) > 8) {
- vty_out(vty, "Old PIN must be in range 4..8!%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
- if (strlen(argv[2]) < 4 || strlen(argv[2]) > 8) {
- vty_out(vty, "New PIN must be in range 4..8!%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- gsm_subscr_sim_pin(ms, (char *)argv[1], (char *)argv[2], 2);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(sim_unblock_pin, sim_unblock_pin_cmd, "sim unblock-pin MS_NAME PUC NEW",
- "SIM actions\nChange PIN of SIM card\nName of MS (see \"show ms\")\n"
- "Personal Unblock Key\nNew PIN number")
-{
- struct osmocom_ms *ms;
-
- ms = get_ms(argv[0], vty);
- if (!ms)
- return CMD_WARNING;
-
- if (strlen(argv[1]) != 8) {
- vty_out(vty, "PUC must be 8 digits!%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
- if (strlen(argv[2]) < 4 || strlen(argv[2]) > 8) {
- vty_out(vty, "PIN must be in range 4..8!%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- gsm_subscr_sim_pin(ms, (char *)argv[1], (char *)argv[2], 99);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(sim_lai, sim_lai_cmd, "sim lai MS_NAME MCC MNC LAC",
- "SIM actions\nChange LAI of SIM card\nName of MS (see \"show ms\")\n"
- "Mobile Country Code\nMobile Network Code\nLocation Area Code "
- " (use 0000 to remove LAI)")
-{
- struct osmocom_ms *ms;
- uint16_t mcc = gsm_input_mcc((char *)argv[1]),
- mnc = gsm_input_mnc((char *)argv[2]),
- lac = strtoul(argv[3], NULL, 16);
-
- ms = get_ms(argv[0], vty);
- if (!ms)
- return CMD_WARNING;
-
- if (mcc == GSM_INPUT_INVALID) {
- vty_out(vty, "Given MCC invalid%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
- if (mnc == GSM_INPUT_INVALID) {
- vty_out(vty, "Given MNC invalid%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- ms->subscr.mcc = mcc;
- ms->subscr.mnc = mnc;
- ms->subscr.lac = lac;
- ms->subscr.tmsi = 0xffffffff;
-
- gsm_subscr_write_loci(ms);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(network_select, network_select_cmd,
- "network select MS_NAME MCC MNC [force]",
- "Select ...\nSelect Network\nName of MS (see \"show ms\")\n"
- "Mobile Country Code\nMobile Network Code\n"
- "Force selecting a network that is not in the list")
-{
- struct osmocom_ms *ms;
- struct gsm322_plmn *plmn;
- struct msgb *nmsg;
- struct gsm322_msg *ngm;
- struct gsm322_plmn_list *temp;
- uint16_t mcc = gsm_input_mcc((char *)argv[1]),
- mnc = gsm_input_mnc((char *)argv[2]);
- int found = 0;
-
- ms = get_ms(argv[0], vty);
- if (!ms)
- return CMD_WARNING;
- plmn = &ms->plmn;
-
- if (ms->settings.plmn_mode != PLMN_MODE_MANUAL) {
- vty_out(vty, "Not in manual network selection mode%s",
- VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- if (mcc == GSM_INPUT_INVALID) {
- vty_out(vty, "Given MCC invalid%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
- if (mnc == GSM_INPUT_INVALID) {
- vty_out(vty, "Given MNC invalid%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- if (argc < 4) {
- llist_for_each_entry(temp, &plmn->sorted_plmn, entry)
- if (temp->mcc == mcc && temp->mnc == mnc)
- found = 1;
- if (!found) {
- vty_out(vty, "Network not in list!%s", VTY_NEWLINE);
- vty_out(vty, "To force selecting this network, use "
- "'force' keyword%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
- }
-
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_CHOOSE_PLMN);
- if (!nmsg)
- return CMD_WARNING;
- ngm = (struct gsm322_msg *) nmsg->data;
- ngm->mcc = mcc;
- ngm->mnc = mnc;
- gsm322_plmn_sendmsg(ms, nmsg);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(call, call_cmd, "call MS_NAME (NUMBER|emergency|answer|hangup|hold)",
- "Make a call\nName of MS (see \"show ms\")\nPhone number to call "
- "(Use digits '0123456789*#abc', and '+' to dial international)\n"
- "Make an emergency call\nAnswer an incomming call\nHangup a call\n"
- "Hold current active call\n")
-{
- struct osmocom_ms *ms;
- struct gsm_settings *set;
- struct gsm_settings_abbrev *abbrev;
- char *number;
-
- ms = get_ms(argv[0], vty);
- if (!ms)
- return CMD_WARNING;
- set = &ms->settings;
-
- if (set->ch_cap == GSM_CAP_SDCCH) {
- vty_out(vty, "Basic call is not supported for SDCCH only "
- "mobile%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- number = (char *)argv[1];
- if (!strcmp(number, "emergency"))
- mncc_call(ms, number);
- else if (!strcmp(number, "answer"))
- mncc_answer(ms);
- else if (!strcmp(number, "hangup"))
- mncc_hangup(ms);
- else if (!strcmp(number, "hold"))
- mncc_hold(ms);
- else {
- llist_for_each_entry(abbrev, &set->abbrev, list) {
- if (!strcmp(number, abbrev->abbrev)) {
- number = abbrev->number;
- vty_out(vty, "Dialing number '%s'%s", number,
- VTY_NEWLINE);
- break;
- }
- }
- if (vty_check_number(vty, number))
- return CMD_WARNING;
- mncc_call(ms, number);
- }
-
- return CMD_SUCCESS;
-}
-
-DEFUN(call_retr, call_retr_cmd, "call MS_NAME retrieve [NUMBER]",
- "Make a call\nName of MS (see \"show ms\")\n"
- "Retrieve call on hold\nNumber of call to retrieve")
-{
- struct osmocom_ms *ms;
-
- ms = get_ms(argv[0], vty);
- if (!ms)
- return CMD_WARNING;
-
- mncc_retrieve(ms, (argc > 1) ? atoi(argv[1]) : 0);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(call_dtmf, call_dtmf_cmd, "call MS_NAME dtmf DIGITS",
- "Make a call\nName of MS (see \"show ms\")\n"
- "One or more DTMF digits to transmit")
-{
- struct osmocom_ms *ms;
- struct gsm_settings *set;
-
- ms = get_ms(argv[0], vty);
- if (!ms)
- return CMD_WARNING;
- set = &ms->settings;
-
- if (!set->cc_dtmf) {
- vty_out(vty, "DTMF not supported, please enable!%s",
- VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- mncc_dtmf(ms, (char *)argv[1]);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(test_reselection, test_reselection_cmd, "test re-selection NAME",
- "Manually trigger cell re-selection\nName of MS (see \"show ms\")")
-{
- struct osmocom_ms *ms;
- struct gsm_settings *set;
- struct msgb *nmsg;
-
- ms = get_ms(argv[0], vty);
- if (!ms)
- return CMD_WARNING;
- set = &ms->settings;
-
- if (set->stick) {
- vty_out(vty, "Cannot trigger cell re-selection, because we "
- "stick to a cell!%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_CELL_RESEL);
- if (!nmsg)
- return CMD_WARNING;
- gsm322_c_event(ms, nmsg);
-
-
- return CMD_SUCCESS;
-}
-
-DEFUN(delete_forbidden_plmn, delete_forbidden_plmn_cmd,
- "delete forbidden plmn NAME MCC MNC",
- "Delete\nForbidden\nplmn\nName of MS (see \"show ms\")\n"
- "Mobile Country Code\nMobile Network Code")
-{
- struct osmocom_ms *ms;
- uint16_t mcc = gsm_input_mcc((char *)argv[1]),
- mnc = gsm_input_mnc((char *)argv[2]);
-
- ms = get_ms(argv[0], vty);
- if (!ms)
- return CMD_WARNING;
-
- if (mcc == GSM_INPUT_INVALID) {
- vty_out(vty, "Given MCC invalid%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
- if (mnc == GSM_INPUT_INVALID) {
- vty_out(vty, "Given MNC invalid%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- gsm_subscr_del_forbidden_plmn(&ms->subscr, mcc, mnc);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(network_show, network_show_cmd, "network show MS_NAME",
- "Network ...\nShow results of network search (again)\n"
- "Name of MS (see \"show ms\")")
-{
- struct osmocom_ms *ms;
- struct gsm_settings *set;
- struct gsm322_plmn *plmn;
- struct gsm322_plmn_list *temp;
-
- ms = get_ms(argv[0], vty);
- if (!ms)
- return CMD_WARNING;
- set = &ms->settings;
- plmn = &ms->plmn;
-
- if (set->plmn_mode != PLMN_MODE_AUTO
- && plmn->state != GSM322_M3_NOT_ON_PLMN) {
- vty_out(vty, "Start network search first!%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- llist_for_each_entry(temp, &plmn->sorted_plmn, entry)
- vty_out(vty, " Network %s, %s (%s, %s)%s",
- gsm_print_mcc(temp->mcc), gsm_print_mnc(temp->mnc),
- gsm_get_mcc(temp->mcc),
- gsm_get_mnc(temp->mcc, temp->mnc), VTY_NEWLINE);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(network_search, network_search_cmd, "network search MS_NAME",
- "Network ...\nTrigger network search\nName of MS (see \"show ms\")")
-{
- struct osmocom_ms *ms;
- struct msgb *nmsg;
-
- ms = get_ms(argv[0], vty);
- if (!ms)
- return CMD_WARNING;
-
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_USER_RESEL);
- if (!nmsg)
- return CMD_WARNING;
- gsm322_plmn_sendmsg(ms, nmsg);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_gps_enable, cfg_gps_enable_cmd, "gps enable",
- "GPS receiver")
-{
- if (osmo_gps_open()) {
- g.enable = 1;
- vty_out(vty, "Failed to open GPS device!%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
- g.enable = 1;
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_no_gps_enable, cfg_no_gps_enable_cmd, "no gps enable",
- NO_STR "Disable GPS receiver")
-{
- if (g.enable)
- osmo_gps_close();
- g.enable = 0;
-
- return CMD_SUCCESS;
-}
-
-#ifdef _HAVE_GPSD
-DEFUN(cfg_gps_host, cfg_gps_host_cmd, "gps host HOST:PORT",
- "GPS receiver\nSelect gpsd host and port\n"
- "IP and port (optional) of the host running gpsd")
-{
- char* colon = strstr(argv[0], ":");
- if (colon != NULL) {
- memcpy(g.gpsd_host, argv[0], colon - argv[0] - 1);
- g.gpsd_host[colon - argv[0]] = '\0';
- memcpy(g.gpsd_port, colon, strlen(colon));
- g.gpsd_port[strlen(colon)] = '\0';
- } else {
- snprintf(g.gpsd_host, ARRAY_SIZE(g.gpsd_host), "%s", argv[0]);
- g.gpsd_host[ARRAY_SIZE(g.gpsd_host) - 1] = '\0';
- snprintf(g.gpsd_port, ARRAY_SIZE(g.gpsd_port), "2947");
- g.gpsd_port[ARRAY_SIZE(g.gpsd_port) - 1] = '\0';
- }
- g.gps_type = GPS_TYPE_GPSD;
- if (g.enable) {
- osmo_gps_close();
- if (osmo_gps_open()) {
- vty_out(vty, "Failed to connect to gpsd host!%s",
- VTY_NEWLINE);
- return CMD_WARNING;
- }
- }
-
- return CMD_SUCCESS;
-}
-#endif
-
-DEFUN(cfg_gps_device, cfg_gps_device_cmd, "gps device DEVICE",
- "GPS receiver\nSelect serial device\n"
- "Full path of serial device including /dev/")
-{
- strncpy(g.device, argv[0], sizeof(g.device));
- g.device[sizeof(g.device) - 1] = '\0';
- g.gps_type = GPS_TYPE_SERIAL;
- if (g.enable) {
- osmo_gps_close();
- if (osmo_gps_open()) {
- vty_out(vty, "Failed to open GPS device!%s",
- VTY_NEWLINE);
- return CMD_WARNING;
- }
- }
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_gps_baud, cfg_gps_baud_cmd, "gps baudrate "
- "(default|4800|""9600|19200|38400|57600|115200)",
- "GPS receiver\nSelect baud rate\nDefault, don't modify\n\n\n\n\n\n")
-{
- if (argv[0][0] == 'd')
- g.baud = 0;
- else
- g.baud = atoi(argv[0]);
- if (g.enable) {
- osmo_gps_close();
- if (osmo_gps_open()) {
- g.enable = 0;
- vty_out(vty, "Failed to open GPS device!%s",
- VTY_NEWLINE);
- return CMD_WARNING;
- }
- }
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_hide_default, cfg_hide_default_cmd, "hide-default",
- "Hide most default values in config to make it more compact")
-{
- hide_default = 1;
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_no_hide_default, cfg_no_hide_default_cmd, "no hide-default",
- NO_STR "Show default values in config")
-{
- hide_default = 0;
-
- return CMD_SUCCESS;
-}
-
-/* per MS config */
-DEFUN(cfg_ms, cfg_ms_cmd, "ms MS_NAME",
- "Select a mobile station to configure\nName of MS (see \"show ms\")")
-{
- struct osmocom_ms *ms;
- int found = 0;
-
- llist_for_each_entry(ms, &ms_list, entity) {
- if (!strcmp(ms->name, argv[0])) {
- found = 1;
- break;
- }
- }
-
- if (!found) {
- if (!vty_reading) {
- vty_out(vty, "MS name '%s' does not exits, try "
- "'ms %s create'%s", argv[0], argv[0],
- VTY_NEWLINE);
- return CMD_WARNING;
- }
- ms = mobile_new((char *)argv[0]);
- if (!ms) {
- vty_out(vty, "Failed to add MS name '%s'%s", argv[0],
- VTY_NEWLINE);
- return CMD_WARNING;
- }
- }
-
- vty->index = ms;
- vty->node = MS_NODE;
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_ms_create, cfg_ms_create_cmd, "ms MS_NAME create",
- "Select a mobile station to configure\nName of MS (see \"show ms\")\n"
- "Create if MS does not exists")
-{
- struct osmocom_ms *ms;
- int found = 0;
-
- llist_for_each_entry(ms, &ms_list, entity) {
- if (!strcmp(ms->name, argv[0])) {
- found = 1;
- break;
- }
- }
-
- if (!found) {
- ms = mobile_new((char *)argv[0]);
- if (!ms) {
- vty_out(vty, "Failed to add MS name '%s'%s", argv[0],
- VTY_NEWLINE);
- return CMD_WARNING;
- }
- }
-
- vty->index = ms;
- vty->node = MS_NODE;
-
- vty_out(vty, "MS '%s' created, after configuration, do 'no shutdown'%s",
- argv[0], VTY_NEWLINE);
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_ms_rename, cfg_ms_rename_cmd, "ms MS_NAME rename MS_NAME",
- "Select a mobile station to configure\nName of MS (see \"show ms\")\n"
- "Rename MS\nNew name of MS")
-{
- struct osmocom_ms *ms;
- int found = 0;
-
- llist_for_each_entry(ms, &ms_list, entity) {
- if (!strcmp(ms->name, argv[0])) {
- found = 1;
- break;
- }
- }
-
- if (!found) {
- vty_out(vty, "MS name '%s' does not exist%s", argv[0],
- VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- strncpy(ms->name, argv[1], sizeof(ms->name) - 1);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_no_ms, cfg_no_ms_cmd, "no ms MS_NAME",
- NO_STR "Select a mobile station to remove\n"
- "Name of MS (see \"show ms\")")
-{
- struct osmocom_ms *ms;
- int found = 0;
-
- llist_for_each_entry(ms, &ms_list, entity) {
- if (!strcmp(ms->name, argv[0])) {
- found = 1;
- break;
- }
- }
-
- if (!found) {
- vty_out(vty, "MS name '%s' does not exist%s", argv[0],
- VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- mobile_delete(ms, 1);
-
- return CMD_SUCCESS;
-}
-
-#define SUP_WRITE(item, cmd) \
- if (sup->item) \
- if (!hide_default || !set->item) \
- vty_out(vty, " %s%s%s", (set->item) ? "" : "no ", \
- cmd, VTY_NEWLINE);
-
-static void config_write_ms(struct vty *vty, struct osmocom_ms *ms)
-{
- struct gsm_settings *set = &ms->settings;
- struct gsm_support *sup = &ms->support;
- struct gsm_settings_abbrev *abbrev;
-
- vty_out(vty, "ms %s%s", ms->name, VTY_NEWLINE);
- vty_out(vty, " layer2-socket %s%s", set->layer2_socket_path,
- VTY_NEWLINE);
- vty_out(vty, " sap-socket %s%s", set->sap_socket_path, VTY_NEWLINE);
- switch(set->sim_type) {
- case GSM_SIM_TYPE_NONE:
- vty_out(vty, " sim none%s", VTY_NEWLINE);
- break;
- case GSM_SIM_TYPE_READER:
- vty_out(vty, " sim reader%s", VTY_NEWLINE);
- break;
- case GSM_SIM_TYPE_TEST:
- vty_out(vty, " sim test%s", VTY_NEWLINE);
- break;
- }
- vty_out(vty, " network-selection-mode %s%s", (set->plmn_mode
- == PLMN_MODE_AUTO) ? "auto" : "manual", VTY_NEWLINE);
- vty_out(vty, " imei %s %s%s", set->imei,
- set->imeisv + strlen(set->imei), VTY_NEWLINE);
- if (set->imei_random)
- vty_out(vty, " imei-random %d%s", set->imei_random,
- VTY_NEWLINE);
- else
- if (!hide_default)
- vty_out(vty, " imei-fixed%s", VTY_NEWLINE);
- if (set->emergency_imsi[0])
- vty_out(vty, " emergency-imsi %s%s", set->emergency_imsi,
- VTY_NEWLINE);
- else
- if (!hide_default)
- vty_out(vty, " no emergency-imsi%s", VTY_NEWLINE);
- if (!hide_default || set->cw)
- vty_out(vty, " %scall-waiting%s", (set->cw) ? "" : "no ",
- VTY_NEWLINE);
- if (!hide_default || set->auto_answer)
- vty_out(vty, " %sauto-answer%s",
- (set->auto_answer) ? "" : "no ", VTY_NEWLINE);
- if (!hide_default || set->clip)
- vty_out(vty, " %sclip%s", (set->clip) ? "" : "no ",
- VTY_NEWLINE);
- if (!hide_default || set->clir)
- vty_out(vty, " %sclir%s", (set->clir) ? "" : "no ",
- VTY_NEWLINE);
- if (set->alter_tx_power)
- if (set->alter_tx_power_value)
- vty_out(vty, " tx-power %d%s",
- set->alter_tx_power_value, VTY_NEWLINE);
- else
- vty_out(vty, " tx-power full%s", VTY_NEWLINE);
- else
- if (!hide_default)
- vty_out(vty, " tx-power auto%s", VTY_NEWLINE);
- if (set->alter_delay)
- vty_out(vty, " simulated-delay %d%s", set->alter_delay,
- VTY_NEWLINE);
- else
- if (!hide_default)
- vty_out(vty, " no simulated-delay%s", VTY_NEWLINE);
- if (set->stick)
- vty_out(vty, " stick %d%s%s", set->stick_arfcn & 1023,
- (set->stick_arfcn & ARFCN_PCS) ? " pcs" : "",
- VTY_NEWLINE);
- else
- if (!hide_default)
- vty_out(vty, " no stick%s", VTY_NEWLINE);
- if (!hide_default || set->no_lupd)
- vty_out(vty, " %slocation-updating%s",
- (set->no_lupd) ? "no " : "", VTY_NEWLINE);
- if (!hide_default || set->no_neighbour)
- vty_out(vty, " %sneighbour-measurement%s",
- (set->no_neighbour) ? "no " : "", VTY_NEWLINE);
- if (set->full_v1 || set->full_v2 || set->full_v3) {
- /* mandatory anyway */
- vty_out(vty, " codec full-speed%s%s",
- (!set->half_prefer) ? " prefer" : "",
- VTY_NEWLINE);
- }
- if (set->half_v1 || set->half_v3) {
- if (set->half)
- vty_out(vty, " codec half-speed%s%s",
- (set->half_prefer) ? " prefer" : "",
- VTY_NEWLINE);
- else
- vty_out(vty, " no codec half-speed%s", VTY_NEWLINE);
- }
- if (llist_empty(&set->abbrev)) {
- if (!hide_default)
- vty_out(vty, " no abbrev%s", VTY_NEWLINE);
- } else {
- llist_for_each_entry(abbrev, &set->abbrev, list)
- vty_out(vty, " abbrev %s %s%s%s%s", abbrev->abbrev,
- abbrev->number, (abbrev->name[0]) ? " " : "",
- abbrev->name, VTY_NEWLINE);
- }
- vty_out(vty, " support%s", VTY_NEWLINE);
- SUP_WRITE(sms_ptp, "sms");
- SUP_WRITE(a5_1, "a5/1");
- SUP_WRITE(a5_2, "a5/2");
- SUP_WRITE(a5_3, "a5/3");
- SUP_WRITE(a5_4, "a5/4");
- SUP_WRITE(a5_5, "a5/5");
- SUP_WRITE(a5_6, "a5/6");
- SUP_WRITE(a5_7, "a5/7");
- SUP_WRITE(p_gsm, "p-gsm");
- SUP_WRITE(e_gsm, "e-gsm");
- SUP_WRITE(r_gsm, "r-gsm");
- SUP_WRITE(pcs, "gsm-850");
- SUP_WRITE(gsm_480, "gsm-480");
- SUP_WRITE(gsm_450, "gsm-450");
- SUP_WRITE(dcs, "dcs");
- SUP_WRITE(pcs, "pcs");
- if (sup->r_gsm || sup->e_gsm || sup->p_gsm)
- if (!hide_default || sup->class_900 != set->class_900)
- vty_out(vty, " class-900 %d%s", set->class_900,
- VTY_NEWLINE);
- if (sup->gsm_850)
- if (!hide_default || sup->class_850 != set->class_850)
- vty_out(vty, " class-850 %d%s", set->class_850,
- VTY_NEWLINE);
- if (sup->gsm_480 || sup->gsm_450)
- if (!hide_default || sup->class_400 != set->class_400)
- vty_out(vty, " class-400 %d%s", set->class_400,
- VTY_NEWLINE);
- if (sup->dcs)
- if (!hide_default || sup->class_dcs != set->class_dcs)
- vty_out(vty, " class-dcs %d%s", set->class_dcs,
- VTY_NEWLINE);
- if (sup->pcs)
- if (!hide_default || sup->class_pcs != set->class_pcs)
- vty_out(vty, " class-pcs %d%s", set->class_pcs,
- VTY_NEWLINE);
- if (!hide_default || sup->ch_cap != set->ch_cap) {
- switch (set->ch_cap) {
- case GSM_CAP_SDCCH:
- vty_out(vty, " channel-capability sdcch%s",
- VTY_NEWLINE);
- break;
- case GSM_CAP_SDCCH_TCHF:
- vty_out(vty, " channel-capability sdcch+tchf%s",
- VTY_NEWLINE);
- break;
- case GSM_CAP_SDCCH_TCHF_TCHH:
- vty_out(vty, " channel-capability sdcch+tchf+tchh%s",
- VTY_NEWLINE);
- break;
- }
- }
- SUP_WRITE(full_v1, "full-speech-v1");
- SUP_WRITE(full_v2, "full-speech-v2");
- SUP_WRITE(full_v3, "full-speech-v3");
- SUP_WRITE(half_v1, "half-speech-v1");
- SUP_WRITE(half_v3, "half-speech-v3");
- if (!hide_default || sup->min_rxlev_db != set->min_rxlev_db)
- vty_out(vty, " min-rxlev %d%s", set->min_rxlev_db,
- VTY_NEWLINE);
- if (!hide_default || sup->dsc_max != set->dsc_max)
- vty_out(vty, " dsc-max %d%s", set->dsc_max, VTY_NEWLINE);
- if (!hide_default || set->skip_max_per_band)
- vty_out(vty, " %sskip-max-per-band%s",
- (set->skip_max_per_band) ? "" : "no ", VTY_NEWLINE);
- vty_out(vty, " exit%s", VTY_NEWLINE);
- vty_out(vty, " test-sim%s", VTY_NEWLINE);
- vty_out(vty, " imsi %s%s", set->test_imsi, VTY_NEWLINE);
- switch (set->test_ki_type) {
- case GSM_SIM_KEY_XOR:
- vty_out(vty, " ki xor %s%s",
- osmo_hexdump(set->test_ki, 12), VTY_NEWLINE);
- break;
- case GSM_SIM_KEY_COMP128:
- vty_out(vty, " ki comp128 %s%s",
- osmo_hexdump(set->test_ki, 16), VTY_NEWLINE);
- break;
- }
- if (!hide_default || set->test_barr)
- vty_out(vty, " %sbarred-access%s",
- (set->test_barr) ? "" : "no ", VTY_NEWLINE);
- if (set->test_rplmn_valid) {
- vty_out(vty, " rplmn %s %s",
- gsm_print_mcc(set->test_rplmn_mcc),
- gsm_print_mnc(set->test_rplmn_mnc));
- if (set->test_lac > 0x0000 && set->test_lac < 0xfffe)
- vty_out(vty, " 0x%04x", set->test_lac);
- if (set->test_tmsi != 0xffffffff)
- vty_out(vty, " 0x%08x", set->test_tmsi);
- vty_out(vty, "%s", VTY_NEWLINE);
- } else
- if (!hide_default)
- vty_out(vty, " no rplmn%s", VTY_NEWLINE);
- if (!hide_default || set->test_always)
- vty_out(vty, " hplmn-search %s%s",
- (set->test_always) ? "everywhere" : "foreign-country",
- VTY_NEWLINE);
- vty_out(vty, " exit%s", VTY_NEWLINE);
- /* no shutdown must be written to config, because shutdown is default */
- vty_out(vty, " %sshutdown%s", (ms->shutdown) ? "" : "no ",
- VTY_NEWLINE);
- vty_out(vty, "exit%s", VTY_NEWLINE);
- vty_out(vty, "!%s", VTY_NEWLINE);
-}
-
-static int config_write(struct vty *vty)
-{
- struct osmocom_ms *ms;
-
-#ifdef _HAVE_GPSD
- vty_out(vty, "gpsd host %s%s", g.gpsd_host, VTY_NEWLINE);
- vty_out(vty, "gpsd port %s%s", g.gpsd_port, VTY_NEWLINE);
-#endif
- vty_out(vty, "gps device %s%s", g.device, VTY_NEWLINE);
- if (g.baud)
- vty_out(vty, "gps baudrate %d%s", g.baud, VTY_NEWLINE);
- else
- vty_out(vty, "gps baudrate default%s", VTY_NEWLINE);
- vty_out(vty, "%sgps enable%s", (g.enable) ? "" : "no ", VTY_NEWLINE);
- vty_out(vty, "!%s", VTY_NEWLINE);
-
- vty_out(vty, "%shide-default%s", (hide_default) ? "": "no ",
- VTY_NEWLINE);
- vty_out(vty, "!%s", VTY_NEWLINE);
-
- llist_for_each_entry(ms, &ms_list, entity)
- config_write_ms(vty, ms);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_ms_show_this, cfg_ms_show_this_cmd, "show this",
- SHOW_STR "Show config of this MS")
-{
- struct osmocom_ms *ms = vty->index;
-
- config_write_ms(vty, ms);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_ms_layer2, cfg_ms_layer2_cmd, "layer2-socket PATH",
- "Define socket path to connect between layer 2 and layer 1\n"
- "Unix socket, default '/tmp/osmocom_l2'")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
-
- strncpy(set->layer2_socket_path, argv[0],
- sizeof(set->layer2_socket_path) - 1);
-
- vty_restart(vty, ms);
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_ms_sap, cfg_ms_sap_cmd, "sap-socket PATH",
- "Define socket path to connect to SIM reader\n"
- "Unix socket, default '/tmp/osmocom_sap'")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
-
- strncpy(set->sap_socket_path, argv[0],
- sizeof(set->sap_socket_path) - 1);
-
- vty_restart(vty, ms);
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_ms_sim, cfg_ms_sim_cmd, "sim (none|reader|test)",
- "Set SIM card to attach when powering on\nAttach no SIM\n"
- "Attach SIM from reader\nAttach bulit in test SIM")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
-
- switch (argv[0][0]) {
- case 'n':
- set->sim_type = GSM_SIM_TYPE_NONE;
- break;
- case 'r':
- set->sim_type = GSM_SIM_TYPE_READER;
- break;
- case 't':
- set->sim_type = GSM_SIM_TYPE_TEST;
- break;
- default:
- vty_out(vty, "unknown SIM type%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- vty_restart_if_started(vty, ms);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_ms_mode, cfg_ms_mode_cmd, "network-selection-mode (auto|manual)",
- "Set network selection mode\nAutomatic network selection\n"
- "Manual network selection")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
- struct msgb *nmsg;
-
- if (!ms->started) {
- if (argv[0][0] == 'a')
- set->plmn_mode = PLMN_MODE_AUTO;
- else
- set->plmn_mode = PLMN_MODE_MANUAL;
- } else {
- if (argv[0][0] == 'a')
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_SEL_AUTO);
- else
- nmsg = gsm322_msgb_alloc(GSM322_EVENT_SEL_MANUAL);
- if (!nmsg)
- return CMD_WARNING;
- gsm322_plmn_sendmsg(ms, nmsg);
- }
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_ms_imei, cfg_ms_imei_cmd, "imei IMEI [SV]",
- "Set IMEI (enter without control digit)\n15 Digits IMEI\n"
- "Software version digit")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
- char *error, *sv = "0";
-
- if (argc >= 2)
- sv = (char *)argv[1];
-
- error = gsm_check_imei(argv[0], sv);
- if (error) {
- vty_out(vty, "%s%s", error, VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- strcpy(set->imei, argv[0]);
- strcpy(set->imeisv, argv[0]);
- strcpy(set->imeisv + 15, sv);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_ms_imei_fixed, cfg_ms_imei_fixed_cmd, "imei-fixed",
- "Use fixed IMEI on every power on")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
-
- set->imei_random = 0;
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_ms_imei_random, cfg_ms_imei_random_cmd, "imei-random <0-15>",
- "Use random IMEI on every power on\n"
- "Number of trailing digits to randomize")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
-
- set->imei_random = atoi(argv[0]);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_ms_emerg_imsi, cfg_ms_emerg_imsi_cmd, "emergency-imsi IMSI",
- "Use special IMSI for emergency calls\n15 digits IMSI")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
- char *error;
-
- error = gsm_check_imsi(argv[0]);
- if (error) {
- vty_out(vty, "%s%s", error, VTY_NEWLINE);
- return CMD_WARNING;
- }
- strcpy(set->emergency_imsi, argv[0]);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_ms_no_emerg_imsi, cfg_ms_no_emerg_imsi_cmd, "no emergency-imsi",
- NO_STR "Use IMSI of SIM or IMEI for emergency calls")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
-
- set->emergency_imsi[0] = '\0';
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_no_cw, cfg_ms_no_cw_cmd, "no call-waiting",
- NO_STR "Disallow waiting calls")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
-
- set->cw = 0;
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_cw, cfg_ms_cw_cmd, "call-waiting",
- "Allow waiting calls")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
-
- set->cw = 1;
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_no_auto_answer, cfg_ms_no_auto_answer_cmd, "no auto-answer",
- NO_STR "Disable auto-answering calls")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
-
- set->auto_answer = 0;
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_auto_answer, cfg_ms_auto_answer_cmd, "auto-answer",
- "Enable auto-answering calls")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
-
- set->auto_answer = 1;
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_clip, cfg_ms_clip_cmd, "clip",
- "Force caller ID presentation")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
-
- set->clip = 1;
- set->clir = 0;
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_clir, cfg_ms_clir_cmd, "clir",
- "Force caller ID restriction")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
-
- set->clip = 0;
- set->clir = 1;
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_no_clip, cfg_ms_no_clip_cmd, "no clip",
- NO_STR "Disable forcing of caller ID presentation")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
-
- set->clip = 0;
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_no_clir, cfg_ms_no_clir_cmd, "no clir",
- NO_STR "Disable forcing of caller ID restriction")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
-
- set->clir = 0;
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_ms_tx_power, cfg_ms_tx_power_cmd, "tx-power (auto|full)",
- "Set the way to choose transmit power\nControlled by BTS\n"
- "Always full power\nFixed GSM power value if supported")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
-
- switch (argv[0][0]) {
- case 'a':
- set->alter_tx_power = 0;
- break;
- case 'f':
- set->alter_tx_power = 1;
- set->alter_tx_power_value = 0;
- break;
- }
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_ms_tx_power_val, cfg_ms_tx_power_val_cmd, "tx-power <0-31>",
- "Set the way to choose transmit power\n"
- "Fixed GSM power value if supported")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
-
- set->alter_tx_power = 1;
- set->alter_tx_power_value = atoi(argv[0]);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_ms_sim_delay, cfg_ms_sim_delay_cmd, "simulated-delay <-128-127>",
- "Simulate a lower or higher distance from the BTS\n"
- "Delay in half bits (distance in 553.85 meter steps)")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
-
- set->alter_delay = atoi(argv[0]);
- gsm48_rr_alter_delay(ms);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_ms_no_sim_delay, cfg_ms_no_sim_delay_cmd, "no simulated-delay",
- NO_STR "Do not simulate a lower or higher distance from the BTS")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
-
- set->alter_delay = 0;
- gsm48_rr_alter_delay(ms);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_ms_stick, cfg_ms_stick_cmd, "stick <0-1023> [pcs]",
- "Stick to the given cell\nARFCN of the cell to stick to\n"
- "Given frequency is PCS band (1900) rather than DCS band.")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
- uint16_t arfcn = atoi(argv[0]);
-
- if (argc > 1) {
- if (arfcn < 512 || arfcn > 810) {
- vty_out(vty, "Given ARFCN not in PCS band%s",
- VTY_NEWLINE);
- return CMD_WARNING;
- }
- arfcn |= ARFCN_PCS;
- }
- set->stick = 1;
- set->stick_arfcn = arfcn;
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_ms_no_stick, cfg_ms_no_stick_cmd, "no stick",
- NO_STR "Do not stick to any cell")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
-
- set->stick = 0;
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_ms_lupd, cfg_ms_lupd_cmd, "location-updating",
- "Allow location updating")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
-
- set->no_lupd = 0;
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_ms_no_lupd, cfg_ms_no_lupd_cmd, "no location-updating",
- NO_STR "Do not allow location updating")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
-
- set->no_lupd = 1;
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_codec_full, cfg_ms_codec_full_cmd, "codec full-speed",
- "Enable codec\nFull speed speech codec")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
-
- if (!set->full_v1 && !set->full_v2 && !set->full_v3) {
- vty_out(vty, "Full-rate codec not supported%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_codec_full_pref, cfg_ms_codec_full_pref_cmd, "codec full-speed "
- "prefer",
- "Enable codec\nFull speed speech codec\nPrefer this codec")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
-
- if (!set->full_v1 && !set->full_v2 && !set->full_v3) {
- vty_out(vty, "Full-rate codec not supported%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- set->half_prefer = 0;
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_codec_half, cfg_ms_codec_half_cmd, "codec half-speed",
- "Enable codec\nHalf speed speech codec")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
-
- if (!set->half_v1 && !set->half_v3) {
- vty_out(vty, "Half-rate codec not supported%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- set->half = 1;
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_codec_half_pref, cfg_ms_codec_half_pref_cmd, "codec half-speed "
- "prefer",
- "Enable codec\nHalf speed speech codec\nPrefer this codec")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
-
- if (!set->half_v1 && !set->half_v3) {
- vty_out(vty, "Half-rate codec not supported%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- set->half = 1;
- set->half_prefer = 1;
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_no_codec_half, cfg_ms_no_codec_half_cmd, "no codec half-speed",
- NO_STR "Disable codec\nHalf speed speech codec")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
-
- if (!set->half_v1 && !set->half_v3) {
- vty_out(vty, "Half-rate codec not supported%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- set->half = 0;
- set->half_prefer = 0;
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_abbrev, cfg_ms_abbrev_cmd, "abbrev ABBREVIATION NUMBER [NAME]",
- "Store given abbreviation number\n1-3 digits abbreviation\n"
- "Number to store for the abbreviation "
- "(Use digits '0123456789*#abc', and '+' to dial international)\n"
- "Name of the abbreviation")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
- struct gsm_settings_abbrev *abbrev;
- int i;
-
- llist_for_each_entry(abbrev, &set->abbrev, list) {
- if (!strcmp(argv[0], abbrev->abbrev)) {
- vty_out(vty, "Given abbreviation '%s' already stored, "
- "delete first!%s", argv[0], VTY_NEWLINE);
- return CMD_WARNING;
- }
- }
-
- if (strlen(argv[0]) >= sizeof(abbrev->abbrev)) {
- vty_out(vty, "Given abbreviation too long%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- for (i = 0; i < strlen(argv[0]); i++) {
- if (argv[0][i] < '0' || argv[0][i] > '9') {
- vty_out(vty, "Given abbreviation must have digits "
- "0..9 only!%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
- }
-
- if (vty_check_number(vty, argv[1]))
- return CMD_WARNING;
-
- abbrev = talloc_zero(l23_ctx, struct gsm_settings_abbrev);
- if (!abbrev) {
- vty_out(vty, "No Memory!%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
- llist_add_tail(&abbrev->list, &set->abbrev);
- strncpy(abbrev->abbrev, argv[0], sizeof(abbrev->abbrev) - 1);
- strncpy(abbrev->number, argv[1], sizeof(abbrev->number) - 1);
- if (argc >= 3)
- strncpy(abbrev->name, argv[2], sizeof(abbrev->name) - 1);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_no_abbrev, cfg_ms_no_abbrev_cmd, "no abbrev [ABBREVIATION]",
- NO_STR "Remove given abbreviation number or all numbers\n"
- "Abbreviation number to remove")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
- struct gsm_settings_abbrev *abbrev, *abbrev2;
- uint8_t deleted = 0;
-
- llist_for_each_entry_safe(abbrev, abbrev2, &set->abbrev, list) {
- if (argc < 1 || !strcmp(argv[0], abbrev->abbrev)) {
- llist_del(&abbrev->list);
- deleted = 1;
- }
- }
-
- if (argc >= 1 && !deleted) {
- vty_out(vty, "Given abbreviation '%s' not found!%s",
- argv[0], VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_ms_neighbour, cfg_ms_neighbour_cmd, "neighbour-measurement",
- "Allow neighbour cell measurement in idle mode")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
-
- set->no_neighbour = 0;
-
- vty_restart_if_started(vty, ms);
-
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_ms_no_neighbour, cfg_ms_no_neighbour_cmd, "no neighbour-measurement",
- NO_STR "Do not allow neighbour cell measurement in idle mode")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
-
- set->no_neighbour = 1;
-
- vty_restart_if_started(vty, ms);
-
- return CMD_SUCCESS;
-}
-
-static int config_write_dummy(struct vty *vty)
-{
- return CMD_SUCCESS;
-}
-
-/* per support config */
-DEFUN(cfg_ms_support, cfg_ms_support_cmd, "support",
- "Define supported features")
-{
- vty->node = SUPPORT_NODE;
-
- return CMD_SUCCESS;
-}
-
-#define SUP_EN(cfg, cfg_cmd, item, cmd, desc, restart) \
-DEFUN(cfg, cfg_cmd, cmd, "Enable " desc "support") \
-{ \
- struct osmocom_ms *ms = vty->index; \
- struct gsm_settings *set = &ms->settings; \
- struct gsm_support *sup = &ms->support; \
- if (!sup->item) { \
- vty_out(vty, desc " not supported%s", VTY_NEWLINE); \
- if (vty_reading) \
- return CMD_SUCCESS; \
- return CMD_WARNING; \
- } \
- if (restart) \
- vty_restart(vty, ms); \
- set->item = 1; \
- return CMD_SUCCESS; \
-}
-
-#define SUP_DI(cfg, cfg_cmd, item, cmd, desc, restart) \
-DEFUN(cfg, cfg_cmd, "no " cmd, NO_STR "Disable " desc " support") \
-{ \
- struct osmocom_ms *ms = vty->index; \
- struct gsm_settings *set = &ms->settings; \
- struct gsm_support *sup = &ms->support; \
- if (!sup->item) { \
- vty_out(vty, desc " not supported%s", VTY_NEWLINE); \
- if (vty_reading) \
- return CMD_SUCCESS; \
- return CMD_WARNING; \
- } \
- if (restart) \
- vty_restart(vty, ms); \
- set->item = 0; \
- return CMD_SUCCESS; \
-}
-
-#define SET_EN(cfg, cfg_cmd, item, cmd, desc, restart) \
-DEFUN(cfg, cfg_cmd, cmd, "Enable " desc "support") \
-{ \
- struct osmocom_ms *ms = vty->index; \
- struct gsm_settings *set = &ms->settings; \
- if (restart) \
- vty_restart(vty, ms); \
- set->item = 1; \
- return CMD_SUCCESS; \
-}
-
-#define SET_DI(cfg, cfg_cmd, item, cmd, desc, restart) \
-DEFUN(cfg, cfg_cmd, "no " cmd, NO_STR "Disable " desc " support") \
-{ \
- struct osmocom_ms *ms = vty->index; \
- struct gsm_settings *set = &ms->settings; \
- if (restart) \
- vty_restart(vty, ms); \
- set->item = 0; \
- return CMD_SUCCESS; \
-}
-
-SET_EN(cfg_ms_sup_dtmf, cfg_ms_sup_dtmf_cmd, cc_dtmf, "dtmf", "DTMF", 0);
-SET_DI(cfg_ms_sup_no_dtmf, cfg_ms_sup_no_dtmf_cmd, cc_dtmf, "dtmf", "DTMF", 0);
-SUP_EN(cfg_ms_sup_sms, cfg_ms_sup_sms_cmd, sms_ptp, "sms", "SMS", 0);
-SUP_DI(cfg_ms_sup_no_sms, cfg_ms_sup_no_sms_cmd, sms_ptp, "sms", "SMS", 0);
-SUP_EN(cfg_ms_sup_a5_1, cfg_ms_sup_a5_1_cmd, a5_1, "a5/1", "A5/1", 0);
-SUP_DI(cfg_ms_sup_no_a5_1, cfg_ms_sup_no_a5_1_cmd, a5_1, "a5/1", "A5/1", 0);
-SUP_EN(cfg_ms_sup_a5_2, cfg_ms_sup_a5_2_cmd, a5_2, "a5/2", "A5/2", 0);
-SUP_DI(cfg_ms_sup_no_a5_2, cfg_ms_sup_no_a5_2_cmd, a5_2, "a5/2", "A5/2", 0);
-SUP_EN(cfg_ms_sup_a5_3, cfg_ms_sup_a5_3_cmd, a5_3, "a5/3", "A5/3", 0);
-SUP_DI(cfg_ms_sup_no_a5_3, cfg_ms_sup_no_a5_3_cmd, a5_3, "a5/3", "A5/3", 0);
-SUP_EN(cfg_ms_sup_a5_4, cfg_ms_sup_a5_4_cmd, a5_4, "a5/4", "A5/4", 0);
-SUP_DI(cfg_ms_sup_no_a5_4, cfg_ms_sup_no_a5_4_cmd, a5_4, "a5/4", "A5/4", 0);
-SUP_EN(cfg_ms_sup_a5_5, cfg_ms_sup_a5_5_cmd, a5_5, "a5/5", "A5/5", 0);
-SUP_DI(cfg_ms_sup_no_a5_5, cfg_ms_sup_no_a5_5_cmd, a5_5, "a5/5", "A5/5", 0);
-SUP_EN(cfg_ms_sup_a5_6, cfg_ms_sup_a5_6_cmd, a5_6, "a5/6", "A5/6", 0);
-SUP_DI(cfg_ms_sup_no_a5_6, cfg_ms_sup_no_a5_6_cmd, a5_6, "a5/6", "A5/6", 0);
-SUP_EN(cfg_ms_sup_a5_7, cfg_ms_sup_a5_7_cmd, a5_7, "a5/7", "A5/7", 0);
-SUP_DI(cfg_ms_sup_no_a5_7, cfg_ms_sup_no_a5_7_cmd, a5_7, "a5/7", "A5/7", 0);
-SUP_EN(cfg_ms_sup_p_gsm, cfg_ms_sup_p_gsm_cmd, p_gsm, "p-gsm", "P-GSM (900)",
- 1);
-SUP_DI(cfg_ms_sup_no_p_gsm, cfg_ms_sup_no_p_gsm_cmd, p_gsm, "p-gsm",
- "P-GSM (900)", 1);
-SUP_EN(cfg_ms_sup_e_gsm, cfg_ms_sup_e_gsm_cmd, e_gsm, "e-gsm", "E-GSM (850)",
- 1);
-SUP_DI(cfg_ms_sup_no_e_gsm, cfg_ms_sup_no_e_gsm_cmd, e_gsm, "e-gsm",
- "E-GSM (850)", 1);
-SUP_EN(cfg_ms_sup_r_gsm, cfg_ms_sup_r_gsm_cmd, r_gsm, "r-gsm", "R-GSM (850)",
- 1);
-SUP_DI(cfg_ms_sup_no_r_gsm, cfg_ms_sup_no_r_gsm_cmd, r_gsm, "r-gsm",
- "R-GSM (850)", 1);
-SUP_EN(cfg_ms_sup_dcs, cfg_ms_sup_dcs_cmd, dcs, "dcs", "DCS (1800)", 1);
-SUP_DI(cfg_ms_sup_no_dcs, cfg_ms_sup_no_dcs_cmd, dcs, "dcs", "DCS (1800)", 1);
-SUP_EN(cfg_ms_sup_gsm_850, cfg_ms_sup_gsm_850_cmd, gsm_850, "gsm-850",
- "GSM 850", 1);
-SUP_DI(cfg_ms_sup_no_gsm_850, cfg_ms_sup_no_gsm_850_cmd, gsm_850, "gsm-850",
- "GSM 850", 1);
-SUP_EN(cfg_ms_sup_pcs, cfg_ms_sup_pcs_cmd, pcs, "pcs", "PCS (1900)", 1);
-SUP_DI(cfg_ms_sup_no_pcs, cfg_ms_sup_no_pcs_cmd, pcs, "pcs", "PCS (1900)", 1);
-SUP_EN(cfg_ms_sup_gsm_480, cfg_ms_sup_gsm_480_cmd, gsm_480, "gsm-480",
- "GSM 480", 1);
-SUP_DI(cfg_ms_sup_no_gsm_480, cfg_ms_sup_no_gsm_480_cmd, gsm_480, "gsm-480",
- "GSM 480", 1);
-SUP_EN(cfg_ms_sup_gsm_450, cfg_ms_sup_gsm_450_cmd, gsm_450, "gsm-450",
- "GSM 450", 1);
-SUP_DI(cfg_ms_sup_no_gsm_450, cfg_ms_sup_no_gsm_450_cmd, gsm_450, "gsm-450",
- "GSM 450", 1);
-
-DEFUN(cfg_ms_sup_class_900, cfg_ms_sup_class_900_cmd, "class-900 (1|2|3|4|5)",
- "Select power class for GSM 900\n"
- "20 Watts\n"
- "8 Watts\n"
- "5 Watts\n"
- "2 Watts\n"
- "0.8 Watts")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
- struct gsm_support *sup = &ms->support;
-
- set->class_900 = atoi(argv[0]);
-
- if (set->class_900 < sup->class_900 && !vty_reading)
- vty_out(vty, "Note: You selected a higher class than supported "
- " by hardware!%s", VTY_NEWLINE);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_ms_sup_class_850, cfg_ms_sup_class_850_cmd, "class-850 (1|2|3|4|5)",
- "Select power class for GSM 850\n"
- "20 Watts\n"
- "8 Watts\n"
- "5 Watts\n"
- "2 Watts\n"
- "0.8 Watts")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
- struct gsm_support *sup = &ms->support;
-
- set->class_850 = atoi(argv[0]);
-
- if (set->class_850 < sup->class_850 && !vty_reading)
- vty_out(vty, "Note: You selected a higher class than supported "
- " by hardware!%s", VTY_NEWLINE);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_ms_sup_class_400, cfg_ms_sup_class_400_cmd, "class-400 (1|2|3|4|5)",
- "Select power class for GSM 400 (480 and 450)\n"
- "20 Watts\n"
- "8 Watts\n"
- "5 Watts\n"
- "2 Watts\n"
- "0.8 Watts")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
- struct gsm_support *sup = &ms->support;
-
- set->class_400 = atoi(argv[0]);
-
- if (set->class_400 < sup->class_400 && !vty_reading)
- vty_out(vty, "Note: You selected a higher class than supported "
- " by hardware!%s", VTY_NEWLINE);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_ms_sup_class_dcs, cfg_ms_sup_class_dcs_cmd, "class-dcs (1|2|3)",
- "Select power class for DCS 1800\n"
- "1 Watt\n"
- "0.25 Watts\n"
- "4 Watts")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
- struct gsm_support *sup = &ms->support;
-
- set->class_dcs = atoi(argv[0]);
-
- if (((set->class_dcs + 1) & 3) < ((sup->class_dcs + 1) & 3)
- && !vty_reading)
- vty_out(vty, "Note: You selected a higher class than supported "
- " by hardware!%s", VTY_NEWLINE);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_ms_sup_class_pcs, cfg_ms_sup_class_pcs_cmd, "class-pcs (1|2|3)",
- "Select power class for PCS 1900\n"
- "1 Watt\n"
- "0.25 Watts\n"
- "2 Watts")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
- struct gsm_support *sup = &ms->support;
-
- set->class_pcs = atoi(argv[0]);
-
- if (((set->class_pcs + 1) & 3) < ((sup->class_pcs + 1) & 3)
- && !vty_reading)
- vty_out(vty, "Note: You selected a higher class than supported "
- " by hardware!%s", VTY_NEWLINE);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_ms_sup_ch_cap, cfg_ms_sup_ch_cap_cmd, "channel-capability "
- "(sdcch|sdcch+tchf|sdcch+tchf+tchh)",
- "Select channel capability\nSDCCH only\nSDCCH + TCH/F\nSDCCH + TCH/H")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
- struct gsm_support *sup = &ms->support;
- uint8_t ch_cap;
-
- if (!strcmp(argv[0], "sdcch+tchf+tchh"))
- ch_cap = GSM_CAP_SDCCH_TCHF_TCHH;
- else if (!strcmp(argv[0], "sdcch+tchf"))
- ch_cap = GSM_CAP_SDCCH_TCHF;
- else
- ch_cap = GSM_CAP_SDCCH;
-
- if (ch_cap > sup->ch_cap && !vty_reading) {
- vty_out(vty, "You selected an higher capability than supported "
- " by hardware!%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- if (ms->started && ch_cap != set->ch_cap
- && (ch_cap == GSM_CAP_SDCCH || set->ch_cap == GSM_CAP_SDCCH))
- vty_restart_if_started(vty, ms);
-
- set->ch_cap = ch_cap;
-
- return CMD_SUCCESS;
-}
-
-SUP_EN(cfg_ms_sup_full_v1, cfg_ms_sup_full_v1_cmd, full_v1, "full-speech-v1",
- "Full rate speech V1", 0);
-SUP_DI(cfg_ms_sup_no_full_v1, cfg_ms_sup_no_full_v1_cmd, full_v1,
- "full-speech-v1", "Full rate speech V1", 0);
-SUP_EN(cfg_ms_sup_full_v2, cfg_ms_sup_full_v2_cmd, full_v2, "full-speech-v2",
- "Full rate speech V2 (EFR)", 0);
-SUP_DI(cfg_ms_sup_no_full_v2, cfg_ms_sup_no_full_v2_cmd, full_v2,
- "full-speech-v2", "Full rate speech V2 (EFR)", 0);
-SUP_EN(cfg_ms_sup_full_v3, cfg_ms_sup_full_v3_cmd, full_v3, "full-speech-v3",
- "Full rate speech V3 (AMR)", 0);
-SUP_DI(cfg_ms_sup_no_full_v3, cfg_ms_sup_no_full_v3_cmd, full_v3,
- "full-speech-v3", "Full rate speech V3 (AMR)", 0);
-SUP_EN(cfg_ms_sup_half_v1, cfg_ms_sup_half_v1_cmd, half_v1, "half-speech-v1",
- "Half rate speech V1", 0);
-SUP_DI(cfg_ms_sup_no_half_v1, cfg_ms_sup_no_half_v1_cmd, half_v1,
- "half-speech-v1", "Half rate speech V1", 0);
-SUP_EN(cfg_ms_sup_half_v3, cfg_ms_sup_half_v3_cmd, half_v3, "half-speech-v3",
- "Half rate speech V3 (AMR)", 0);
-SUP_DI(cfg_ms_sup_no_half_v3, cfg_ms_sup_no_half_v3_cmd, half_v3,
- "half-speech-v3", "Half rate speech V3 (AMR)", 0);
-
-DEFUN(cfg_ms_sup_min_rxlev, cfg_ms_sup_min_rxlev_cmd, "min-rxlev <-110--47>",
- "Set the minimum receive level to select a cell\n"
- "Minimum receive level from -110 dBm to -47 dBm")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
-
- set->min_rxlev_db = atoi(argv[0]);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_ms_sup_dsc_max, cfg_ms_sup_dsc_max_cmd, "dsc-max <90-500>",
- "Set the maximum DSC value. Standard is 90. Increase to make mobile "
- "more reliable against bad RX signal. This increase the propability "
- "of missing a paging requests\n"
- "DSC initial and maximum value (standard is 90)")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
-
- set->dsc_max = atoi(argv[0]);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_ms_sup_skip_max_per_band, cfg_ms_sup_skip_max_per_band_cmd,
- "skip-max-per-band",
- "Scan all frequencies per band, not only a maximum number")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
-
- set->skip_max_per_band = 1;
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_ms_sup_no_skip_max_per_band, cfg_ms_sup_no_skip_max_per_band_cmd,
- "no skip-max-per-band",
- NO_STR "Scan only a maximum number of frequencies per band")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
-
- set->skip_max_per_band = 0;
-
- return CMD_SUCCESS;
-}
-
-/* per testsim config */
-DEFUN(cfg_ms_testsim, cfg_ms_testsim_cmd, "test-sim",
- "Configure test SIM emulation")
-{
- vty->node = TESTSIM_NODE;
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_test_imsi, cfg_test_imsi_cmd, "imsi IMSI",
- "Set IMSI on test card\n15 digits IMSI")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
- char *error = gsm_check_imsi(argv[0]);
-
- if (error) {
- vty_out(vty, "%s%s", error, VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- strcpy(set->test_imsi, argv[0]);
-
- vty_restart_if_started(vty, ms);
-
- return CMD_SUCCESS;
-}
-
-#define HEX_STR "\nByte as two digits hexadecimal"
-DEFUN(cfg_test_ki_xor, cfg_test_ki_xor_cmd, "ki xor HEX HEX HEX HEX HEX HEX "
- "HEX HEX HEX HEX HEX HEX",
- "Set Key (Kc) on test card\nUse XOR algorithm" HEX_STR HEX_STR HEX_STR
- HEX_STR HEX_STR HEX_STR HEX_STR HEX_STR HEX_STR HEX_STR HEX_STR HEX_STR)
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
- uint8_t ki[12];
- const char *p;
- int i;
-
- for (i = 0; i < 12; i++) {
- p = argv[i];
- if (!strncmp(p, "0x", 2))
- p += 2;
- if (strlen(p) != 2) {
- vty_out(vty, "Expecting two digits hex value (with or "
- "without 0x in front)%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
- ki[i] = strtoul(p, NULL, 16);
- }
-
- set->test_ki_type = GSM_SIM_KEY_XOR;
- memcpy(set->test_ki, ki, 12);
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_test_ki_comp128, cfg_test_ki_comp128_cmd, "ki comp128 HEX HEX HEX "
- "HEX HEX HEX HEX HEX HEX HEX HEX HEX HEX HEX HEX HEX",
- "Set Key (Kc) on test card\nUse XOR algorithm" HEX_STR HEX_STR HEX_STR
- HEX_STR HEX_STR HEX_STR HEX_STR HEX_STR HEX_STR HEX_STR HEX_STR HEX_STR
- HEX_STR HEX_STR HEX_STR HEX_STR)
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
- uint8_t ki[16];
- const char *p;
- int i;
-
- for (i = 0; i < 16; i++) {
- p = argv[i];
- if (!strncmp(p, "0x", 2))
- p += 2;
- if (strlen(p) != 2) {
- vty_out(vty, "Expecting two digits hex value (with or "
- "without 0x in front)%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
- ki[i] = strtoul(p, NULL, 16);
- }
-
- set->test_ki_type = GSM_SIM_KEY_COMP128;
- memcpy(set->test_ki, ki, 16);
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_test_barr, cfg_test_barr_cmd, "barred-access",
- "Allow access to barred cells")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
-
- set->test_barr = 1;
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_test_no_barr, cfg_test_no_barr_cmd, "no barred-access",
- NO_STR "Deny access to barred cells")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
-
- set->test_barr = 0;
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_test_no_rplmn, cfg_test_no_rplmn_cmd, "no rplmn",
- NO_STR "Unset Registered PLMN")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
-
- set->test_rplmn_valid = 0;
-
- vty_restart_if_started(vty, ms);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_test_rplmn, cfg_test_rplmn_cmd, "rplmn MCC MNC [LAC] [TMSI]",
- "Set Registered PLMN\nMobile Country Code\nMobile Network Code\n"
- "Optionally set locatio area code\n"
- "Optionally set current assigned TMSI")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
- uint16_t mcc = gsm_input_mcc((char *)argv[0]),
- mnc = gsm_input_mnc((char *)argv[1]);
-
- if (mcc == GSM_INPUT_INVALID) {
- vty_out(vty, "Given MCC invalid%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
- if (mnc == GSM_INPUT_INVALID) {
- vty_out(vty, "Given MNC invalid%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
- set->test_rplmn_valid = 1;
- set->test_rplmn_mcc = mcc;
- set->test_rplmn_mnc = mnc;
-
- if (argc >= 3)
- set->test_lac = strtoul(argv[2], NULL, 16);
- else
- set->test_lac = 0xfffe;
-
- if (argc >= 4)
- set->test_tmsi = strtoul(argv[3], NULL, 16);
- else
- set->test_tmsi = 0xffffffff;
-
- vty_restart_if_started(vty, ms);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_test_hplmn, cfg_test_hplmn_cmd, "hplmn-search (everywhere|foreign-country)",
- "Set Home PLMN search mode\n"
- "Search for HPLMN when on any other network\n"
- "Search for HPLMN when in a different country")
-{
- struct osmocom_ms *ms = vty->index;
- struct gsm_settings *set = &ms->settings;
-
- switch (argv[0][0]) {
- case 'e':
- set->test_always = 1;
- break;
- case 'f':
- set->test_always = 0;
- break;
- }
-
- vty_restart_if_started(vty, ms);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_no_shutdown, cfg_ms_no_shutdown_cmd, "no shutdown",
- NO_STR "Activate and run MS")
-{
- struct osmocom_ms *ms = vty->index, *tmp;
- int rc;
-
- if (ms->shutdown != 2)
- return CMD_SUCCESS;
-
- llist_for_each_entry(tmp, &ms_list, entity) {
- if (tmp->shutdown == 2)
- continue;
- if (!strcmp(ms->settings.layer2_socket_path,
- tmp->settings.layer2_socket_path)) {
- vty_out(vty, "Cannot start MS '%s', because MS '%s' "
- "use the same layer2-socket.%sPlease shutdown "
- "MS '%s' first.%s", ms->name, tmp->name,
- VTY_NEWLINE, tmp->name, VTY_NEWLINE);
- return CMD_WARNING;
- }
- if (!strcmp(ms->settings.sap_socket_path,
- tmp->settings.sap_socket_path)) {
- vty_out(vty, "Cannot start MS '%s', because MS '%s' "
- "use the same sap-socket.%sPlease shutdown "
- "MS '%s' first.%s", ms->name, tmp->name,
- VTY_NEWLINE, tmp->name, VTY_NEWLINE);
- return CMD_WARNING;
- }
- }
-
- rc = mobile_init(ms);
- if (rc < 0) {
- vty_out(vty, "Connection to layer 1 failed!%s",
- VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_shutdown, cfg_ms_shutdown_cmd, "shutdown",
- "Shut down and deactivate MS")
-{
- struct osmocom_ms *ms = vty->index;
-
- if (ms->shutdown == 0)
- mobile_exit(ms, 0);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_shutdown_force, cfg_ms_shutdown_force_cmd, "shutdown force",
- "Shut down and deactivate MS\nDo not perform IMSI detach")
-{
- struct osmocom_ms *ms = vty->index;
-
- if (ms->shutdown <= 1)
- mobile_exit(ms, 1);
-
- return CMD_SUCCESS;
-}
-
-enum node_type ms_vty_go_parent(struct vty *vty)
-{
- switch (vty->node) {
- case MS_NODE:
- vty->node = CONFIG_NODE;
- vty->index = NULL;
- break;
- case TESTSIM_NODE:
- case SUPPORT_NODE:
- vty->node = MS_NODE;
- break;
- default:
- vty->node = CONFIG_NODE;
- }
-
- return vty->node;
-}
-
-/* Down vty node level. */
-gDEFUN(ournode_exit,
- ournode_exit_cmd, "exit", "Exit current mode and down to previous mode\n")
-{
- switch (vty->node) {
- case MS_NODE:
- vty->node = CONFIG_NODE;
- vty->index = NULL;
- break;
- case TESTSIM_NODE:
- case SUPPORT_NODE:
- vty->node = MS_NODE;
- break;
- default:
- break;
- }
- return CMD_SUCCESS;
-}
-
-/* End of configuration. */
-gDEFUN(ournode_end,
- ournode_end_cmd, "end", "End current mode and change to enable mode.")
-{
- switch (vty->node) {
- case VIEW_NODE:
- case ENABLE_NODE:
- /* Nothing to do. */
- break;
- case CONFIG_NODE:
- case VTY_NODE:
- case MS_NODE:
- case TESTSIM_NODE:
- case SUPPORT_NODE:
- vty_config_unlock(vty);
- vty->node = ENABLE_NODE;
- vty->index = NULL;
- vty->index_sub = NULL;
- break;
- default:
- break;
- }
- return CMD_SUCCESS;
-}
-
-DEFUN(off, off_cmd, "off",
- "Turn mobiles off (shutdown) and exit")
-{
- osmo_signal_dispatch(SS_GLOBAL, S_GLOBAL_SHUTDOWN, NULL);
-
- return CMD_SUCCESS;
-}
-
-#define SUP_NODE(item) \
- install_element(SUPPORT_NODE, &cfg_ms_sup_item_cmd);
-
-int ms_vty_init(void)
-{
- install_element_ve(&show_ms_cmd);
- install_element_ve(&show_subscr_cmd);
- install_element_ve(&show_support_cmd);
- install_element_ve(&show_cell_cmd);
- install_element_ve(&show_cell_si_cmd);
- install_element_ve(&show_nbcells_cmd);
- install_element_ve(&show_ba_cmd);
- install_element_ve(&show_forb_la_cmd);
- install_element_ve(&show_forb_plmn_cmd);
- install_element_ve(&monitor_network_cmd);
- install_element_ve(&no_monitor_network_cmd);
- install_element(ENABLE_NODE, &off_cmd);
-
- install_element(ENABLE_NODE, &sim_test_cmd);
- install_element(ENABLE_NODE, &sim_reader_cmd);
- install_element(ENABLE_NODE, &sim_remove_cmd);
- install_element(ENABLE_NODE, &sim_pin_cmd);
- install_element(ENABLE_NODE, &sim_disable_pin_cmd);
- install_element(ENABLE_NODE, &sim_enable_pin_cmd);
- install_element(ENABLE_NODE, &sim_change_pin_cmd);
- install_element(ENABLE_NODE, &sim_unblock_pin_cmd);
- install_element(ENABLE_NODE, &sim_lai_cmd);
- install_element(ENABLE_NODE, &network_search_cmd);
- install_element(ENABLE_NODE, &network_show_cmd);
- install_element(ENABLE_NODE, &network_select_cmd);
- install_element(ENABLE_NODE, &call_cmd);
- install_element(ENABLE_NODE, &call_retr_cmd);
- install_element(ENABLE_NODE, &call_dtmf_cmd);
- install_element(ENABLE_NODE, &test_reselection_cmd);
- install_element(ENABLE_NODE, &delete_forbidden_plmn_cmd);
-
-#ifdef _HAVE_GPSD
- install_element(CONFIG_NODE, &cfg_gps_host_cmd);
-#endif
- install_element(CONFIG_NODE, &cfg_gps_device_cmd);
- install_element(CONFIG_NODE, &cfg_gps_baud_cmd);
- install_element(CONFIG_NODE, &cfg_gps_enable_cmd);
- install_element(CONFIG_NODE, &cfg_no_gps_enable_cmd);
-
- install_element(CONFIG_NODE, &cfg_hide_default_cmd);
- install_element(CONFIG_NODE, &cfg_no_hide_default_cmd);
-
- install_element(CONFIG_NODE, &cfg_ms_cmd);
- install_element(CONFIG_NODE, &cfg_ms_create_cmd);
- install_element(CONFIG_NODE, &cfg_ms_rename_cmd);
- install_element(CONFIG_NODE, &cfg_no_ms_cmd);
- install_element(CONFIG_NODE, &ournode_end_cmd);
- install_node(&ms_node, config_write);
- install_default(MS_NODE);
- install_element(MS_NODE, &ournode_exit_cmd);
- install_element(MS_NODE, &ournode_end_cmd);
- install_element(MS_NODE, &cfg_ms_show_this_cmd);
- install_element(MS_NODE, &cfg_ms_layer2_cmd);
- install_element(MS_NODE, &cfg_ms_sap_cmd);
- install_element(MS_NODE, &cfg_ms_sim_cmd);
- install_element(MS_NODE, &cfg_ms_mode_cmd);
- install_element(MS_NODE, &cfg_ms_imei_cmd);
- install_element(MS_NODE, &cfg_ms_imei_fixed_cmd);
- install_element(MS_NODE, &cfg_ms_imei_random_cmd);
- install_element(MS_NODE, &cfg_ms_no_emerg_imsi_cmd);
- install_element(MS_NODE, &cfg_ms_emerg_imsi_cmd);
- install_element(MS_NODE, &cfg_ms_cw_cmd);
- install_element(MS_NODE, &cfg_ms_no_cw_cmd);
- install_element(MS_NODE, &cfg_ms_auto_answer_cmd);
- install_element(MS_NODE, &cfg_ms_no_auto_answer_cmd);
- install_element(MS_NODE, &cfg_ms_clip_cmd);
- install_element(MS_NODE, &cfg_ms_clir_cmd);
- install_element(MS_NODE, &cfg_ms_no_clip_cmd);
- install_element(MS_NODE, &cfg_ms_no_clir_cmd);
- install_element(MS_NODE, &cfg_ms_tx_power_cmd);
- install_element(MS_NODE, &cfg_ms_tx_power_val_cmd);
- install_element(MS_NODE, &cfg_ms_sim_delay_cmd);
- install_element(MS_NODE, &cfg_ms_no_sim_delay_cmd);
- install_element(MS_NODE, &cfg_ms_stick_cmd);
- install_element(MS_NODE, &cfg_ms_no_stick_cmd);
- install_element(MS_NODE, &cfg_ms_lupd_cmd);
- install_element(MS_NODE, &cfg_ms_no_lupd_cmd);
- install_element(MS_NODE, &cfg_ms_codec_full_cmd);
- install_element(MS_NODE, &cfg_ms_codec_full_pref_cmd);
- install_element(MS_NODE, &cfg_ms_codec_half_cmd);
- install_element(MS_NODE, &cfg_ms_codec_half_pref_cmd);
- install_element(MS_NODE, &cfg_ms_no_codec_half_cmd);
- install_element(MS_NODE, &cfg_ms_abbrev_cmd);
- install_element(MS_NODE, &cfg_ms_no_abbrev_cmd);
- install_element(MS_NODE, &cfg_ms_testsim_cmd);
- install_element(MS_NODE, &cfg_ms_neighbour_cmd);
- install_element(MS_NODE, &cfg_ms_no_neighbour_cmd);
- install_element(MS_NODE, &cfg_ms_support_cmd);
- install_node(&support_node, config_write_dummy);
- install_default(SUPPORT_NODE);
- install_element(SUPPORT_NODE, &ournode_exit_cmd);
- install_element(SUPPORT_NODE, &ournode_end_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_dtmf_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_no_dtmf_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_sms_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_no_sms_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_a5_1_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_no_a5_1_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_a5_2_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_no_a5_2_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_a5_3_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_no_a5_3_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_a5_4_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_no_a5_4_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_a5_5_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_no_a5_5_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_a5_6_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_no_a5_6_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_a5_7_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_no_a5_7_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_p_gsm_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_no_p_gsm_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_e_gsm_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_no_e_gsm_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_r_gsm_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_no_r_gsm_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_dcs_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_no_dcs_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_gsm_850_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_no_gsm_850_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_pcs_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_no_pcs_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_gsm_480_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_no_gsm_480_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_gsm_450_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_no_gsm_450_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_class_900_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_class_dcs_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_class_850_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_class_pcs_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_class_400_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_ch_cap_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_full_v1_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_no_full_v1_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_full_v2_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_no_full_v2_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_full_v3_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_no_full_v3_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_half_v1_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_no_half_v1_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_half_v3_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_no_half_v3_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_min_rxlev_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_dsc_max_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_skip_max_per_band_cmd);
- install_element(SUPPORT_NODE, &cfg_ms_sup_no_skip_max_per_band_cmd);
- install_node(&testsim_node, config_write_dummy);
- install_default(TESTSIM_NODE);
- install_element(TESTSIM_NODE, &ournode_exit_cmd);
- install_element(TESTSIM_NODE, &ournode_end_cmd);
- install_element(TESTSIM_NODE, &cfg_test_imsi_cmd);
- install_element(TESTSIM_NODE, &cfg_test_ki_xor_cmd);
- install_element(TESTSIM_NODE, &cfg_test_ki_comp128_cmd);
- install_element(TESTSIM_NODE, &cfg_test_barr_cmd);
- install_element(TESTSIM_NODE, &cfg_test_no_barr_cmd);
- install_element(TESTSIM_NODE, &cfg_test_no_rplmn_cmd);
- install_element(TESTSIM_NODE, &cfg_test_rplmn_cmd);
- install_element(TESTSIM_NODE, &cfg_test_hplmn_cmd);
- install_element(MS_NODE, &cfg_ms_shutdown_cmd);
- install_element(MS_NODE, &cfg_ms_shutdown_force_cmd);
- install_element(MS_NODE, &cfg_ms_no_shutdown_cmd);
-
- return 0;
-}
-
-void vty_notify(struct osmocom_ms *ms, const char *fmt, ...)
-{
- struct telnet_connection *connection;
- char buffer[1000];
- va_list args;
- struct vty *vty;
-
- if (fmt) {
- va_start(args, fmt);
- vsnprintf(buffer, sizeof(buffer) - 1, fmt, args);
- buffer[sizeof(buffer) - 1] = '\0';
- va_end(args);
-
- if (!buffer[0])
- return;
- }
-
- llist_for_each_entry(connection, &active_connections, entry) {
- vty = connection->vty;
- if (!vty)
- continue;
- if (!fmt) {
- vty_out(vty, "%s%% (MS %s)%s", VTY_NEWLINE, ms->name,
- VTY_NEWLINE);
- continue;
- }
- if (buffer[strlen(buffer) - 1] == '\n') {
- buffer[strlen(buffer) - 1] = '\0';
- vty_out(vty, "%% %s%s", buffer, VTY_NEWLINE);
- buffer[strlen(buffer)] = '\n';
- } else
- vty_out(vty, "%% %s", buffer);
- }
-}
-
diff --git a/Src/osmoconbb/src/host/osmocon/.gitignore b/Src/osmoconbb/src/host/osmocon/.gitignore
deleted file mode 100644
index ad061b7..0000000
--- a/Src/osmoconbb/src/host/osmocon/.gitignore
+++ /dev/null
@@ -1,36 +0,0 @@
-# autoreconf by-products
-*.in
-
-aclocal.m4
-autom4te.cache/
-configure
-depcomp
-install-sh
-missing
-
-# configure by-products
-.deps/
-Makefile
-
-config.status
-version.h
-
-# build by-products
-*.o
-
-osmocon
-osmoload
-
-# various
-.version
-.tarball-version
-
-# IDA file
-*.id*
-*.nam
-*.til
-
-# Other test files
-*.dump
-*.bin
-*.log
diff --git a/Src/osmoconbb/src/host/osmocon/COPYING b/Src/osmoconbb/src/host/osmocon/COPYING
deleted file mode 100644
index d511905..0000000
--- a/Src/osmoconbb/src/host/osmocon/COPYING
+++ /dev/null
@@ -1,339 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.
diff --git a/Src/osmoconbb/src/host/osmocon/Makefile.am b/Src/osmoconbb/src/host/osmocon/Makefile.am
deleted file mode 100644
index 8b0d4bf..0000000
--- a/Src/osmoconbb/src/host/osmocon/Makefile.am
+++ /dev/null
@@ -1,21 +0,0 @@
-AUTOMAKE_OPTIONS = foreign dist-bzip2 1.6
-
-# versioning magic
-BUILT_SOURCES = $(top_srcdir)/.version
-$(top_srcdir)/.version:
- echo $(VERSION) > $@-t && mv $@-t $@
-dist-hook:
- echo $(VERSION) > $(distdir)/.tarball-version
-
-INCLUDES = $(all_includes) -I$(top_srcdir)/include
-AM_CFLAGS=-Wall $(LIBOSMOCORE_CFLAGS)
-
-sbin_PROGRAMS = osmocon osmoload
-
-# FIXME: sercomm needs to move into libosmocore or another shared lib
-INCLUDES += -I../../target/firmware/include/comm -I../../target/firmware/apps -DHOST_BUILD
-osmocon_SOURCES = osmocon.c tpu_debug.c ../../target/firmware/comm/sercomm.c
-osmocon_LDADD = $(LIBOSMOCORE_LIBS)
-
-osmoload_SOURCE = osmoload.c ../../target/firmware/comm/sercomm.c
-osmoload_LDADD = $(LIBOSMOCORE_LIBS)
diff --git a/Src/osmoconbb/src/host/osmocon/configure.ac b/Src/osmoconbb/src/host/osmocon/configure.ac
deleted file mode 100644
index 4130800..0000000
--- a/Src/osmoconbb/src/host/osmocon/configure.ac
+++ /dev/null
@@ -1,25 +0,0 @@
-dnl Process this file with autoconf to produce a configure script
-AC_INIT([osmocon],
- m4_esyscmd([./git-version-gen .tarball-version]),
- [baseband-devel@lists.osmocom.org])
-
-AM_INIT_AUTOMAKE([dist-bzip2])
-
-dnl kernel style compile messages
-m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
-
-dnl checks for programs
-AC_PROG_MAKE_SET
-AC_PROG_CC
-AC_PROG_INSTALL
-
-dnl checks for libraries
-PKG_CHECK_MODULES(LIBOSMOCORE, libosmocore)
-
-dnl checks for header files
-AC_HEADER_STDC
-
-dnl Checks for typedefs, structures and compiler characteristics
-
-AC_OUTPUT(
- Makefile)
diff --git a/Src/osmoconbb/src/host/osmocon/git-version-gen b/Src/osmoconbb/src/host/osmocon/git-version-gen
deleted file mode 100755
index 652fac6..0000000
--- a/Src/osmoconbb/src/host/osmocon/git-version-gen
+++ /dev/null
@@ -1,151 +0,0 @@
-#!/bin/sh
-# Print a version string.
-scriptversion=2010-01-28.01
-
-# Copyright (C) 2007-2010 Free Software Foundation, Inc.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 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, see <http://www.gnu.org/licenses/>.
-
-# This script is derived from GIT-VERSION-GEN from GIT: http://git.or.cz/.
-# It may be run two ways:
-# - from a git repository in which the "git describe" command below
-# produces useful output (thus requiring at least one signed tag)
-# - from a non-git-repo directory containing a .tarball-version file, which
-# presumes this script is invoked like "./git-version-gen .tarball-version".
-
-# In order to use intra-version strings in your project, you will need two
-# separate generated version string files:
-#
-# .tarball-version - present only in a distribution tarball, and not in
-# a checked-out repository. Created with contents that were learned at
-# the last time autoconf was run, and used by git-version-gen. Must not
-# be present in either $(srcdir) or $(builddir) for git-version-gen to
-# give accurate answers during normal development with a checked out tree,
-# but must be present in a tarball when there is no version control system.
-# Therefore, it cannot be used in any dependencies. GNUmakefile has
-# hooks to force a reconfigure at distribution time to get the value
-# correct, without penalizing normal development with extra reconfigures.
-#
-# .version - present in a checked-out repository and in a distribution
-# tarball. Usable in dependencies, particularly for files that don't
-# want to depend on config.h but do want to track version changes.
-# Delete this file prior to any autoconf run where you want to rebuild
-# files to pick up a version string change; and leave it stale to
-# minimize rebuild time after unrelated changes to configure sources.
-#
-# It is probably wise to add these two files to .gitignore, so that you
-# don't accidentally commit either generated file.
-#
-# Use the following line in your configure.ac, so that $(VERSION) will
-# automatically be up-to-date each time configure is run (and note that
-# since configure.ac no longer includes a version string, Makefile rules
-# should not depend on configure.ac for version updates).
-#
-# AC_INIT([GNU project],
-# m4_esyscmd([build-aux/git-version-gen .tarball-version]),
-# [bug-project@example])
-#
-# Then use the following lines in your Makefile.am, so that .version
-# will be present for dependencies, and so that .tarball-version will
-# exist in distribution tarballs.
-#
-# BUILT_SOURCES = $(top_srcdir)/.version
-# $(top_srcdir)/.version:
-# echo $(VERSION) > $@-t && mv $@-t $@
-# dist-hook:
-# echo $(VERSION) > $(distdir)/.tarball-version
-
-case $# in
- 1) ;;
- *) echo 1>&2 "Usage: $0 \$srcdir/.tarball-version"; exit 1;;
-esac
-
-tarball_version_file=$1
-nl='
-'
-
-# First see if there is a tarball-only version file.
-# then try "git describe", then default.
-if test -f $tarball_version_file
-then
- v=`cat $tarball_version_file` || exit 1
- case $v in
- *$nl*) v= ;; # reject multi-line output
- [0-9]*) ;;
- *) v= ;;
- esac
- test -z "$v" \
- && echo "$0: WARNING: $tarball_version_file seems to be damaged" 1>&2
-fi
-
-if test -n "$v"
-then
- : # use $v
-elif
- v=`git describe --abbrev=4 --match='osmocon_v*' HEAD 2>/dev/null \
- || git describe --abbrev=4 HEAD 2>/dev/null` \
- && case $v in
- osmocon_[0-9]*) ;;
- osmocon_v[0-9]*) ;;
- *) (exit 1) ;;
- esac
-then
- # Is this a new git that lists number of commits since the last
- # tag or the previous older version that did not?
- # Newer: v6.10-77-g0f8faeb
- # Older: v6.10-g0f8faeb
- case $v in
- *-*-*) : git describe is okay three part flavor ;;
- *-*)
- : git describe is older two part flavor
- # Recreate the number of commits and rewrite such that the
- # result is the same as if we were using the newer version
- # of git describe.
- vtag=`echo "$v" | sed 's/-.*//'`
- numcommits=`git rev-list "$vtag"..HEAD | wc -l`
- v=`echo "$v" | sed "s/\(.*\)-\(.*\)/\1-$numcommits-\2/"`;
- ;;
- esac
-
- # Change the first '-' to a '.', so version-comparing tools work properly.
- # Remove the "g" in git describe's output string, to save a byte.
- v=`echo "$v" | sed 's/-/./;s/\(.*\)-g/\1-/;s/^osmocon_//'`;
-else
- v="UNKNOWN"
-fi
-
-v=`echo "$v" |sed 's/^v//'`
-
-# Don't declare a version "dirty" merely because a time stamp has changed.
-git status > /dev/null 2>&1
-
-dirty=`sh -c 'git diff-index --name-only HEAD' 2>/dev/null` || dirty=
-case "$dirty" in
- '') ;;
- *) # Append the suffix only if there isn't one already.
- case $v in
- *-dirty) ;;
- *) v="$v-dirty" ;;
- esac ;;
-esac
-
-# Omit the trailing newline, so that m4_esyscmd can use the result directly.
-echo "$v" | tr -d '\012'
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
-# End:
diff --git a/Src/osmoconbb/src/host/osmocon/memdump_convert.pl b/Src/osmoconbb/src/host/osmocon/memdump_convert.pl
deleted file mode 100755
index 3d18a0b..0000000
--- a/Src/osmoconbb/src/host/osmocon/memdump_convert.pl
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/usr/bin/perl
-
-my $num_line = 0;
-my $num_hex = 0;
-my $oldaddr;
-
-while (my $line = <STDIN>) {
- chomp($line);
- $num_line++;
- my (@hex) = $line =~ /(\w{8}): (\w{8}) (\w{8}) (\w{8}) (\w{8}) (\w{8}) (\w{8}) (\w{8}) (\w{8})/;
- my $addr = hex(shift @hex);
- if ($addr != 0 && $addr != $oldaddr + 0x20) {
- printf(STDERR "gap of %u between 0x%08x and 0x%08x\n%s\n",
- $addr - $oldaddr, $addr, $oldaddr, $line);
- }
- foreach my $h (@hex) {
- $num_hex++;
- # poor mans endian conversion
- my ($a, $b, $c, $d) = $h =~/(\w\w)(\w\w)(\w\w)(\w\w)/;
- my $h_reorder = $d . $c . $b . $a;
- # convert into actual binary number
- my $tmp = pack('H8', $h_reorder);
- syswrite(STDOUT, $tmp, 4);
- }
- $oldaddr = $addr;
-}
-
-printf(STDERR "num lines/num hex: %u/%u\n", $num_line, $num_hex);
-
diff --git a/Src/osmoconbb/src/host/osmocon/osmocon.c b/Src/osmoconbb/src/host/osmocon/osmocon.c
deleted file mode 100644
index 7f74f8f..0000000
--- a/Src/osmoconbb/src/host/osmocon/osmocon.c
+++ /dev/null
@@ -1,1558 +0,0 @@
-/* osmocon */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- * (C) 2010 by Holger Hans Peter Freyther <zecke@selfish.org>
- * (C) 2010 by Steve Markgraf <steve@steve-m.de>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <ctype.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <stdint.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <termios.h>
-#include <sys/ioctl.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/stat.h>
-#include <sys/un.h>
-
-#include <sercomm.h>
-
-#include <osmocom/core/linuxlist.h>
-#include <osmocom/core/select.h>
-#include <osmocom/core/talloc.h>
-#include <osmocom/core/timer.h>
-
-#include <arpa/inet.h>
-
-#define MODEM_BAUDRATE B115200
-#define MAX_DNLOAD_SIZE 0xFFFF
-#define MAX_HDR_SIZE 128
-#define MAGIC_OFFSET 0x3be2
-
-#define DEFAULT_BEACON_INTERVAL 50000
-#define ROMLOAD_INIT_BAUDRATE B19200
-#define ROMLOAD_DL_BAUDRATE B115200
-#define ROMLOAD_BLOCK_HDR_LEN 10
-#define ROMLOAD_ADDRESS 0x820000
-
-#define MTK_INIT_BAUDRATE B19200
-#define MTK_ADDRESS 0x40001400
-#define MTK_BLOCK_SIZE 1024
-
-struct tool_server *tool_server_for_dlci[256];
-
-/**
- * a connection from some other tool
- */
-struct tool_connection {
- struct tool_server *server;
- struct llist_head entry;
- struct osmo_fd fd;
-};
-
-/**
- * server for a tool
- */
-struct tool_server {
- struct osmo_fd bfd;
- uint8_t dlci;
- struct llist_head connections;
-};
-
-
-enum dnload_state {
- WAITING_PROMPT1,
- WAITING_PROMPT2,
- DOWNLOADING,
-};
-
-enum romload_state {
- WAITING_IDENTIFICATION,
- WAITING_PARAM_ACK,
- SENDING_BLOCKS,
- SENDING_LAST_BLOCK,
- LAST_BLOCK_SENT,
- WAITING_BLOCK_ACK,
- WAITING_CHECKSUM_ACK,
- WAITING_BRANCH_ACK,
- FINISHED,
-};
-
-enum mtk_state {
- MTK_INIT_1,
- MTK_INIT_2,
- MTK_INIT_3,
- MTK_INIT_4,
- MTK_WAIT_WRITE_ACK,
- MTK_WAIT_ADDR_ACK,
- MTK_WAIT_SIZE_ACK,
- MTK_SENDING_BLOCKS,
- MTK_WAIT_BRANCH_CMD_ACK,
- MTK_WAIT_BRANCH_ADDR_ACK,
- MTK_FINISHED,
-};
-
-enum dnload_mode {
- MODE_C123,
- MODE_C123xor,
- MODE_C140,
- MODE_C140xor,
- MODE_C155,
- MODE_ROMLOAD,
- MODE_MTK,
-};
-
-struct dnload {
- enum dnload_state state;
- enum romload_state romload_state;
- enum mtk_state mtk_state;
- enum dnload_mode mode;
- struct osmo_fd serial_fd;
- char *filename;
- char *chainload_filename;
-
- int expect_hdlc;
-
- int dump_rx;
- int dump_tx;
- int beacon_interval;
-
- /* data to be downloaded */
- uint8_t *data;
- int data_len;
-
- uint8_t *write_ptr;
-
- /* romload: block to be downloaded */
- uint8_t *block;
- int block_len;
- uint8_t block_number;
- uint16_t block_payload_size;
- int romload_dl_checksum;
- uint8_t *block_ptr;
- uint8_t load_address[4];
-
- uint8_t mtk_send_size[4];
- int block_count;
- int echo_bytecount;
-
- struct tool_server layer2_server;
- struct tool_server loader_server;
-};
-
-
-static struct dnload dnload;
-static struct osmo_timer_list tick_timer;
-
-/* Compal ramloader specific */
-static const uint8_t phone_prompt1[] = { 0x1b, 0xf6, 0x02, 0x00, 0x41, 0x01, 0x40 };
-static const uint8_t dnload_cmd[] = { 0x1b, 0xf6, 0x02, 0x00, 0x52, 0x01, 0x53 };
-static const uint8_t phone_prompt2[] = { 0x1b, 0xf6, 0x02, 0x00, 0x41, 0x02, 0x43 };
-static const uint8_t phone_ack[] = { 0x1b, 0xf6, 0x02, 0x00, 0x41, 0x03, 0x42 };
-static const uint8_t phone_nack_magic[]= { 0x1b, 0xf6, 0x02, 0x00, 0x41, 0x03, 0x57 };
-static const uint8_t phone_nack[] = { 0x1b, 0xf6, 0x02, 0x00, 0x45, 0x53, 0x16 };
-static const uint8_t ftmtool[] = { 0x66, 0x74, 0x6d, 0x74, 0x6f, 0x6f, 0x6c };
-static const uint8_t phone_magic[] = { 0x31, 0x30, 0x30, 0x33 }; /* "1003" */
-
-/* The C123 has a hard-coded check inside the ramloader that requires the
- * following bytes to be always the first four bytes of the image */
-static const uint8_t data_hdr_c123[] = { 0xee, 0x4c, 0x9f, 0x63 };
-
-/* The C155 doesn't have some strange restriction on what the first four bytes
- * have to be, but it starts the ramloader in THUMB mode. We use the following
- * four bytes to switch back to ARM mode:
- 800100: 4778 bx pc
- 800102: 46c0 nop ; (mov r8, r8)
- */
-static const uint8_t data_hdr_c155[] = { 0x78, 0x47, 0xc0, 0x46 };
-
-/* Calypso romloader specific */
-static const uint8_t romload_ident_cmd[] = { 0x3c, 0x69 }; /* <i */
-static const uint8_t romload_abort_cmd[] = { 0x3c, 0x61 }; /* <a */
-static const uint8_t romload_write_cmd[] = { 0x3c, 0x77 }; /* <w */
-static const uint8_t romload_checksum_cmd[] = { 0x3c, 0x63 }; /* <c */
-static const uint8_t romload_branch_cmd[] = { 0x3c, 0x62 }; /* <b */
-static const uint8_t romload_ident_ack[] = { 0x3e, 0x69 }; /* >i */
-static const uint8_t romload_param_ack[] = { 0x3e, 0x70 }; /* >p */
-static const uint8_t romload_param_nack[] = { 0x3e, 0x50 }; /* >P */
-static const uint8_t romload_block_ack[] = { 0x3e, 0x77 }; /* >w */
-static const uint8_t romload_block_nack[] = { 0x3e, 0x57 }; /* >W */
-static const uint8_t romload_checksum_ack[] = { 0x3e, 0x63 }; /* >c */
-static const uint8_t romload_checksum_nack[] = { 0x3e, 0x43 }; /* >C */
-static const uint8_t romload_branch_ack[] = { 0x3e, 0x62 }; /* >b */
-static const uint8_t romload_branch_nack[] = { 0x3e, 0x42 }; /* >B */
-
-/* romload_param: {"<p", uint8_t baudrate, uint8_t dpll, uint16_t memory_config,
- * uint8_t strobe_af, uint32_t uart_timeout} */
-
-static const uint8_t romload_param[] = { 0x3c, 0x70, 0x00, 0x00, 0x00, 0x04,
- 0x00, 0x00, 0x00, 0x00, 0x00 };
-
-/* MTK romloader specific */
-static const uint8_t mtk_init_cmd[] = { 0xa0, 0x0a, 0x50, 0x05 };
-static const uint8_t mtk_init_resp[] = { 0x5f, 0xf5, 0xaf, 0xfa };
-static const uint8_t mtk_command[] = { 0xa1, 0xa2, 0xa4, 0xa8 };
-
-/* FIXME: this routine is more or less what openbsc/src/rs232:rs232_setup()
- * does, we should move it to libosmocore at some point */
-static int serial_init(const char *serial_port)
-{
- int rc, serial_fd, v24;
- struct termios tio;
-
- serial_fd = open(serial_port, O_RDWR | O_NOCTTY | O_NDELAY);
- if (serial_fd < 0) {
- perror("cannot open serial port");
- return serial_fd;
- }
-
- //fcntl(serial_fd, F_SETFL, 0);
-
- /* Configure serial interface */
- rc = tcgetattr(serial_fd, &tio);
- if (rc < 0) {
- perror("tcgetattr()");
- return rc;
- }
- cfsetispeed(&tio, MODEM_BAUDRATE);
- cfsetospeed(&tio, MODEM_BAUDRATE);
- tio.c_cflag &= ~(PARENB | CSTOPB | CSIZE | CRTSCTS);
- tio.c_cflag |= (CREAD | CLOCAL | CS8);
- tio.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
- tio.c_iflag |= (INPCK | ISTRIP);
- tio.c_iflag &= ~(ISTRIP | IXON | IXOFF | IGNBRK | INLCR | ICRNL | IGNCR);
- tio.c_oflag &= ~(OPOST | ONLCR);
- rc = tcsetattr(serial_fd, TCSANOW, &tio);
- if (rc < 0) {
- perror("tcsetattr()");
- return rc;
- }
-
- /* set ready to read/write */
- v24 = TIOCM_DTR | TIOCM_RTS;
- rc = ioctl(serial_fd, TIOCMBIS, &v24);
- if (rc < 0) {
- perror("ioctl(TIOCMBIS)");
- return rc;
- }
-
- return serial_fd;
-}
-
-static int serial_set_baudrate(speed_t baudrate)
-{
- int rc;
- struct termios tio;
-
- rc = tcgetattr(dnload.serial_fd.fd, &tio);
- if (rc < 0) {
- perror("tcgetattr()");
- return rc;
- }
- cfsetispeed(&tio, baudrate);
- cfsetospeed(&tio, baudrate);
-
- rc = tcsetattr(dnload.serial_fd.fd, TCSANOW, &tio);
- return rc;
-}
-
-static void beacon_timer_cb(void *p)
-{
- int rc;
-
- if (dnload.romload_state == WAITING_IDENTIFICATION) {
- printf("Sending Calypso romloader beacon...\n");
- rc = write(dnload.serial_fd.fd, romload_ident_cmd,
- sizeof(romload_ident_cmd));
-
- if (!(rc == sizeof(romload_ident_cmd)))
- printf("Error sending identification beacon\n");
-
- osmo_timer_schedule(p, 0, dnload.beacon_interval);
- }
-}
-
-static void mtk_timer_cb(void *p)
-{
- int rc;
-
- if (dnload.mtk_state == MTK_INIT_1) {
- printf("Sending MTK romloader beacon...\n");
- rc = write(dnload.serial_fd.fd, &mtk_init_cmd[0], 1);
-
- if (!(rc == 1))
- printf("Error sending identification beacon\n");
-
- osmo_timer_schedule(p, 0, dnload.beacon_interval);
- }
-}
-
-/* Read the to-be-downloaded file, prepend header and length, append XOR sum */
-int read_file(const char *filename)
-{
- int fd, rc, i;
- struct stat st;
- const uint8_t *hdr = NULL;
- int payload_size;
- int hdr_len = 0;
- uint8_t *file_data;
- uint16_t tot_len;
- uint8_t nibble;
- uint8_t running_xor = 0x02;
-
- fd = open(filename, O_RDONLY);
- if (fd < 0) {
- perror("opening file");
- exit(1);
- }
-
- rc = fstat(fd, &st);
- if (st.st_size > MAX_DNLOAD_SIZE) {
- fprintf(stderr, "The maximum file size is 64kBytes (%u bytes)\n",
- MAX_DNLOAD_SIZE);
- return -EFBIG;
- }
-
- free(dnload.data);
- dnload.data = NULL;
-
- if (dnload.mode == MODE_C140 || dnload.mode == MODE_C140xor) {
- if (st.st_size < (MAGIC_OFFSET + sizeof(phone_magic)))
- payload_size = MAGIC_OFFSET + sizeof(phone_magic);
- else {
- printf("\nThe filesize is larger than 15kb, code on "
- "the magic address will be overwritten!\nUse "
- "loader.bin and upload the application with "
- "osmoload instead!\n\n");
- payload_size = st.st_size;
- }
- } else
- payload_size = st.st_size;
-
- dnload.data = malloc(MAX_HDR_SIZE + payload_size);
-
- if (!dnload.data) {
- close(fd);
- fprintf(stderr, "No memory\n");
- return -ENOMEM;
- }
-
- /* copy in the header, if any */
- switch (dnload.mode) {
- case MODE_C155:
- hdr = data_hdr_c155;
- hdr_len = sizeof(data_hdr_c155);
- break;
- case MODE_C140:
- case MODE_C140xor:
- case MODE_C123:
- case MODE_C123xor:
- hdr = data_hdr_c123;
- hdr_len = sizeof(data_hdr_c123);
- break;
- case MODE_ROMLOAD:
- break;
- default:
- break;
- }
-
- if (hdr && hdr_len)
- memcpy(dnload.data, hdr, hdr_len);
-
- /* 2 bytes for length + header */
- file_data = dnload.data + 2 + hdr_len;
-
- /* write the length, keep running XOR */
- tot_len = hdr_len + payload_size;
- nibble = tot_len >> 8;
- dnload.data[0] = nibble;
- running_xor ^= nibble;
- nibble = tot_len & 0xff;
- dnload.data[1] = nibble;
- running_xor ^= nibble;
-
- if (hdr_len && hdr) {
- memcpy(dnload.data+2, hdr, hdr_len);
-
- for (i = 0; i < hdr_len; i++)
- running_xor ^= hdr[i];
- }
-
- rc = read(fd, file_data, st.st_size);
- if (rc < 0) {
- perror("error reading file\n");
- free(dnload.data);
- dnload.data = NULL;
- close(fd);
- return -EIO;
- }
- if (rc < st.st_size) {
- free(dnload.data);
- dnload.data = NULL;
- close(fd);
- fprintf(stderr, "Short read of file (%d < %d)\n",
- rc, (int)st.st_size);
- return -EIO;
- }
-
- close(fd);
-
- dnload.data_len = (file_data+payload_size) - dnload.data;
-
- /* fill memory between data end and magic, add magic */
- if(dnload.mode == MODE_C140 || dnload.mode == MODE_C140xor) {
- if (st.st_size < MAGIC_OFFSET)
- memset(file_data + st.st_size, 0x00,
- payload_size - st.st_size);
- memcpy(dnload.data + MAGIC_OFFSET, phone_magic,
- sizeof(phone_magic));
- }
-
- /* calculate XOR sum */
- for (i = 0; i < payload_size; i++)
- running_xor ^= file_data[i];
-
- dnload.data[dnload.data_len++] = running_xor;
-
- /* initialize write pointer to start of data */
- dnload.write_ptr = dnload.data;
-
- printf("read_file(%s): file_size=%u, hdr_len=%u, dnload_len=%u\n",
- filename, (int)st.st_size, hdr_len, dnload.data_len);
-
- return 0;
-}
-
-static void osmocon_osmo_hexdump(const uint8_t *data, unsigned int len)
-{
- int n;
-
- for (n=0; n < len; n++)
- printf("%02x ", data[n]);
- printf(" ");
- for (n=0; n < len; n++)
- if (isprint(data[n]))
- putchar(data[n]);
- else
- putchar('.');
- printf("\n");
-}
-
-static int romload_prepare_block(void)
-{
- int i;
-
- int block_checksum = 5;
- int remaining_bytes;
- int fill_bytes;
- uint8_t *block_data;
- uint32_t block_address;
-
- dnload.block_len = ROMLOAD_BLOCK_HDR_LEN + dnload.block_payload_size;
-
- /* if first block, allocate memory */
- if (!dnload.block_number) {
- dnload.block = malloc(dnload.block_len);
- if (!dnload.block) {
- fprintf(stderr, "No memory\n");
- return -ENOMEM;
- }
- dnload.romload_dl_checksum = 0;
- /* initialize write pointer to start of data */
- dnload.write_ptr = dnload.data;
- }
-
- block_address = ROMLOAD_ADDRESS +
- (dnload.block_number * dnload.block_payload_size);
-
- /* prepare our block header (10 bytes) */
- memcpy(dnload.block, romload_write_cmd, sizeof(romload_write_cmd));
- dnload.block[2] = 0x01; /* block index */
- /* should normally be the block number, but hangs when sending !0x01 */
- dnload.block[3] = 0x01; /* dnload.block_number+1 */
- dnload.block[4] = (dnload.block_payload_size >> 8) & 0xff;
- dnload.block[5] = dnload.block_payload_size & 0xff;
- dnload.block[6] = (block_address >> 24) & 0xff;
- dnload.block[7] = (block_address >> 16) & 0xff;
- dnload.block[8] = (block_address >> 8) & 0xff;
- dnload.block[9] = block_address & 0xff;
-
- block_data = dnload.block + ROMLOAD_BLOCK_HDR_LEN;
- dnload.write_ptr = dnload.data + 2 +
- (dnload.block_payload_size * dnload.block_number);
-
- remaining_bytes = dnload.data_len - 3 -
- (dnload.block_payload_size * dnload.block_number);
-
- memcpy(block_data, dnload.write_ptr, dnload.block_payload_size);
-
- if (remaining_bytes <= dnload.block_payload_size) {
- fill_bytes = (dnload.block_payload_size - remaining_bytes);
- printf("Preparing the last block, filling %i bytes,",
- fill_bytes);
- memset(block_data + remaining_bytes, 0x00, fill_bytes);
- dnload.romload_state = SENDING_LAST_BLOCK;
- } else {
- dnload.romload_state = SENDING_BLOCKS;
- printf("Preparing block %i,", dnload.block_number+1);
- }
-
- /* block checksum is lsb of ~(5 + block_size_lsb + all bytes of
- * block_address + all data bytes) */
- for (i = 5; i < ROMLOAD_BLOCK_HDR_LEN + dnload.block_payload_size; i++)
- block_checksum += dnload.block[i];
-
- /* checksum is lsb of ~(sum of LSBs of all block checksums) */
- printf(" block checksum is 0x%02x \n", ~(block_checksum) & 0xff);
- dnload.romload_dl_checksum += ~(block_checksum) & 0xff;
-
- /* initialize block pointer to start of block */
- dnload.block_ptr = dnload.block;
-
- dnload.block_number++;
- dnload.serial_fd.when = BSC_FD_READ | BSC_FD_WRITE;
- return 0;
-}
-
-static int mtk_prepare_block(void)
-{
- int rc, i;
-
- int remaining_bytes;
- int fill_bytes;
- uint8_t *block_data;
- uint8_t tmp_byteswap;
- uint32_t tmp_size;
-
- dnload.block_len = MTK_BLOCK_SIZE;
- dnload.echo_bytecount = 0;
-
- /* if first block, allocate memory */
- if (!dnload.block_number) {
- dnload.block = malloc(dnload.block_len);
- if (!dnload.block) {
- fprintf(stderr, "No memory\n");
- return -ENOMEM;
- }
-
- /* calculate the number of blocks we need to send */
- dnload.block_count = (dnload.data_len-3) / MTK_BLOCK_SIZE;
- /* add one more block if no multiple of blocksize */
- if((dnload.data_len-3) % MTK_BLOCK_SIZE)
- dnload.block_count++;
-
- /* divide by 2, since we have to tell the mtk loader the size
- * as count of uint16 (odd transfer sizes are not possible) */
- tmp_size = (dnload.block_count * MTK_BLOCK_SIZE)/2;
- dnload.mtk_send_size[0] = (tmp_size >> 24) & 0xff;
- dnload.mtk_send_size[1] = (tmp_size >> 16) & 0xff;
- dnload.mtk_send_size[2] = (tmp_size >> 8) & 0xff;
- dnload.mtk_send_size[3] = tmp_size & 0xff;
-
- /* initialize write pointer to start of data */
- dnload.write_ptr = dnload.data;
- }
-
- block_data = dnload.block;
- dnload.write_ptr = dnload.data + 2 +
- (dnload.block_len * dnload.block_number);
-
- remaining_bytes = dnload.data_len - 3 -
- (dnload.block_len * dnload.block_number);
-
- memcpy(block_data, dnload.write_ptr, MTK_BLOCK_SIZE);
-
- if (remaining_bytes <= MTK_BLOCK_SIZE) {
- fill_bytes = (MTK_BLOCK_SIZE - remaining_bytes);
- printf("Preparing the last block, filling %i bytes\n",
- fill_bytes);
- memset(block_data + remaining_bytes, 0x00, fill_bytes);
- dnload.romload_state = SENDING_LAST_BLOCK;
- } else {
- dnload.romload_state = SENDING_BLOCKS;
- printf("Preparing block %i\n", dnload.block_number+1);
- }
-
- /* for the mtk romloader we need to swap MSB <-> LSB */
- for (i = 0; i < dnload.block_len; i += 2) {
- tmp_byteswap = dnload.block[i];
- dnload.block[i] = dnload.block[i+1];
- dnload.block[i+1] = tmp_byteswap;
- }
-
- /* initialize block pointer to start of block */
- dnload.block_ptr = dnload.block;
-
- dnload.block_number++;
- return rc;
-}
-
-static int handle_write_block(void)
-{
- int bytes_left, write_len, rc;
-
- printf("handle_write_block(): ");
-
- if (dnload.block_ptr >= dnload.block + dnload.block_len) {
- printf("Block %i finished\n", dnload.block_number);
- dnload.write_ptr = dnload.data;
- dnload.serial_fd.when &= ~BSC_FD_WRITE;
- if (dnload.romload_state == SENDING_LAST_BLOCK) {
- dnload.romload_state = LAST_BLOCK_SENT;
- printf("Finished, sent %i blocks in total\n",
- dnload.block_number);
- } else {
- dnload.romload_state = WAITING_BLOCK_ACK;
- }
-
- return 0;
- }
-
- /* try to write a maximum of block_len bytes */
- bytes_left = (dnload.block + dnload.block_len) - dnload.block_ptr;
- write_len = dnload.block_len;
- if (bytes_left < dnload.block_len)
- write_len = bytes_left;
-
- rc = write(dnload.serial_fd.fd, dnload.block_ptr, write_len);
- if (rc < 0) {
- perror("Error during write");
- return rc;
- }
-
- dnload.block_ptr += rc;
-
- printf("%u bytes (%tu/%u)\n", rc, dnload.block_ptr - dnload.block,
- dnload.block_len);
-
- return 0;
-}
-
-#define WRITE_BLOCK 4096
-
-static int handle_write_dnload(void)
-{
- int bytes_left, write_len, rc;
- uint8_t xor_init = 0x02;
-
- printf("handle_write(): ");
- if (dnload.write_ptr == dnload.data) {
- /* no bytes have been transferred yet */
- switch (dnload.mode) {
- case MODE_C155:
- case MODE_C140xor:
- case MODE_C123xor:
- rc = write(dnload.serial_fd.fd, &xor_init, 1);
- break;
- default:
- break;
- }
- } else if (dnload.write_ptr >= dnload.data + dnload.data_len) {
- printf("finished\n");
- dnload.write_ptr = dnload.data;
- dnload.serial_fd.when &= ~BSC_FD_WRITE;
- return 1;
- }
-
- /* try to write a maximum of WRITE_BLOCK bytes */
- bytes_left = (dnload.data + dnload.data_len) - dnload.write_ptr;
- write_len = WRITE_BLOCK;
- if (bytes_left < WRITE_BLOCK)
- write_len = bytes_left;
-
- rc = write(dnload.serial_fd.fd, dnload.write_ptr, write_len);
- if (rc < 0) {
- perror("Error during write");
- return rc;
- }
-
- dnload.write_ptr += rc;
-
- printf("%u bytes (%tu/%u)\n", rc, dnload.write_ptr - dnload.data,
- dnload.data_len);
-
- return 0;
-}
-
-static int handle_sercomm_write(void)
-{
- uint8_t c;
-
- if (sercomm_drv_pull(&c) != 0) {
- if (write(dnload.serial_fd.fd, &c, 1) != 1)
- perror("short write");
- } else
- dnload.serial_fd.when &= ~BSC_FD_WRITE;
-
- return 0;
-}
-
-static int handle_write(void)
-{
- /* TODO: simplify this again (global state: downloading, sercomm) */
- switch (dnload.mode) {
- case MODE_ROMLOAD:
- switch (dnload.romload_state) {
- case SENDING_BLOCKS:
- case SENDING_LAST_BLOCK:
- return handle_write_block();
- default:
- return handle_sercomm_write();
- }
- break;
- case MODE_MTK:
- switch (dnload.mtk_state) {
- case MTK_SENDING_BLOCKS:
- return handle_write_block();
- default:
- return handle_sercomm_write();
- }
- break;
- default:
- switch (dnload.state) {
- case DOWNLOADING:
- return handle_write_dnload();
- default:
- return handle_sercomm_write();
- }
- }
-
- return 0;
-}
-
-static uint8_t buffer[sizeof(phone_prompt1)];
-static uint8_t *bufptr = buffer;
-
-static void hdlc_send_to_phone(uint8_t dlci, uint8_t *data, int len)
-{
- struct msgb *msg;
- uint8_t *dest;
-
- if(dnload.dump_tx) {
- printf("hdlc_send(dlci=%u): ", dlci);
- osmocon_osmo_hexdump(data, len);
- }
-
- if (len > 512) {
- fprintf(stderr, "Too much data to send. %u\n", len);
- return;
- }
-
- /* push the message into the stack */
- msg = sercomm_alloc_msgb(512);
- if (!msg) {
- fprintf(stderr, "Failed to create data for the frame.\n");
- return;
- }
-
- /* copy the data */
- dest = msgb_put(msg, len);
- memcpy(dest, data, len);
-
- sercomm_sendmsg(dlci, msg);
-
- dnload.serial_fd.when |= BSC_FD_WRITE;
-}
-
-static void hdlc_console_cb(uint8_t dlci, struct msgb *msg)
-{
- write(1, msg->data, msg->len);
- msgb_free(msg);
-}
-
-static void hdlc_tool_cb(uint8_t dlci, struct msgb *msg)
-{
- struct tool_server *srv = tool_server_for_dlci[dlci];
-
- if(dnload.dump_rx) {
- printf("hdlc_recv(dlci=%u): ", dlci);
- osmocon_osmo_hexdump(msg->data, msg->len);
- }
-
- if(srv) {
- struct tool_connection *con;
- uint16_t *len;
-
- len = (uint16_t *) msgb_push(msg, 2);
- *len = htons(msg->len - sizeof(*len));
-
- llist_for_each_entry(con, &srv->connections, entry) {
- if (write(con->fd.fd, msg->data, msg->len) != msg->len) {
- fprintf(stderr,
- "Failed to write msg to the socket..\n");
- continue;
- }
- }
- }
-
- msgb_free(msg);
-}
-
-static int handle_buffer(int buf_used_len)
-{
- int nbytes, buf_left, i;
-
- buf_left = buf_used_len - (bufptr - buffer);
- if (buf_left <= 0) {
- memmove(buffer, buffer+1, buf_used_len-1);
- bufptr -= 1;
- buf_left = 1;
- }
-
- nbytes = read(dnload.serial_fd.fd, bufptr, buf_left);
- if (nbytes <= 0)
- return nbytes;
-
- if (!dnload.expect_hdlc) {
- printf("got %i bytes from modem, ", nbytes);
- printf("data looks like: ");
- osmocon_osmo_hexdump(bufptr, nbytes);
- } else {
- for (i = 0; i < nbytes; ++i)
- if (sercomm_drv_rx_char(bufptr[i]) == 0)
- printf("Dropping sample '%c'\n", bufptr[i]);
- }
-
- return nbytes;
-}
-
-/* Compal ramloader */
-static int handle_read(void)
-{
- int rc, nbytes;
-
- nbytes = handle_buffer(sizeof(buffer));
- if (nbytes <= 0)
- return nbytes;
-
- if (!memcmp(buffer, phone_prompt1, sizeof(phone_prompt1))) {
- printf("Received PROMPT1 from phone, responding with CMD\n");
- dnload.expect_hdlc = 0;
- dnload.state = WAITING_PROMPT2;
- if(dnload.filename) {
- rc = write(dnload.serial_fd.fd, dnload_cmd, sizeof(dnload_cmd));
-
- /* re-read file */
- rc = read_file(dnload.filename);
- if (rc < 0) {
- fprintf(stderr, "read_file(%s) failed with %d\n",
- dnload.filename, rc);
- exit(1);
- }
- }
- } else if (!memcmp(buffer, phone_prompt2, sizeof(phone_prompt2))) {
- printf("Received PROMPT2 from phone, starting download\n");
- dnload.serial_fd.when = BSC_FD_READ | BSC_FD_WRITE;
- dnload.state = DOWNLOADING;
- } else if (!memcmp(buffer, phone_ack, sizeof(phone_ack))) {
- printf("Received DOWNLOAD ACK from phone, your code is"
- " running now!\n");
- dnload.serial_fd.when = BSC_FD_READ;
- dnload.state = WAITING_PROMPT1;
- dnload.write_ptr = dnload.data;
- dnload.expect_hdlc = 1;
-
- /* check for romloader chainloading mode used as a workaround
- * for the magic on the C139/C140 and J100i */
- if (dnload.chainload_filename != NULL) {
- printf("Enabled Compal ramloader -> Calypso romloader"
- " chainloading mode\n");
- bufptr = buffer;
- dnload.filename = dnload.chainload_filename;
- dnload.mode = MODE_ROMLOAD;
- serial_set_baudrate(ROMLOAD_INIT_BAUDRATE);
- tick_timer.cb = &beacon_timer_cb;
- tick_timer.data = &tick_timer;
- osmo_timer_schedule(&tick_timer, 0, dnload.beacon_interval);
- }
- } else if (!memcmp(buffer, phone_nack, sizeof(phone_nack))) {
- printf("Received DOWNLOAD NACK from phone, something went"
- " wrong :(\n");
- dnload.serial_fd.when = BSC_FD_READ;
- dnload.state = WAITING_PROMPT1;
- dnload.write_ptr = dnload.data;
- } else if (!memcmp(buffer, phone_nack_magic, sizeof(phone_nack_magic))) {
- printf("Received MAGIC NACK from phone, you need to"
- " have \"1003\" at 0x803ce0\n");
- dnload.serial_fd.when = BSC_FD_READ;
- dnload.state = WAITING_PROMPT1;
- dnload.write_ptr = dnload.data;
- } else if (!memcmp(buffer, ftmtool, sizeof(ftmtool))) {
- printf("Received FTMTOOL from phone, ramloader has aborted\n");
- dnload.serial_fd.when = BSC_FD_READ;
- dnload.state = WAITING_PROMPT1;
- dnload.write_ptr = dnload.data;
- }
- bufptr += nbytes;
-
- return nbytes;
-}
-
-/* "Calypso non-secure romloader" */
-static int handle_read_romload(void)
-{
- int rc, nbytes, buf_used_len;
-
- /* virtually limit buffer length for romloader, since responses
- * are shorter and vary in length */
-
- switch (dnload.romload_state) {
- case WAITING_PARAM_ACK:
- buf_used_len = 4; /* ">p" + uint16_t len */
- break;
- case WAITING_CHECKSUM_ACK:
- buf_used_len = 3; /* ">c" + uint8_t checksum */
- break;
- case FINISHED:
- buf_used_len = sizeof(buffer);
- break;
- default:
- buf_used_len = 2; /* ">*" */
- }
-
- nbytes = handle_buffer(buf_used_len);
- if (nbytes <= 0)
- return nbytes;
-
- switch (dnload.romload_state) {
- case WAITING_IDENTIFICATION:
- if (memcmp(buffer, romload_ident_ack,
- sizeof(romload_ident_ack)))
- break;
-
- printf("Received ident ack from phone, sending "
- "parameter sequence\n");
- dnload.expect_hdlc = 1;
- dnload.romload_state = WAITING_PARAM_ACK;
- rc = write(dnload.serial_fd.fd, romload_param,
- sizeof(romload_param));
- /* re-read file */
- rc = read_file(dnload.filename);
- if (rc < 0) {
- fprintf(stderr, "read_file(%s) failed with %d\n",
- dnload.filename, rc);
- exit(1);
- }
- break;
- case WAITING_PARAM_ACK:
- if (memcmp(buffer, romload_param_ack,
- sizeof(romload_param_ack)))
- break;
-
- printf("Received parameter ack from phone, "
- "starting download\n");
- serial_set_baudrate(ROMLOAD_DL_BAUDRATE);
-
- /* using the max blocksize the phone tells us */
- dnload.block_payload_size = ((buffer[3] << 8) + buffer[2]);
- printf("Used blocksize for download is %i bytes\n",
- dnload.block_payload_size);
- dnload.block_payload_size -= ROMLOAD_BLOCK_HDR_LEN;
- dnload.romload_state = SENDING_BLOCKS;
- dnload.block_number = 0;
- romload_prepare_block();
- bufptr -= 2;
- break;
- case WAITING_BLOCK_ACK:
- case LAST_BLOCK_SENT:
- if (!memcmp(buffer, romload_block_ack,
- sizeof(romload_block_ack))) {
- printf("Received block ack from phone\n");
- if (dnload.romload_state == LAST_BLOCK_SENT) {
- /* send the checksum */
- uint8_t final_checksum =
- (~(dnload.romload_dl_checksum) & 0xff);
- printf("Sending checksum: 0x%02x \n",
- final_checksum);
- rc = write(dnload.serial_fd.fd,
- romload_checksum_cmd,
- sizeof(romload_checksum_cmd));
- rc = write(dnload.serial_fd.fd,
- &final_checksum, 1);
- dnload.romload_state = WAITING_CHECKSUM_ACK;
- } else
- romload_prepare_block();
- } else if (!memcmp(buffer, romload_block_nack,
- sizeof(romload_block_nack))) {
- printf("Received block nack from phone, "
- "something went wrong, aborting\n");
- serial_set_baudrate(ROMLOAD_INIT_BAUDRATE);
- dnload.romload_state = WAITING_IDENTIFICATION;
- osmo_timer_schedule(&tick_timer, 0, dnload.beacon_interval);
- }
- break;
- case WAITING_CHECKSUM_ACK:
- if (!memcmp(buffer, romload_checksum_ack,
- sizeof(romload_checksum_ack))) {
- printf("Checksum on phone side matches, "
- "let's branch to your code\n");
- printf("Branching to 0x%08x\n", ROMLOAD_ADDRESS);
-
- rc = write(dnload.serial_fd.fd, romload_branch_cmd,
- sizeof(romload_branch_cmd));
- rc = write(dnload.serial_fd.fd, &dnload.load_address,
- sizeof(dnload.load_address));
- dnload.romload_state = WAITING_BRANCH_ACK;
- bufptr -= 1;
- } else if (!memcmp(buffer, romload_checksum_nack,
- sizeof(romload_checksum_nack))) {
- printf("Checksum on phone side (0x%02x) doesn't "
- "match ours, aborting\n", ~buffer[2]);
- serial_set_baudrate(ROMLOAD_INIT_BAUDRATE);
- dnload.romload_state = WAITING_IDENTIFICATION;
- osmo_timer_schedule(&tick_timer, 0, dnload.beacon_interval);
- bufptr -= 1;
- }
- break;
- case WAITING_BRANCH_ACK:
- if (!memcmp(buffer, romload_branch_ack,
- sizeof(romload_branch_ack))) {
- printf("Received branch ack, your code is running now!\n");
- dnload.serial_fd.when = BSC_FD_READ;
- dnload.romload_state = FINISHED;
- dnload.write_ptr = dnload.data;
- dnload.expect_hdlc = 1;
- } else if (!memcmp(buffer, romload_branch_nack,
- sizeof(romload_branch_nack))) {
- printf("Received branch nack, aborting\n");
- serial_set_baudrate(ROMLOAD_INIT_BAUDRATE);
- dnload.romload_state = WAITING_IDENTIFICATION;
- osmo_timer_schedule(&tick_timer, 0, dnload.beacon_interval);
- }
- break;
- default:
- break;
- }
-
- bufptr += nbytes;
- return nbytes;
-}
-
-/* MTK romloader */
-static int handle_read_mtk(void)
-{
- int rc, nbytes, buf_used_len;
-
- switch (dnload.mtk_state) {
- case MTK_WAIT_ADDR_ACK:
- case MTK_WAIT_SIZE_ACK:
- case MTK_WAIT_BRANCH_ADDR_ACK:
- buf_used_len = 4;
- break;
- case MTK_FINISHED:
- buf_used_len = sizeof(buffer);
- break;
- default:
- buf_used_len = 1;
- }
-
- nbytes = handle_buffer(buf_used_len);
- if (nbytes <= 0)
- return nbytes;
-
- switch (dnload.mtk_state) {
- case MTK_INIT_1:
- if (!(buffer[0] == mtk_init_resp[0]))
- break;
- dnload.mtk_state = MTK_INIT_2;
- printf("Received init magic byte 1\n");
- rc = write(dnload.serial_fd.fd, &mtk_init_cmd[1], 1);
- break;
- case MTK_INIT_2:
- if (!(buffer[0] == mtk_init_resp[1]))
- break;
- dnload.mtk_state = MTK_INIT_3;
- printf("Received init magic byte 2\n");
- rc = write(dnload.serial_fd.fd, &mtk_init_cmd[2], 1);
- break;
- case MTK_INIT_3:
- if (!(buffer[0] == mtk_init_resp[2]))
- break;
- dnload.mtk_state = MTK_INIT_4;
- printf("Received init magic byte 3\n");
- rc = write(dnload.serial_fd.fd, &mtk_init_cmd[3], 1);
- break;
- case MTK_INIT_4:
- if (!(buffer[0] == mtk_init_resp[3]))
- break;
- dnload.mtk_state = MTK_WAIT_WRITE_ACK;
- printf("Received init magic byte 4, requesting write\n");
- rc = write(dnload.serial_fd.fd, &mtk_command[0], 1);
- break;
- case MTK_WAIT_WRITE_ACK:
- if (!(buffer[0] == mtk_command[0]))
- break;
- dnload.mtk_state = MTK_WAIT_ADDR_ACK;
- printf("Received write ack, sending load address\n");
-
- rc = write(dnload.serial_fd.fd, &dnload.load_address,
- sizeof(dnload.load_address));
- break;
- case MTK_WAIT_ADDR_ACK:
- if (memcmp(buffer, dnload.load_address,
- sizeof(dnload.load_address)))
- break;
- printf("Received address ack from phone, sending loadsize\n");
- /* re-read file */
- rc = read_file(dnload.filename);
- if (rc < 0) {
- fprintf(stderr, "read_file(%s) failed with %d\n",
- dnload.filename, rc);
- exit(1);
- }
- dnload.block_number = 0;
- mtk_prepare_block();
- dnload.mtk_state = MTK_WAIT_SIZE_ACK;
- rc = write(dnload.serial_fd.fd, &dnload.mtk_send_size,
- sizeof(dnload.mtk_send_size));
- break;
- case MTK_WAIT_SIZE_ACK:
- if (memcmp(buffer, dnload.mtk_send_size,
- sizeof(dnload.mtk_send_size)))
- break;
- printf("Received size ack\n");
- dnload.expect_hdlc = 1;
- dnload.mtk_state = MTK_SENDING_BLOCKS;
- dnload.serial_fd.when = BSC_FD_READ | BSC_FD_WRITE;
- bufptr -= 3;
- break;
- case MTK_SENDING_BLOCKS:
- if (!(buffer[0] == dnload.block[dnload.echo_bytecount]))
- printf("Warning: Byte %i of Block %i doesn't match,"
- " check your serial connection!\n",
- dnload.echo_bytecount, dnload.block_number);
- dnload.echo_bytecount++;
-
- if ((dnload.echo_bytecount+1) > MTK_BLOCK_SIZE) {
- if ( dnload.block_number == dnload.block_count) {
- rc = write(dnload.serial_fd.fd,
- &mtk_command[3], 1);
- printf("Sending branch command\n");
- dnload.expect_hdlc = 0;
- dnload.mtk_state = MTK_WAIT_BRANCH_CMD_ACK;
- break;
- }
- printf("Received Block %i preparing next block\n",
- dnload.block_number);
- mtk_prepare_block();
- dnload.serial_fd.when = BSC_FD_READ | BSC_FD_WRITE;
- }
- break;
- case MTK_WAIT_BRANCH_CMD_ACK:
- if (!(buffer[0] == mtk_command[3]))
- break;
- dnload.mtk_state = MTK_WAIT_BRANCH_ADDR_ACK;
- printf("Received branch command ack, sending address\n");
-
- rc = write(dnload.serial_fd.fd, &dnload.load_address,
- sizeof(dnload.load_address));
- break;
- case MTK_WAIT_BRANCH_ADDR_ACK:
- if (memcmp(buffer, dnload.load_address,
- sizeof(dnload.load_address)))
- break;
- printf("Received branch address ack, code should run now\n");
- serial_set_baudrate(MODEM_BAUDRATE);
- dnload.serial_fd.when = BSC_FD_READ;
- dnload.mtk_state = MTK_FINISHED;
- dnload.write_ptr = dnload.data;
- dnload.expect_hdlc = 1;
- break;
- default:
- break;
- }
-
- bufptr += nbytes;
- return nbytes;
-}
-
-static int serial_read(struct osmo_fd *fd, unsigned int flags)
-{
- int rc;
- if (flags & BSC_FD_READ) {
- switch (dnload.mode) {
- case MODE_ROMLOAD:
- rc = handle_read_romload();
- break;
- case MODE_MTK:
- rc = handle_read_mtk();
- break;
- default:
- rc = handle_read();
- break;
- }
- if (rc == 0)
- exit(2);
- }
-
- if (flags & BSC_FD_WRITE) {
- rc = handle_write();
- if (rc == 1)
- dnload.state = WAITING_PROMPT1;
- }
- return 0;
-}
-
-static int parse_mode(const char *arg)
-{
- if (!strcasecmp(arg, "c123"))
- return MODE_C123;
- else if (!strcasecmp(arg, "c123xor"))
- return MODE_C123xor;
- else if (!strcasecmp(arg, "c140"))
- return MODE_C140;
- else if (!strcasecmp(arg, "c140xor"))
- return MODE_C140xor;
- else if (!strcasecmp(arg, "c155"))
- return MODE_C155;
- else if (!strcasecmp(arg, "romload"))
- return MODE_ROMLOAD;
- else if (!strcasecmp(arg, "mtk"))
- return MODE_MTK;
-
- return -1;
-}
-
-#define HELP_TEXT \
- "[ -v | -h ] [ -d [t][r] ] [ -p /dev/ttyXXXX ]\n" \
- "\t\t [ -s /tmp/osmocom_l2 ]\n" \
- "\t\t [ -l /tmp/osmocom_loader ]\n" \
- "\t\t [ -m {c123,c123xor,c140,c140xor,c155,romload,mtk} ]\n" \
- "\t\t [ -c /to-be-chainloaded-file.bin ]\n" \
- "\t\t [ -i beacon-interval (mS) ]\n" \
- "\t\t file.bin\n\n" \
- "* Open serial port /dev/ttyXXXX (connected to your phone)\n" \
- "* Perform handshaking with the ramloader in the phone\n" \
- "* Download file.bin to the attached phone (base address 0x00800100)\n"
-
-static int usage(const char *name)
-{
- printf("Usage: %s ", name);
- printf(HELP_TEXT);
- exit(2);
-}
-
-static int version(const char *name)
-{
- printf("%s version %s\n", name, PACKAGE_VERSION);
- exit(2);
-}
-
-static int un_tool_read(struct osmo_fd *fd, unsigned int flags)
-{
- int rc, c;
- uint16_t length = 0xffff;
- uint8_t buf[4096];
- struct tool_connection *con = (struct tool_connection *)fd->data;
-
- c = 0;
- while(c < 2) {
- rc = read(fd->fd, &buf + c, 2 - c);
- if(rc == 0) {
- // disconnect
- goto close;
- }
- if(rc < 0) {
- if(errno == EAGAIN) {
- continue;
- }
- fprintf(stderr, "Err from socket: %s\n", strerror(errno));
- goto close;
- }
- c += rc;
- }
-
- length = ntohs(*(uint16_t*)buf);
-
- c = 0;
- while(c < length) {
- rc = read(fd->fd, &buf + c, length - c);
- if(rc == 0) {
- // disconnect
- goto close;
- }
- if(rc < 0) {
- if(errno == EAGAIN) {
- continue;
- }
- fprintf(stderr, "Err from socket: %s\n", strerror(errno));
- goto close;
- }
- c += rc;
- }
-
- hdlc_send_to_phone(con->server->dlci, buf, length);
-
- return 0;
-close:
-
- close(fd->fd);
- osmo_fd_unregister(fd);
- llist_del(&con->entry);
- talloc_free(con);
- return -1;
-}
-
-/* accept a new connection */
-static int tool_accept(struct osmo_fd *fd, unsigned int flags)
-{
- struct tool_server *srv = (struct tool_server *)fd->data;
- struct tool_connection *con;
- struct sockaddr_un un_addr;
- socklen_t len;
- int rc;
-
- len = sizeof(un_addr);
- rc = accept(fd->fd, (struct sockaddr *) &un_addr, &len);
- if (rc < 0) {
- fprintf(stderr, "Failed to accept a new connection.\n");
- return -1;
- }
-
- con = talloc_zero(NULL, struct tool_connection);
- if (!con) {
- fprintf(stderr, "Failed to create tool connection.\n");
- return -1;
- }
-
- con->server = srv;
-
- con->fd.fd = rc;
- con->fd.when = BSC_FD_READ;
- con->fd.cb = un_tool_read;
- con->fd.data = con;
- if (osmo_fd_register(&con->fd) != 0) {
- fprintf(stderr, "Failed to register the fd.\n");
- return -1;
- }
-
- llist_add(&con->entry, &srv->connections);
- return 0;
-}
-
-/*
- * Register and start a tool server
- */
-static int register_tool_server(struct tool_server *ts,
- const char *path,
- uint8_t dlci)
-{
- struct osmo_fd *bfd = &ts->bfd;
- struct sockaddr_un local;
- unsigned int namelen;
- int rc;
-
- bfd->fd = socket(AF_UNIX, SOCK_STREAM, 0);
-
- if (bfd->fd < 0) {
- fprintf(stderr, "Failed to create Unix Domain Socket.\n");
- return -1;
- }
-
- local.sun_family = AF_UNIX;
- strncpy(local.sun_path, path, sizeof(local.sun_path));
- local.sun_path[sizeof(local.sun_path) - 1] = '\0';
- unlink(local.sun_path);
-
- /* we use the same magic that X11 uses in Xtranssock.c for
- * calculating the proper length of the sockaddr */
-#if defined(BSD44SOCKETS) || defined(__UNIXWARE__)
- local.sun_len = strlen(local.sun_path);
-#endif
-#if defined(BSD44SOCKETS) || defined(SUN_LEN)
- namelen = SUN_LEN(&local);
-#else
- namelen = strlen(local.sun_path) +
- offsetof(struct sockaddr_un, sun_path);
-#endif
-
- rc = bind(bfd->fd, (struct sockaddr *) &local, namelen);
- if (rc != 0) {
- fprintf(stderr, "Failed to bind the unix domain socket. '%s'\n",
- local.sun_path);
- return -1;
- }
-
- if (listen(bfd->fd, 0) != 0) {
- fprintf(stderr, "Failed to listen.\n");
- return -1;
- }
-
- bfd->when = BSC_FD_READ;
- bfd->cb = tool_accept;
- bfd->data = ts;
-
- ts->dlci = dlci;
- INIT_LLIST_HEAD(&ts->connections);
-
- tool_server_for_dlci[dlci] = ts;
-
- sercomm_register_rx_cb(dlci, hdlc_tool_cb);
-
- if (osmo_fd_register(bfd) != 0) {
- fprintf(stderr, "Failed to register the bfd.\n");
- return -1;
- }
-
- return 0;
-}
-
-extern void hdlc_tpudbg_cb(uint8_t dlci, struct msgb *msg);
-
-void parse_debug(const char *str)
-{
- while(*str) {
- switch(*str) {
- case 't':
- dnload.dump_tx = 1;
- break;
- case 'r':
- dnload.dump_rx = 1;
- break;
- default:
- printf("Unknown debug flag %c\n", *str);
- abort();
- break;
- }
- str++;
- }
-}
-
-int main(int argc, char **argv)
-{
- int opt, flags;
- uint32_t tmp_load_address = ROMLOAD_ADDRESS;
- const char *serial_dev = "/dev/ttyUSB1";
- const char *layer2_un_path = "/tmp/osmocom_l2";
- const char *loader_un_path = "/tmp/osmocom_loader";
-
- dnload.mode = MODE_C123;
- dnload.chainload_filename = NULL;
- dnload.beacon_interval = DEFAULT_BEACON_INTERVAL;
-
- while ((opt = getopt(argc, argv, "d:hl:p:m:c:s:i:v")) != -1) {
- switch (opt) {
- case 'p':
- serial_dev = optarg;
- break;
- case 'm':
- dnload.mode = parse_mode(optarg);
- if (dnload.mode < 0)
- usage(argv[0]);
- break;
- case 's':
- layer2_un_path = optarg;
- break;
- case 'l':
- loader_un_path = optarg;
- break;
- case 'v':
- version(argv[0]);
- break;
- case 'd':
- parse_debug(optarg);
- break;
- case 'c':
- dnload.chainload_filename = optarg;
- break;
- case 'i':
- dnload.beacon_interval = atoi(optarg) * 1000;
- break;
- case 'h':
- default:
- usage(argv[0]);
- break;
- }
- }
-
- if (argc <= optind) {
- dnload.filename = NULL;
- } else {
- dnload.filename = argv[optind];
- }
-
- dnload.serial_fd.fd = serial_init(serial_dev);
- if (dnload.serial_fd.fd < 0) {
- fprintf(stderr, "Cannot open serial device %s\n", serial_dev);
- exit(1);
- }
-
- if (osmo_fd_register(&dnload.serial_fd) != 0) {
- fprintf(stderr, "Failed to register the serial.\n");
- exit(1);
- }
-
- /* Set serial socket to non-blocking mode of operation */
- flags = fcntl(dnload.serial_fd.fd, F_GETFL);
- flags |= O_NONBLOCK;
- fcntl(dnload.serial_fd.fd, F_SETFL, flags);
-
- dnload.serial_fd.when = BSC_FD_READ;
- dnload.serial_fd.cb = serial_read;
-
- /* initialize the HDLC layer */
- sercomm_init();
- sercomm_register_rx_cb(SC_DLCI_CONSOLE, hdlc_console_cb);
- sercomm_register_rx_cb(SC_DLCI_DEBUG, hdlc_tpudbg_cb);
-
- /* unix domain socket handling */
- if (register_tool_server(&dnload.layer2_server, layer2_un_path,
- SC_DLCI_L1A_L23) != 0)
- exit(1);
-
- if (register_tool_server(&dnload.loader_server, loader_un_path,
- SC_DLCI_LOADER) != 0)
- exit(1);
-
- /* if in romload mode, start our beacon timer */
- if (dnload.mode == MODE_ROMLOAD) {
- tmp_load_address = ROMLOAD_ADDRESS;
- serial_set_baudrate(ROMLOAD_INIT_BAUDRATE);
- tick_timer.cb = &beacon_timer_cb;
- tick_timer.data = &tick_timer;
- osmo_timer_schedule(&tick_timer, 0, dnload.beacon_interval);
- }
- else if (dnload.mode == MODE_MTK) {
- tmp_load_address = MTK_ADDRESS;
- serial_set_baudrate(MTK_INIT_BAUDRATE);
- tick_timer.cb = &mtk_timer_cb;
- tick_timer.data = &tick_timer;
- osmo_timer_schedule(&tick_timer, 0, dnload.beacon_interval);
- }
-
- dnload.load_address[0] = (tmp_load_address >> 24) & 0xff;
- dnload.load_address[1] = (tmp_load_address >> 16) & 0xff;
- dnload.load_address[2] = (tmp_load_address >> 8) & 0xff;
- dnload.load_address[3] = tmp_load_address & 0xff;
-
- while (1) {
- if (osmo_select_main(0) < 0)
- break;
- }
-
- close(dnload.serial_fd.fd);
-
- exit(0);
-}
diff --git a/Src/osmoconbb/src/host/osmocon/osmoload.c b/Src/osmoconbb/src/host/osmocon/osmoload.c
deleted file mode 100644
index 8a0b21c..0000000
--- a/Src/osmoconbb/src/host/osmocon/osmoload.c
+++ /dev/null
@@ -1,1216 +0,0 @@
-/* control utility for the Calypso bootloader */
-
-/* (C) 2010 by Ingo Albrecht <prom@berlin.ccc.de>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <errno.h>
-#include <stdio.h>
-#include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <getopt.h>
-
-#include <arpa/inet.h>
-
-#include <sys/stat.h>
-
-#include <sys/socket.h>
-#include <sys/un.h>
-
-#include <osmocom/core/msgb.h>
-#include <osmocom/core/select.h>
-#include <osmocom/core/timer.h>
-#include <osmocom/core/crc16.h>
-
-#include <loader/protocol.h>
-
-#define MSGB_MAX 256
-
-#define MEM_MSG_MAX (MSGB_MAX - 16)
-
-#define DEFAULT_SOCKET "/tmp/osmocom_loader"
-
-static struct osmo_fd connection;
-
-enum {
- STATE_INIT,
- STATE_QUERY_PENDING,
- STATE_DUMP_IN_PROGRESS,
- STATE_LOAD_IN_PROGRESS,
- STATE_FLASHRANGE_GET_INFO,
- STATE_FLASHRANGE_IN_PROGRESS,
- STATE_PROGRAM_GET_INFO,
- STATE_PROGRAM_IN_PROGRESS,
- STATE_DUMPING,
-};
-
-struct flashblock {
- uint8_t fb_chip;
- uint32_t fb_offset;
- uint32_t fb_addr;
- uint32_t fb_size;
-};
-
-static struct {
- /* debug flags */
- unsigned char print_requests;
- unsigned char print_replies;
-
- /* quit flag for main loop */
- unsigned char quit;
-
- /* main state machine */
- int state;
-
- /* pending query command */
- uint8_t command;
-
- /* general timeout */
- struct osmo_timer_list timeout;
-
- /* binary i/o for firmware images */
- FILE *binfile;
- /* buffer containing binfile data */
- char *binbuf;
-
- /* memory operation state */
- uint8_t memchip; /* target chip (for flashes) */
- uint32_t membase; /* target base address of operation */
- uint32_t memlen; /* length of entire operation */
- uint32_t memoff; /* offset for next request */
- uint16_t memcrc; /* crc for current request */
- uint16_t memreq; /* length of current request */
-
- /* array of all flash blocks */
- uint8_t flashcommand;
- uint32_t numblocks;
- struct flashblock blocks[512];
-} osmoload;
-
-static int usage(const char *name)
-{
- printf("Usage: %s [ -v | -h ] [ -d tr ] [ -m {c123,c155} ] [ -l /tmp/osmocom_loader ] COMMAND ...\n", name);
-
- puts("\n Memory commands:");
- puts(" memget <hex-address> <hex-length> - Peek at memory");
- puts(" memput <hex-address> <hex-bytes> - Poke at memory");
- puts(" memdump <hex-address> <hex-length> <file>- Dump memory to file");
- puts(" memload <hex-address> <file> - Load file into memory");
-
- puts("\n Flash commands:");
- puts(" finfo - Information about flash chips");
- puts(" funlock <address> <length> - Unlock flash block");
- puts(" flock <address> <length> - Lock flash block");
- puts(" flockdown <address> <length> - Lock down flash block");
- puts(" fgetlock <address> <length> - Get locking state of block");
- puts(" ferase <address> <length> - Erase flash range");
- puts(" fprogram <chip> <address> <file> - Program file into flash");
-
- puts("\n Execution commands:");
- puts(" jump <hex-address> - Jump to address");
- puts(" jumpflash - Jump to flash loader");
- puts(" jumprom - Jump to rom loader");
-
- puts("\n Device lifecycle:");
- puts(" ping - Ping the loader");
- puts(" reset - Reset device");
- puts(" off - Power off device");
-
- puts("\n Debug:");
- puts(" dump - Dump loader traffic to console");
-
- exit(2);
-}
-
-static int version(const char *name)
-{
- //printf("\n%s version %s\n", name, VERSION);
- exit(2);
-}
-
-static void osmoload_osmo_hexdump(const uint8_t *data, unsigned int len)
-{
- const uint8_t *bufptr = data;
- const uint8_t const *endptr = bufptr + len;
- int n, m, i, hexchr;
-
- for (n=0; n < len; n+=32, bufptr += 32) {
- hexchr = 0;
- for(m = 0; m < 32 && bufptr < endptr; m++, bufptr++) {
- if((m) && !(m%4)) {
- putchar(' ');
- hexchr++;
- }
- printf("%02x", *bufptr);
- hexchr+=2;
- }
- bufptr -= m;
- int n = 71 - hexchr;
- for(i = 0; i < n; i++) {
- putchar(' ');
- }
-
- putchar(' ');
-
- for(m = 0; m < 32 && bufptr < endptr; m++, bufptr++) {
- if(isgraph(*bufptr)) {
- putchar(*bufptr);
- } else {
- putchar('.');
- }
- }
- bufptr -= m;
-
- putchar('\n');
- }
-}
-
-static void
-loader_send_request(struct msgb *msg) {
- int rc;
- u_int16_t len = htons(msg->len);
-
- if(osmoload.print_requests) {
- printf("Sending %d bytes:\n", msg->len);
- osmoload_osmo_hexdump(msg->data, msg->len);
- }
-
- rc = write(connection.fd, &len, sizeof(len));
- if(rc != sizeof(len)) {
- fprintf(stderr, "Error writing.\n");
- exit(2);
- }
-
- rc = write(connection.fd, msg->data, msg->len);
- if(rc != msg->len) {
- fprintf(stderr, "Error writing.\n");
- exit(2);
- }
-}
-
-static void loader_do_memdump(uint16_t crc, void *address, size_t length);
-static void loader_do_memload();
-static void loader_do_fprogram();
-static void loader_do_flashrange(uint8_t cmd, struct msgb *msg, uint8_t chip, uint32_t address, uint32_t status);
-
-static void memop_timeout(void *dummy) {
- switch(osmoload.state) {
- case STATE_LOAD_IN_PROGRESS:
- printf("Timeout. Repeating.");
- osmoload.memoff -= osmoload.memreq;
- loader_do_memload();
- break;
- default:
- break;
- }
- return;
-}
-
-static void
-loader_parse_flash_info(struct msgb *msg) {
- uint8_t nchips;
-
- nchips = msgb_get_u8(msg);
-
- osmoload.numblocks = 0;
-
- int chip;
- for(chip = 0; chip < nchips; chip++) {
-
- uint32_t address;
- address = msgb_get_u32(msg);
-
- uint32_t chipsize;
- chipsize = msgb_get_u32(msg);
-
- uint8_t nregions;
- nregions = msgb_get_u8(msg);
-
- printf(" chip %d at 0x%8.8x of %d bytes in %d regions\n", chip, address, chipsize, nregions);
-
- uint32_t curoffset = 0;
- int region;
- for(region = 0; region < nregions; region++) {
- uint16_t blockcount = msgb_get_u32(msg);
- uint32_t blocksize = msgb_get_u32(msg);
-
- printf(" region %d with %d blocks of %d bytes each\n", region, blockcount, blocksize);
-
- int block;
- for(block = 0; block < blockcount; block++) {
- osmoload.blocks[osmoload.numblocks].fb_chip = chip;
- osmoload.blocks[osmoload.numblocks].fb_offset = curoffset;
- osmoload.blocks[osmoload.numblocks].fb_addr = address + curoffset;
- osmoload.blocks[osmoload.numblocks].fb_size = blocksize;
-
- printf(" block %d with %d bytes at 0x%8.8x on chip %d\n",
- osmoload.numblocks, blocksize, address + curoffset, chip);
-
- curoffset += blocksize;
-
- osmoload.numblocks++;
- }
- }
- }
-}
-
-
-static void
-loader_handle_reply(struct msgb *msg) {
- if(osmoload.print_replies) {
- printf("Received %d bytes:\n", msg->len);
- osmoload_osmo_hexdump(msg->data, msg->len);
- }
-
- uint8_t cmd = msgb_get_u8(msg);
-
- uint8_t chip;
- uint8_t length;
- uint16_t crc;
- uint32_t address;
- uint32_t entrypoint;
- uint32_t status;
-
- void *data;
-
- switch(cmd) {
- case LOADER_INIT:
- address = msgb_get_u32(msg);
- entrypoint = msgb_get_u32(msg);
- printf("Loader at entry %x has been started, requesting load to %x\n", entrypoint, address);
- break;
- case LOADER_PING:
- case LOADER_RESET:
- case LOADER_POWEROFF:
- case LOADER_ENTER_ROM_LOADER:
- case LOADER_ENTER_FLASH_LOADER:
- break;
- case LOADER_MEM_READ:
- length = msgb_get_u8(msg);
- crc = msgb_get_u16(msg);
- address = msgb_get_u32(msg);
- data = msgb_get(msg, length);
- break;
- case LOADER_MEM_WRITE:
- length = msgb_get_u8(msg);
- crc = msgb_get_u16(msg);
- address = msgb_get_u32(msg);
- break;
- case LOADER_JUMP:
- address = msgb_get_u32(msg);
- break;
- case LOADER_FLASH_INFO:
- break;
- case LOADER_FLASH_GETLOCK:
- case LOADER_FLASH_ERASE:
- case LOADER_FLASH_UNLOCK:
- case LOADER_FLASH_LOCK:
- case LOADER_FLASH_LOCKDOWN:
- chip = msgb_get_u8(msg);
- address = msgb_get_u32(msg);
- status = msgb_get_u32(msg);
- break;
- case LOADER_FLASH_PROGRAM:
- length = msgb_get_u8(msg);
- crc = msgb_get_u16(msg);
- msgb_get_u8(msg); // XXX align
- chip = msgb_get_u8(msg);
- address = msgb_get_u32(msg);
- status = msgb_get_u32(msg);
- break;
- default:
- printf("Received unknown reply %d:\n", cmd);
- osmoload_osmo_hexdump(msg->data, msg->len);
- osmoload.quit = 1;
- return;
- }
-
- switch(osmoload.state) {
- case STATE_QUERY_PENDING:
- case STATE_DUMPING:
- switch(cmd) {
- case LOADER_PING:
- printf("Received pong.\n");
- break;
- case LOADER_RESET:
- printf("Reset confirmed.\n");
- break;
- case LOADER_POWEROFF:
- printf("Poweroff confirmed.\n");
- break;
- case LOADER_ENTER_ROM_LOADER:
- printf("Jump to ROM loader confirmed.\n");
- break;
- case LOADER_ENTER_FLASH_LOADER:
- printf("Jump to flash loader confirmed.\n");
- break;
- case LOADER_MEM_READ:
- printf("Received memory dump of %d bytes at 0x%x:\n", length, address);
- osmoload_osmo_hexdump(data, length);
- break;
- case LOADER_MEM_WRITE:
- printf("Confirmed memory write of %d bytes at 0x%x.\n", length, address);
- break;
- case LOADER_JUMP:
- printf("Confirmed jump to 0x%x.\n", address);
- break;
- case LOADER_FLASH_ERASE:
- printf("Confirmed flash erase of chip %d address 0x%8.8x, status %s\n",
- chip, address, status ? "FAILED" : "ok");
- break;
- case LOADER_FLASH_GETLOCK:
- printf("Lock state of chip %d address 0x%8.8x is %s\n",
- chip, address, (status == LOADER_FLASH_LOCKED ? "locked"
- : (status == LOADER_FLASH_LOCKED_DOWN ? "locked down"
- : (status == LOADER_FLASH_UNLOCKED ? "unlocked"
- : "UNKNOWN"))));
- break;
- case LOADER_FLASH_UNLOCK:
- printf("Confirmed flash unlock of chip %d address 0x%8.8x, status %s\n",
- chip, address, status ? "FAILED" : "ok");
- break;
- case LOADER_FLASH_LOCK:
- printf("Confirmed flash lock of chip %d address 0x%8.8x, status %s\n",
- chip, address, status ? "FAILED" : "ok");
- break;
- case LOADER_FLASH_LOCKDOWN:
- printf("Confirmed flash lockdown of chip %d address 0x%8.8x, status %s\n",
- chip, address, status ? "FAILED" : "ok");
- break;
- case LOADER_FLASH_INFO:
- loader_parse_flash_info(msg);
- break;
- default:
- break;
- }
- if(osmoload.state == STATE_QUERY_PENDING) {
- if(osmoload.command == cmd) {
- osmoload.quit = 1;
- }
- }
- break;
- case STATE_DUMP_IN_PROGRESS:
- if(cmd == LOADER_MEM_READ) {
- loader_do_memdump(crc, data, length);
- }
- break;
- case STATE_LOAD_IN_PROGRESS:
- if(cmd == LOADER_MEM_WRITE) {
- if(osmoload.memcrc != crc) {
- osmoload.memoff -= osmoload.memreq;
- printf("\nbad crc %4.4x (not %4.4x) at offset 0x%8.8x", crc, osmoload.memcrc, osmoload.memoff);
- } else {
- putchar('.');
- }
- loader_do_memload();
- }
- break;
- case STATE_PROGRAM_GET_INFO:
- case STATE_PROGRAM_IN_PROGRESS:
- if(cmd == LOADER_FLASH_PROGRAM) {
- if(osmoload.memcrc != crc) {
- osmoload.memoff -= osmoload.memreq;
- printf("\nbad crc %4.4x (not %4.4x) at offset 0x%8.8x", crc, osmoload.memcrc, osmoload.memoff);
- } else {
- putchar('.');
- }
- if(((int)status) != 0) {
- printf("\nstatus %d, aborting\n", status);
- exit(1);
- }
- loader_do_fprogram();
- }
- break;
- case STATE_FLASHRANGE_GET_INFO:
- case STATE_FLASHRANGE_IN_PROGRESS:
- loader_do_flashrange(cmd, msg, chip, address, status);
- break;
- default:
- break;
- }
-
- fflush(stdout);
-}
-
-static int
-loader_read_cb(struct osmo_fd *fd, unsigned int flags) {
- struct msgb *msg;
- u_int16_t len;
- int rc;
-
- msg = msgb_alloc(MSGB_MAX, "loader");
- if (!msg) {
- fprintf(stderr, "Failed to allocate msg.\n");
- return -1;
- }
-
- rc = read(fd->fd, &len, sizeof(len));
- if (rc < sizeof(len)) {
- fprintf(stderr, "Short read. Error.\n");
- exit(2);
- }
-
- if (ntohs(len) > MSGB_MAX) {
- fprintf(stderr, "Length is too big: %u\n", ntohs(len));
- msgb_free(msg);
- return -1;
- }
-
- /* blocking read for the poor... we can starve in here... */
- msg->l2h = msgb_put(msg, ntohs(len));
- rc = read(fd->fd, msg->l2h, msgb_l2len(msg));
- if (rc != msgb_l2len(msg)) {
- fprintf(stderr, "Can not read data: rc: %d errno: %d\n", rc, errno);
- msgb_free(msg);
- return -1;
- }
-
- loader_handle_reply(msg);
-
- msgb_free(msg);
-
- return 0;
-}
-
-static void
-loader_connect(const char *socket_path) {
- int rc;
- struct sockaddr_un local;
- struct osmo_fd *conn = &connection;
-
- local.sun_family = AF_UNIX;
- strncpy(local.sun_path, socket_path, sizeof(local.sun_path));
- local.sun_path[sizeof(local.sun_path) - 1] = '\0';
-
- conn->fd = socket(AF_UNIX, SOCK_STREAM, 0);
- if (conn->fd < 0) {
- fprintf(stderr, "Failed to create unix domain socket.\n");
- exit(1);
- }
-
- rc = connect(conn->fd, (struct sockaddr *) &local,
- sizeof(local.sun_family) + strlen(local.sun_path));
- if (rc < 0) {
- fprintf(stderr, "Failed to connect to '%s'.\n", local.sun_path);
- exit(1);
- }
-
- conn->when = BSC_FD_READ;
- conn->cb = loader_read_cb;
- conn->data = NULL;
-
- if (osmo_fd_register(conn) != 0) {
- fprintf(stderr, "Failed to register fd.\n");
- exit(1);
- }
-}
-
-static void
-loader_send_simple(uint8_t command) {
- struct msgb *msg = msgb_alloc(MSGB_MAX, "loader");
- msgb_put_u8(msg, command);
- loader_send_request(msg);
- msgb_free(msg);
-
- osmoload.command = command;
-}
-
-static void
-loader_start_query(uint8_t command) {
- loader_send_simple(command);
- osmoload.state = STATE_QUERY_PENDING;
-}
-
-static void
-loader_send_flash_query(uint8_t command, uint8_t chip, uint32_t address) {
- struct msgb *msg = msgb_alloc(MSGB_MAX, "loader");
- msgb_put_u8(msg, command);
- msgb_put_u8(msg, chip);
- msgb_put_u32(msg, address);
- loader_send_request(msg);
- msgb_free(msg);
-
- osmoload.command = command;
-}
-
-static void
-loader_start_flash_query(uint8_t command, uint8_t chip, uint32_t address) {
- loader_send_flash_query(command, chip, address);
- osmoload.state = STATE_QUERY_PENDING;
-}
-
-static void
-loader_start_memget(uint8_t length, uint32_t address) {
- struct msgb *msg = msgb_alloc(MSGB_MAX, "loader");
- msgb_put_u8(msg, LOADER_MEM_READ);
- msgb_put_u8(msg, length);
- msgb_put_u32(msg, address);
- loader_send_request(msg);
- msgb_free(msg);
-
- osmoload.state = STATE_QUERY_PENDING;
- osmoload.command = LOADER_MEM_READ;
-}
-
-static void
-loader_start_memput(uint8_t length, uint32_t address, void *data) {
- struct msgb *msg = msgb_alloc(MSGB_MAX, "loader");
- msgb_put_u8(msg, LOADER_MEM_WRITE);
- msgb_put_u8(msg, length);
- msgb_put_u16(msg, osmo_crc16(0, data, length));
- msgb_put_u32(msg, address);
- memcpy(msgb_put(msg, length), data, length);
- loader_send_request(msg);
- msgb_free(msg);
-
- osmoload.state = STATE_QUERY_PENDING;
- osmoload.command = LOADER_MEM_WRITE;
-}
-
-static void
-loader_start_jump(uint32_t address) {
- struct msgb *msg = msgb_alloc(MSGB_MAX, "loader");
- msgb_put_u8(msg, LOADER_JUMP);
- msgb_put_u32(msg, address);
- loader_send_request(msg);
- msgb_free(msg);
-
- osmoload.state = STATE_QUERY_PENDING;
- osmoload.command = LOADER_JUMP;
-}
-
-
-static void
-loader_do_memdump(uint16_t crc, void *data, size_t length) {
- int rc;
-
- if(data && length) {
- osmoload.memcrc = osmo_crc16(0, data, length);
- if(osmoload.memcrc != crc) {
- osmoload.memoff -= osmoload.memreq;
- printf("\nbad crc %4.4x (not %4.4x) at offset 0x%8.8x", crc, osmoload.memcrc, osmoload.memoff);
- } else {
- putchar('.');
- }
-
- memcpy(osmoload.binbuf + osmoload.memoff, data, length);
- osmoload.memoff += length;
- }
-
- uint32_t rembytes = osmoload.memlen - osmoload.memoff;
-
- if(!rembytes) {
- puts("done.");
- osmoload.quit = 1;
-
- unsigned c = osmoload.memlen;
- char *p = osmoload.binbuf;
- while(c) {
- rc = fwrite(p, 1, c, osmoload.binfile);
- if(ferror(osmoload.binfile)) {
- printf("Could not read from file: %s\n", strerror(errno));
- exit(1);
- }
- c -= rc;
- p += rc;
- }
- fclose(osmoload.binfile);
- osmoload.binfile = NULL;
-
- free(osmoload.binbuf);
-
- return;
- }
-
- uint8_t reqbytes = (rembytes < MEM_MSG_MAX) ? rembytes : MEM_MSG_MAX;
-
- struct msgb *msg = msgb_alloc(MSGB_MAX, "loader");
-
- msgb_put_u8(msg, LOADER_MEM_READ);
- msgb_put_u8(msg, reqbytes);
- msgb_put_u32(msg, osmoload.membase + osmoload.memoff);
- loader_send_request(msg);
- msgb_free(msg);
-}
-
-static void
-loader_do_memload() {
- uint32_t rembytes = osmoload.memlen - osmoload.memoff;
-
- if(!rembytes) {
- puts("done.");
- osmoload.quit = 1;
- return;
- }
-
- osmo_timer_schedule(&osmoload.timeout, 0, 500000);
-
- uint8_t reqbytes = (rembytes < MEM_MSG_MAX) ? rembytes : MEM_MSG_MAX;
-
- osmoload.memcrc = osmo_crc16(0, (uint8_t *) osmoload.binbuf + osmoload.memoff, reqbytes);
- osmoload.memreq = reqbytes;
-
- struct msgb *msg = msgb_alloc(MSGB_MAX, "loader");
-
- msgb_put_u8(msg, LOADER_MEM_WRITE);
- msgb_put_u8(msg, reqbytes);
- msgb_put_u16(msg, osmoload.memcrc);
- msgb_put_u32(msg, osmoload.membase + osmoload.memoff);
-
- unsigned char *p = msgb_put(msg, reqbytes);
- memcpy(p, osmoload.binbuf + osmoload.memoff, reqbytes);
-
-#if 0
- printf("Sending %u bytes at offset %u to address %x with crc %x\n",
- reqbytes, osmoload.memoff, osmoload.membase + osmoload.memoff,
- osmoload.memcrc);
-#endif
-
- loader_send_request(msg);
-
- msgb_free(msg);
-
- osmoload.memoff += reqbytes;
-}
-
-static void
-loader_do_fprogram() {
- uint32_t rembytes = osmoload.memlen - osmoload.memoff;
-
- if(!rembytes) {
- puts("done.");
- osmoload.quit = 1;
- return;
- }
-
- osmo_timer_schedule(&osmoload.timeout, 0, 10000000);
-
- uint8_t reqbytes = (rembytes < MEM_MSG_MAX) ? rembytes : MEM_MSG_MAX;
-
- osmoload.memcrc = osmo_crc16(0, (uint8_t *) osmoload.binbuf + osmoload.memoff, reqbytes);
- osmoload.memreq = reqbytes;
-
- struct msgb *msg = msgb_alloc(MSGB_MAX, "loader");
-
- msgb_put_u8(msg, LOADER_FLASH_PROGRAM);
- msgb_put_u8(msg, reqbytes);
- msgb_put_u16(msg, osmoload.memcrc);
- msgb_put_u8(msg, 0); // XXX: align data to 16bit
- msgb_put_u8(msg, osmoload.memchip);
- msgb_put_u32(msg, osmoload.membase + osmoload.memoff);
-
- unsigned char *p = msgb_put(msg, reqbytes);
- memcpy(p, osmoload.binbuf + osmoload.memoff, reqbytes);
-
-#if 0
- printf("Sending %u bytes at offset %u to address %x with crc %x\n",
- reqbytes, osmoload.memoff, osmoload.membase + osmoload.memoff,
- osmoload.memcrc);
-#endif
-
- loader_send_request(msg);
-
- msgb_free(msg);
-
- osmoload.memoff += reqbytes;
-}
-
-static void
-loader_start_memdump(uint32_t length, uint32_t address, char *file) {
- printf("Dumping %u bytes of memory at 0x%x to file %s\n", length, address, file);
-
- osmoload.binbuf = malloc(length);
- if(!osmoload.binbuf) {
- printf("Could not allocate %u bytes for %s.\n", length, file);
- exit(1);
- }
-
- osmoload.binfile = fopen(file, "wb");
- if(!osmoload.binfile) {
- printf("Could not open %s: %s\n", file, strerror(errno));
- exit(1);
- }
-
- osmoload.membase = address;
- osmoload.memlen = length;
- osmoload.memoff = 0;
-
- osmoload.state = STATE_DUMP_IN_PROGRESS;
- loader_do_memdump(0, NULL, 0);
-}
-
-static void
-loader_start_memload(uint32_t address, char *file) {
- int rc;
- struct stat st;
-
- rc = stat(file, &st);
- if(rc < 0) {
- printf("Could not stat %s: %s\n", file, strerror(errno));
- exit(1);
- }
-
- uint32_t length = st.st_size;
-
- printf("Loading %u bytes of memory to address 0x%x from file %s\n", length, address, file);
-
- osmoload.binbuf = malloc(length);
- if(!osmoload.binbuf) {
- printf("Could not allocate %u bytes for %s.\n", length, file);
- exit(1);
- }
-
- osmoload.binfile = fopen(file, "rb");
- if(!osmoload.binfile) {
- printf("Could not open %s: %s\n", file, strerror(errno));
- exit(1);
- }
-
- unsigned c = length;
- char *p = osmoload.binbuf;
- while(c) {
- rc = fread(p, 1, c, osmoload.binfile);
- if(ferror(osmoload.binfile)) {
- printf("Could not read from file: %s\n", strerror(errno));
- exit(1);
- }
- c -= rc;
- p += rc;
- }
- fclose(osmoload.binfile);
- osmoload.binfile = NULL;
-
- osmoload.membase = address;
- osmoload.memlen = length;
- osmoload.memoff = 0;
-
- osmoload.state = STATE_LOAD_IN_PROGRESS;
- loader_do_memload();
-}
-
-static void
-loader_start_flashrange(uint8_t command, uint32_t address, uint32_t length) {
- switch(command) {
- case LOADER_FLASH_ERASE:
- printf("Erasing %u bytes of flash at 0x%x\n", length, address);
- break;
- case LOADER_FLASH_LOCK:
- printf("Locking %u bytes of flash at 0x%x\n", length, address);
- break;
- case LOADER_FLASH_LOCKDOWN:
- printf("Locking down %u bytes of flash at 0x%x\n", length, address);
- break;
- case LOADER_FLASH_UNLOCK:
- printf("Unlocking %u bytes of flash at 0x%x\n", length, address);
- break;
- case LOADER_FLASH_GETLOCK:
- printf("Getlocking %u bytes of flash at 0x%x\n", length, address);
- break;
- default:
- puts("Unknown range command");
- abort();
- break;
- }
-
- osmoload.flashcommand = command;
-
- osmoload.membase = address;
- osmoload.memlen = length;
- osmoload.memoff = 0;
-
- printf(" requesting flash info to determine block layout\n");
-
- osmoload.state = STATE_FLASHRANGE_GET_INFO;
-
- loader_send_simple(LOADER_FLASH_INFO);
-}
-
-static void
-loader_do_flashrange(uint8_t cmd, struct msgb *msg, uint8_t chip, uint32_t address, uint32_t status) {
- switch(osmoload.state) {
- case STATE_FLASHRANGE_GET_INFO:
- if(cmd == LOADER_FLASH_INFO) {
- loader_parse_flash_info(msg);
- osmoload.state = STATE_FLASHRANGE_IN_PROGRESS;
- loader_do_flashrange(0, NULL, 0, 0, 0);
- }
- break;
- case STATE_FLASHRANGE_IN_PROGRESS:
- {
- if(msg) {
- if(cmd == osmoload.flashcommand) {
- if(cmd == LOADER_FLASH_GETLOCK) {
- printf(" lock state of chip %d address 0x%8.8x is %s\n",
- chip, address, (status == LOADER_FLASH_LOCKED ? "locked"
- : (status == LOADER_FLASH_LOCKED_DOWN ? "locked down"
- : (status == LOADER_FLASH_UNLOCKED ? "unlocked"
- : "UNKNOWN"))));
- } else {
- printf(" confirmed operation on chip %d address 0x%8.8x, status %s\n",
- chip, address, status ? "FAILED" : "ok");
- }
- } else {
- break;
- }
- }
-
- uint32_t addr = osmoload.membase + osmoload.memoff;
-
- if(osmoload.memoff >= osmoload.memlen) {
- puts(" operation done");
- osmoload.quit = 1;
- break;
- }
-
- uint8_t found = 0;
- int i;
- for(i = 0; i < osmoload.numblocks; i++) {
- struct flashblock *b = &osmoload.blocks[i];
- if(b->fb_addr == addr) {
- loader_send_flash_query(osmoload.flashcommand, b->fb_chip, b->fb_offset);
- osmoload.memoff += b->fb_size;
- found = 1;
- break;
- }
- }
- if(!found) {
- puts("Oops!? Block not found?"); // XXX message
- abort();
- }
- }
- break;
- }
-}
-
-static void
-loader_start_fprogram(uint8_t chip, uint32_t address, char *file) {
- int rc;
- struct stat st;
-
- rc = stat(file, &st);
- if(rc < 0) {
- printf("Could not stat %s: %s\n", file, strerror(errno));
- exit(1);
- }
-
- uint32_t length = st.st_size;
-
- printf("Loading %u bytes of memory at 0x%x in chip %d from file %s\n", length, address, chip, file);
-
- osmoload.binbuf = malloc(length);
- if(!osmoload.binbuf) {
- printf("Could not allocate %u bytes for %s.\n", length, file);
- exit(1);
- }
-
- osmoload.binfile = fopen(file, "rb");
- if(!osmoload.binfile) {
- printf("Could not open %s: %s\n", file, strerror(errno));
- exit(1);
- }
-
- unsigned c = length;
- char *p = osmoload.binbuf;
- while(c) {
- rc = fread(p, 1, c, osmoload.binfile);
- if(ferror(osmoload.binfile)) {
- printf("Could not read from file: %s\n", strerror(errno));
- exit(1);
- }
- c -= rc;
- p += rc;
- }
- fclose(osmoload.binfile);
- osmoload.binfile = NULL;
-
- osmoload.memchip = chip;
- osmoload.membase = address;
- osmoload.memlen = length;
- osmoload.memoff = 0;
-
- osmoload.state = STATE_PROGRAM_IN_PROGRESS;
-
- loader_do_fprogram();
-}
-
-static void
-query_timeout(void *dummy) {
- puts("Query timed out.");
- exit(2);
-}
-
-static void
-loader_command(char *name, int cmdc, char **cmdv) {
- if(!cmdc) {
- usage(name);
- }
-
- char *cmd = cmdv[0];
-
- char buf[MEM_MSG_MAX];
- memset(buf, 23, sizeof(buf));
-
- if(!strcmp(cmd, "dump")) {
- osmoload.state = STATE_DUMPING;
- } else if(!strcmp(cmd, "ping")) {
- loader_start_query(LOADER_PING);
- } else if(!strcmp(cmd, "off")) {
- loader_start_query(LOADER_POWEROFF);
- } else if(!strcmp(cmd, "reset")) {
- loader_start_query(LOADER_RESET);
- } else if(!strcmp(cmd, "jumprom")) {
- loader_start_query(LOADER_ENTER_ROM_LOADER);
- } else if(!strcmp(cmd, "jumpflash")) {
- loader_start_query(LOADER_ENTER_FLASH_LOADER);
- } else if(!strcmp(cmd, "finfo")) {
- puts("Requesting flash layout info");
- loader_start_query(LOADER_FLASH_INFO);
- } else if(!strcmp(cmd, "memput")) {
- uint32_t address;
-
- if(cmdc < 3) {
- usage(name);
- }
-
- address = strtoul(cmdv[1], NULL, 16);
-
- unsigned int i;
- char *hex = cmdv[2];
- if(strlen(hex)&1) {
- puts("Invalid hex string.");
- exit(2);
- }
- for(i = 0; i <= sizeof(buf) && i < strlen(hex)/2; i++) {
- if(i >= sizeof(buf)) {
- puts("Value too long for single message");
- exit(2);
- }
- unsigned int byte;
- int count = sscanf(hex + i * 2, "%02x", &byte);
- if(count != 1) {
- puts("Invalid hex string.");
- exit(2);
- }
- buf[i] = byte & 0xFF;
- }
-
- loader_start_memput(i & 0xFF, address, buf);
- } else if(!strcmp(cmd, "memget")) {
- uint32_t address;
- uint8_t length;
-
- if(cmdc < 3) {
- usage(name);
- }
-
- address = strtoul(cmdv[1], NULL, 16);
- length = strtoul(cmdv[2], NULL, 16);
-
- if(length > MEM_MSG_MAX) {
- puts("Too many bytes");
- exit(2);
- }
-
- loader_start_memget(length, address);
- } else if(!strcmp(cmd, "jump")) {
- uint32_t address;
-
- if(cmdc < 2) {
- usage(name);
- }
-
- address = strtoul(cmdv[1], NULL, 16);
-
- loader_start_jump(address);
- } else if(!strcmp(cmd, "memdump")) {
- uint32_t address;
- uint32_t length;
-
- if(cmdc < 4) {
- usage(name);
- }
-
- address = strtoul(cmdv[1], NULL, 16);
- length = strtoul(cmdv[2], NULL, 16);
-
- loader_start_memdump(length, address, cmdv[3]);
- } else if(!strcmp(cmd, "memload")) {
- uint32_t address;
-
- if(cmdc < 3) {
- usage(name);
- }
-
- address = strtoul(cmdv[1], NULL, 16);
-
- loader_start_memload(address, cmdv[2]);
- } else if(!strcmp(cmd, "fprogram")) {
- uint8_t chip;
- uint32_t address;
-
- if(cmdc < 4) {
- usage(name);
- }
-
- chip = strtoul(cmdv[1], NULL, 10);
- address = strtoul(cmdv[2], NULL, 16);
-
- loader_start_fprogram(chip, address, cmdv[3]);
- } else if(!strcmp(cmd, "ferase")) {
- uint32_t address;
- uint32_t length;
-
- if(cmdc < 3) {
- usage(name);
- }
-
- address = strtoul(cmdv[1], NULL, 16);
- length = strtoul(cmdv[2], NULL, 16);
-
- loader_start_flashrange(LOADER_FLASH_ERASE, address, length);
- } else if(!strcmp(cmd, "flock")) {
- uint32_t address;
- uint32_t length;
-
- if(cmdc < 3) {
- usage(name);
- }
-
- address = strtoul(cmdv[1], NULL, 16);
- length = strtoul(cmdv[2], NULL, 16);
-
- loader_start_flashrange(LOADER_FLASH_LOCK, address, length);
- } else if(!strcmp(cmd, "flockdown")) {
- uint32_t address;
- uint32_t length;
-
- if(cmdc < 3) {
- usage(name);
- }
-
- address = strtoul(cmdv[1], NULL, 16);
- length = strtoul(cmdv[2], NULL, 16);
-
- loader_start_flashrange(LOADER_FLASH_LOCKDOWN, address, length);
- } else if(!strcmp(cmd, "funlock")) {
- uint32_t address;
- uint32_t length;
-
- if(cmdc < 3) {
- usage(name);
- }
-
- address = strtoul(cmdv[1], NULL, 16);
- length = strtoul(cmdv[2], NULL, 16);
-
- loader_start_flashrange(LOADER_FLASH_UNLOCK, address, length);
- } else if(!strcmp(cmd, "fgetlock")) {
- uint32_t address;
- uint32_t length;
-
- if(cmdc < 3) {
- usage(name);
- }
-
- address = strtoul(cmdv[1], NULL, 16);
- length = strtoul(cmdv[2], NULL, 16);
-
- loader_start_flashrange(LOADER_FLASH_GETLOCK, address, length);
- } else if(!strcmp(cmd, "help")) {
- usage(name);
- } else {
- printf("Unknown command '%s'\n", cmd);
- usage(name);
- }
-
- if(osmoload.state == STATE_QUERY_PENDING) {
- osmoload.timeout.cb = &query_timeout;
- osmo_timer_schedule(&osmoload.timeout, 0, 5000000);
- }
- if(osmoload.state == STATE_LOAD_IN_PROGRESS) {
- osmoload.timeout.cb = &memop_timeout;
- }
-
-}
-
-void
-setdebug(const char *name, char c) {
- switch(c) {
- case 't':
- osmoload.print_requests = 1;
- break;
- case 'r':
- osmoload.print_replies = 1;
- break;
- default:
- usage(name);
- break;
- }
-}
-
-int
-main(int argc, char **argv) {
- int opt;
- char *loader_un_path = "/tmp/osmocom_loader";
- const char *debugopt;
-
- while((opt = getopt(argc, argv, "d:hl:m:v")) != -1) {
- switch(opt) {
- case 'd':
- debugopt = optarg;
- while(*debugopt) {
- setdebug(argv[0], *debugopt);
- debugopt++;
- }
- break;
- case 'l':
- loader_un_path = optarg;
- break;
- case 'm':
- puts("model selection not implemented");
- exit(2);
- break;
- case 'v':
- version(argv[0]);
- break;
- case 'h':
- default:
- usage(argv[0]);
- break;
- }
- }
-
- osmoload.quit = 0;
-
- loader_connect(loader_un_path);
-
- loader_command(argv[0], argc - optind, argv + optind);
-
- while(!osmoload.quit) {
- osmo_select_main(0);
- }
-
- if(osmoload.binfile) {
- fclose(osmoload.binfile);
- }
-
- return 0;
-}
diff --git a/Src/osmoconbb/src/host/osmocon/tpu_debug.c b/Src/osmoconbb/src/host/osmocon/tpu_debug.c
deleted file mode 100644
index c9dac90..0000000
--- a/Src/osmoconbb/src/host/osmocon/tpu_debug.c
+++ /dev/null
@@ -1,138 +0,0 @@
-/* Calypso TPU debugger, displays and decodes TPU instruction RAM */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-#include <osmocom/core/msgb.h>
-
-/* TPU disassembler begin */
-
-static const char *tpu_instr_name[] = {
- [0] = "SLEEP",
- [1] = "AT",
- [2] = "OFFSET",
- [3] = "SYNCHRO",
- [4] = "MOVE",
- [5] = "WAIT",
- [6] = "UNDEFINED6",
- [7] = "UNDEFINED7",
-};
-
-static const char *tpu_addr_name[0x1f] = {
- [0] = "TSP_CTLR1",
- [1] = "TSP_CTRL2",
- [4] = "TSP_TX_1",
- [3] = "TSP_TX_2",
- [2] = "TSP_TX_3",
- [5] = "TSP_TX_4",
- [6] = "TSPACT_L",
- [7] = "TSPACT_H",
- [9] = "TSP_SET1",
- [0xa] = "TSP_SET2",
- [0xb] = "TSP_SET3",
- [0x10] = "DSP_INT_PG",
- [0x11] = "GAUGING_EN",
-};
-
-static uint8_t tpu_reg_cache[0x1f];
-static uint16_t tpu_qbit;
-
-static void tpu_show_instr(uint16_t tpu)
-{
- uint16_t instr = tpu >> 13;
- uint16_t param = tpu & 0x1fff;
- uint16_t addr, data, bitlen;
- uint32_t tsp_data;
-
- tpu_qbit++;
-
- printf("\t %04u %04x %s ", tpu_qbit, tpu, tpu_instr_name[instr]);
- switch (instr) {
- case 0:
- tpu_qbit = 0;
- default:
- break;
- case 1:
- tpu_qbit = param;
- printf("%u ", param);
- break;
- case 5:
- tpu_qbit += param;
- printf("%u ", param);
- break;
- case 2:
- case 3:
- printf("%u ", param);
- break;
- case 4:
- addr = param & 0x1f;
- data = param >> 5;
- tpu_reg_cache[addr] = data;
- printf("%10s=0x%04x ", tpu_addr_name[addr], data);
- switch (addr) {
- case 0:
- bitlen = (data & 0x1f) + 1;
- printf("DEV_IDX=%u, BITLEN=%u ", data >> 5, bitlen);
- if (bitlen <= 8) {
- tsp_data = tpu_reg_cache[4];
- printf(" TSP_DATA=0x%02x ", tsp_data);
- } else if (bitlen <= 16) {
- tsp_data = tpu_reg_cache[3];
- tsp_data |= tpu_reg_cache[4] << 8;
- printf(" TSP_DATA=0x%04x ", tsp_data);
- } else if (bitlen <= 24) {
- tsp_data = tpu_reg_cache[2];
- tsp_data |= tpu_reg_cache[3] << 8;
- tsp_data |= tpu_reg_cache[4] << 16;
- printf(" TSP_DATA=0x%06x ", tsp_data);
- } else {
- tsp_data = tpu_reg_cache[5];
- tsp_data |= tpu_reg_cache[2] << 8;
- tsp_data |= tpu_reg_cache[3] << 16;
- tsp_data |= tpu_reg_cache[4] << 24;
- printf(" TSP_DATA=0x%08x ", tsp_data);
- }
- break;
- case 1:
- if (data & 0x01)
- printf("READ ");
- if (data & 0x02)
- printf("WRITE ");
- break;
- }
- }
- printf("\n");
-}
-
-void hdlc_tpudbg_cb(uint8_t dlci, struct msgb *msg)
-{
- uint32_t *fn = (uint32_t *) msg->data;
- uint16_t *tpu;
-
- printf("TPU FN %u\n", *fn);
- for (tpu = (uint16_t *) (msg->data + 4); tpu < (uint16_t *) msg->tail; tpu++)
- tpu_show_instr(*tpu);
-
- msgb_free(msg);
-}
diff --git a/Src/osmoconbb/src/host/rita_pll/mtk_pll.pl b/Src/osmoconbb/src/host/rita_pll/mtk_pll.pl
deleted file mode 100755
index ff931c5..0000000
--- a/Src/osmoconbb/src/host/rita_pll/mtk_pll.pl
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/usr/bin/perl
-
-# Rx Mode and Tx Mode:
-# N = Nint + (Nfrac / 130) = (0.5*Fvco) / 26M
-# where 0 <= Nfrac < 130
-# where 0 <= Ninit <= 127 (as Nint is 7 bit)
-# where Fvco = 4 * Fch (GSM 850/900), Fvco = 2 * Fch (GSM 1800/1900)
-
-# (Nint + (Nfrac / 130)) * 52 MHz = Fvco
-
-sub mtk_fvco($$) {
- my ($nint, $nfrac) = @_;
- return ($nint + ($nfrac / 130)) * (26 * 2)
-}
-
-sub hr() {
- printf("======================================================================\n");
-}
-
-sub vco_print($$$)
-{
- my ($nint, $nfrac, $hiband) = @_;
- my $fvco = mtk_fvco($nint, $nfrac);
- my $mult;
-
- if ($hiband == 1) {
- $mult = 2;
- } else {
- $mult = 4;
- }
-
- printf("Fch=%4.2f (Fvco=%4.2f, Nint=%03u, Nfrac=%03u)\n",
- $fvco/$mult, $fvco, $nint, $nfrac);
-}
-
-#for (my $nint = 0; $nint <= 127; $nint++) {
-# for (my $nfrac = 0; $nfrac <= 130; $nfrac++) {
-# vco_print($nint, $nfrac);
-# }
-#}
-
-printf("PLL Rx Low Band:\n");
-for (my $nint = 68; $nint <= 73; $nint++) {
-#for GSM 810
-#for (my $b = 132; $b <= 150; $b++) {
- for (my $nfrac = 0; $nfrac <= 130; $nfrac++) {
- vco_print($nint, $nfrac, 0);
- }
-}
-
-hr();
-printf("PLL Rx High Band:\n");
-for (my $nint = 69; $nint <= 79; $nint++) {
- for (my $nfrac = 0; $nfrac <= 130; $nfrac++) {
- vco_print($nint, $nfrac, 1);
- }
-}
-
-hr();
-printf("PLL Tx Low Band:\n");
-for (my $nint = 63; $nint <= 70; $nint++) {
- for (my $nfrac = 0; $nfrac <= 130; $nfrac++) {
- vco_print($nint, $nfrac, 0);
- }
-}
-
-
-hr();
-printf("PLL Tx High Band\n");
-for (my $nint = 65; $nint <= 73; $nint++) {
- for (my $nfrac = 0; $nfrac <= 130; $nfrac++) {
- vco_print($nint, $nfrac, 1);
- }
-}
-
-
-
-exit(0);
-
diff --git a/Src/osmoconbb/src/host/rita_pll/mtk_pll.txt b/Src/osmoconbb/src/host/rita_pll/mtk_pll.txt
deleted file mode 100644
index a008656..0000000
--- a/Src/osmoconbb/src/host/rita_pll/mtk_pll.txt
+++ /dev/null
@@ -1,4461 +0,0 @@
-PLL Rx Low Band:
-Fch=884.00 (Fvco=3536.00, Nint=068, Nfrac=000)
-Fch=884.10 (Fvco=3536.40, Nint=068, Nfrac=001)
-Fch=884.20 (Fvco=3536.80, Nint=068, Nfrac=002)
-Fch=884.30 (Fvco=3537.20, Nint=068, Nfrac=003)
-Fch=884.40 (Fvco=3537.60, Nint=068, Nfrac=004)
-Fch=884.50 (Fvco=3538.00, Nint=068, Nfrac=005)
-Fch=884.60 (Fvco=3538.40, Nint=068, Nfrac=006)
-Fch=884.70 (Fvco=3538.80, Nint=068, Nfrac=007)
-Fch=884.80 (Fvco=3539.20, Nint=068, Nfrac=008)
-Fch=884.90 (Fvco=3539.60, Nint=068, Nfrac=009)
-Fch=885.00 (Fvco=3540.00, Nint=068, Nfrac=010)
-Fch=885.10 (Fvco=3540.40, Nint=068, Nfrac=011)
-Fch=885.20 (Fvco=3540.80, Nint=068, Nfrac=012)
-Fch=885.30 (Fvco=3541.20, Nint=068, Nfrac=013)
-Fch=885.40 (Fvco=3541.60, Nint=068, Nfrac=014)
-Fch=885.50 (Fvco=3542.00, Nint=068, Nfrac=015)
-Fch=885.60 (Fvco=3542.40, Nint=068, Nfrac=016)
-Fch=885.70 (Fvco=3542.80, Nint=068, Nfrac=017)
-Fch=885.80 (Fvco=3543.20, Nint=068, Nfrac=018)
-Fch=885.90 (Fvco=3543.60, Nint=068, Nfrac=019)
-Fch=886.00 (Fvco=3544.00, Nint=068, Nfrac=020)
-Fch=886.10 (Fvco=3544.40, Nint=068, Nfrac=021)
-Fch=886.20 (Fvco=3544.80, Nint=068, Nfrac=022)
-Fch=886.30 (Fvco=3545.20, Nint=068, Nfrac=023)
-Fch=886.40 (Fvco=3545.60, Nint=068, Nfrac=024)
-Fch=886.50 (Fvco=3546.00, Nint=068, Nfrac=025)
-Fch=886.60 (Fvco=3546.40, Nint=068, Nfrac=026)
-Fch=886.70 (Fvco=3546.80, Nint=068, Nfrac=027)
-Fch=886.80 (Fvco=3547.20, Nint=068, Nfrac=028)
-Fch=886.90 (Fvco=3547.60, Nint=068, Nfrac=029)
-Fch=887.00 (Fvco=3548.00, Nint=068, Nfrac=030)
-Fch=887.10 (Fvco=3548.40, Nint=068, Nfrac=031)
-Fch=887.20 (Fvco=3548.80, Nint=068, Nfrac=032)
-Fch=887.30 (Fvco=3549.20, Nint=068, Nfrac=033)
-Fch=887.40 (Fvco=3549.60, Nint=068, Nfrac=034)
-Fch=887.50 (Fvco=3550.00, Nint=068, Nfrac=035)
-Fch=887.60 (Fvco=3550.40, Nint=068, Nfrac=036)
-Fch=887.70 (Fvco=3550.80, Nint=068, Nfrac=037)
-Fch=887.80 (Fvco=3551.20, Nint=068, Nfrac=038)
-Fch=887.90 (Fvco=3551.60, Nint=068, Nfrac=039)
-Fch=888.00 (Fvco=3552.00, Nint=068, Nfrac=040)
-Fch=888.10 (Fvco=3552.40, Nint=068, Nfrac=041)
-Fch=888.20 (Fvco=3552.80, Nint=068, Nfrac=042)
-Fch=888.30 (Fvco=3553.20, Nint=068, Nfrac=043)
-Fch=888.40 (Fvco=3553.60, Nint=068, Nfrac=044)
-Fch=888.50 (Fvco=3554.00, Nint=068, Nfrac=045)
-Fch=888.60 (Fvco=3554.40, Nint=068, Nfrac=046)
-Fch=888.70 (Fvco=3554.80, Nint=068, Nfrac=047)
-Fch=888.80 (Fvco=3555.20, Nint=068, Nfrac=048)
-Fch=888.90 (Fvco=3555.60, Nint=068, Nfrac=049)
-Fch=889.00 (Fvco=3556.00, Nint=068, Nfrac=050)
-Fch=889.10 (Fvco=3556.40, Nint=068, Nfrac=051)
-Fch=889.20 (Fvco=3556.80, Nint=068, Nfrac=052)
-Fch=889.30 (Fvco=3557.20, Nint=068, Nfrac=053)
-Fch=889.40 (Fvco=3557.60, Nint=068, Nfrac=054)
-Fch=889.50 (Fvco=3558.00, Nint=068, Nfrac=055)
-Fch=889.60 (Fvco=3558.40, Nint=068, Nfrac=056)
-Fch=889.70 (Fvco=3558.80, Nint=068, Nfrac=057)
-Fch=889.80 (Fvco=3559.20, Nint=068, Nfrac=058)
-Fch=889.90 (Fvco=3559.60, Nint=068, Nfrac=059)
-Fch=890.00 (Fvco=3560.00, Nint=068, Nfrac=060)
-Fch=890.10 (Fvco=3560.40, Nint=068, Nfrac=061)
-Fch=890.20 (Fvco=3560.80, Nint=068, Nfrac=062)
-Fch=890.30 (Fvco=3561.20, Nint=068, Nfrac=063)
-Fch=890.40 (Fvco=3561.60, Nint=068, Nfrac=064)
-Fch=890.50 (Fvco=3562.00, Nint=068, Nfrac=065)
-Fch=890.60 (Fvco=3562.40, Nint=068, Nfrac=066)
-Fch=890.70 (Fvco=3562.80, Nint=068, Nfrac=067)
-Fch=890.80 (Fvco=3563.20, Nint=068, Nfrac=068)
-Fch=890.90 (Fvco=3563.60, Nint=068, Nfrac=069)
-Fch=891.00 (Fvco=3564.00, Nint=068, Nfrac=070)
-Fch=891.10 (Fvco=3564.40, Nint=068, Nfrac=071)
-Fch=891.20 (Fvco=3564.80, Nint=068, Nfrac=072)
-Fch=891.30 (Fvco=3565.20, Nint=068, Nfrac=073)
-Fch=891.40 (Fvco=3565.60, Nint=068, Nfrac=074)
-Fch=891.50 (Fvco=3566.00, Nint=068, Nfrac=075)
-Fch=891.60 (Fvco=3566.40, Nint=068, Nfrac=076)
-Fch=891.70 (Fvco=3566.80, Nint=068, Nfrac=077)
-Fch=891.80 (Fvco=3567.20, Nint=068, Nfrac=078)
-Fch=891.90 (Fvco=3567.60, Nint=068, Nfrac=079)
-Fch=892.00 (Fvco=3568.00, Nint=068, Nfrac=080)
-Fch=892.10 (Fvco=3568.40, Nint=068, Nfrac=081)
-Fch=892.20 (Fvco=3568.80, Nint=068, Nfrac=082)
-Fch=892.30 (Fvco=3569.20, Nint=068, Nfrac=083)
-Fch=892.40 (Fvco=3569.60, Nint=068, Nfrac=084)
-Fch=892.50 (Fvco=3570.00, Nint=068, Nfrac=085)
-Fch=892.60 (Fvco=3570.40, Nint=068, Nfrac=086)
-Fch=892.70 (Fvco=3570.80, Nint=068, Nfrac=087)
-Fch=892.80 (Fvco=3571.20, Nint=068, Nfrac=088)
-Fch=892.90 (Fvco=3571.60, Nint=068, Nfrac=089)
-Fch=893.00 (Fvco=3572.00, Nint=068, Nfrac=090)
-Fch=893.10 (Fvco=3572.40, Nint=068, Nfrac=091)
-Fch=893.20 (Fvco=3572.80, Nint=068, Nfrac=092)
-Fch=893.30 (Fvco=3573.20, Nint=068, Nfrac=093)
-Fch=893.40 (Fvco=3573.60, Nint=068, Nfrac=094)
-Fch=893.50 (Fvco=3574.00, Nint=068, Nfrac=095)
-Fch=893.60 (Fvco=3574.40, Nint=068, Nfrac=096)
-Fch=893.70 (Fvco=3574.80, Nint=068, Nfrac=097)
-Fch=893.80 (Fvco=3575.20, Nint=068, Nfrac=098)
-Fch=893.90 (Fvco=3575.60, Nint=068, Nfrac=099)
-Fch=894.00 (Fvco=3576.00, Nint=068, Nfrac=100)
-Fch=894.10 (Fvco=3576.40, Nint=068, Nfrac=101)
-Fch=894.20 (Fvco=3576.80, Nint=068, Nfrac=102)
-Fch=894.30 (Fvco=3577.20, Nint=068, Nfrac=103)
-Fch=894.40 (Fvco=3577.60, Nint=068, Nfrac=104)
-Fch=894.50 (Fvco=3578.00, Nint=068, Nfrac=105)
-Fch=894.60 (Fvco=3578.40, Nint=068, Nfrac=106)
-Fch=894.70 (Fvco=3578.80, Nint=068, Nfrac=107)
-Fch=894.80 (Fvco=3579.20, Nint=068, Nfrac=108)
-Fch=894.90 (Fvco=3579.60, Nint=068, Nfrac=109)
-Fch=895.00 (Fvco=3580.00, Nint=068, Nfrac=110)
-Fch=895.10 (Fvco=3580.40, Nint=068, Nfrac=111)
-Fch=895.20 (Fvco=3580.80, Nint=068, Nfrac=112)
-Fch=895.30 (Fvco=3581.20, Nint=068, Nfrac=113)
-Fch=895.40 (Fvco=3581.60, Nint=068, Nfrac=114)
-Fch=895.50 (Fvco=3582.00, Nint=068, Nfrac=115)
-Fch=895.60 (Fvco=3582.40, Nint=068, Nfrac=116)
-Fch=895.70 (Fvco=3582.80, Nint=068, Nfrac=117)
-Fch=895.80 (Fvco=3583.20, Nint=068, Nfrac=118)
-Fch=895.90 (Fvco=3583.60, Nint=068, Nfrac=119)
-Fch=896.00 (Fvco=3584.00, Nint=068, Nfrac=120)
-Fch=896.10 (Fvco=3584.40, Nint=068, Nfrac=121)
-Fch=896.20 (Fvco=3584.80, Nint=068, Nfrac=122)
-Fch=896.30 (Fvco=3585.20, Nint=068, Nfrac=123)
-Fch=896.40 (Fvco=3585.60, Nint=068, Nfrac=124)
-Fch=896.50 (Fvco=3586.00, Nint=068, Nfrac=125)
-Fch=896.60 (Fvco=3586.40, Nint=068, Nfrac=126)
-Fch=896.70 (Fvco=3586.80, Nint=068, Nfrac=127)
-Fch=896.80 (Fvco=3587.20, Nint=068, Nfrac=128)
-Fch=896.90 (Fvco=3587.60, Nint=068, Nfrac=129)
-Fch=897.00 (Fvco=3588.00, Nint=068, Nfrac=130)
-Fch=897.00 (Fvco=3588.00, Nint=069, Nfrac=000)
-Fch=897.10 (Fvco=3588.40, Nint=069, Nfrac=001)
-Fch=897.20 (Fvco=3588.80, Nint=069, Nfrac=002)
-Fch=897.30 (Fvco=3589.20, Nint=069, Nfrac=003)
-Fch=897.40 (Fvco=3589.60, Nint=069, Nfrac=004)
-Fch=897.50 (Fvco=3590.00, Nint=069, Nfrac=005)
-Fch=897.60 (Fvco=3590.40, Nint=069, Nfrac=006)
-Fch=897.70 (Fvco=3590.80, Nint=069, Nfrac=007)
-Fch=897.80 (Fvco=3591.20, Nint=069, Nfrac=008)
-Fch=897.90 (Fvco=3591.60, Nint=069, Nfrac=009)
-Fch=898.00 (Fvco=3592.00, Nint=069, Nfrac=010)
-Fch=898.10 (Fvco=3592.40, Nint=069, Nfrac=011)
-Fch=898.20 (Fvco=3592.80, Nint=069, Nfrac=012)
-Fch=898.30 (Fvco=3593.20, Nint=069, Nfrac=013)
-Fch=898.40 (Fvco=3593.60, Nint=069, Nfrac=014)
-Fch=898.50 (Fvco=3594.00, Nint=069, Nfrac=015)
-Fch=898.60 (Fvco=3594.40, Nint=069, Nfrac=016)
-Fch=898.70 (Fvco=3594.80, Nint=069, Nfrac=017)
-Fch=898.80 (Fvco=3595.20, Nint=069, Nfrac=018)
-Fch=898.90 (Fvco=3595.60, Nint=069, Nfrac=019)
-Fch=899.00 (Fvco=3596.00, Nint=069, Nfrac=020)
-Fch=899.10 (Fvco=3596.40, Nint=069, Nfrac=021)
-Fch=899.20 (Fvco=3596.80, Nint=069, Nfrac=022)
-Fch=899.30 (Fvco=3597.20, Nint=069, Nfrac=023)
-Fch=899.40 (Fvco=3597.60, Nint=069, Nfrac=024)
-Fch=899.50 (Fvco=3598.00, Nint=069, Nfrac=025)
-Fch=899.60 (Fvco=3598.40, Nint=069, Nfrac=026)
-Fch=899.70 (Fvco=3598.80, Nint=069, Nfrac=027)
-Fch=899.80 (Fvco=3599.20, Nint=069, Nfrac=028)
-Fch=899.90 (Fvco=3599.60, Nint=069, Nfrac=029)
-Fch=900.00 (Fvco=3600.00, Nint=069, Nfrac=030)
-Fch=900.10 (Fvco=3600.40, Nint=069, Nfrac=031)
-Fch=900.20 (Fvco=3600.80, Nint=069, Nfrac=032)
-Fch=900.30 (Fvco=3601.20, Nint=069, Nfrac=033)
-Fch=900.40 (Fvco=3601.60, Nint=069, Nfrac=034)
-Fch=900.50 (Fvco=3602.00, Nint=069, Nfrac=035)
-Fch=900.60 (Fvco=3602.40, Nint=069, Nfrac=036)
-Fch=900.70 (Fvco=3602.80, Nint=069, Nfrac=037)
-Fch=900.80 (Fvco=3603.20, Nint=069, Nfrac=038)
-Fch=900.90 (Fvco=3603.60, Nint=069, Nfrac=039)
-Fch=901.00 (Fvco=3604.00, Nint=069, Nfrac=040)
-Fch=901.10 (Fvco=3604.40, Nint=069, Nfrac=041)
-Fch=901.20 (Fvco=3604.80, Nint=069, Nfrac=042)
-Fch=901.30 (Fvco=3605.20, Nint=069, Nfrac=043)
-Fch=901.40 (Fvco=3605.60, Nint=069, Nfrac=044)
-Fch=901.50 (Fvco=3606.00, Nint=069, Nfrac=045)
-Fch=901.60 (Fvco=3606.40, Nint=069, Nfrac=046)
-Fch=901.70 (Fvco=3606.80, Nint=069, Nfrac=047)
-Fch=901.80 (Fvco=3607.20, Nint=069, Nfrac=048)
-Fch=901.90 (Fvco=3607.60, Nint=069, Nfrac=049)
-Fch=902.00 (Fvco=3608.00, Nint=069, Nfrac=050)
-Fch=902.10 (Fvco=3608.40, Nint=069, Nfrac=051)
-Fch=902.20 (Fvco=3608.80, Nint=069, Nfrac=052)
-Fch=902.30 (Fvco=3609.20, Nint=069, Nfrac=053)
-Fch=902.40 (Fvco=3609.60, Nint=069, Nfrac=054)
-Fch=902.50 (Fvco=3610.00, Nint=069, Nfrac=055)
-Fch=902.60 (Fvco=3610.40, Nint=069, Nfrac=056)
-Fch=902.70 (Fvco=3610.80, Nint=069, Nfrac=057)
-Fch=902.80 (Fvco=3611.20, Nint=069, Nfrac=058)
-Fch=902.90 (Fvco=3611.60, Nint=069, Nfrac=059)
-Fch=903.00 (Fvco=3612.00, Nint=069, Nfrac=060)
-Fch=903.10 (Fvco=3612.40, Nint=069, Nfrac=061)
-Fch=903.20 (Fvco=3612.80, Nint=069, Nfrac=062)
-Fch=903.30 (Fvco=3613.20, Nint=069, Nfrac=063)
-Fch=903.40 (Fvco=3613.60, Nint=069, Nfrac=064)
-Fch=903.50 (Fvco=3614.00, Nint=069, Nfrac=065)
-Fch=903.60 (Fvco=3614.40, Nint=069, Nfrac=066)
-Fch=903.70 (Fvco=3614.80, Nint=069, Nfrac=067)
-Fch=903.80 (Fvco=3615.20, Nint=069, Nfrac=068)
-Fch=903.90 (Fvco=3615.60, Nint=069, Nfrac=069)
-Fch=904.00 (Fvco=3616.00, Nint=069, Nfrac=070)
-Fch=904.10 (Fvco=3616.40, Nint=069, Nfrac=071)
-Fch=904.20 (Fvco=3616.80, Nint=069, Nfrac=072)
-Fch=904.30 (Fvco=3617.20, Nint=069, Nfrac=073)
-Fch=904.40 (Fvco=3617.60, Nint=069, Nfrac=074)
-Fch=904.50 (Fvco=3618.00, Nint=069, Nfrac=075)
-Fch=904.60 (Fvco=3618.40, Nint=069, Nfrac=076)
-Fch=904.70 (Fvco=3618.80, Nint=069, Nfrac=077)
-Fch=904.80 (Fvco=3619.20, Nint=069, Nfrac=078)
-Fch=904.90 (Fvco=3619.60, Nint=069, Nfrac=079)
-Fch=905.00 (Fvco=3620.00, Nint=069, Nfrac=080)
-Fch=905.10 (Fvco=3620.40, Nint=069, Nfrac=081)
-Fch=905.20 (Fvco=3620.80, Nint=069, Nfrac=082)
-Fch=905.30 (Fvco=3621.20, Nint=069, Nfrac=083)
-Fch=905.40 (Fvco=3621.60, Nint=069, Nfrac=084)
-Fch=905.50 (Fvco=3622.00, Nint=069, Nfrac=085)
-Fch=905.60 (Fvco=3622.40, Nint=069, Nfrac=086)
-Fch=905.70 (Fvco=3622.80, Nint=069, Nfrac=087)
-Fch=905.80 (Fvco=3623.20, Nint=069, Nfrac=088)
-Fch=905.90 (Fvco=3623.60, Nint=069, Nfrac=089)
-Fch=906.00 (Fvco=3624.00, Nint=069, Nfrac=090)
-Fch=906.10 (Fvco=3624.40, Nint=069, Nfrac=091)
-Fch=906.20 (Fvco=3624.80, Nint=069, Nfrac=092)
-Fch=906.30 (Fvco=3625.20, Nint=069, Nfrac=093)
-Fch=906.40 (Fvco=3625.60, Nint=069, Nfrac=094)
-Fch=906.50 (Fvco=3626.00, Nint=069, Nfrac=095)
-Fch=906.60 (Fvco=3626.40, Nint=069, Nfrac=096)
-Fch=906.70 (Fvco=3626.80, Nint=069, Nfrac=097)
-Fch=906.80 (Fvco=3627.20, Nint=069, Nfrac=098)
-Fch=906.90 (Fvco=3627.60, Nint=069, Nfrac=099)
-Fch=907.00 (Fvco=3628.00, Nint=069, Nfrac=100)
-Fch=907.10 (Fvco=3628.40, Nint=069, Nfrac=101)
-Fch=907.20 (Fvco=3628.80, Nint=069, Nfrac=102)
-Fch=907.30 (Fvco=3629.20, Nint=069, Nfrac=103)
-Fch=907.40 (Fvco=3629.60, Nint=069, Nfrac=104)
-Fch=907.50 (Fvco=3630.00, Nint=069, Nfrac=105)
-Fch=907.60 (Fvco=3630.40, Nint=069, Nfrac=106)
-Fch=907.70 (Fvco=3630.80, Nint=069, Nfrac=107)
-Fch=907.80 (Fvco=3631.20, Nint=069, Nfrac=108)
-Fch=907.90 (Fvco=3631.60, Nint=069, Nfrac=109)
-Fch=908.00 (Fvco=3632.00, Nint=069, Nfrac=110)
-Fch=908.10 (Fvco=3632.40, Nint=069, Nfrac=111)
-Fch=908.20 (Fvco=3632.80, Nint=069, Nfrac=112)
-Fch=908.30 (Fvco=3633.20, Nint=069, Nfrac=113)
-Fch=908.40 (Fvco=3633.60, Nint=069, Nfrac=114)
-Fch=908.50 (Fvco=3634.00, Nint=069, Nfrac=115)
-Fch=908.60 (Fvco=3634.40, Nint=069, Nfrac=116)
-Fch=908.70 (Fvco=3634.80, Nint=069, Nfrac=117)
-Fch=908.80 (Fvco=3635.20, Nint=069, Nfrac=118)
-Fch=908.90 (Fvco=3635.60, Nint=069, Nfrac=119)
-Fch=909.00 (Fvco=3636.00, Nint=069, Nfrac=120)
-Fch=909.10 (Fvco=3636.40, Nint=069, Nfrac=121)
-Fch=909.20 (Fvco=3636.80, Nint=069, Nfrac=122)
-Fch=909.30 (Fvco=3637.20, Nint=069, Nfrac=123)
-Fch=909.40 (Fvco=3637.60, Nint=069, Nfrac=124)
-Fch=909.50 (Fvco=3638.00, Nint=069, Nfrac=125)
-Fch=909.60 (Fvco=3638.40, Nint=069, Nfrac=126)
-Fch=909.70 (Fvco=3638.80, Nint=069, Nfrac=127)
-Fch=909.80 (Fvco=3639.20, Nint=069, Nfrac=128)
-Fch=909.90 (Fvco=3639.60, Nint=069, Nfrac=129)
-Fch=910.00 (Fvco=3640.00, Nint=069, Nfrac=130)
-Fch=910.00 (Fvco=3640.00, Nint=070, Nfrac=000)
-Fch=910.10 (Fvco=3640.40, Nint=070, Nfrac=001)
-Fch=910.20 (Fvco=3640.80, Nint=070, Nfrac=002)
-Fch=910.30 (Fvco=3641.20, Nint=070, Nfrac=003)
-Fch=910.40 (Fvco=3641.60, Nint=070, Nfrac=004)
-Fch=910.50 (Fvco=3642.00, Nint=070, Nfrac=005)
-Fch=910.60 (Fvco=3642.40, Nint=070, Nfrac=006)
-Fch=910.70 (Fvco=3642.80, Nint=070, Nfrac=007)
-Fch=910.80 (Fvco=3643.20, Nint=070, Nfrac=008)
-Fch=910.90 (Fvco=3643.60, Nint=070, Nfrac=009)
-Fch=911.00 (Fvco=3644.00, Nint=070, Nfrac=010)
-Fch=911.10 (Fvco=3644.40, Nint=070, Nfrac=011)
-Fch=911.20 (Fvco=3644.80, Nint=070, Nfrac=012)
-Fch=911.30 (Fvco=3645.20, Nint=070, Nfrac=013)
-Fch=911.40 (Fvco=3645.60, Nint=070, Nfrac=014)
-Fch=911.50 (Fvco=3646.00, Nint=070, Nfrac=015)
-Fch=911.60 (Fvco=3646.40, Nint=070, Nfrac=016)
-Fch=911.70 (Fvco=3646.80, Nint=070, Nfrac=017)
-Fch=911.80 (Fvco=3647.20, Nint=070, Nfrac=018)
-Fch=911.90 (Fvco=3647.60, Nint=070, Nfrac=019)
-Fch=912.00 (Fvco=3648.00, Nint=070, Nfrac=020)
-Fch=912.10 (Fvco=3648.40, Nint=070, Nfrac=021)
-Fch=912.20 (Fvco=3648.80, Nint=070, Nfrac=022)
-Fch=912.30 (Fvco=3649.20, Nint=070, Nfrac=023)
-Fch=912.40 (Fvco=3649.60, Nint=070, Nfrac=024)
-Fch=912.50 (Fvco=3650.00, Nint=070, Nfrac=025)
-Fch=912.60 (Fvco=3650.40, Nint=070, Nfrac=026)
-Fch=912.70 (Fvco=3650.80, Nint=070, Nfrac=027)
-Fch=912.80 (Fvco=3651.20, Nint=070, Nfrac=028)
-Fch=912.90 (Fvco=3651.60, Nint=070, Nfrac=029)
-Fch=913.00 (Fvco=3652.00, Nint=070, Nfrac=030)
-Fch=913.10 (Fvco=3652.40, Nint=070, Nfrac=031)
-Fch=913.20 (Fvco=3652.80, Nint=070, Nfrac=032)
-Fch=913.30 (Fvco=3653.20, Nint=070, Nfrac=033)
-Fch=913.40 (Fvco=3653.60, Nint=070, Nfrac=034)
-Fch=913.50 (Fvco=3654.00, Nint=070, Nfrac=035)
-Fch=913.60 (Fvco=3654.40, Nint=070, Nfrac=036)
-Fch=913.70 (Fvco=3654.80, Nint=070, Nfrac=037)
-Fch=913.80 (Fvco=3655.20, Nint=070, Nfrac=038)
-Fch=913.90 (Fvco=3655.60, Nint=070, Nfrac=039)
-Fch=914.00 (Fvco=3656.00, Nint=070, Nfrac=040)
-Fch=914.10 (Fvco=3656.40, Nint=070, Nfrac=041)
-Fch=914.20 (Fvco=3656.80, Nint=070, Nfrac=042)
-Fch=914.30 (Fvco=3657.20, Nint=070, Nfrac=043)
-Fch=914.40 (Fvco=3657.60, Nint=070, Nfrac=044)
-Fch=914.50 (Fvco=3658.00, Nint=070, Nfrac=045)
-Fch=914.60 (Fvco=3658.40, Nint=070, Nfrac=046)
-Fch=914.70 (Fvco=3658.80, Nint=070, Nfrac=047)
-Fch=914.80 (Fvco=3659.20, Nint=070, Nfrac=048)
-Fch=914.90 (Fvco=3659.60, Nint=070, Nfrac=049)
-Fch=915.00 (Fvco=3660.00, Nint=070, Nfrac=050)
-Fch=915.10 (Fvco=3660.40, Nint=070, Nfrac=051)
-Fch=915.20 (Fvco=3660.80, Nint=070, Nfrac=052)
-Fch=915.30 (Fvco=3661.20, Nint=070, Nfrac=053)
-Fch=915.40 (Fvco=3661.60, Nint=070, Nfrac=054)
-Fch=915.50 (Fvco=3662.00, Nint=070, Nfrac=055)
-Fch=915.60 (Fvco=3662.40, Nint=070, Nfrac=056)
-Fch=915.70 (Fvco=3662.80, Nint=070, Nfrac=057)
-Fch=915.80 (Fvco=3663.20, Nint=070, Nfrac=058)
-Fch=915.90 (Fvco=3663.60, Nint=070, Nfrac=059)
-Fch=916.00 (Fvco=3664.00, Nint=070, Nfrac=060)
-Fch=916.10 (Fvco=3664.40, Nint=070, Nfrac=061)
-Fch=916.20 (Fvco=3664.80, Nint=070, Nfrac=062)
-Fch=916.30 (Fvco=3665.20, Nint=070, Nfrac=063)
-Fch=916.40 (Fvco=3665.60, Nint=070, Nfrac=064)
-Fch=916.50 (Fvco=3666.00, Nint=070, Nfrac=065)
-Fch=916.60 (Fvco=3666.40, Nint=070, Nfrac=066)
-Fch=916.70 (Fvco=3666.80, Nint=070, Nfrac=067)
-Fch=916.80 (Fvco=3667.20, Nint=070, Nfrac=068)
-Fch=916.90 (Fvco=3667.60, Nint=070, Nfrac=069)
-Fch=917.00 (Fvco=3668.00, Nint=070, Nfrac=070)
-Fch=917.10 (Fvco=3668.40, Nint=070, Nfrac=071)
-Fch=917.20 (Fvco=3668.80, Nint=070, Nfrac=072)
-Fch=917.30 (Fvco=3669.20, Nint=070, Nfrac=073)
-Fch=917.40 (Fvco=3669.60, Nint=070, Nfrac=074)
-Fch=917.50 (Fvco=3670.00, Nint=070, Nfrac=075)
-Fch=917.60 (Fvco=3670.40, Nint=070, Nfrac=076)
-Fch=917.70 (Fvco=3670.80, Nint=070, Nfrac=077)
-Fch=917.80 (Fvco=3671.20, Nint=070, Nfrac=078)
-Fch=917.90 (Fvco=3671.60, Nint=070, Nfrac=079)
-Fch=918.00 (Fvco=3672.00, Nint=070, Nfrac=080)
-Fch=918.10 (Fvco=3672.40, Nint=070, Nfrac=081)
-Fch=918.20 (Fvco=3672.80, Nint=070, Nfrac=082)
-Fch=918.30 (Fvco=3673.20, Nint=070, Nfrac=083)
-Fch=918.40 (Fvco=3673.60, Nint=070, Nfrac=084)
-Fch=918.50 (Fvco=3674.00, Nint=070, Nfrac=085)
-Fch=918.60 (Fvco=3674.40, Nint=070, Nfrac=086)
-Fch=918.70 (Fvco=3674.80, Nint=070, Nfrac=087)
-Fch=918.80 (Fvco=3675.20, Nint=070, Nfrac=088)
-Fch=918.90 (Fvco=3675.60, Nint=070, Nfrac=089)
-Fch=919.00 (Fvco=3676.00, Nint=070, Nfrac=090)
-Fch=919.10 (Fvco=3676.40, Nint=070, Nfrac=091)
-Fch=919.20 (Fvco=3676.80, Nint=070, Nfrac=092)
-Fch=919.30 (Fvco=3677.20, Nint=070, Nfrac=093)
-Fch=919.40 (Fvco=3677.60, Nint=070, Nfrac=094)
-Fch=919.50 (Fvco=3678.00, Nint=070, Nfrac=095)
-Fch=919.60 (Fvco=3678.40, Nint=070, Nfrac=096)
-Fch=919.70 (Fvco=3678.80, Nint=070, Nfrac=097)
-Fch=919.80 (Fvco=3679.20, Nint=070, Nfrac=098)
-Fch=919.90 (Fvco=3679.60, Nint=070, Nfrac=099)
-Fch=920.00 (Fvco=3680.00, Nint=070, Nfrac=100)
-Fch=920.10 (Fvco=3680.40, Nint=070, Nfrac=101)
-Fch=920.20 (Fvco=3680.80, Nint=070, Nfrac=102)
-Fch=920.30 (Fvco=3681.20, Nint=070, Nfrac=103)
-Fch=920.40 (Fvco=3681.60, Nint=070, Nfrac=104)
-Fch=920.50 (Fvco=3682.00, Nint=070, Nfrac=105)
-Fch=920.60 (Fvco=3682.40, Nint=070, Nfrac=106)
-Fch=920.70 (Fvco=3682.80, Nint=070, Nfrac=107)
-Fch=920.80 (Fvco=3683.20, Nint=070, Nfrac=108)
-Fch=920.90 (Fvco=3683.60, Nint=070, Nfrac=109)
-Fch=921.00 (Fvco=3684.00, Nint=070, Nfrac=110)
-Fch=921.10 (Fvco=3684.40, Nint=070, Nfrac=111)
-Fch=921.20 (Fvco=3684.80, Nint=070, Nfrac=112)
-Fch=921.30 (Fvco=3685.20, Nint=070, Nfrac=113)
-Fch=921.40 (Fvco=3685.60, Nint=070, Nfrac=114)
-Fch=921.50 (Fvco=3686.00, Nint=070, Nfrac=115)
-Fch=921.60 (Fvco=3686.40, Nint=070, Nfrac=116)
-Fch=921.70 (Fvco=3686.80, Nint=070, Nfrac=117)
-Fch=921.80 (Fvco=3687.20, Nint=070, Nfrac=118)
-Fch=921.90 (Fvco=3687.60, Nint=070, Nfrac=119)
-Fch=922.00 (Fvco=3688.00, Nint=070, Nfrac=120)
-Fch=922.10 (Fvco=3688.40, Nint=070, Nfrac=121)
-Fch=922.20 (Fvco=3688.80, Nint=070, Nfrac=122)
-Fch=922.30 (Fvco=3689.20, Nint=070, Nfrac=123)
-Fch=922.40 (Fvco=3689.60, Nint=070, Nfrac=124)
-Fch=922.50 (Fvco=3690.00, Nint=070, Nfrac=125)
-Fch=922.60 (Fvco=3690.40, Nint=070, Nfrac=126)
-Fch=922.70 (Fvco=3690.80, Nint=070, Nfrac=127)
-Fch=922.80 (Fvco=3691.20, Nint=070, Nfrac=128)
-Fch=922.90 (Fvco=3691.60, Nint=070, Nfrac=129)
-Fch=923.00 (Fvco=3692.00, Nint=070, Nfrac=130)
-Fch=923.00 (Fvco=3692.00, Nint=071, Nfrac=000)
-Fch=923.10 (Fvco=3692.40, Nint=071, Nfrac=001)
-Fch=923.20 (Fvco=3692.80, Nint=071, Nfrac=002)
-Fch=923.30 (Fvco=3693.20, Nint=071, Nfrac=003)
-Fch=923.40 (Fvco=3693.60, Nint=071, Nfrac=004)
-Fch=923.50 (Fvco=3694.00, Nint=071, Nfrac=005)
-Fch=923.60 (Fvco=3694.40, Nint=071, Nfrac=006)
-Fch=923.70 (Fvco=3694.80, Nint=071, Nfrac=007)
-Fch=923.80 (Fvco=3695.20, Nint=071, Nfrac=008)
-Fch=923.90 (Fvco=3695.60, Nint=071, Nfrac=009)
-Fch=924.00 (Fvco=3696.00, Nint=071, Nfrac=010)
-Fch=924.10 (Fvco=3696.40, Nint=071, Nfrac=011)
-Fch=924.20 (Fvco=3696.80, Nint=071, Nfrac=012)
-Fch=924.30 (Fvco=3697.20, Nint=071, Nfrac=013)
-Fch=924.40 (Fvco=3697.60, Nint=071, Nfrac=014)
-Fch=924.50 (Fvco=3698.00, Nint=071, Nfrac=015)
-Fch=924.60 (Fvco=3698.40, Nint=071, Nfrac=016)
-Fch=924.70 (Fvco=3698.80, Nint=071, Nfrac=017)
-Fch=924.80 (Fvco=3699.20, Nint=071, Nfrac=018)
-Fch=924.90 (Fvco=3699.60, Nint=071, Nfrac=019)
-Fch=925.00 (Fvco=3700.00, Nint=071, Nfrac=020)
-Fch=925.10 (Fvco=3700.40, Nint=071, Nfrac=021)
-Fch=925.20 (Fvco=3700.80, Nint=071, Nfrac=022)
-Fch=925.30 (Fvco=3701.20, Nint=071, Nfrac=023)
-Fch=925.40 (Fvco=3701.60, Nint=071, Nfrac=024)
-Fch=925.50 (Fvco=3702.00, Nint=071, Nfrac=025)
-Fch=925.60 (Fvco=3702.40, Nint=071, Nfrac=026)
-Fch=925.70 (Fvco=3702.80, Nint=071, Nfrac=027)
-Fch=925.80 (Fvco=3703.20, Nint=071, Nfrac=028)
-Fch=925.90 (Fvco=3703.60, Nint=071, Nfrac=029)
-Fch=926.00 (Fvco=3704.00, Nint=071, Nfrac=030)
-Fch=926.10 (Fvco=3704.40, Nint=071, Nfrac=031)
-Fch=926.20 (Fvco=3704.80, Nint=071, Nfrac=032)
-Fch=926.30 (Fvco=3705.20, Nint=071, Nfrac=033)
-Fch=926.40 (Fvco=3705.60, Nint=071, Nfrac=034)
-Fch=926.50 (Fvco=3706.00, Nint=071, Nfrac=035)
-Fch=926.60 (Fvco=3706.40, Nint=071, Nfrac=036)
-Fch=926.70 (Fvco=3706.80, Nint=071, Nfrac=037)
-Fch=926.80 (Fvco=3707.20, Nint=071, Nfrac=038)
-Fch=926.90 (Fvco=3707.60, Nint=071, Nfrac=039)
-Fch=927.00 (Fvco=3708.00, Nint=071, Nfrac=040)
-Fch=927.10 (Fvco=3708.40, Nint=071, Nfrac=041)
-Fch=927.20 (Fvco=3708.80, Nint=071, Nfrac=042)
-Fch=927.30 (Fvco=3709.20, Nint=071, Nfrac=043)
-Fch=927.40 (Fvco=3709.60, Nint=071, Nfrac=044)
-Fch=927.50 (Fvco=3710.00, Nint=071, Nfrac=045)
-Fch=927.60 (Fvco=3710.40, Nint=071, Nfrac=046)
-Fch=927.70 (Fvco=3710.80, Nint=071, Nfrac=047)
-Fch=927.80 (Fvco=3711.20, Nint=071, Nfrac=048)
-Fch=927.90 (Fvco=3711.60, Nint=071, Nfrac=049)
-Fch=928.00 (Fvco=3712.00, Nint=071, Nfrac=050)
-Fch=928.10 (Fvco=3712.40, Nint=071, Nfrac=051)
-Fch=928.20 (Fvco=3712.80, Nint=071, Nfrac=052)
-Fch=928.30 (Fvco=3713.20, Nint=071, Nfrac=053)
-Fch=928.40 (Fvco=3713.60, Nint=071, Nfrac=054)
-Fch=928.50 (Fvco=3714.00, Nint=071, Nfrac=055)
-Fch=928.60 (Fvco=3714.40, Nint=071, Nfrac=056)
-Fch=928.70 (Fvco=3714.80, Nint=071, Nfrac=057)
-Fch=928.80 (Fvco=3715.20, Nint=071, Nfrac=058)
-Fch=928.90 (Fvco=3715.60, Nint=071, Nfrac=059)
-Fch=929.00 (Fvco=3716.00, Nint=071, Nfrac=060)
-Fch=929.10 (Fvco=3716.40, Nint=071, Nfrac=061)
-Fch=929.20 (Fvco=3716.80, Nint=071, Nfrac=062)
-Fch=929.30 (Fvco=3717.20, Nint=071, Nfrac=063)
-Fch=929.40 (Fvco=3717.60, Nint=071, Nfrac=064)
-Fch=929.50 (Fvco=3718.00, Nint=071, Nfrac=065)
-Fch=929.60 (Fvco=3718.40, Nint=071, Nfrac=066)
-Fch=929.70 (Fvco=3718.80, Nint=071, Nfrac=067)
-Fch=929.80 (Fvco=3719.20, Nint=071, Nfrac=068)
-Fch=929.90 (Fvco=3719.60, Nint=071, Nfrac=069)
-Fch=930.00 (Fvco=3720.00, Nint=071, Nfrac=070)
-Fch=930.10 (Fvco=3720.40, Nint=071, Nfrac=071)
-Fch=930.20 (Fvco=3720.80, Nint=071, Nfrac=072)
-Fch=930.30 (Fvco=3721.20, Nint=071, Nfrac=073)
-Fch=930.40 (Fvco=3721.60, Nint=071, Nfrac=074)
-Fch=930.50 (Fvco=3722.00, Nint=071, Nfrac=075)
-Fch=930.60 (Fvco=3722.40, Nint=071, Nfrac=076)
-Fch=930.70 (Fvco=3722.80, Nint=071, Nfrac=077)
-Fch=930.80 (Fvco=3723.20, Nint=071, Nfrac=078)
-Fch=930.90 (Fvco=3723.60, Nint=071, Nfrac=079)
-Fch=931.00 (Fvco=3724.00, Nint=071, Nfrac=080)
-Fch=931.10 (Fvco=3724.40, Nint=071, Nfrac=081)
-Fch=931.20 (Fvco=3724.80, Nint=071, Nfrac=082)
-Fch=931.30 (Fvco=3725.20, Nint=071, Nfrac=083)
-Fch=931.40 (Fvco=3725.60, Nint=071, Nfrac=084)
-Fch=931.50 (Fvco=3726.00, Nint=071, Nfrac=085)
-Fch=931.60 (Fvco=3726.40, Nint=071, Nfrac=086)
-Fch=931.70 (Fvco=3726.80, Nint=071, Nfrac=087)
-Fch=931.80 (Fvco=3727.20, Nint=071, Nfrac=088)
-Fch=931.90 (Fvco=3727.60, Nint=071, Nfrac=089)
-Fch=932.00 (Fvco=3728.00, Nint=071, Nfrac=090)
-Fch=932.10 (Fvco=3728.40, Nint=071, Nfrac=091)
-Fch=932.20 (Fvco=3728.80, Nint=071, Nfrac=092)
-Fch=932.30 (Fvco=3729.20, Nint=071, Nfrac=093)
-Fch=932.40 (Fvco=3729.60, Nint=071, Nfrac=094)
-Fch=932.50 (Fvco=3730.00, Nint=071, Nfrac=095)
-Fch=932.60 (Fvco=3730.40, Nint=071, Nfrac=096)
-Fch=932.70 (Fvco=3730.80, Nint=071, Nfrac=097)
-Fch=932.80 (Fvco=3731.20, Nint=071, Nfrac=098)
-Fch=932.90 (Fvco=3731.60, Nint=071, Nfrac=099)
-Fch=933.00 (Fvco=3732.00, Nint=071, Nfrac=100)
-Fch=933.10 (Fvco=3732.40, Nint=071, Nfrac=101)
-Fch=933.20 (Fvco=3732.80, Nint=071, Nfrac=102)
-Fch=933.30 (Fvco=3733.20, Nint=071, Nfrac=103)
-Fch=933.40 (Fvco=3733.60, Nint=071, Nfrac=104)
-Fch=933.50 (Fvco=3734.00, Nint=071, Nfrac=105)
-Fch=933.60 (Fvco=3734.40, Nint=071, Nfrac=106)
-Fch=933.70 (Fvco=3734.80, Nint=071, Nfrac=107)
-Fch=933.80 (Fvco=3735.20, Nint=071, Nfrac=108)
-Fch=933.90 (Fvco=3735.60, Nint=071, Nfrac=109)
-Fch=934.00 (Fvco=3736.00, Nint=071, Nfrac=110)
-Fch=934.10 (Fvco=3736.40, Nint=071, Nfrac=111)
-Fch=934.20 (Fvco=3736.80, Nint=071, Nfrac=112)
-Fch=934.30 (Fvco=3737.20, Nint=071, Nfrac=113)
-Fch=934.40 (Fvco=3737.60, Nint=071, Nfrac=114)
-Fch=934.50 (Fvco=3738.00, Nint=071, Nfrac=115)
-Fch=934.60 (Fvco=3738.40, Nint=071, Nfrac=116)
-Fch=934.70 (Fvco=3738.80, Nint=071, Nfrac=117)
-Fch=934.80 (Fvco=3739.20, Nint=071, Nfrac=118)
-Fch=934.90 (Fvco=3739.60, Nint=071, Nfrac=119)
-Fch=935.00 (Fvco=3740.00, Nint=071, Nfrac=120)
-Fch=935.10 (Fvco=3740.40, Nint=071, Nfrac=121)
-Fch=935.20 (Fvco=3740.80, Nint=071, Nfrac=122)
-Fch=935.30 (Fvco=3741.20, Nint=071, Nfrac=123)
-Fch=935.40 (Fvco=3741.60, Nint=071, Nfrac=124)
-Fch=935.50 (Fvco=3742.00, Nint=071, Nfrac=125)
-Fch=935.60 (Fvco=3742.40, Nint=071, Nfrac=126)
-Fch=935.70 (Fvco=3742.80, Nint=071, Nfrac=127)
-Fch=935.80 (Fvco=3743.20, Nint=071, Nfrac=128)
-Fch=935.90 (Fvco=3743.60, Nint=071, Nfrac=129)
-Fch=936.00 (Fvco=3744.00, Nint=071, Nfrac=130)
-Fch=936.00 (Fvco=3744.00, Nint=072, Nfrac=000)
-Fch=936.10 (Fvco=3744.40, Nint=072, Nfrac=001)
-Fch=936.20 (Fvco=3744.80, Nint=072, Nfrac=002)
-Fch=936.30 (Fvco=3745.20, Nint=072, Nfrac=003)
-Fch=936.40 (Fvco=3745.60, Nint=072, Nfrac=004)
-Fch=936.50 (Fvco=3746.00, Nint=072, Nfrac=005)
-Fch=936.60 (Fvco=3746.40, Nint=072, Nfrac=006)
-Fch=936.70 (Fvco=3746.80, Nint=072, Nfrac=007)
-Fch=936.80 (Fvco=3747.20, Nint=072, Nfrac=008)
-Fch=936.90 (Fvco=3747.60, Nint=072, Nfrac=009)
-Fch=937.00 (Fvco=3748.00, Nint=072, Nfrac=010)
-Fch=937.10 (Fvco=3748.40, Nint=072, Nfrac=011)
-Fch=937.20 (Fvco=3748.80, Nint=072, Nfrac=012)
-Fch=937.30 (Fvco=3749.20, Nint=072, Nfrac=013)
-Fch=937.40 (Fvco=3749.60, Nint=072, Nfrac=014)
-Fch=937.50 (Fvco=3750.00, Nint=072, Nfrac=015)
-Fch=937.60 (Fvco=3750.40, Nint=072, Nfrac=016)
-Fch=937.70 (Fvco=3750.80, Nint=072, Nfrac=017)
-Fch=937.80 (Fvco=3751.20, Nint=072, Nfrac=018)
-Fch=937.90 (Fvco=3751.60, Nint=072, Nfrac=019)
-Fch=938.00 (Fvco=3752.00, Nint=072, Nfrac=020)
-Fch=938.10 (Fvco=3752.40, Nint=072, Nfrac=021)
-Fch=938.20 (Fvco=3752.80, Nint=072, Nfrac=022)
-Fch=938.30 (Fvco=3753.20, Nint=072, Nfrac=023)
-Fch=938.40 (Fvco=3753.60, Nint=072, Nfrac=024)
-Fch=938.50 (Fvco=3754.00, Nint=072, Nfrac=025)
-Fch=938.60 (Fvco=3754.40, Nint=072, Nfrac=026)
-Fch=938.70 (Fvco=3754.80, Nint=072, Nfrac=027)
-Fch=938.80 (Fvco=3755.20, Nint=072, Nfrac=028)
-Fch=938.90 (Fvco=3755.60, Nint=072, Nfrac=029)
-Fch=939.00 (Fvco=3756.00, Nint=072, Nfrac=030)
-Fch=939.10 (Fvco=3756.40, Nint=072, Nfrac=031)
-Fch=939.20 (Fvco=3756.80, Nint=072, Nfrac=032)
-Fch=939.30 (Fvco=3757.20, Nint=072, Nfrac=033)
-Fch=939.40 (Fvco=3757.60, Nint=072, Nfrac=034)
-Fch=939.50 (Fvco=3758.00, Nint=072, Nfrac=035)
-Fch=939.60 (Fvco=3758.40, Nint=072, Nfrac=036)
-Fch=939.70 (Fvco=3758.80, Nint=072, Nfrac=037)
-Fch=939.80 (Fvco=3759.20, Nint=072, Nfrac=038)
-Fch=939.90 (Fvco=3759.60, Nint=072, Nfrac=039)
-Fch=940.00 (Fvco=3760.00, Nint=072, Nfrac=040)
-Fch=940.10 (Fvco=3760.40, Nint=072, Nfrac=041)
-Fch=940.20 (Fvco=3760.80, Nint=072, Nfrac=042)
-Fch=940.30 (Fvco=3761.20, Nint=072, Nfrac=043)
-Fch=940.40 (Fvco=3761.60, Nint=072, Nfrac=044)
-Fch=940.50 (Fvco=3762.00, Nint=072, Nfrac=045)
-Fch=940.60 (Fvco=3762.40, Nint=072, Nfrac=046)
-Fch=940.70 (Fvco=3762.80, Nint=072, Nfrac=047)
-Fch=940.80 (Fvco=3763.20, Nint=072, Nfrac=048)
-Fch=940.90 (Fvco=3763.60, Nint=072, Nfrac=049)
-Fch=941.00 (Fvco=3764.00, Nint=072, Nfrac=050)
-Fch=941.10 (Fvco=3764.40, Nint=072, Nfrac=051)
-Fch=941.20 (Fvco=3764.80, Nint=072, Nfrac=052)
-Fch=941.30 (Fvco=3765.20, Nint=072, Nfrac=053)
-Fch=941.40 (Fvco=3765.60, Nint=072, Nfrac=054)
-Fch=941.50 (Fvco=3766.00, Nint=072, Nfrac=055)
-Fch=941.60 (Fvco=3766.40, Nint=072, Nfrac=056)
-Fch=941.70 (Fvco=3766.80, Nint=072, Nfrac=057)
-Fch=941.80 (Fvco=3767.20, Nint=072, Nfrac=058)
-Fch=941.90 (Fvco=3767.60, Nint=072, Nfrac=059)
-Fch=942.00 (Fvco=3768.00, Nint=072, Nfrac=060)
-Fch=942.10 (Fvco=3768.40, Nint=072, Nfrac=061)
-Fch=942.20 (Fvco=3768.80, Nint=072, Nfrac=062)
-Fch=942.30 (Fvco=3769.20, Nint=072, Nfrac=063)
-Fch=942.40 (Fvco=3769.60, Nint=072, Nfrac=064)
-Fch=942.50 (Fvco=3770.00, Nint=072, Nfrac=065)
-Fch=942.60 (Fvco=3770.40, Nint=072, Nfrac=066)
-Fch=942.70 (Fvco=3770.80, Nint=072, Nfrac=067)
-Fch=942.80 (Fvco=3771.20, Nint=072, Nfrac=068)
-Fch=942.90 (Fvco=3771.60, Nint=072, Nfrac=069)
-Fch=943.00 (Fvco=3772.00, Nint=072, Nfrac=070)
-Fch=943.10 (Fvco=3772.40, Nint=072, Nfrac=071)
-Fch=943.20 (Fvco=3772.80, Nint=072, Nfrac=072)
-Fch=943.30 (Fvco=3773.20, Nint=072, Nfrac=073)
-Fch=943.40 (Fvco=3773.60, Nint=072, Nfrac=074)
-Fch=943.50 (Fvco=3774.00, Nint=072, Nfrac=075)
-Fch=943.60 (Fvco=3774.40, Nint=072, Nfrac=076)
-Fch=943.70 (Fvco=3774.80, Nint=072, Nfrac=077)
-Fch=943.80 (Fvco=3775.20, Nint=072, Nfrac=078)
-Fch=943.90 (Fvco=3775.60, Nint=072, Nfrac=079)
-Fch=944.00 (Fvco=3776.00, Nint=072, Nfrac=080)
-Fch=944.10 (Fvco=3776.40, Nint=072, Nfrac=081)
-Fch=944.20 (Fvco=3776.80, Nint=072, Nfrac=082)
-Fch=944.30 (Fvco=3777.20, Nint=072, Nfrac=083)
-Fch=944.40 (Fvco=3777.60, Nint=072, Nfrac=084)
-Fch=944.50 (Fvco=3778.00, Nint=072, Nfrac=085)
-Fch=944.60 (Fvco=3778.40, Nint=072, Nfrac=086)
-Fch=944.70 (Fvco=3778.80, Nint=072, Nfrac=087)
-Fch=944.80 (Fvco=3779.20, Nint=072, Nfrac=088)
-Fch=944.90 (Fvco=3779.60, Nint=072, Nfrac=089)
-Fch=945.00 (Fvco=3780.00, Nint=072, Nfrac=090)
-Fch=945.10 (Fvco=3780.40, Nint=072, Nfrac=091)
-Fch=945.20 (Fvco=3780.80, Nint=072, Nfrac=092)
-Fch=945.30 (Fvco=3781.20, Nint=072, Nfrac=093)
-Fch=945.40 (Fvco=3781.60, Nint=072, Nfrac=094)
-Fch=945.50 (Fvco=3782.00, Nint=072, Nfrac=095)
-Fch=945.60 (Fvco=3782.40, Nint=072, Nfrac=096)
-Fch=945.70 (Fvco=3782.80, Nint=072, Nfrac=097)
-Fch=945.80 (Fvco=3783.20, Nint=072, Nfrac=098)
-Fch=945.90 (Fvco=3783.60, Nint=072, Nfrac=099)
-Fch=946.00 (Fvco=3784.00, Nint=072, Nfrac=100)
-Fch=946.10 (Fvco=3784.40, Nint=072, Nfrac=101)
-Fch=946.20 (Fvco=3784.80, Nint=072, Nfrac=102)
-Fch=946.30 (Fvco=3785.20, Nint=072, Nfrac=103)
-Fch=946.40 (Fvco=3785.60, Nint=072, Nfrac=104)
-Fch=946.50 (Fvco=3786.00, Nint=072, Nfrac=105)
-Fch=946.60 (Fvco=3786.40, Nint=072, Nfrac=106)
-Fch=946.70 (Fvco=3786.80, Nint=072, Nfrac=107)
-Fch=946.80 (Fvco=3787.20, Nint=072, Nfrac=108)
-Fch=946.90 (Fvco=3787.60, Nint=072, Nfrac=109)
-Fch=947.00 (Fvco=3788.00, Nint=072, Nfrac=110)
-Fch=947.10 (Fvco=3788.40, Nint=072, Nfrac=111)
-Fch=947.20 (Fvco=3788.80, Nint=072, Nfrac=112)
-Fch=947.30 (Fvco=3789.20, Nint=072, Nfrac=113)
-Fch=947.40 (Fvco=3789.60, Nint=072, Nfrac=114)
-Fch=947.50 (Fvco=3790.00, Nint=072, Nfrac=115)
-Fch=947.60 (Fvco=3790.40, Nint=072, Nfrac=116)
-Fch=947.70 (Fvco=3790.80, Nint=072, Nfrac=117)
-Fch=947.80 (Fvco=3791.20, Nint=072, Nfrac=118)
-Fch=947.90 (Fvco=3791.60, Nint=072, Nfrac=119)
-Fch=948.00 (Fvco=3792.00, Nint=072, Nfrac=120)
-Fch=948.10 (Fvco=3792.40, Nint=072, Nfrac=121)
-Fch=948.20 (Fvco=3792.80, Nint=072, Nfrac=122)
-Fch=948.30 (Fvco=3793.20, Nint=072, Nfrac=123)
-Fch=948.40 (Fvco=3793.60, Nint=072, Nfrac=124)
-Fch=948.50 (Fvco=3794.00, Nint=072, Nfrac=125)
-Fch=948.60 (Fvco=3794.40, Nint=072, Nfrac=126)
-Fch=948.70 (Fvco=3794.80, Nint=072, Nfrac=127)
-Fch=948.80 (Fvco=3795.20, Nint=072, Nfrac=128)
-Fch=948.90 (Fvco=3795.60, Nint=072, Nfrac=129)
-Fch=949.00 (Fvco=3796.00, Nint=072, Nfrac=130)
-Fch=949.00 (Fvco=3796.00, Nint=073, Nfrac=000)
-Fch=949.10 (Fvco=3796.40, Nint=073, Nfrac=001)
-Fch=949.20 (Fvco=3796.80, Nint=073, Nfrac=002)
-Fch=949.30 (Fvco=3797.20, Nint=073, Nfrac=003)
-Fch=949.40 (Fvco=3797.60, Nint=073, Nfrac=004)
-Fch=949.50 (Fvco=3798.00, Nint=073, Nfrac=005)
-Fch=949.60 (Fvco=3798.40, Nint=073, Nfrac=006)
-Fch=949.70 (Fvco=3798.80, Nint=073, Nfrac=007)
-Fch=949.80 (Fvco=3799.20, Nint=073, Nfrac=008)
-Fch=949.90 (Fvco=3799.60, Nint=073, Nfrac=009)
-Fch=950.00 (Fvco=3800.00, Nint=073, Nfrac=010)
-Fch=950.10 (Fvco=3800.40, Nint=073, Nfrac=011)
-Fch=950.20 (Fvco=3800.80, Nint=073, Nfrac=012)
-Fch=950.30 (Fvco=3801.20, Nint=073, Nfrac=013)
-Fch=950.40 (Fvco=3801.60, Nint=073, Nfrac=014)
-Fch=950.50 (Fvco=3802.00, Nint=073, Nfrac=015)
-Fch=950.60 (Fvco=3802.40, Nint=073, Nfrac=016)
-Fch=950.70 (Fvco=3802.80, Nint=073, Nfrac=017)
-Fch=950.80 (Fvco=3803.20, Nint=073, Nfrac=018)
-Fch=950.90 (Fvco=3803.60, Nint=073, Nfrac=019)
-Fch=951.00 (Fvco=3804.00, Nint=073, Nfrac=020)
-Fch=951.10 (Fvco=3804.40, Nint=073, Nfrac=021)
-Fch=951.20 (Fvco=3804.80, Nint=073, Nfrac=022)
-Fch=951.30 (Fvco=3805.20, Nint=073, Nfrac=023)
-Fch=951.40 (Fvco=3805.60, Nint=073, Nfrac=024)
-Fch=951.50 (Fvco=3806.00, Nint=073, Nfrac=025)
-Fch=951.60 (Fvco=3806.40, Nint=073, Nfrac=026)
-Fch=951.70 (Fvco=3806.80, Nint=073, Nfrac=027)
-Fch=951.80 (Fvco=3807.20, Nint=073, Nfrac=028)
-Fch=951.90 (Fvco=3807.60, Nint=073, Nfrac=029)
-Fch=952.00 (Fvco=3808.00, Nint=073, Nfrac=030)
-Fch=952.10 (Fvco=3808.40, Nint=073, Nfrac=031)
-Fch=952.20 (Fvco=3808.80, Nint=073, Nfrac=032)
-Fch=952.30 (Fvco=3809.20, Nint=073, Nfrac=033)
-Fch=952.40 (Fvco=3809.60, Nint=073, Nfrac=034)
-Fch=952.50 (Fvco=3810.00, Nint=073, Nfrac=035)
-Fch=952.60 (Fvco=3810.40, Nint=073, Nfrac=036)
-Fch=952.70 (Fvco=3810.80, Nint=073, Nfrac=037)
-Fch=952.80 (Fvco=3811.20, Nint=073, Nfrac=038)
-Fch=952.90 (Fvco=3811.60, Nint=073, Nfrac=039)
-Fch=953.00 (Fvco=3812.00, Nint=073, Nfrac=040)
-Fch=953.10 (Fvco=3812.40, Nint=073, Nfrac=041)
-Fch=953.20 (Fvco=3812.80, Nint=073, Nfrac=042)
-Fch=953.30 (Fvco=3813.20, Nint=073, Nfrac=043)
-Fch=953.40 (Fvco=3813.60, Nint=073, Nfrac=044)
-Fch=953.50 (Fvco=3814.00, Nint=073, Nfrac=045)
-Fch=953.60 (Fvco=3814.40, Nint=073, Nfrac=046)
-Fch=953.70 (Fvco=3814.80, Nint=073, Nfrac=047)
-Fch=953.80 (Fvco=3815.20, Nint=073, Nfrac=048)
-Fch=953.90 (Fvco=3815.60, Nint=073, Nfrac=049)
-Fch=954.00 (Fvco=3816.00, Nint=073, Nfrac=050)
-Fch=954.10 (Fvco=3816.40, Nint=073, Nfrac=051)
-Fch=954.20 (Fvco=3816.80, Nint=073, Nfrac=052)
-Fch=954.30 (Fvco=3817.20, Nint=073, Nfrac=053)
-Fch=954.40 (Fvco=3817.60, Nint=073, Nfrac=054)
-Fch=954.50 (Fvco=3818.00, Nint=073, Nfrac=055)
-Fch=954.60 (Fvco=3818.40, Nint=073, Nfrac=056)
-Fch=954.70 (Fvco=3818.80, Nint=073, Nfrac=057)
-Fch=954.80 (Fvco=3819.20, Nint=073, Nfrac=058)
-Fch=954.90 (Fvco=3819.60, Nint=073, Nfrac=059)
-Fch=955.00 (Fvco=3820.00, Nint=073, Nfrac=060)
-Fch=955.10 (Fvco=3820.40, Nint=073, Nfrac=061)
-Fch=955.20 (Fvco=3820.80, Nint=073, Nfrac=062)
-Fch=955.30 (Fvco=3821.20, Nint=073, Nfrac=063)
-Fch=955.40 (Fvco=3821.60, Nint=073, Nfrac=064)
-Fch=955.50 (Fvco=3822.00, Nint=073, Nfrac=065)
-Fch=955.60 (Fvco=3822.40, Nint=073, Nfrac=066)
-Fch=955.70 (Fvco=3822.80, Nint=073, Nfrac=067)
-Fch=955.80 (Fvco=3823.20, Nint=073, Nfrac=068)
-Fch=955.90 (Fvco=3823.60, Nint=073, Nfrac=069)
-Fch=956.00 (Fvco=3824.00, Nint=073, Nfrac=070)
-Fch=956.10 (Fvco=3824.40, Nint=073, Nfrac=071)
-Fch=956.20 (Fvco=3824.80, Nint=073, Nfrac=072)
-Fch=956.30 (Fvco=3825.20, Nint=073, Nfrac=073)
-Fch=956.40 (Fvco=3825.60, Nint=073, Nfrac=074)
-Fch=956.50 (Fvco=3826.00, Nint=073, Nfrac=075)
-Fch=956.60 (Fvco=3826.40, Nint=073, Nfrac=076)
-Fch=956.70 (Fvco=3826.80, Nint=073, Nfrac=077)
-Fch=956.80 (Fvco=3827.20, Nint=073, Nfrac=078)
-Fch=956.90 (Fvco=3827.60, Nint=073, Nfrac=079)
-Fch=957.00 (Fvco=3828.00, Nint=073, Nfrac=080)
-Fch=957.10 (Fvco=3828.40, Nint=073, Nfrac=081)
-Fch=957.20 (Fvco=3828.80, Nint=073, Nfrac=082)
-Fch=957.30 (Fvco=3829.20, Nint=073, Nfrac=083)
-Fch=957.40 (Fvco=3829.60, Nint=073, Nfrac=084)
-Fch=957.50 (Fvco=3830.00, Nint=073, Nfrac=085)
-Fch=957.60 (Fvco=3830.40, Nint=073, Nfrac=086)
-Fch=957.70 (Fvco=3830.80, Nint=073, Nfrac=087)
-Fch=957.80 (Fvco=3831.20, Nint=073, Nfrac=088)
-Fch=957.90 (Fvco=3831.60, Nint=073, Nfrac=089)
-Fch=958.00 (Fvco=3832.00, Nint=073, Nfrac=090)
-Fch=958.10 (Fvco=3832.40, Nint=073, Nfrac=091)
-Fch=958.20 (Fvco=3832.80, Nint=073, Nfrac=092)
-Fch=958.30 (Fvco=3833.20, Nint=073, Nfrac=093)
-Fch=958.40 (Fvco=3833.60, Nint=073, Nfrac=094)
-Fch=958.50 (Fvco=3834.00, Nint=073, Nfrac=095)
-Fch=958.60 (Fvco=3834.40, Nint=073, Nfrac=096)
-Fch=958.70 (Fvco=3834.80, Nint=073, Nfrac=097)
-Fch=958.80 (Fvco=3835.20, Nint=073, Nfrac=098)
-Fch=958.90 (Fvco=3835.60, Nint=073, Nfrac=099)
-Fch=959.00 (Fvco=3836.00, Nint=073, Nfrac=100)
-Fch=959.10 (Fvco=3836.40, Nint=073, Nfrac=101)
-Fch=959.20 (Fvco=3836.80, Nint=073, Nfrac=102)
-Fch=959.30 (Fvco=3837.20, Nint=073, Nfrac=103)
-Fch=959.40 (Fvco=3837.60, Nint=073, Nfrac=104)
-Fch=959.50 (Fvco=3838.00, Nint=073, Nfrac=105)
-Fch=959.60 (Fvco=3838.40, Nint=073, Nfrac=106)
-Fch=959.70 (Fvco=3838.80, Nint=073, Nfrac=107)
-Fch=959.80 (Fvco=3839.20, Nint=073, Nfrac=108)
-Fch=959.90 (Fvco=3839.60, Nint=073, Nfrac=109)
-Fch=960.00 (Fvco=3840.00, Nint=073, Nfrac=110)
-Fch=960.10 (Fvco=3840.40, Nint=073, Nfrac=111)
-Fch=960.20 (Fvco=3840.80, Nint=073, Nfrac=112)
-Fch=960.30 (Fvco=3841.20, Nint=073, Nfrac=113)
-Fch=960.40 (Fvco=3841.60, Nint=073, Nfrac=114)
-Fch=960.50 (Fvco=3842.00, Nint=073, Nfrac=115)
-Fch=960.60 (Fvco=3842.40, Nint=073, Nfrac=116)
-Fch=960.70 (Fvco=3842.80, Nint=073, Nfrac=117)
-Fch=960.80 (Fvco=3843.20, Nint=073, Nfrac=118)
-Fch=960.90 (Fvco=3843.60, Nint=073, Nfrac=119)
-Fch=961.00 (Fvco=3844.00, Nint=073, Nfrac=120)
-Fch=961.10 (Fvco=3844.40, Nint=073, Nfrac=121)
-Fch=961.20 (Fvco=3844.80, Nint=073, Nfrac=122)
-Fch=961.30 (Fvco=3845.20, Nint=073, Nfrac=123)
-Fch=961.40 (Fvco=3845.60, Nint=073, Nfrac=124)
-Fch=961.50 (Fvco=3846.00, Nint=073, Nfrac=125)
-Fch=961.60 (Fvco=3846.40, Nint=073, Nfrac=126)
-Fch=961.70 (Fvco=3846.80, Nint=073, Nfrac=127)
-Fch=961.80 (Fvco=3847.20, Nint=073, Nfrac=128)
-Fch=961.90 (Fvco=3847.60, Nint=073, Nfrac=129)
-Fch=962.00 (Fvco=3848.00, Nint=073, Nfrac=130)
-======================================================================
-PLL Rx High Band:
-Fch=1794.00 (Fvco=3588.00, Nint=069, Nfrac=000)
-Fch=1794.20 (Fvco=3588.40, Nint=069, Nfrac=001)
-Fch=1794.40 (Fvco=3588.80, Nint=069, Nfrac=002)
-Fch=1794.60 (Fvco=3589.20, Nint=069, Nfrac=003)
-Fch=1794.80 (Fvco=3589.60, Nint=069, Nfrac=004)
-Fch=1795.00 (Fvco=3590.00, Nint=069, Nfrac=005)
-Fch=1795.20 (Fvco=3590.40, Nint=069, Nfrac=006)
-Fch=1795.40 (Fvco=3590.80, Nint=069, Nfrac=007)
-Fch=1795.60 (Fvco=3591.20, Nint=069, Nfrac=008)
-Fch=1795.80 (Fvco=3591.60, Nint=069, Nfrac=009)
-Fch=1796.00 (Fvco=3592.00, Nint=069, Nfrac=010)
-Fch=1796.20 (Fvco=3592.40, Nint=069, Nfrac=011)
-Fch=1796.40 (Fvco=3592.80, Nint=069, Nfrac=012)
-Fch=1796.60 (Fvco=3593.20, Nint=069, Nfrac=013)
-Fch=1796.80 (Fvco=3593.60, Nint=069, Nfrac=014)
-Fch=1797.00 (Fvco=3594.00, Nint=069, Nfrac=015)
-Fch=1797.20 (Fvco=3594.40, Nint=069, Nfrac=016)
-Fch=1797.40 (Fvco=3594.80, Nint=069, Nfrac=017)
-Fch=1797.60 (Fvco=3595.20, Nint=069, Nfrac=018)
-Fch=1797.80 (Fvco=3595.60, Nint=069, Nfrac=019)
-Fch=1798.00 (Fvco=3596.00, Nint=069, Nfrac=020)
-Fch=1798.20 (Fvco=3596.40, Nint=069, Nfrac=021)
-Fch=1798.40 (Fvco=3596.80, Nint=069, Nfrac=022)
-Fch=1798.60 (Fvco=3597.20, Nint=069, Nfrac=023)
-Fch=1798.80 (Fvco=3597.60, Nint=069, Nfrac=024)
-Fch=1799.00 (Fvco=3598.00, Nint=069, Nfrac=025)
-Fch=1799.20 (Fvco=3598.40, Nint=069, Nfrac=026)
-Fch=1799.40 (Fvco=3598.80, Nint=069, Nfrac=027)
-Fch=1799.60 (Fvco=3599.20, Nint=069, Nfrac=028)
-Fch=1799.80 (Fvco=3599.60, Nint=069, Nfrac=029)
-Fch=1800.00 (Fvco=3600.00, Nint=069, Nfrac=030)
-Fch=1800.20 (Fvco=3600.40, Nint=069, Nfrac=031)
-Fch=1800.40 (Fvco=3600.80, Nint=069, Nfrac=032)
-Fch=1800.60 (Fvco=3601.20, Nint=069, Nfrac=033)
-Fch=1800.80 (Fvco=3601.60, Nint=069, Nfrac=034)
-Fch=1801.00 (Fvco=3602.00, Nint=069, Nfrac=035)
-Fch=1801.20 (Fvco=3602.40, Nint=069, Nfrac=036)
-Fch=1801.40 (Fvco=3602.80, Nint=069, Nfrac=037)
-Fch=1801.60 (Fvco=3603.20, Nint=069, Nfrac=038)
-Fch=1801.80 (Fvco=3603.60, Nint=069, Nfrac=039)
-Fch=1802.00 (Fvco=3604.00, Nint=069, Nfrac=040)
-Fch=1802.20 (Fvco=3604.40, Nint=069, Nfrac=041)
-Fch=1802.40 (Fvco=3604.80, Nint=069, Nfrac=042)
-Fch=1802.60 (Fvco=3605.20, Nint=069, Nfrac=043)
-Fch=1802.80 (Fvco=3605.60, Nint=069, Nfrac=044)
-Fch=1803.00 (Fvco=3606.00, Nint=069, Nfrac=045)
-Fch=1803.20 (Fvco=3606.40, Nint=069, Nfrac=046)
-Fch=1803.40 (Fvco=3606.80, Nint=069, Nfrac=047)
-Fch=1803.60 (Fvco=3607.20, Nint=069, Nfrac=048)
-Fch=1803.80 (Fvco=3607.60, Nint=069, Nfrac=049)
-Fch=1804.00 (Fvco=3608.00, Nint=069, Nfrac=050)
-Fch=1804.20 (Fvco=3608.40, Nint=069, Nfrac=051)
-Fch=1804.40 (Fvco=3608.80, Nint=069, Nfrac=052)
-Fch=1804.60 (Fvco=3609.20, Nint=069, Nfrac=053)
-Fch=1804.80 (Fvco=3609.60, Nint=069, Nfrac=054)
-Fch=1805.00 (Fvco=3610.00, Nint=069, Nfrac=055)
-Fch=1805.20 (Fvco=3610.40, Nint=069, Nfrac=056)
-Fch=1805.40 (Fvco=3610.80, Nint=069, Nfrac=057)
-Fch=1805.60 (Fvco=3611.20, Nint=069, Nfrac=058)
-Fch=1805.80 (Fvco=3611.60, Nint=069, Nfrac=059)
-Fch=1806.00 (Fvco=3612.00, Nint=069, Nfrac=060)
-Fch=1806.20 (Fvco=3612.40, Nint=069, Nfrac=061)
-Fch=1806.40 (Fvco=3612.80, Nint=069, Nfrac=062)
-Fch=1806.60 (Fvco=3613.20, Nint=069, Nfrac=063)
-Fch=1806.80 (Fvco=3613.60, Nint=069, Nfrac=064)
-Fch=1807.00 (Fvco=3614.00, Nint=069, Nfrac=065)
-Fch=1807.20 (Fvco=3614.40, Nint=069, Nfrac=066)
-Fch=1807.40 (Fvco=3614.80, Nint=069, Nfrac=067)
-Fch=1807.60 (Fvco=3615.20, Nint=069, Nfrac=068)
-Fch=1807.80 (Fvco=3615.60, Nint=069, Nfrac=069)
-Fch=1808.00 (Fvco=3616.00, Nint=069, Nfrac=070)
-Fch=1808.20 (Fvco=3616.40, Nint=069, Nfrac=071)
-Fch=1808.40 (Fvco=3616.80, Nint=069, Nfrac=072)
-Fch=1808.60 (Fvco=3617.20, Nint=069, Nfrac=073)
-Fch=1808.80 (Fvco=3617.60, Nint=069, Nfrac=074)
-Fch=1809.00 (Fvco=3618.00, Nint=069, Nfrac=075)
-Fch=1809.20 (Fvco=3618.40, Nint=069, Nfrac=076)
-Fch=1809.40 (Fvco=3618.80, Nint=069, Nfrac=077)
-Fch=1809.60 (Fvco=3619.20, Nint=069, Nfrac=078)
-Fch=1809.80 (Fvco=3619.60, Nint=069, Nfrac=079)
-Fch=1810.00 (Fvco=3620.00, Nint=069, Nfrac=080)
-Fch=1810.20 (Fvco=3620.40, Nint=069, Nfrac=081)
-Fch=1810.40 (Fvco=3620.80, Nint=069, Nfrac=082)
-Fch=1810.60 (Fvco=3621.20, Nint=069, Nfrac=083)
-Fch=1810.80 (Fvco=3621.60, Nint=069, Nfrac=084)
-Fch=1811.00 (Fvco=3622.00, Nint=069, Nfrac=085)
-Fch=1811.20 (Fvco=3622.40, Nint=069, Nfrac=086)
-Fch=1811.40 (Fvco=3622.80, Nint=069, Nfrac=087)
-Fch=1811.60 (Fvco=3623.20, Nint=069, Nfrac=088)
-Fch=1811.80 (Fvco=3623.60, Nint=069, Nfrac=089)
-Fch=1812.00 (Fvco=3624.00, Nint=069, Nfrac=090)
-Fch=1812.20 (Fvco=3624.40, Nint=069, Nfrac=091)
-Fch=1812.40 (Fvco=3624.80, Nint=069, Nfrac=092)
-Fch=1812.60 (Fvco=3625.20, Nint=069, Nfrac=093)
-Fch=1812.80 (Fvco=3625.60, Nint=069, Nfrac=094)
-Fch=1813.00 (Fvco=3626.00, Nint=069, Nfrac=095)
-Fch=1813.20 (Fvco=3626.40, Nint=069, Nfrac=096)
-Fch=1813.40 (Fvco=3626.80, Nint=069, Nfrac=097)
-Fch=1813.60 (Fvco=3627.20, Nint=069, Nfrac=098)
-Fch=1813.80 (Fvco=3627.60, Nint=069, Nfrac=099)
-Fch=1814.00 (Fvco=3628.00, Nint=069, Nfrac=100)
-Fch=1814.20 (Fvco=3628.40, Nint=069, Nfrac=101)
-Fch=1814.40 (Fvco=3628.80, Nint=069, Nfrac=102)
-Fch=1814.60 (Fvco=3629.20, Nint=069, Nfrac=103)
-Fch=1814.80 (Fvco=3629.60, Nint=069, Nfrac=104)
-Fch=1815.00 (Fvco=3630.00, Nint=069, Nfrac=105)
-Fch=1815.20 (Fvco=3630.40, Nint=069, Nfrac=106)
-Fch=1815.40 (Fvco=3630.80, Nint=069, Nfrac=107)
-Fch=1815.60 (Fvco=3631.20, Nint=069, Nfrac=108)
-Fch=1815.80 (Fvco=3631.60, Nint=069, Nfrac=109)
-Fch=1816.00 (Fvco=3632.00, Nint=069, Nfrac=110)
-Fch=1816.20 (Fvco=3632.40, Nint=069, Nfrac=111)
-Fch=1816.40 (Fvco=3632.80, Nint=069, Nfrac=112)
-Fch=1816.60 (Fvco=3633.20, Nint=069, Nfrac=113)
-Fch=1816.80 (Fvco=3633.60, Nint=069, Nfrac=114)
-Fch=1817.00 (Fvco=3634.00, Nint=069, Nfrac=115)
-Fch=1817.20 (Fvco=3634.40, Nint=069, Nfrac=116)
-Fch=1817.40 (Fvco=3634.80, Nint=069, Nfrac=117)
-Fch=1817.60 (Fvco=3635.20, Nint=069, Nfrac=118)
-Fch=1817.80 (Fvco=3635.60, Nint=069, Nfrac=119)
-Fch=1818.00 (Fvco=3636.00, Nint=069, Nfrac=120)
-Fch=1818.20 (Fvco=3636.40, Nint=069, Nfrac=121)
-Fch=1818.40 (Fvco=3636.80, Nint=069, Nfrac=122)
-Fch=1818.60 (Fvco=3637.20, Nint=069, Nfrac=123)
-Fch=1818.80 (Fvco=3637.60, Nint=069, Nfrac=124)
-Fch=1819.00 (Fvco=3638.00, Nint=069, Nfrac=125)
-Fch=1819.20 (Fvco=3638.40, Nint=069, Nfrac=126)
-Fch=1819.40 (Fvco=3638.80, Nint=069, Nfrac=127)
-Fch=1819.60 (Fvco=3639.20, Nint=069, Nfrac=128)
-Fch=1819.80 (Fvco=3639.60, Nint=069, Nfrac=129)
-Fch=1820.00 (Fvco=3640.00, Nint=069, Nfrac=130)
-Fch=1820.00 (Fvco=3640.00, Nint=070, Nfrac=000)
-Fch=1820.20 (Fvco=3640.40, Nint=070, Nfrac=001)
-Fch=1820.40 (Fvco=3640.80, Nint=070, Nfrac=002)
-Fch=1820.60 (Fvco=3641.20, Nint=070, Nfrac=003)
-Fch=1820.80 (Fvco=3641.60, Nint=070, Nfrac=004)
-Fch=1821.00 (Fvco=3642.00, Nint=070, Nfrac=005)
-Fch=1821.20 (Fvco=3642.40, Nint=070, Nfrac=006)
-Fch=1821.40 (Fvco=3642.80, Nint=070, Nfrac=007)
-Fch=1821.60 (Fvco=3643.20, Nint=070, Nfrac=008)
-Fch=1821.80 (Fvco=3643.60, Nint=070, Nfrac=009)
-Fch=1822.00 (Fvco=3644.00, Nint=070, Nfrac=010)
-Fch=1822.20 (Fvco=3644.40, Nint=070, Nfrac=011)
-Fch=1822.40 (Fvco=3644.80, Nint=070, Nfrac=012)
-Fch=1822.60 (Fvco=3645.20, Nint=070, Nfrac=013)
-Fch=1822.80 (Fvco=3645.60, Nint=070, Nfrac=014)
-Fch=1823.00 (Fvco=3646.00, Nint=070, Nfrac=015)
-Fch=1823.20 (Fvco=3646.40, Nint=070, Nfrac=016)
-Fch=1823.40 (Fvco=3646.80, Nint=070, Nfrac=017)
-Fch=1823.60 (Fvco=3647.20, Nint=070, Nfrac=018)
-Fch=1823.80 (Fvco=3647.60, Nint=070, Nfrac=019)
-Fch=1824.00 (Fvco=3648.00, Nint=070, Nfrac=020)
-Fch=1824.20 (Fvco=3648.40, Nint=070, Nfrac=021)
-Fch=1824.40 (Fvco=3648.80, Nint=070, Nfrac=022)
-Fch=1824.60 (Fvco=3649.20, Nint=070, Nfrac=023)
-Fch=1824.80 (Fvco=3649.60, Nint=070, Nfrac=024)
-Fch=1825.00 (Fvco=3650.00, Nint=070, Nfrac=025)
-Fch=1825.20 (Fvco=3650.40, Nint=070, Nfrac=026)
-Fch=1825.40 (Fvco=3650.80, Nint=070, Nfrac=027)
-Fch=1825.60 (Fvco=3651.20, Nint=070, Nfrac=028)
-Fch=1825.80 (Fvco=3651.60, Nint=070, Nfrac=029)
-Fch=1826.00 (Fvco=3652.00, Nint=070, Nfrac=030)
-Fch=1826.20 (Fvco=3652.40, Nint=070, Nfrac=031)
-Fch=1826.40 (Fvco=3652.80, Nint=070, Nfrac=032)
-Fch=1826.60 (Fvco=3653.20, Nint=070, Nfrac=033)
-Fch=1826.80 (Fvco=3653.60, Nint=070, Nfrac=034)
-Fch=1827.00 (Fvco=3654.00, Nint=070, Nfrac=035)
-Fch=1827.20 (Fvco=3654.40, Nint=070, Nfrac=036)
-Fch=1827.40 (Fvco=3654.80, Nint=070, Nfrac=037)
-Fch=1827.60 (Fvco=3655.20, Nint=070, Nfrac=038)
-Fch=1827.80 (Fvco=3655.60, Nint=070, Nfrac=039)
-Fch=1828.00 (Fvco=3656.00, Nint=070, Nfrac=040)
-Fch=1828.20 (Fvco=3656.40, Nint=070, Nfrac=041)
-Fch=1828.40 (Fvco=3656.80, Nint=070, Nfrac=042)
-Fch=1828.60 (Fvco=3657.20, Nint=070, Nfrac=043)
-Fch=1828.80 (Fvco=3657.60, Nint=070, Nfrac=044)
-Fch=1829.00 (Fvco=3658.00, Nint=070, Nfrac=045)
-Fch=1829.20 (Fvco=3658.40, Nint=070, Nfrac=046)
-Fch=1829.40 (Fvco=3658.80, Nint=070, Nfrac=047)
-Fch=1829.60 (Fvco=3659.20, Nint=070, Nfrac=048)
-Fch=1829.80 (Fvco=3659.60, Nint=070, Nfrac=049)
-Fch=1830.00 (Fvco=3660.00, Nint=070, Nfrac=050)
-Fch=1830.20 (Fvco=3660.40, Nint=070, Nfrac=051)
-Fch=1830.40 (Fvco=3660.80, Nint=070, Nfrac=052)
-Fch=1830.60 (Fvco=3661.20, Nint=070, Nfrac=053)
-Fch=1830.80 (Fvco=3661.60, Nint=070, Nfrac=054)
-Fch=1831.00 (Fvco=3662.00, Nint=070, Nfrac=055)
-Fch=1831.20 (Fvco=3662.40, Nint=070, Nfrac=056)
-Fch=1831.40 (Fvco=3662.80, Nint=070, Nfrac=057)
-Fch=1831.60 (Fvco=3663.20, Nint=070, Nfrac=058)
-Fch=1831.80 (Fvco=3663.60, Nint=070, Nfrac=059)
-Fch=1832.00 (Fvco=3664.00, Nint=070, Nfrac=060)
-Fch=1832.20 (Fvco=3664.40, Nint=070, Nfrac=061)
-Fch=1832.40 (Fvco=3664.80, Nint=070, Nfrac=062)
-Fch=1832.60 (Fvco=3665.20, Nint=070, Nfrac=063)
-Fch=1832.80 (Fvco=3665.60, Nint=070, Nfrac=064)
-Fch=1833.00 (Fvco=3666.00, Nint=070, Nfrac=065)
-Fch=1833.20 (Fvco=3666.40, Nint=070, Nfrac=066)
-Fch=1833.40 (Fvco=3666.80, Nint=070, Nfrac=067)
-Fch=1833.60 (Fvco=3667.20, Nint=070, Nfrac=068)
-Fch=1833.80 (Fvco=3667.60, Nint=070, Nfrac=069)
-Fch=1834.00 (Fvco=3668.00, Nint=070, Nfrac=070)
-Fch=1834.20 (Fvco=3668.40, Nint=070, Nfrac=071)
-Fch=1834.40 (Fvco=3668.80, Nint=070, Nfrac=072)
-Fch=1834.60 (Fvco=3669.20, Nint=070, Nfrac=073)
-Fch=1834.80 (Fvco=3669.60, Nint=070, Nfrac=074)
-Fch=1835.00 (Fvco=3670.00, Nint=070, Nfrac=075)
-Fch=1835.20 (Fvco=3670.40, Nint=070, Nfrac=076)
-Fch=1835.40 (Fvco=3670.80, Nint=070, Nfrac=077)
-Fch=1835.60 (Fvco=3671.20, Nint=070, Nfrac=078)
-Fch=1835.80 (Fvco=3671.60, Nint=070, Nfrac=079)
-Fch=1836.00 (Fvco=3672.00, Nint=070, Nfrac=080)
-Fch=1836.20 (Fvco=3672.40, Nint=070, Nfrac=081)
-Fch=1836.40 (Fvco=3672.80, Nint=070, Nfrac=082)
-Fch=1836.60 (Fvco=3673.20, Nint=070, Nfrac=083)
-Fch=1836.80 (Fvco=3673.60, Nint=070, Nfrac=084)
-Fch=1837.00 (Fvco=3674.00, Nint=070, Nfrac=085)
-Fch=1837.20 (Fvco=3674.40, Nint=070, Nfrac=086)
-Fch=1837.40 (Fvco=3674.80, Nint=070, Nfrac=087)
-Fch=1837.60 (Fvco=3675.20, Nint=070, Nfrac=088)
-Fch=1837.80 (Fvco=3675.60, Nint=070, Nfrac=089)
-Fch=1838.00 (Fvco=3676.00, Nint=070, Nfrac=090)
-Fch=1838.20 (Fvco=3676.40, Nint=070, Nfrac=091)
-Fch=1838.40 (Fvco=3676.80, Nint=070, Nfrac=092)
-Fch=1838.60 (Fvco=3677.20, Nint=070, Nfrac=093)
-Fch=1838.80 (Fvco=3677.60, Nint=070, Nfrac=094)
-Fch=1839.00 (Fvco=3678.00, Nint=070, Nfrac=095)
-Fch=1839.20 (Fvco=3678.40, Nint=070, Nfrac=096)
-Fch=1839.40 (Fvco=3678.80, Nint=070, Nfrac=097)
-Fch=1839.60 (Fvco=3679.20, Nint=070, Nfrac=098)
-Fch=1839.80 (Fvco=3679.60, Nint=070, Nfrac=099)
-Fch=1840.00 (Fvco=3680.00, Nint=070, Nfrac=100)
-Fch=1840.20 (Fvco=3680.40, Nint=070, Nfrac=101)
-Fch=1840.40 (Fvco=3680.80, Nint=070, Nfrac=102)
-Fch=1840.60 (Fvco=3681.20, Nint=070, Nfrac=103)
-Fch=1840.80 (Fvco=3681.60, Nint=070, Nfrac=104)
-Fch=1841.00 (Fvco=3682.00, Nint=070, Nfrac=105)
-Fch=1841.20 (Fvco=3682.40, Nint=070, Nfrac=106)
-Fch=1841.40 (Fvco=3682.80, Nint=070, Nfrac=107)
-Fch=1841.60 (Fvco=3683.20, Nint=070, Nfrac=108)
-Fch=1841.80 (Fvco=3683.60, Nint=070, Nfrac=109)
-Fch=1842.00 (Fvco=3684.00, Nint=070, Nfrac=110)
-Fch=1842.20 (Fvco=3684.40, Nint=070, Nfrac=111)
-Fch=1842.40 (Fvco=3684.80, Nint=070, Nfrac=112)
-Fch=1842.60 (Fvco=3685.20, Nint=070, Nfrac=113)
-Fch=1842.80 (Fvco=3685.60, Nint=070, Nfrac=114)
-Fch=1843.00 (Fvco=3686.00, Nint=070, Nfrac=115)
-Fch=1843.20 (Fvco=3686.40, Nint=070, Nfrac=116)
-Fch=1843.40 (Fvco=3686.80, Nint=070, Nfrac=117)
-Fch=1843.60 (Fvco=3687.20, Nint=070, Nfrac=118)
-Fch=1843.80 (Fvco=3687.60, Nint=070, Nfrac=119)
-Fch=1844.00 (Fvco=3688.00, Nint=070, Nfrac=120)
-Fch=1844.20 (Fvco=3688.40, Nint=070, Nfrac=121)
-Fch=1844.40 (Fvco=3688.80, Nint=070, Nfrac=122)
-Fch=1844.60 (Fvco=3689.20, Nint=070, Nfrac=123)
-Fch=1844.80 (Fvco=3689.60, Nint=070, Nfrac=124)
-Fch=1845.00 (Fvco=3690.00, Nint=070, Nfrac=125)
-Fch=1845.20 (Fvco=3690.40, Nint=070, Nfrac=126)
-Fch=1845.40 (Fvco=3690.80, Nint=070, Nfrac=127)
-Fch=1845.60 (Fvco=3691.20, Nint=070, Nfrac=128)
-Fch=1845.80 (Fvco=3691.60, Nint=070, Nfrac=129)
-Fch=1846.00 (Fvco=3692.00, Nint=070, Nfrac=130)
-Fch=1846.00 (Fvco=3692.00, Nint=071, Nfrac=000)
-Fch=1846.20 (Fvco=3692.40, Nint=071, Nfrac=001)
-Fch=1846.40 (Fvco=3692.80, Nint=071, Nfrac=002)
-Fch=1846.60 (Fvco=3693.20, Nint=071, Nfrac=003)
-Fch=1846.80 (Fvco=3693.60, Nint=071, Nfrac=004)
-Fch=1847.00 (Fvco=3694.00, Nint=071, Nfrac=005)
-Fch=1847.20 (Fvco=3694.40, Nint=071, Nfrac=006)
-Fch=1847.40 (Fvco=3694.80, Nint=071, Nfrac=007)
-Fch=1847.60 (Fvco=3695.20, Nint=071, Nfrac=008)
-Fch=1847.80 (Fvco=3695.60, Nint=071, Nfrac=009)
-Fch=1848.00 (Fvco=3696.00, Nint=071, Nfrac=010)
-Fch=1848.20 (Fvco=3696.40, Nint=071, Nfrac=011)
-Fch=1848.40 (Fvco=3696.80, Nint=071, Nfrac=012)
-Fch=1848.60 (Fvco=3697.20, Nint=071, Nfrac=013)
-Fch=1848.80 (Fvco=3697.60, Nint=071, Nfrac=014)
-Fch=1849.00 (Fvco=3698.00, Nint=071, Nfrac=015)
-Fch=1849.20 (Fvco=3698.40, Nint=071, Nfrac=016)
-Fch=1849.40 (Fvco=3698.80, Nint=071, Nfrac=017)
-Fch=1849.60 (Fvco=3699.20, Nint=071, Nfrac=018)
-Fch=1849.80 (Fvco=3699.60, Nint=071, Nfrac=019)
-Fch=1850.00 (Fvco=3700.00, Nint=071, Nfrac=020)
-Fch=1850.20 (Fvco=3700.40, Nint=071, Nfrac=021)
-Fch=1850.40 (Fvco=3700.80, Nint=071, Nfrac=022)
-Fch=1850.60 (Fvco=3701.20, Nint=071, Nfrac=023)
-Fch=1850.80 (Fvco=3701.60, Nint=071, Nfrac=024)
-Fch=1851.00 (Fvco=3702.00, Nint=071, Nfrac=025)
-Fch=1851.20 (Fvco=3702.40, Nint=071, Nfrac=026)
-Fch=1851.40 (Fvco=3702.80, Nint=071, Nfrac=027)
-Fch=1851.60 (Fvco=3703.20, Nint=071, Nfrac=028)
-Fch=1851.80 (Fvco=3703.60, Nint=071, Nfrac=029)
-Fch=1852.00 (Fvco=3704.00, Nint=071, Nfrac=030)
-Fch=1852.20 (Fvco=3704.40, Nint=071, Nfrac=031)
-Fch=1852.40 (Fvco=3704.80, Nint=071, Nfrac=032)
-Fch=1852.60 (Fvco=3705.20, Nint=071, Nfrac=033)
-Fch=1852.80 (Fvco=3705.60, Nint=071, Nfrac=034)
-Fch=1853.00 (Fvco=3706.00, Nint=071, Nfrac=035)
-Fch=1853.20 (Fvco=3706.40, Nint=071, Nfrac=036)
-Fch=1853.40 (Fvco=3706.80, Nint=071, Nfrac=037)
-Fch=1853.60 (Fvco=3707.20, Nint=071, Nfrac=038)
-Fch=1853.80 (Fvco=3707.60, Nint=071, Nfrac=039)
-Fch=1854.00 (Fvco=3708.00, Nint=071, Nfrac=040)
-Fch=1854.20 (Fvco=3708.40, Nint=071, Nfrac=041)
-Fch=1854.40 (Fvco=3708.80, Nint=071, Nfrac=042)
-Fch=1854.60 (Fvco=3709.20, Nint=071, Nfrac=043)
-Fch=1854.80 (Fvco=3709.60, Nint=071, Nfrac=044)
-Fch=1855.00 (Fvco=3710.00, Nint=071, Nfrac=045)
-Fch=1855.20 (Fvco=3710.40, Nint=071, Nfrac=046)
-Fch=1855.40 (Fvco=3710.80, Nint=071, Nfrac=047)
-Fch=1855.60 (Fvco=3711.20, Nint=071, Nfrac=048)
-Fch=1855.80 (Fvco=3711.60, Nint=071, Nfrac=049)
-Fch=1856.00 (Fvco=3712.00, Nint=071, Nfrac=050)
-Fch=1856.20 (Fvco=3712.40, Nint=071, Nfrac=051)
-Fch=1856.40 (Fvco=3712.80, Nint=071, Nfrac=052)
-Fch=1856.60 (Fvco=3713.20, Nint=071, Nfrac=053)
-Fch=1856.80 (Fvco=3713.60, Nint=071, Nfrac=054)
-Fch=1857.00 (Fvco=3714.00, Nint=071, Nfrac=055)
-Fch=1857.20 (Fvco=3714.40, Nint=071, Nfrac=056)
-Fch=1857.40 (Fvco=3714.80, Nint=071, Nfrac=057)
-Fch=1857.60 (Fvco=3715.20, Nint=071, Nfrac=058)
-Fch=1857.80 (Fvco=3715.60, Nint=071, Nfrac=059)
-Fch=1858.00 (Fvco=3716.00, Nint=071, Nfrac=060)
-Fch=1858.20 (Fvco=3716.40, Nint=071, Nfrac=061)
-Fch=1858.40 (Fvco=3716.80, Nint=071, Nfrac=062)
-Fch=1858.60 (Fvco=3717.20, Nint=071, Nfrac=063)
-Fch=1858.80 (Fvco=3717.60, Nint=071, Nfrac=064)
-Fch=1859.00 (Fvco=3718.00, Nint=071, Nfrac=065)
-Fch=1859.20 (Fvco=3718.40, Nint=071, Nfrac=066)
-Fch=1859.40 (Fvco=3718.80, Nint=071, Nfrac=067)
-Fch=1859.60 (Fvco=3719.20, Nint=071, Nfrac=068)
-Fch=1859.80 (Fvco=3719.60, Nint=071, Nfrac=069)
-Fch=1860.00 (Fvco=3720.00, Nint=071, Nfrac=070)
-Fch=1860.20 (Fvco=3720.40, Nint=071, Nfrac=071)
-Fch=1860.40 (Fvco=3720.80, Nint=071, Nfrac=072)
-Fch=1860.60 (Fvco=3721.20, Nint=071, Nfrac=073)
-Fch=1860.80 (Fvco=3721.60, Nint=071, Nfrac=074)
-Fch=1861.00 (Fvco=3722.00, Nint=071, Nfrac=075)
-Fch=1861.20 (Fvco=3722.40, Nint=071, Nfrac=076)
-Fch=1861.40 (Fvco=3722.80, Nint=071, Nfrac=077)
-Fch=1861.60 (Fvco=3723.20, Nint=071, Nfrac=078)
-Fch=1861.80 (Fvco=3723.60, Nint=071, Nfrac=079)
-Fch=1862.00 (Fvco=3724.00, Nint=071, Nfrac=080)
-Fch=1862.20 (Fvco=3724.40, Nint=071, Nfrac=081)
-Fch=1862.40 (Fvco=3724.80, Nint=071, Nfrac=082)
-Fch=1862.60 (Fvco=3725.20, Nint=071, Nfrac=083)
-Fch=1862.80 (Fvco=3725.60, Nint=071, Nfrac=084)
-Fch=1863.00 (Fvco=3726.00, Nint=071, Nfrac=085)
-Fch=1863.20 (Fvco=3726.40, Nint=071, Nfrac=086)
-Fch=1863.40 (Fvco=3726.80, Nint=071, Nfrac=087)
-Fch=1863.60 (Fvco=3727.20, Nint=071, Nfrac=088)
-Fch=1863.80 (Fvco=3727.60, Nint=071, Nfrac=089)
-Fch=1864.00 (Fvco=3728.00, Nint=071, Nfrac=090)
-Fch=1864.20 (Fvco=3728.40, Nint=071, Nfrac=091)
-Fch=1864.40 (Fvco=3728.80, Nint=071, Nfrac=092)
-Fch=1864.60 (Fvco=3729.20, Nint=071, Nfrac=093)
-Fch=1864.80 (Fvco=3729.60, Nint=071, Nfrac=094)
-Fch=1865.00 (Fvco=3730.00, Nint=071, Nfrac=095)
-Fch=1865.20 (Fvco=3730.40, Nint=071, Nfrac=096)
-Fch=1865.40 (Fvco=3730.80, Nint=071, Nfrac=097)
-Fch=1865.60 (Fvco=3731.20, Nint=071, Nfrac=098)
-Fch=1865.80 (Fvco=3731.60, Nint=071, Nfrac=099)
-Fch=1866.00 (Fvco=3732.00, Nint=071, Nfrac=100)
-Fch=1866.20 (Fvco=3732.40, Nint=071, Nfrac=101)
-Fch=1866.40 (Fvco=3732.80, Nint=071, Nfrac=102)
-Fch=1866.60 (Fvco=3733.20, Nint=071, Nfrac=103)
-Fch=1866.80 (Fvco=3733.60, Nint=071, Nfrac=104)
-Fch=1867.00 (Fvco=3734.00, Nint=071, Nfrac=105)
-Fch=1867.20 (Fvco=3734.40, Nint=071, Nfrac=106)
-Fch=1867.40 (Fvco=3734.80, Nint=071, Nfrac=107)
-Fch=1867.60 (Fvco=3735.20, Nint=071, Nfrac=108)
-Fch=1867.80 (Fvco=3735.60, Nint=071, Nfrac=109)
-Fch=1868.00 (Fvco=3736.00, Nint=071, Nfrac=110)
-Fch=1868.20 (Fvco=3736.40, Nint=071, Nfrac=111)
-Fch=1868.40 (Fvco=3736.80, Nint=071, Nfrac=112)
-Fch=1868.60 (Fvco=3737.20, Nint=071, Nfrac=113)
-Fch=1868.80 (Fvco=3737.60, Nint=071, Nfrac=114)
-Fch=1869.00 (Fvco=3738.00, Nint=071, Nfrac=115)
-Fch=1869.20 (Fvco=3738.40, Nint=071, Nfrac=116)
-Fch=1869.40 (Fvco=3738.80, Nint=071, Nfrac=117)
-Fch=1869.60 (Fvco=3739.20, Nint=071, Nfrac=118)
-Fch=1869.80 (Fvco=3739.60, Nint=071, Nfrac=119)
-Fch=1870.00 (Fvco=3740.00, Nint=071, Nfrac=120)
-Fch=1870.20 (Fvco=3740.40, Nint=071, Nfrac=121)
-Fch=1870.40 (Fvco=3740.80, Nint=071, Nfrac=122)
-Fch=1870.60 (Fvco=3741.20, Nint=071, Nfrac=123)
-Fch=1870.80 (Fvco=3741.60, Nint=071, Nfrac=124)
-Fch=1871.00 (Fvco=3742.00, Nint=071, Nfrac=125)
-Fch=1871.20 (Fvco=3742.40, Nint=071, Nfrac=126)
-Fch=1871.40 (Fvco=3742.80, Nint=071, Nfrac=127)
-Fch=1871.60 (Fvco=3743.20, Nint=071, Nfrac=128)
-Fch=1871.80 (Fvco=3743.60, Nint=071, Nfrac=129)
-Fch=1872.00 (Fvco=3744.00, Nint=071, Nfrac=130)
-Fch=1872.00 (Fvco=3744.00, Nint=072, Nfrac=000)
-Fch=1872.20 (Fvco=3744.40, Nint=072, Nfrac=001)
-Fch=1872.40 (Fvco=3744.80, Nint=072, Nfrac=002)
-Fch=1872.60 (Fvco=3745.20, Nint=072, Nfrac=003)
-Fch=1872.80 (Fvco=3745.60, Nint=072, Nfrac=004)
-Fch=1873.00 (Fvco=3746.00, Nint=072, Nfrac=005)
-Fch=1873.20 (Fvco=3746.40, Nint=072, Nfrac=006)
-Fch=1873.40 (Fvco=3746.80, Nint=072, Nfrac=007)
-Fch=1873.60 (Fvco=3747.20, Nint=072, Nfrac=008)
-Fch=1873.80 (Fvco=3747.60, Nint=072, Nfrac=009)
-Fch=1874.00 (Fvco=3748.00, Nint=072, Nfrac=010)
-Fch=1874.20 (Fvco=3748.40, Nint=072, Nfrac=011)
-Fch=1874.40 (Fvco=3748.80, Nint=072, Nfrac=012)
-Fch=1874.60 (Fvco=3749.20, Nint=072, Nfrac=013)
-Fch=1874.80 (Fvco=3749.60, Nint=072, Nfrac=014)
-Fch=1875.00 (Fvco=3750.00, Nint=072, Nfrac=015)
-Fch=1875.20 (Fvco=3750.40, Nint=072, Nfrac=016)
-Fch=1875.40 (Fvco=3750.80, Nint=072, Nfrac=017)
-Fch=1875.60 (Fvco=3751.20, Nint=072, Nfrac=018)
-Fch=1875.80 (Fvco=3751.60, Nint=072, Nfrac=019)
-Fch=1876.00 (Fvco=3752.00, Nint=072, Nfrac=020)
-Fch=1876.20 (Fvco=3752.40, Nint=072, Nfrac=021)
-Fch=1876.40 (Fvco=3752.80, Nint=072, Nfrac=022)
-Fch=1876.60 (Fvco=3753.20, Nint=072, Nfrac=023)
-Fch=1876.80 (Fvco=3753.60, Nint=072, Nfrac=024)
-Fch=1877.00 (Fvco=3754.00, Nint=072, Nfrac=025)
-Fch=1877.20 (Fvco=3754.40, Nint=072, Nfrac=026)
-Fch=1877.40 (Fvco=3754.80, Nint=072, Nfrac=027)
-Fch=1877.60 (Fvco=3755.20, Nint=072, Nfrac=028)
-Fch=1877.80 (Fvco=3755.60, Nint=072, Nfrac=029)
-Fch=1878.00 (Fvco=3756.00, Nint=072, Nfrac=030)
-Fch=1878.20 (Fvco=3756.40, Nint=072, Nfrac=031)
-Fch=1878.40 (Fvco=3756.80, Nint=072, Nfrac=032)
-Fch=1878.60 (Fvco=3757.20, Nint=072, Nfrac=033)
-Fch=1878.80 (Fvco=3757.60, Nint=072, Nfrac=034)
-Fch=1879.00 (Fvco=3758.00, Nint=072, Nfrac=035)
-Fch=1879.20 (Fvco=3758.40, Nint=072, Nfrac=036)
-Fch=1879.40 (Fvco=3758.80, Nint=072, Nfrac=037)
-Fch=1879.60 (Fvco=3759.20, Nint=072, Nfrac=038)
-Fch=1879.80 (Fvco=3759.60, Nint=072, Nfrac=039)
-Fch=1880.00 (Fvco=3760.00, Nint=072, Nfrac=040)
-Fch=1880.20 (Fvco=3760.40, Nint=072, Nfrac=041)
-Fch=1880.40 (Fvco=3760.80, Nint=072, Nfrac=042)
-Fch=1880.60 (Fvco=3761.20, Nint=072, Nfrac=043)
-Fch=1880.80 (Fvco=3761.60, Nint=072, Nfrac=044)
-Fch=1881.00 (Fvco=3762.00, Nint=072, Nfrac=045)
-Fch=1881.20 (Fvco=3762.40, Nint=072, Nfrac=046)
-Fch=1881.40 (Fvco=3762.80, Nint=072, Nfrac=047)
-Fch=1881.60 (Fvco=3763.20, Nint=072, Nfrac=048)
-Fch=1881.80 (Fvco=3763.60, Nint=072, Nfrac=049)
-Fch=1882.00 (Fvco=3764.00, Nint=072, Nfrac=050)
-Fch=1882.20 (Fvco=3764.40, Nint=072, Nfrac=051)
-Fch=1882.40 (Fvco=3764.80, Nint=072, Nfrac=052)
-Fch=1882.60 (Fvco=3765.20, Nint=072, Nfrac=053)
-Fch=1882.80 (Fvco=3765.60, Nint=072, Nfrac=054)
-Fch=1883.00 (Fvco=3766.00, Nint=072, Nfrac=055)
-Fch=1883.20 (Fvco=3766.40, Nint=072, Nfrac=056)
-Fch=1883.40 (Fvco=3766.80, Nint=072, Nfrac=057)
-Fch=1883.60 (Fvco=3767.20, Nint=072, Nfrac=058)
-Fch=1883.80 (Fvco=3767.60, Nint=072, Nfrac=059)
-Fch=1884.00 (Fvco=3768.00, Nint=072, Nfrac=060)
-Fch=1884.20 (Fvco=3768.40, Nint=072, Nfrac=061)
-Fch=1884.40 (Fvco=3768.80, Nint=072, Nfrac=062)
-Fch=1884.60 (Fvco=3769.20, Nint=072, Nfrac=063)
-Fch=1884.80 (Fvco=3769.60, Nint=072, Nfrac=064)
-Fch=1885.00 (Fvco=3770.00, Nint=072, Nfrac=065)
-Fch=1885.20 (Fvco=3770.40, Nint=072, Nfrac=066)
-Fch=1885.40 (Fvco=3770.80, Nint=072, Nfrac=067)
-Fch=1885.60 (Fvco=3771.20, Nint=072, Nfrac=068)
-Fch=1885.80 (Fvco=3771.60, Nint=072, Nfrac=069)
-Fch=1886.00 (Fvco=3772.00, Nint=072, Nfrac=070)
-Fch=1886.20 (Fvco=3772.40, Nint=072, Nfrac=071)
-Fch=1886.40 (Fvco=3772.80, Nint=072, Nfrac=072)
-Fch=1886.60 (Fvco=3773.20, Nint=072, Nfrac=073)
-Fch=1886.80 (Fvco=3773.60, Nint=072, Nfrac=074)
-Fch=1887.00 (Fvco=3774.00, Nint=072, Nfrac=075)
-Fch=1887.20 (Fvco=3774.40, Nint=072, Nfrac=076)
-Fch=1887.40 (Fvco=3774.80, Nint=072, Nfrac=077)
-Fch=1887.60 (Fvco=3775.20, Nint=072, Nfrac=078)
-Fch=1887.80 (Fvco=3775.60, Nint=072, Nfrac=079)
-Fch=1888.00 (Fvco=3776.00, Nint=072, Nfrac=080)
-Fch=1888.20 (Fvco=3776.40, Nint=072, Nfrac=081)
-Fch=1888.40 (Fvco=3776.80, Nint=072, Nfrac=082)
-Fch=1888.60 (Fvco=3777.20, Nint=072, Nfrac=083)
-Fch=1888.80 (Fvco=3777.60, Nint=072, Nfrac=084)
-Fch=1889.00 (Fvco=3778.00, Nint=072, Nfrac=085)
-Fch=1889.20 (Fvco=3778.40, Nint=072, Nfrac=086)
-Fch=1889.40 (Fvco=3778.80, Nint=072, Nfrac=087)
-Fch=1889.60 (Fvco=3779.20, Nint=072, Nfrac=088)
-Fch=1889.80 (Fvco=3779.60, Nint=072, Nfrac=089)
-Fch=1890.00 (Fvco=3780.00, Nint=072, Nfrac=090)
-Fch=1890.20 (Fvco=3780.40, Nint=072, Nfrac=091)
-Fch=1890.40 (Fvco=3780.80, Nint=072, Nfrac=092)
-Fch=1890.60 (Fvco=3781.20, Nint=072, Nfrac=093)
-Fch=1890.80 (Fvco=3781.60, Nint=072, Nfrac=094)
-Fch=1891.00 (Fvco=3782.00, Nint=072, Nfrac=095)
-Fch=1891.20 (Fvco=3782.40, Nint=072, Nfrac=096)
-Fch=1891.40 (Fvco=3782.80, Nint=072, Nfrac=097)
-Fch=1891.60 (Fvco=3783.20, Nint=072, Nfrac=098)
-Fch=1891.80 (Fvco=3783.60, Nint=072, Nfrac=099)
-Fch=1892.00 (Fvco=3784.00, Nint=072, Nfrac=100)
-Fch=1892.20 (Fvco=3784.40, Nint=072, Nfrac=101)
-Fch=1892.40 (Fvco=3784.80, Nint=072, Nfrac=102)
-Fch=1892.60 (Fvco=3785.20, Nint=072, Nfrac=103)
-Fch=1892.80 (Fvco=3785.60, Nint=072, Nfrac=104)
-Fch=1893.00 (Fvco=3786.00, Nint=072, Nfrac=105)
-Fch=1893.20 (Fvco=3786.40, Nint=072, Nfrac=106)
-Fch=1893.40 (Fvco=3786.80, Nint=072, Nfrac=107)
-Fch=1893.60 (Fvco=3787.20, Nint=072, Nfrac=108)
-Fch=1893.80 (Fvco=3787.60, Nint=072, Nfrac=109)
-Fch=1894.00 (Fvco=3788.00, Nint=072, Nfrac=110)
-Fch=1894.20 (Fvco=3788.40, Nint=072, Nfrac=111)
-Fch=1894.40 (Fvco=3788.80, Nint=072, Nfrac=112)
-Fch=1894.60 (Fvco=3789.20, Nint=072, Nfrac=113)
-Fch=1894.80 (Fvco=3789.60, Nint=072, Nfrac=114)
-Fch=1895.00 (Fvco=3790.00, Nint=072, Nfrac=115)
-Fch=1895.20 (Fvco=3790.40, Nint=072, Nfrac=116)
-Fch=1895.40 (Fvco=3790.80, Nint=072, Nfrac=117)
-Fch=1895.60 (Fvco=3791.20, Nint=072, Nfrac=118)
-Fch=1895.80 (Fvco=3791.60, Nint=072, Nfrac=119)
-Fch=1896.00 (Fvco=3792.00, Nint=072, Nfrac=120)
-Fch=1896.20 (Fvco=3792.40, Nint=072, Nfrac=121)
-Fch=1896.40 (Fvco=3792.80, Nint=072, Nfrac=122)
-Fch=1896.60 (Fvco=3793.20, Nint=072, Nfrac=123)
-Fch=1896.80 (Fvco=3793.60, Nint=072, Nfrac=124)
-Fch=1897.00 (Fvco=3794.00, Nint=072, Nfrac=125)
-Fch=1897.20 (Fvco=3794.40, Nint=072, Nfrac=126)
-Fch=1897.40 (Fvco=3794.80, Nint=072, Nfrac=127)
-Fch=1897.60 (Fvco=3795.20, Nint=072, Nfrac=128)
-Fch=1897.80 (Fvco=3795.60, Nint=072, Nfrac=129)
-Fch=1898.00 (Fvco=3796.00, Nint=072, Nfrac=130)
-Fch=1898.00 (Fvco=3796.00, Nint=073, Nfrac=000)
-Fch=1898.20 (Fvco=3796.40, Nint=073, Nfrac=001)
-Fch=1898.40 (Fvco=3796.80, Nint=073, Nfrac=002)
-Fch=1898.60 (Fvco=3797.20, Nint=073, Nfrac=003)
-Fch=1898.80 (Fvco=3797.60, Nint=073, Nfrac=004)
-Fch=1899.00 (Fvco=3798.00, Nint=073, Nfrac=005)
-Fch=1899.20 (Fvco=3798.40, Nint=073, Nfrac=006)
-Fch=1899.40 (Fvco=3798.80, Nint=073, Nfrac=007)
-Fch=1899.60 (Fvco=3799.20, Nint=073, Nfrac=008)
-Fch=1899.80 (Fvco=3799.60, Nint=073, Nfrac=009)
-Fch=1900.00 (Fvco=3800.00, Nint=073, Nfrac=010)
-Fch=1900.20 (Fvco=3800.40, Nint=073, Nfrac=011)
-Fch=1900.40 (Fvco=3800.80, Nint=073, Nfrac=012)
-Fch=1900.60 (Fvco=3801.20, Nint=073, Nfrac=013)
-Fch=1900.80 (Fvco=3801.60, Nint=073, Nfrac=014)
-Fch=1901.00 (Fvco=3802.00, Nint=073, Nfrac=015)
-Fch=1901.20 (Fvco=3802.40, Nint=073, Nfrac=016)
-Fch=1901.40 (Fvco=3802.80, Nint=073, Nfrac=017)
-Fch=1901.60 (Fvco=3803.20, Nint=073, Nfrac=018)
-Fch=1901.80 (Fvco=3803.60, Nint=073, Nfrac=019)
-Fch=1902.00 (Fvco=3804.00, Nint=073, Nfrac=020)
-Fch=1902.20 (Fvco=3804.40, Nint=073, Nfrac=021)
-Fch=1902.40 (Fvco=3804.80, Nint=073, Nfrac=022)
-Fch=1902.60 (Fvco=3805.20, Nint=073, Nfrac=023)
-Fch=1902.80 (Fvco=3805.60, Nint=073, Nfrac=024)
-Fch=1903.00 (Fvco=3806.00, Nint=073, Nfrac=025)
-Fch=1903.20 (Fvco=3806.40, Nint=073, Nfrac=026)
-Fch=1903.40 (Fvco=3806.80, Nint=073, Nfrac=027)
-Fch=1903.60 (Fvco=3807.20, Nint=073, Nfrac=028)
-Fch=1903.80 (Fvco=3807.60, Nint=073, Nfrac=029)
-Fch=1904.00 (Fvco=3808.00, Nint=073, Nfrac=030)
-Fch=1904.20 (Fvco=3808.40, Nint=073, Nfrac=031)
-Fch=1904.40 (Fvco=3808.80, Nint=073, Nfrac=032)
-Fch=1904.60 (Fvco=3809.20, Nint=073, Nfrac=033)
-Fch=1904.80 (Fvco=3809.60, Nint=073, Nfrac=034)
-Fch=1905.00 (Fvco=3810.00, Nint=073, Nfrac=035)
-Fch=1905.20 (Fvco=3810.40, Nint=073, Nfrac=036)
-Fch=1905.40 (Fvco=3810.80, Nint=073, Nfrac=037)
-Fch=1905.60 (Fvco=3811.20, Nint=073, Nfrac=038)
-Fch=1905.80 (Fvco=3811.60, Nint=073, Nfrac=039)
-Fch=1906.00 (Fvco=3812.00, Nint=073, Nfrac=040)
-Fch=1906.20 (Fvco=3812.40, Nint=073, Nfrac=041)
-Fch=1906.40 (Fvco=3812.80, Nint=073, Nfrac=042)
-Fch=1906.60 (Fvco=3813.20, Nint=073, Nfrac=043)
-Fch=1906.80 (Fvco=3813.60, Nint=073, Nfrac=044)
-Fch=1907.00 (Fvco=3814.00, Nint=073, Nfrac=045)
-Fch=1907.20 (Fvco=3814.40, Nint=073, Nfrac=046)
-Fch=1907.40 (Fvco=3814.80, Nint=073, Nfrac=047)
-Fch=1907.60 (Fvco=3815.20, Nint=073, Nfrac=048)
-Fch=1907.80 (Fvco=3815.60, Nint=073, Nfrac=049)
-Fch=1908.00 (Fvco=3816.00, Nint=073, Nfrac=050)
-Fch=1908.20 (Fvco=3816.40, Nint=073, Nfrac=051)
-Fch=1908.40 (Fvco=3816.80, Nint=073, Nfrac=052)
-Fch=1908.60 (Fvco=3817.20, Nint=073, Nfrac=053)
-Fch=1908.80 (Fvco=3817.60, Nint=073, Nfrac=054)
-Fch=1909.00 (Fvco=3818.00, Nint=073, Nfrac=055)
-Fch=1909.20 (Fvco=3818.40, Nint=073, Nfrac=056)
-Fch=1909.40 (Fvco=3818.80, Nint=073, Nfrac=057)
-Fch=1909.60 (Fvco=3819.20, Nint=073, Nfrac=058)
-Fch=1909.80 (Fvco=3819.60, Nint=073, Nfrac=059)
-Fch=1910.00 (Fvco=3820.00, Nint=073, Nfrac=060)
-Fch=1910.20 (Fvco=3820.40, Nint=073, Nfrac=061)
-Fch=1910.40 (Fvco=3820.80, Nint=073, Nfrac=062)
-Fch=1910.60 (Fvco=3821.20, Nint=073, Nfrac=063)
-Fch=1910.80 (Fvco=3821.60, Nint=073, Nfrac=064)
-Fch=1911.00 (Fvco=3822.00, Nint=073, Nfrac=065)
-Fch=1911.20 (Fvco=3822.40, Nint=073, Nfrac=066)
-Fch=1911.40 (Fvco=3822.80, Nint=073, Nfrac=067)
-Fch=1911.60 (Fvco=3823.20, Nint=073, Nfrac=068)
-Fch=1911.80 (Fvco=3823.60, Nint=073, Nfrac=069)
-Fch=1912.00 (Fvco=3824.00, Nint=073, Nfrac=070)
-Fch=1912.20 (Fvco=3824.40, Nint=073, Nfrac=071)
-Fch=1912.40 (Fvco=3824.80, Nint=073, Nfrac=072)
-Fch=1912.60 (Fvco=3825.20, Nint=073, Nfrac=073)
-Fch=1912.80 (Fvco=3825.60, Nint=073, Nfrac=074)
-Fch=1913.00 (Fvco=3826.00, Nint=073, Nfrac=075)
-Fch=1913.20 (Fvco=3826.40, Nint=073, Nfrac=076)
-Fch=1913.40 (Fvco=3826.80, Nint=073, Nfrac=077)
-Fch=1913.60 (Fvco=3827.20, Nint=073, Nfrac=078)
-Fch=1913.80 (Fvco=3827.60, Nint=073, Nfrac=079)
-Fch=1914.00 (Fvco=3828.00, Nint=073, Nfrac=080)
-Fch=1914.20 (Fvco=3828.40, Nint=073, Nfrac=081)
-Fch=1914.40 (Fvco=3828.80, Nint=073, Nfrac=082)
-Fch=1914.60 (Fvco=3829.20, Nint=073, Nfrac=083)
-Fch=1914.80 (Fvco=3829.60, Nint=073, Nfrac=084)
-Fch=1915.00 (Fvco=3830.00, Nint=073, Nfrac=085)
-Fch=1915.20 (Fvco=3830.40, Nint=073, Nfrac=086)
-Fch=1915.40 (Fvco=3830.80, Nint=073, Nfrac=087)
-Fch=1915.60 (Fvco=3831.20, Nint=073, Nfrac=088)
-Fch=1915.80 (Fvco=3831.60, Nint=073, Nfrac=089)
-Fch=1916.00 (Fvco=3832.00, Nint=073, Nfrac=090)
-Fch=1916.20 (Fvco=3832.40, Nint=073, Nfrac=091)
-Fch=1916.40 (Fvco=3832.80, Nint=073, Nfrac=092)
-Fch=1916.60 (Fvco=3833.20, Nint=073, Nfrac=093)
-Fch=1916.80 (Fvco=3833.60, Nint=073, Nfrac=094)
-Fch=1917.00 (Fvco=3834.00, Nint=073, Nfrac=095)
-Fch=1917.20 (Fvco=3834.40, Nint=073, Nfrac=096)
-Fch=1917.40 (Fvco=3834.80, Nint=073, Nfrac=097)
-Fch=1917.60 (Fvco=3835.20, Nint=073, Nfrac=098)
-Fch=1917.80 (Fvco=3835.60, Nint=073, Nfrac=099)
-Fch=1918.00 (Fvco=3836.00, Nint=073, Nfrac=100)
-Fch=1918.20 (Fvco=3836.40, Nint=073, Nfrac=101)
-Fch=1918.40 (Fvco=3836.80, Nint=073, Nfrac=102)
-Fch=1918.60 (Fvco=3837.20, Nint=073, Nfrac=103)
-Fch=1918.80 (Fvco=3837.60, Nint=073, Nfrac=104)
-Fch=1919.00 (Fvco=3838.00, Nint=073, Nfrac=105)
-Fch=1919.20 (Fvco=3838.40, Nint=073, Nfrac=106)
-Fch=1919.40 (Fvco=3838.80, Nint=073, Nfrac=107)
-Fch=1919.60 (Fvco=3839.20, Nint=073, Nfrac=108)
-Fch=1919.80 (Fvco=3839.60, Nint=073, Nfrac=109)
-Fch=1920.00 (Fvco=3840.00, Nint=073, Nfrac=110)
-Fch=1920.20 (Fvco=3840.40, Nint=073, Nfrac=111)
-Fch=1920.40 (Fvco=3840.80, Nint=073, Nfrac=112)
-Fch=1920.60 (Fvco=3841.20, Nint=073, Nfrac=113)
-Fch=1920.80 (Fvco=3841.60, Nint=073, Nfrac=114)
-Fch=1921.00 (Fvco=3842.00, Nint=073, Nfrac=115)
-Fch=1921.20 (Fvco=3842.40, Nint=073, Nfrac=116)
-Fch=1921.40 (Fvco=3842.80, Nint=073, Nfrac=117)
-Fch=1921.60 (Fvco=3843.20, Nint=073, Nfrac=118)
-Fch=1921.80 (Fvco=3843.60, Nint=073, Nfrac=119)
-Fch=1922.00 (Fvco=3844.00, Nint=073, Nfrac=120)
-Fch=1922.20 (Fvco=3844.40, Nint=073, Nfrac=121)
-Fch=1922.40 (Fvco=3844.80, Nint=073, Nfrac=122)
-Fch=1922.60 (Fvco=3845.20, Nint=073, Nfrac=123)
-Fch=1922.80 (Fvco=3845.60, Nint=073, Nfrac=124)
-Fch=1923.00 (Fvco=3846.00, Nint=073, Nfrac=125)
-Fch=1923.20 (Fvco=3846.40, Nint=073, Nfrac=126)
-Fch=1923.40 (Fvco=3846.80, Nint=073, Nfrac=127)
-Fch=1923.60 (Fvco=3847.20, Nint=073, Nfrac=128)
-Fch=1923.80 (Fvco=3847.60, Nint=073, Nfrac=129)
-Fch=1924.00 (Fvco=3848.00, Nint=073, Nfrac=130)
-Fch=1924.00 (Fvco=3848.00, Nint=074, Nfrac=000)
-Fch=1924.20 (Fvco=3848.40, Nint=074, Nfrac=001)
-Fch=1924.40 (Fvco=3848.80, Nint=074, Nfrac=002)
-Fch=1924.60 (Fvco=3849.20, Nint=074, Nfrac=003)
-Fch=1924.80 (Fvco=3849.60, Nint=074, Nfrac=004)
-Fch=1925.00 (Fvco=3850.00, Nint=074, Nfrac=005)
-Fch=1925.20 (Fvco=3850.40, Nint=074, Nfrac=006)
-Fch=1925.40 (Fvco=3850.80, Nint=074, Nfrac=007)
-Fch=1925.60 (Fvco=3851.20, Nint=074, Nfrac=008)
-Fch=1925.80 (Fvco=3851.60, Nint=074, Nfrac=009)
-Fch=1926.00 (Fvco=3852.00, Nint=074, Nfrac=010)
-Fch=1926.20 (Fvco=3852.40, Nint=074, Nfrac=011)
-Fch=1926.40 (Fvco=3852.80, Nint=074, Nfrac=012)
-Fch=1926.60 (Fvco=3853.20, Nint=074, Nfrac=013)
-Fch=1926.80 (Fvco=3853.60, Nint=074, Nfrac=014)
-Fch=1927.00 (Fvco=3854.00, Nint=074, Nfrac=015)
-Fch=1927.20 (Fvco=3854.40, Nint=074, Nfrac=016)
-Fch=1927.40 (Fvco=3854.80, Nint=074, Nfrac=017)
-Fch=1927.60 (Fvco=3855.20, Nint=074, Nfrac=018)
-Fch=1927.80 (Fvco=3855.60, Nint=074, Nfrac=019)
-Fch=1928.00 (Fvco=3856.00, Nint=074, Nfrac=020)
-Fch=1928.20 (Fvco=3856.40, Nint=074, Nfrac=021)
-Fch=1928.40 (Fvco=3856.80, Nint=074, Nfrac=022)
-Fch=1928.60 (Fvco=3857.20, Nint=074, Nfrac=023)
-Fch=1928.80 (Fvco=3857.60, Nint=074, Nfrac=024)
-Fch=1929.00 (Fvco=3858.00, Nint=074, Nfrac=025)
-Fch=1929.20 (Fvco=3858.40, Nint=074, Nfrac=026)
-Fch=1929.40 (Fvco=3858.80, Nint=074, Nfrac=027)
-Fch=1929.60 (Fvco=3859.20, Nint=074, Nfrac=028)
-Fch=1929.80 (Fvco=3859.60, Nint=074, Nfrac=029)
-Fch=1930.00 (Fvco=3860.00, Nint=074, Nfrac=030)
-Fch=1930.20 (Fvco=3860.40, Nint=074, Nfrac=031)
-Fch=1930.40 (Fvco=3860.80, Nint=074, Nfrac=032)
-Fch=1930.60 (Fvco=3861.20, Nint=074, Nfrac=033)
-Fch=1930.80 (Fvco=3861.60, Nint=074, Nfrac=034)
-Fch=1931.00 (Fvco=3862.00, Nint=074, Nfrac=035)
-Fch=1931.20 (Fvco=3862.40, Nint=074, Nfrac=036)
-Fch=1931.40 (Fvco=3862.80, Nint=074, Nfrac=037)
-Fch=1931.60 (Fvco=3863.20, Nint=074, Nfrac=038)
-Fch=1931.80 (Fvco=3863.60, Nint=074, Nfrac=039)
-Fch=1932.00 (Fvco=3864.00, Nint=074, Nfrac=040)
-Fch=1932.20 (Fvco=3864.40, Nint=074, Nfrac=041)
-Fch=1932.40 (Fvco=3864.80, Nint=074, Nfrac=042)
-Fch=1932.60 (Fvco=3865.20, Nint=074, Nfrac=043)
-Fch=1932.80 (Fvco=3865.60, Nint=074, Nfrac=044)
-Fch=1933.00 (Fvco=3866.00, Nint=074, Nfrac=045)
-Fch=1933.20 (Fvco=3866.40, Nint=074, Nfrac=046)
-Fch=1933.40 (Fvco=3866.80, Nint=074, Nfrac=047)
-Fch=1933.60 (Fvco=3867.20, Nint=074, Nfrac=048)
-Fch=1933.80 (Fvco=3867.60, Nint=074, Nfrac=049)
-Fch=1934.00 (Fvco=3868.00, Nint=074, Nfrac=050)
-Fch=1934.20 (Fvco=3868.40, Nint=074, Nfrac=051)
-Fch=1934.40 (Fvco=3868.80, Nint=074, Nfrac=052)
-Fch=1934.60 (Fvco=3869.20, Nint=074, Nfrac=053)
-Fch=1934.80 (Fvco=3869.60, Nint=074, Nfrac=054)
-Fch=1935.00 (Fvco=3870.00, Nint=074, Nfrac=055)
-Fch=1935.20 (Fvco=3870.40, Nint=074, Nfrac=056)
-Fch=1935.40 (Fvco=3870.80, Nint=074, Nfrac=057)
-Fch=1935.60 (Fvco=3871.20, Nint=074, Nfrac=058)
-Fch=1935.80 (Fvco=3871.60, Nint=074, Nfrac=059)
-Fch=1936.00 (Fvco=3872.00, Nint=074, Nfrac=060)
-Fch=1936.20 (Fvco=3872.40, Nint=074, Nfrac=061)
-Fch=1936.40 (Fvco=3872.80, Nint=074, Nfrac=062)
-Fch=1936.60 (Fvco=3873.20, Nint=074, Nfrac=063)
-Fch=1936.80 (Fvco=3873.60, Nint=074, Nfrac=064)
-Fch=1937.00 (Fvco=3874.00, Nint=074, Nfrac=065)
-Fch=1937.20 (Fvco=3874.40, Nint=074, Nfrac=066)
-Fch=1937.40 (Fvco=3874.80, Nint=074, Nfrac=067)
-Fch=1937.60 (Fvco=3875.20, Nint=074, Nfrac=068)
-Fch=1937.80 (Fvco=3875.60, Nint=074, Nfrac=069)
-Fch=1938.00 (Fvco=3876.00, Nint=074, Nfrac=070)
-Fch=1938.20 (Fvco=3876.40, Nint=074, Nfrac=071)
-Fch=1938.40 (Fvco=3876.80, Nint=074, Nfrac=072)
-Fch=1938.60 (Fvco=3877.20, Nint=074, Nfrac=073)
-Fch=1938.80 (Fvco=3877.60, Nint=074, Nfrac=074)
-Fch=1939.00 (Fvco=3878.00, Nint=074, Nfrac=075)
-Fch=1939.20 (Fvco=3878.40, Nint=074, Nfrac=076)
-Fch=1939.40 (Fvco=3878.80, Nint=074, Nfrac=077)
-Fch=1939.60 (Fvco=3879.20, Nint=074, Nfrac=078)
-Fch=1939.80 (Fvco=3879.60, Nint=074, Nfrac=079)
-Fch=1940.00 (Fvco=3880.00, Nint=074, Nfrac=080)
-Fch=1940.20 (Fvco=3880.40, Nint=074, Nfrac=081)
-Fch=1940.40 (Fvco=3880.80, Nint=074, Nfrac=082)
-Fch=1940.60 (Fvco=3881.20, Nint=074, Nfrac=083)
-Fch=1940.80 (Fvco=3881.60, Nint=074, Nfrac=084)
-Fch=1941.00 (Fvco=3882.00, Nint=074, Nfrac=085)
-Fch=1941.20 (Fvco=3882.40, Nint=074, Nfrac=086)
-Fch=1941.40 (Fvco=3882.80, Nint=074, Nfrac=087)
-Fch=1941.60 (Fvco=3883.20, Nint=074, Nfrac=088)
-Fch=1941.80 (Fvco=3883.60, Nint=074, Nfrac=089)
-Fch=1942.00 (Fvco=3884.00, Nint=074, Nfrac=090)
-Fch=1942.20 (Fvco=3884.40, Nint=074, Nfrac=091)
-Fch=1942.40 (Fvco=3884.80, Nint=074, Nfrac=092)
-Fch=1942.60 (Fvco=3885.20, Nint=074, Nfrac=093)
-Fch=1942.80 (Fvco=3885.60, Nint=074, Nfrac=094)
-Fch=1943.00 (Fvco=3886.00, Nint=074, Nfrac=095)
-Fch=1943.20 (Fvco=3886.40, Nint=074, Nfrac=096)
-Fch=1943.40 (Fvco=3886.80, Nint=074, Nfrac=097)
-Fch=1943.60 (Fvco=3887.20, Nint=074, Nfrac=098)
-Fch=1943.80 (Fvco=3887.60, Nint=074, Nfrac=099)
-Fch=1944.00 (Fvco=3888.00, Nint=074, Nfrac=100)
-Fch=1944.20 (Fvco=3888.40, Nint=074, Nfrac=101)
-Fch=1944.40 (Fvco=3888.80, Nint=074, Nfrac=102)
-Fch=1944.60 (Fvco=3889.20, Nint=074, Nfrac=103)
-Fch=1944.80 (Fvco=3889.60, Nint=074, Nfrac=104)
-Fch=1945.00 (Fvco=3890.00, Nint=074, Nfrac=105)
-Fch=1945.20 (Fvco=3890.40, Nint=074, Nfrac=106)
-Fch=1945.40 (Fvco=3890.80, Nint=074, Nfrac=107)
-Fch=1945.60 (Fvco=3891.20, Nint=074, Nfrac=108)
-Fch=1945.80 (Fvco=3891.60, Nint=074, Nfrac=109)
-Fch=1946.00 (Fvco=3892.00, Nint=074, Nfrac=110)
-Fch=1946.20 (Fvco=3892.40, Nint=074, Nfrac=111)
-Fch=1946.40 (Fvco=3892.80, Nint=074, Nfrac=112)
-Fch=1946.60 (Fvco=3893.20, Nint=074, Nfrac=113)
-Fch=1946.80 (Fvco=3893.60, Nint=074, Nfrac=114)
-Fch=1947.00 (Fvco=3894.00, Nint=074, Nfrac=115)
-Fch=1947.20 (Fvco=3894.40, Nint=074, Nfrac=116)
-Fch=1947.40 (Fvco=3894.80, Nint=074, Nfrac=117)
-Fch=1947.60 (Fvco=3895.20, Nint=074, Nfrac=118)
-Fch=1947.80 (Fvco=3895.60, Nint=074, Nfrac=119)
-Fch=1948.00 (Fvco=3896.00, Nint=074, Nfrac=120)
-Fch=1948.20 (Fvco=3896.40, Nint=074, Nfrac=121)
-Fch=1948.40 (Fvco=3896.80, Nint=074, Nfrac=122)
-Fch=1948.60 (Fvco=3897.20, Nint=074, Nfrac=123)
-Fch=1948.80 (Fvco=3897.60, Nint=074, Nfrac=124)
-Fch=1949.00 (Fvco=3898.00, Nint=074, Nfrac=125)
-Fch=1949.20 (Fvco=3898.40, Nint=074, Nfrac=126)
-Fch=1949.40 (Fvco=3898.80, Nint=074, Nfrac=127)
-Fch=1949.60 (Fvco=3899.20, Nint=074, Nfrac=128)
-Fch=1949.80 (Fvco=3899.60, Nint=074, Nfrac=129)
-Fch=1950.00 (Fvco=3900.00, Nint=074, Nfrac=130)
-Fch=1950.00 (Fvco=3900.00, Nint=075, Nfrac=000)
-Fch=1950.20 (Fvco=3900.40, Nint=075, Nfrac=001)
-Fch=1950.40 (Fvco=3900.80, Nint=075, Nfrac=002)
-Fch=1950.60 (Fvco=3901.20, Nint=075, Nfrac=003)
-Fch=1950.80 (Fvco=3901.60, Nint=075, Nfrac=004)
-Fch=1951.00 (Fvco=3902.00, Nint=075, Nfrac=005)
-Fch=1951.20 (Fvco=3902.40, Nint=075, Nfrac=006)
-Fch=1951.40 (Fvco=3902.80, Nint=075, Nfrac=007)
-Fch=1951.60 (Fvco=3903.20, Nint=075, Nfrac=008)
-Fch=1951.80 (Fvco=3903.60, Nint=075, Nfrac=009)
-Fch=1952.00 (Fvco=3904.00, Nint=075, Nfrac=010)
-Fch=1952.20 (Fvco=3904.40, Nint=075, Nfrac=011)
-Fch=1952.40 (Fvco=3904.80, Nint=075, Nfrac=012)
-Fch=1952.60 (Fvco=3905.20, Nint=075, Nfrac=013)
-Fch=1952.80 (Fvco=3905.60, Nint=075, Nfrac=014)
-Fch=1953.00 (Fvco=3906.00, Nint=075, Nfrac=015)
-Fch=1953.20 (Fvco=3906.40, Nint=075, Nfrac=016)
-Fch=1953.40 (Fvco=3906.80, Nint=075, Nfrac=017)
-Fch=1953.60 (Fvco=3907.20, Nint=075, Nfrac=018)
-Fch=1953.80 (Fvco=3907.60, Nint=075, Nfrac=019)
-Fch=1954.00 (Fvco=3908.00, Nint=075, Nfrac=020)
-Fch=1954.20 (Fvco=3908.40, Nint=075, Nfrac=021)
-Fch=1954.40 (Fvco=3908.80, Nint=075, Nfrac=022)
-Fch=1954.60 (Fvco=3909.20, Nint=075, Nfrac=023)
-Fch=1954.80 (Fvco=3909.60, Nint=075, Nfrac=024)
-Fch=1955.00 (Fvco=3910.00, Nint=075, Nfrac=025)
-Fch=1955.20 (Fvco=3910.40, Nint=075, Nfrac=026)
-Fch=1955.40 (Fvco=3910.80, Nint=075, Nfrac=027)
-Fch=1955.60 (Fvco=3911.20, Nint=075, Nfrac=028)
-Fch=1955.80 (Fvco=3911.60, Nint=075, Nfrac=029)
-Fch=1956.00 (Fvco=3912.00, Nint=075, Nfrac=030)
-Fch=1956.20 (Fvco=3912.40, Nint=075, Nfrac=031)
-Fch=1956.40 (Fvco=3912.80, Nint=075, Nfrac=032)
-Fch=1956.60 (Fvco=3913.20, Nint=075, Nfrac=033)
-Fch=1956.80 (Fvco=3913.60, Nint=075, Nfrac=034)
-Fch=1957.00 (Fvco=3914.00, Nint=075, Nfrac=035)
-Fch=1957.20 (Fvco=3914.40, Nint=075, Nfrac=036)
-Fch=1957.40 (Fvco=3914.80, Nint=075, Nfrac=037)
-Fch=1957.60 (Fvco=3915.20, Nint=075, Nfrac=038)
-Fch=1957.80 (Fvco=3915.60, Nint=075, Nfrac=039)
-Fch=1958.00 (Fvco=3916.00, Nint=075, Nfrac=040)
-Fch=1958.20 (Fvco=3916.40, Nint=075, Nfrac=041)
-Fch=1958.40 (Fvco=3916.80, Nint=075, Nfrac=042)
-Fch=1958.60 (Fvco=3917.20, Nint=075, Nfrac=043)
-Fch=1958.80 (Fvco=3917.60, Nint=075, Nfrac=044)
-Fch=1959.00 (Fvco=3918.00, Nint=075, Nfrac=045)
-Fch=1959.20 (Fvco=3918.40, Nint=075, Nfrac=046)
-Fch=1959.40 (Fvco=3918.80, Nint=075, Nfrac=047)
-Fch=1959.60 (Fvco=3919.20, Nint=075, Nfrac=048)
-Fch=1959.80 (Fvco=3919.60, Nint=075, Nfrac=049)
-Fch=1960.00 (Fvco=3920.00, Nint=075, Nfrac=050)
-Fch=1960.20 (Fvco=3920.40, Nint=075, Nfrac=051)
-Fch=1960.40 (Fvco=3920.80, Nint=075, Nfrac=052)
-Fch=1960.60 (Fvco=3921.20, Nint=075, Nfrac=053)
-Fch=1960.80 (Fvco=3921.60, Nint=075, Nfrac=054)
-Fch=1961.00 (Fvco=3922.00, Nint=075, Nfrac=055)
-Fch=1961.20 (Fvco=3922.40, Nint=075, Nfrac=056)
-Fch=1961.40 (Fvco=3922.80, Nint=075, Nfrac=057)
-Fch=1961.60 (Fvco=3923.20, Nint=075, Nfrac=058)
-Fch=1961.80 (Fvco=3923.60, Nint=075, Nfrac=059)
-Fch=1962.00 (Fvco=3924.00, Nint=075, Nfrac=060)
-Fch=1962.20 (Fvco=3924.40, Nint=075, Nfrac=061)
-Fch=1962.40 (Fvco=3924.80, Nint=075, Nfrac=062)
-Fch=1962.60 (Fvco=3925.20, Nint=075, Nfrac=063)
-Fch=1962.80 (Fvco=3925.60, Nint=075, Nfrac=064)
-Fch=1963.00 (Fvco=3926.00, Nint=075, Nfrac=065)
-Fch=1963.20 (Fvco=3926.40, Nint=075, Nfrac=066)
-Fch=1963.40 (Fvco=3926.80, Nint=075, Nfrac=067)
-Fch=1963.60 (Fvco=3927.20, Nint=075, Nfrac=068)
-Fch=1963.80 (Fvco=3927.60, Nint=075, Nfrac=069)
-Fch=1964.00 (Fvco=3928.00, Nint=075, Nfrac=070)
-Fch=1964.20 (Fvco=3928.40, Nint=075, Nfrac=071)
-Fch=1964.40 (Fvco=3928.80, Nint=075, Nfrac=072)
-Fch=1964.60 (Fvco=3929.20, Nint=075, Nfrac=073)
-Fch=1964.80 (Fvco=3929.60, Nint=075, Nfrac=074)
-Fch=1965.00 (Fvco=3930.00, Nint=075, Nfrac=075)
-Fch=1965.20 (Fvco=3930.40, Nint=075, Nfrac=076)
-Fch=1965.40 (Fvco=3930.80, Nint=075, Nfrac=077)
-Fch=1965.60 (Fvco=3931.20, Nint=075, Nfrac=078)
-Fch=1965.80 (Fvco=3931.60, Nint=075, Nfrac=079)
-Fch=1966.00 (Fvco=3932.00, Nint=075, Nfrac=080)
-Fch=1966.20 (Fvco=3932.40, Nint=075, Nfrac=081)
-Fch=1966.40 (Fvco=3932.80, Nint=075, Nfrac=082)
-Fch=1966.60 (Fvco=3933.20, Nint=075, Nfrac=083)
-Fch=1966.80 (Fvco=3933.60, Nint=075, Nfrac=084)
-Fch=1967.00 (Fvco=3934.00, Nint=075, Nfrac=085)
-Fch=1967.20 (Fvco=3934.40, Nint=075, Nfrac=086)
-Fch=1967.40 (Fvco=3934.80, Nint=075, Nfrac=087)
-Fch=1967.60 (Fvco=3935.20, Nint=075, Nfrac=088)
-Fch=1967.80 (Fvco=3935.60, Nint=075, Nfrac=089)
-Fch=1968.00 (Fvco=3936.00, Nint=075, Nfrac=090)
-Fch=1968.20 (Fvco=3936.40, Nint=075, Nfrac=091)
-Fch=1968.40 (Fvco=3936.80, Nint=075, Nfrac=092)
-Fch=1968.60 (Fvco=3937.20, Nint=075, Nfrac=093)
-Fch=1968.80 (Fvco=3937.60, Nint=075, Nfrac=094)
-Fch=1969.00 (Fvco=3938.00, Nint=075, Nfrac=095)
-Fch=1969.20 (Fvco=3938.40, Nint=075, Nfrac=096)
-Fch=1969.40 (Fvco=3938.80, Nint=075, Nfrac=097)
-Fch=1969.60 (Fvco=3939.20, Nint=075, Nfrac=098)
-Fch=1969.80 (Fvco=3939.60, Nint=075, Nfrac=099)
-Fch=1970.00 (Fvco=3940.00, Nint=075, Nfrac=100)
-Fch=1970.20 (Fvco=3940.40, Nint=075, Nfrac=101)
-Fch=1970.40 (Fvco=3940.80, Nint=075, Nfrac=102)
-Fch=1970.60 (Fvco=3941.20, Nint=075, Nfrac=103)
-Fch=1970.80 (Fvco=3941.60, Nint=075, Nfrac=104)
-Fch=1971.00 (Fvco=3942.00, Nint=075, Nfrac=105)
-Fch=1971.20 (Fvco=3942.40, Nint=075, Nfrac=106)
-Fch=1971.40 (Fvco=3942.80, Nint=075, Nfrac=107)
-Fch=1971.60 (Fvco=3943.20, Nint=075, Nfrac=108)
-Fch=1971.80 (Fvco=3943.60, Nint=075, Nfrac=109)
-Fch=1972.00 (Fvco=3944.00, Nint=075, Nfrac=110)
-Fch=1972.20 (Fvco=3944.40, Nint=075, Nfrac=111)
-Fch=1972.40 (Fvco=3944.80, Nint=075, Nfrac=112)
-Fch=1972.60 (Fvco=3945.20, Nint=075, Nfrac=113)
-Fch=1972.80 (Fvco=3945.60, Nint=075, Nfrac=114)
-Fch=1973.00 (Fvco=3946.00, Nint=075, Nfrac=115)
-Fch=1973.20 (Fvco=3946.40, Nint=075, Nfrac=116)
-Fch=1973.40 (Fvco=3946.80, Nint=075, Nfrac=117)
-Fch=1973.60 (Fvco=3947.20, Nint=075, Nfrac=118)
-Fch=1973.80 (Fvco=3947.60, Nint=075, Nfrac=119)
-Fch=1974.00 (Fvco=3948.00, Nint=075, Nfrac=120)
-Fch=1974.20 (Fvco=3948.40, Nint=075, Nfrac=121)
-Fch=1974.40 (Fvco=3948.80, Nint=075, Nfrac=122)
-Fch=1974.60 (Fvco=3949.20, Nint=075, Nfrac=123)
-Fch=1974.80 (Fvco=3949.60, Nint=075, Nfrac=124)
-Fch=1975.00 (Fvco=3950.00, Nint=075, Nfrac=125)
-Fch=1975.20 (Fvco=3950.40, Nint=075, Nfrac=126)
-Fch=1975.40 (Fvco=3950.80, Nint=075, Nfrac=127)
-Fch=1975.60 (Fvco=3951.20, Nint=075, Nfrac=128)
-Fch=1975.80 (Fvco=3951.60, Nint=075, Nfrac=129)
-Fch=1976.00 (Fvco=3952.00, Nint=075, Nfrac=130)
-Fch=1976.00 (Fvco=3952.00, Nint=076, Nfrac=000)
-Fch=1976.20 (Fvco=3952.40, Nint=076, Nfrac=001)
-Fch=1976.40 (Fvco=3952.80, Nint=076, Nfrac=002)
-Fch=1976.60 (Fvco=3953.20, Nint=076, Nfrac=003)
-Fch=1976.80 (Fvco=3953.60, Nint=076, Nfrac=004)
-Fch=1977.00 (Fvco=3954.00, Nint=076, Nfrac=005)
-Fch=1977.20 (Fvco=3954.40, Nint=076, Nfrac=006)
-Fch=1977.40 (Fvco=3954.80, Nint=076, Nfrac=007)
-Fch=1977.60 (Fvco=3955.20, Nint=076, Nfrac=008)
-Fch=1977.80 (Fvco=3955.60, Nint=076, Nfrac=009)
-Fch=1978.00 (Fvco=3956.00, Nint=076, Nfrac=010)
-Fch=1978.20 (Fvco=3956.40, Nint=076, Nfrac=011)
-Fch=1978.40 (Fvco=3956.80, Nint=076, Nfrac=012)
-Fch=1978.60 (Fvco=3957.20, Nint=076, Nfrac=013)
-Fch=1978.80 (Fvco=3957.60, Nint=076, Nfrac=014)
-Fch=1979.00 (Fvco=3958.00, Nint=076, Nfrac=015)
-Fch=1979.20 (Fvco=3958.40, Nint=076, Nfrac=016)
-Fch=1979.40 (Fvco=3958.80, Nint=076, Nfrac=017)
-Fch=1979.60 (Fvco=3959.20, Nint=076, Nfrac=018)
-Fch=1979.80 (Fvco=3959.60, Nint=076, Nfrac=019)
-Fch=1980.00 (Fvco=3960.00, Nint=076, Nfrac=020)
-Fch=1980.20 (Fvco=3960.40, Nint=076, Nfrac=021)
-Fch=1980.40 (Fvco=3960.80, Nint=076, Nfrac=022)
-Fch=1980.60 (Fvco=3961.20, Nint=076, Nfrac=023)
-Fch=1980.80 (Fvco=3961.60, Nint=076, Nfrac=024)
-Fch=1981.00 (Fvco=3962.00, Nint=076, Nfrac=025)
-Fch=1981.20 (Fvco=3962.40, Nint=076, Nfrac=026)
-Fch=1981.40 (Fvco=3962.80, Nint=076, Nfrac=027)
-Fch=1981.60 (Fvco=3963.20, Nint=076, Nfrac=028)
-Fch=1981.80 (Fvco=3963.60, Nint=076, Nfrac=029)
-Fch=1982.00 (Fvco=3964.00, Nint=076, Nfrac=030)
-Fch=1982.20 (Fvco=3964.40, Nint=076, Nfrac=031)
-Fch=1982.40 (Fvco=3964.80, Nint=076, Nfrac=032)
-Fch=1982.60 (Fvco=3965.20, Nint=076, Nfrac=033)
-Fch=1982.80 (Fvco=3965.60, Nint=076, Nfrac=034)
-Fch=1983.00 (Fvco=3966.00, Nint=076, Nfrac=035)
-Fch=1983.20 (Fvco=3966.40, Nint=076, Nfrac=036)
-Fch=1983.40 (Fvco=3966.80, Nint=076, Nfrac=037)
-Fch=1983.60 (Fvco=3967.20, Nint=076, Nfrac=038)
-Fch=1983.80 (Fvco=3967.60, Nint=076, Nfrac=039)
-Fch=1984.00 (Fvco=3968.00, Nint=076, Nfrac=040)
-Fch=1984.20 (Fvco=3968.40, Nint=076, Nfrac=041)
-Fch=1984.40 (Fvco=3968.80, Nint=076, Nfrac=042)
-Fch=1984.60 (Fvco=3969.20, Nint=076, Nfrac=043)
-Fch=1984.80 (Fvco=3969.60, Nint=076, Nfrac=044)
-Fch=1985.00 (Fvco=3970.00, Nint=076, Nfrac=045)
-Fch=1985.20 (Fvco=3970.40, Nint=076, Nfrac=046)
-Fch=1985.40 (Fvco=3970.80, Nint=076, Nfrac=047)
-Fch=1985.60 (Fvco=3971.20, Nint=076, Nfrac=048)
-Fch=1985.80 (Fvco=3971.60, Nint=076, Nfrac=049)
-Fch=1986.00 (Fvco=3972.00, Nint=076, Nfrac=050)
-Fch=1986.20 (Fvco=3972.40, Nint=076, Nfrac=051)
-Fch=1986.40 (Fvco=3972.80, Nint=076, Nfrac=052)
-Fch=1986.60 (Fvco=3973.20, Nint=076, Nfrac=053)
-Fch=1986.80 (Fvco=3973.60, Nint=076, Nfrac=054)
-Fch=1987.00 (Fvco=3974.00, Nint=076, Nfrac=055)
-Fch=1987.20 (Fvco=3974.40, Nint=076, Nfrac=056)
-Fch=1987.40 (Fvco=3974.80, Nint=076, Nfrac=057)
-Fch=1987.60 (Fvco=3975.20, Nint=076, Nfrac=058)
-Fch=1987.80 (Fvco=3975.60, Nint=076, Nfrac=059)
-Fch=1988.00 (Fvco=3976.00, Nint=076, Nfrac=060)
-Fch=1988.20 (Fvco=3976.40, Nint=076, Nfrac=061)
-Fch=1988.40 (Fvco=3976.80, Nint=076, Nfrac=062)
-Fch=1988.60 (Fvco=3977.20, Nint=076, Nfrac=063)
-Fch=1988.80 (Fvco=3977.60, Nint=076, Nfrac=064)
-Fch=1989.00 (Fvco=3978.00, Nint=076, Nfrac=065)
-Fch=1989.20 (Fvco=3978.40, Nint=076, Nfrac=066)
-Fch=1989.40 (Fvco=3978.80, Nint=076, Nfrac=067)
-Fch=1989.60 (Fvco=3979.20, Nint=076, Nfrac=068)
-Fch=1989.80 (Fvco=3979.60, Nint=076, Nfrac=069)
-Fch=1990.00 (Fvco=3980.00, Nint=076, Nfrac=070)
-Fch=1990.20 (Fvco=3980.40, Nint=076, Nfrac=071)
-Fch=1990.40 (Fvco=3980.80, Nint=076, Nfrac=072)
-Fch=1990.60 (Fvco=3981.20, Nint=076, Nfrac=073)
-Fch=1990.80 (Fvco=3981.60, Nint=076, Nfrac=074)
-Fch=1991.00 (Fvco=3982.00, Nint=076, Nfrac=075)
-Fch=1991.20 (Fvco=3982.40, Nint=076, Nfrac=076)
-Fch=1991.40 (Fvco=3982.80, Nint=076, Nfrac=077)
-Fch=1991.60 (Fvco=3983.20, Nint=076, Nfrac=078)
-Fch=1991.80 (Fvco=3983.60, Nint=076, Nfrac=079)
-Fch=1992.00 (Fvco=3984.00, Nint=076, Nfrac=080)
-Fch=1992.20 (Fvco=3984.40, Nint=076, Nfrac=081)
-Fch=1992.40 (Fvco=3984.80, Nint=076, Nfrac=082)
-Fch=1992.60 (Fvco=3985.20, Nint=076, Nfrac=083)
-Fch=1992.80 (Fvco=3985.60, Nint=076, Nfrac=084)
-Fch=1993.00 (Fvco=3986.00, Nint=076, Nfrac=085)
-Fch=1993.20 (Fvco=3986.40, Nint=076, Nfrac=086)
-Fch=1993.40 (Fvco=3986.80, Nint=076, Nfrac=087)
-Fch=1993.60 (Fvco=3987.20, Nint=076, Nfrac=088)
-Fch=1993.80 (Fvco=3987.60, Nint=076, Nfrac=089)
-Fch=1994.00 (Fvco=3988.00, Nint=076, Nfrac=090)
-Fch=1994.20 (Fvco=3988.40, Nint=076, Nfrac=091)
-Fch=1994.40 (Fvco=3988.80, Nint=076, Nfrac=092)
-Fch=1994.60 (Fvco=3989.20, Nint=076, Nfrac=093)
-Fch=1994.80 (Fvco=3989.60, Nint=076, Nfrac=094)
-Fch=1995.00 (Fvco=3990.00, Nint=076, Nfrac=095)
-Fch=1995.20 (Fvco=3990.40, Nint=076, Nfrac=096)
-Fch=1995.40 (Fvco=3990.80, Nint=076, Nfrac=097)
-Fch=1995.60 (Fvco=3991.20, Nint=076, Nfrac=098)
-Fch=1995.80 (Fvco=3991.60, Nint=076, Nfrac=099)
-Fch=1996.00 (Fvco=3992.00, Nint=076, Nfrac=100)
-Fch=1996.20 (Fvco=3992.40, Nint=076, Nfrac=101)
-Fch=1996.40 (Fvco=3992.80, Nint=076, Nfrac=102)
-Fch=1996.60 (Fvco=3993.20, Nint=076, Nfrac=103)
-Fch=1996.80 (Fvco=3993.60, Nint=076, Nfrac=104)
-Fch=1997.00 (Fvco=3994.00, Nint=076, Nfrac=105)
-Fch=1997.20 (Fvco=3994.40, Nint=076, Nfrac=106)
-Fch=1997.40 (Fvco=3994.80, Nint=076, Nfrac=107)
-Fch=1997.60 (Fvco=3995.20, Nint=076, Nfrac=108)
-Fch=1997.80 (Fvco=3995.60, Nint=076, Nfrac=109)
-Fch=1998.00 (Fvco=3996.00, Nint=076, Nfrac=110)
-Fch=1998.20 (Fvco=3996.40, Nint=076, Nfrac=111)
-Fch=1998.40 (Fvco=3996.80, Nint=076, Nfrac=112)
-Fch=1998.60 (Fvco=3997.20, Nint=076, Nfrac=113)
-Fch=1998.80 (Fvco=3997.60, Nint=076, Nfrac=114)
-Fch=1999.00 (Fvco=3998.00, Nint=076, Nfrac=115)
-Fch=1999.20 (Fvco=3998.40, Nint=076, Nfrac=116)
-Fch=1999.40 (Fvco=3998.80, Nint=076, Nfrac=117)
-Fch=1999.60 (Fvco=3999.20, Nint=076, Nfrac=118)
-Fch=1999.80 (Fvco=3999.60, Nint=076, Nfrac=119)
-Fch=2000.00 (Fvco=4000.00, Nint=076, Nfrac=120)
-Fch=2000.20 (Fvco=4000.40, Nint=076, Nfrac=121)
-Fch=2000.40 (Fvco=4000.80, Nint=076, Nfrac=122)
-Fch=2000.60 (Fvco=4001.20, Nint=076, Nfrac=123)
-Fch=2000.80 (Fvco=4001.60, Nint=076, Nfrac=124)
-Fch=2001.00 (Fvco=4002.00, Nint=076, Nfrac=125)
-Fch=2001.20 (Fvco=4002.40, Nint=076, Nfrac=126)
-Fch=2001.40 (Fvco=4002.80, Nint=076, Nfrac=127)
-Fch=2001.60 (Fvco=4003.20, Nint=076, Nfrac=128)
-Fch=2001.80 (Fvco=4003.60, Nint=076, Nfrac=129)
-Fch=2002.00 (Fvco=4004.00, Nint=076, Nfrac=130)
-Fch=2002.00 (Fvco=4004.00, Nint=077, Nfrac=000)
-Fch=2002.20 (Fvco=4004.40, Nint=077, Nfrac=001)
-Fch=2002.40 (Fvco=4004.80, Nint=077, Nfrac=002)
-Fch=2002.60 (Fvco=4005.20, Nint=077, Nfrac=003)
-Fch=2002.80 (Fvco=4005.60, Nint=077, Nfrac=004)
-Fch=2003.00 (Fvco=4006.00, Nint=077, Nfrac=005)
-Fch=2003.20 (Fvco=4006.40, Nint=077, Nfrac=006)
-Fch=2003.40 (Fvco=4006.80, Nint=077, Nfrac=007)
-Fch=2003.60 (Fvco=4007.20, Nint=077, Nfrac=008)
-Fch=2003.80 (Fvco=4007.60, Nint=077, Nfrac=009)
-Fch=2004.00 (Fvco=4008.00, Nint=077, Nfrac=010)
-Fch=2004.20 (Fvco=4008.40, Nint=077, Nfrac=011)
-Fch=2004.40 (Fvco=4008.80, Nint=077, Nfrac=012)
-Fch=2004.60 (Fvco=4009.20, Nint=077, Nfrac=013)
-Fch=2004.80 (Fvco=4009.60, Nint=077, Nfrac=014)
-Fch=2005.00 (Fvco=4010.00, Nint=077, Nfrac=015)
-Fch=2005.20 (Fvco=4010.40, Nint=077, Nfrac=016)
-Fch=2005.40 (Fvco=4010.80, Nint=077, Nfrac=017)
-Fch=2005.60 (Fvco=4011.20, Nint=077, Nfrac=018)
-Fch=2005.80 (Fvco=4011.60, Nint=077, Nfrac=019)
-Fch=2006.00 (Fvco=4012.00, Nint=077, Nfrac=020)
-Fch=2006.20 (Fvco=4012.40, Nint=077, Nfrac=021)
-Fch=2006.40 (Fvco=4012.80, Nint=077, Nfrac=022)
-Fch=2006.60 (Fvco=4013.20, Nint=077, Nfrac=023)
-Fch=2006.80 (Fvco=4013.60, Nint=077, Nfrac=024)
-Fch=2007.00 (Fvco=4014.00, Nint=077, Nfrac=025)
-Fch=2007.20 (Fvco=4014.40, Nint=077, Nfrac=026)
-Fch=2007.40 (Fvco=4014.80, Nint=077, Nfrac=027)
-Fch=2007.60 (Fvco=4015.20, Nint=077, Nfrac=028)
-Fch=2007.80 (Fvco=4015.60, Nint=077, Nfrac=029)
-Fch=2008.00 (Fvco=4016.00, Nint=077, Nfrac=030)
-Fch=2008.20 (Fvco=4016.40, Nint=077, Nfrac=031)
-Fch=2008.40 (Fvco=4016.80, Nint=077, Nfrac=032)
-Fch=2008.60 (Fvco=4017.20, Nint=077, Nfrac=033)
-Fch=2008.80 (Fvco=4017.60, Nint=077, Nfrac=034)
-Fch=2009.00 (Fvco=4018.00, Nint=077, Nfrac=035)
-Fch=2009.20 (Fvco=4018.40, Nint=077, Nfrac=036)
-Fch=2009.40 (Fvco=4018.80, Nint=077, Nfrac=037)
-Fch=2009.60 (Fvco=4019.20, Nint=077, Nfrac=038)
-Fch=2009.80 (Fvco=4019.60, Nint=077, Nfrac=039)
-Fch=2010.00 (Fvco=4020.00, Nint=077, Nfrac=040)
-Fch=2010.20 (Fvco=4020.40, Nint=077, Nfrac=041)
-Fch=2010.40 (Fvco=4020.80, Nint=077, Nfrac=042)
-Fch=2010.60 (Fvco=4021.20, Nint=077, Nfrac=043)
-Fch=2010.80 (Fvco=4021.60, Nint=077, Nfrac=044)
-Fch=2011.00 (Fvco=4022.00, Nint=077, Nfrac=045)
-Fch=2011.20 (Fvco=4022.40, Nint=077, Nfrac=046)
-Fch=2011.40 (Fvco=4022.80, Nint=077, Nfrac=047)
-Fch=2011.60 (Fvco=4023.20, Nint=077, Nfrac=048)
-Fch=2011.80 (Fvco=4023.60, Nint=077, Nfrac=049)
-Fch=2012.00 (Fvco=4024.00, Nint=077, Nfrac=050)
-Fch=2012.20 (Fvco=4024.40, Nint=077, Nfrac=051)
-Fch=2012.40 (Fvco=4024.80, Nint=077, Nfrac=052)
-Fch=2012.60 (Fvco=4025.20, Nint=077, Nfrac=053)
-Fch=2012.80 (Fvco=4025.60, Nint=077, Nfrac=054)
-Fch=2013.00 (Fvco=4026.00, Nint=077, Nfrac=055)
-Fch=2013.20 (Fvco=4026.40, Nint=077, Nfrac=056)
-Fch=2013.40 (Fvco=4026.80, Nint=077, Nfrac=057)
-Fch=2013.60 (Fvco=4027.20, Nint=077, Nfrac=058)
-Fch=2013.80 (Fvco=4027.60, Nint=077, Nfrac=059)
-Fch=2014.00 (Fvco=4028.00, Nint=077, Nfrac=060)
-Fch=2014.20 (Fvco=4028.40, Nint=077, Nfrac=061)
-Fch=2014.40 (Fvco=4028.80, Nint=077, Nfrac=062)
-Fch=2014.60 (Fvco=4029.20, Nint=077, Nfrac=063)
-Fch=2014.80 (Fvco=4029.60, Nint=077, Nfrac=064)
-Fch=2015.00 (Fvco=4030.00, Nint=077, Nfrac=065)
-Fch=2015.20 (Fvco=4030.40, Nint=077, Nfrac=066)
-Fch=2015.40 (Fvco=4030.80, Nint=077, Nfrac=067)
-Fch=2015.60 (Fvco=4031.20, Nint=077, Nfrac=068)
-Fch=2015.80 (Fvco=4031.60, Nint=077, Nfrac=069)
-Fch=2016.00 (Fvco=4032.00, Nint=077, Nfrac=070)
-Fch=2016.20 (Fvco=4032.40, Nint=077, Nfrac=071)
-Fch=2016.40 (Fvco=4032.80, Nint=077, Nfrac=072)
-Fch=2016.60 (Fvco=4033.20, Nint=077, Nfrac=073)
-Fch=2016.80 (Fvco=4033.60, Nint=077, Nfrac=074)
-Fch=2017.00 (Fvco=4034.00, Nint=077, Nfrac=075)
-Fch=2017.20 (Fvco=4034.40, Nint=077, Nfrac=076)
-Fch=2017.40 (Fvco=4034.80, Nint=077, Nfrac=077)
-Fch=2017.60 (Fvco=4035.20, Nint=077, Nfrac=078)
-Fch=2017.80 (Fvco=4035.60, Nint=077, Nfrac=079)
-Fch=2018.00 (Fvco=4036.00, Nint=077, Nfrac=080)
-Fch=2018.20 (Fvco=4036.40, Nint=077, Nfrac=081)
-Fch=2018.40 (Fvco=4036.80, Nint=077, Nfrac=082)
-Fch=2018.60 (Fvco=4037.20, Nint=077, Nfrac=083)
-Fch=2018.80 (Fvco=4037.60, Nint=077, Nfrac=084)
-Fch=2019.00 (Fvco=4038.00, Nint=077, Nfrac=085)
-Fch=2019.20 (Fvco=4038.40, Nint=077, Nfrac=086)
-Fch=2019.40 (Fvco=4038.80, Nint=077, Nfrac=087)
-Fch=2019.60 (Fvco=4039.20, Nint=077, Nfrac=088)
-Fch=2019.80 (Fvco=4039.60, Nint=077, Nfrac=089)
-Fch=2020.00 (Fvco=4040.00, Nint=077, Nfrac=090)
-Fch=2020.20 (Fvco=4040.40, Nint=077, Nfrac=091)
-Fch=2020.40 (Fvco=4040.80, Nint=077, Nfrac=092)
-Fch=2020.60 (Fvco=4041.20, Nint=077, Nfrac=093)
-Fch=2020.80 (Fvco=4041.60, Nint=077, Nfrac=094)
-Fch=2021.00 (Fvco=4042.00, Nint=077, Nfrac=095)
-Fch=2021.20 (Fvco=4042.40, Nint=077, Nfrac=096)
-Fch=2021.40 (Fvco=4042.80, Nint=077, Nfrac=097)
-Fch=2021.60 (Fvco=4043.20, Nint=077, Nfrac=098)
-Fch=2021.80 (Fvco=4043.60, Nint=077, Nfrac=099)
-Fch=2022.00 (Fvco=4044.00, Nint=077, Nfrac=100)
-Fch=2022.20 (Fvco=4044.40, Nint=077, Nfrac=101)
-Fch=2022.40 (Fvco=4044.80, Nint=077, Nfrac=102)
-Fch=2022.60 (Fvco=4045.20, Nint=077, Nfrac=103)
-Fch=2022.80 (Fvco=4045.60, Nint=077, Nfrac=104)
-Fch=2023.00 (Fvco=4046.00, Nint=077, Nfrac=105)
-Fch=2023.20 (Fvco=4046.40, Nint=077, Nfrac=106)
-Fch=2023.40 (Fvco=4046.80, Nint=077, Nfrac=107)
-Fch=2023.60 (Fvco=4047.20, Nint=077, Nfrac=108)
-Fch=2023.80 (Fvco=4047.60, Nint=077, Nfrac=109)
-Fch=2024.00 (Fvco=4048.00, Nint=077, Nfrac=110)
-Fch=2024.20 (Fvco=4048.40, Nint=077, Nfrac=111)
-Fch=2024.40 (Fvco=4048.80, Nint=077, Nfrac=112)
-Fch=2024.60 (Fvco=4049.20, Nint=077, Nfrac=113)
-Fch=2024.80 (Fvco=4049.60, Nint=077, Nfrac=114)
-Fch=2025.00 (Fvco=4050.00, Nint=077, Nfrac=115)
-Fch=2025.20 (Fvco=4050.40, Nint=077, Nfrac=116)
-Fch=2025.40 (Fvco=4050.80, Nint=077, Nfrac=117)
-Fch=2025.60 (Fvco=4051.20, Nint=077, Nfrac=118)
-Fch=2025.80 (Fvco=4051.60, Nint=077, Nfrac=119)
-Fch=2026.00 (Fvco=4052.00, Nint=077, Nfrac=120)
-Fch=2026.20 (Fvco=4052.40, Nint=077, Nfrac=121)
-Fch=2026.40 (Fvco=4052.80, Nint=077, Nfrac=122)
-Fch=2026.60 (Fvco=4053.20, Nint=077, Nfrac=123)
-Fch=2026.80 (Fvco=4053.60, Nint=077, Nfrac=124)
-Fch=2027.00 (Fvco=4054.00, Nint=077, Nfrac=125)
-Fch=2027.20 (Fvco=4054.40, Nint=077, Nfrac=126)
-Fch=2027.40 (Fvco=4054.80, Nint=077, Nfrac=127)
-Fch=2027.60 (Fvco=4055.20, Nint=077, Nfrac=128)
-Fch=2027.80 (Fvco=4055.60, Nint=077, Nfrac=129)
-Fch=2028.00 (Fvco=4056.00, Nint=077, Nfrac=130)
-Fch=2028.00 (Fvco=4056.00, Nint=078, Nfrac=000)
-Fch=2028.20 (Fvco=4056.40, Nint=078, Nfrac=001)
-Fch=2028.40 (Fvco=4056.80, Nint=078, Nfrac=002)
-Fch=2028.60 (Fvco=4057.20, Nint=078, Nfrac=003)
-Fch=2028.80 (Fvco=4057.60, Nint=078, Nfrac=004)
-Fch=2029.00 (Fvco=4058.00, Nint=078, Nfrac=005)
-Fch=2029.20 (Fvco=4058.40, Nint=078, Nfrac=006)
-Fch=2029.40 (Fvco=4058.80, Nint=078, Nfrac=007)
-Fch=2029.60 (Fvco=4059.20, Nint=078, Nfrac=008)
-Fch=2029.80 (Fvco=4059.60, Nint=078, Nfrac=009)
-Fch=2030.00 (Fvco=4060.00, Nint=078, Nfrac=010)
-Fch=2030.20 (Fvco=4060.40, Nint=078, Nfrac=011)
-Fch=2030.40 (Fvco=4060.80, Nint=078, Nfrac=012)
-Fch=2030.60 (Fvco=4061.20, Nint=078, Nfrac=013)
-Fch=2030.80 (Fvco=4061.60, Nint=078, Nfrac=014)
-Fch=2031.00 (Fvco=4062.00, Nint=078, Nfrac=015)
-Fch=2031.20 (Fvco=4062.40, Nint=078, Nfrac=016)
-Fch=2031.40 (Fvco=4062.80, Nint=078, Nfrac=017)
-Fch=2031.60 (Fvco=4063.20, Nint=078, Nfrac=018)
-Fch=2031.80 (Fvco=4063.60, Nint=078, Nfrac=019)
-Fch=2032.00 (Fvco=4064.00, Nint=078, Nfrac=020)
-Fch=2032.20 (Fvco=4064.40, Nint=078, Nfrac=021)
-Fch=2032.40 (Fvco=4064.80, Nint=078, Nfrac=022)
-Fch=2032.60 (Fvco=4065.20, Nint=078, Nfrac=023)
-Fch=2032.80 (Fvco=4065.60, Nint=078, Nfrac=024)
-Fch=2033.00 (Fvco=4066.00, Nint=078, Nfrac=025)
-Fch=2033.20 (Fvco=4066.40, Nint=078, Nfrac=026)
-Fch=2033.40 (Fvco=4066.80, Nint=078, Nfrac=027)
-Fch=2033.60 (Fvco=4067.20, Nint=078, Nfrac=028)
-Fch=2033.80 (Fvco=4067.60, Nint=078, Nfrac=029)
-Fch=2034.00 (Fvco=4068.00, Nint=078, Nfrac=030)
-Fch=2034.20 (Fvco=4068.40, Nint=078, Nfrac=031)
-Fch=2034.40 (Fvco=4068.80, Nint=078, Nfrac=032)
-Fch=2034.60 (Fvco=4069.20, Nint=078, Nfrac=033)
-Fch=2034.80 (Fvco=4069.60, Nint=078, Nfrac=034)
-Fch=2035.00 (Fvco=4070.00, Nint=078, Nfrac=035)
-Fch=2035.20 (Fvco=4070.40, Nint=078, Nfrac=036)
-Fch=2035.40 (Fvco=4070.80, Nint=078, Nfrac=037)
-Fch=2035.60 (Fvco=4071.20, Nint=078, Nfrac=038)
-Fch=2035.80 (Fvco=4071.60, Nint=078, Nfrac=039)
-Fch=2036.00 (Fvco=4072.00, Nint=078, Nfrac=040)
-Fch=2036.20 (Fvco=4072.40, Nint=078, Nfrac=041)
-Fch=2036.40 (Fvco=4072.80, Nint=078, Nfrac=042)
-Fch=2036.60 (Fvco=4073.20, Nint=078, Nfrac=043)
-Fch=2036.80 (Fvco=4073.60, Nint=078, Nfrac=044)
-Fch=2037.00 (Fvco=4074.00, Nint=078, Nfrac=045)
-Fch=2037.20 (Fvco=4074.40, Nint=078, Nfrac=046)
-Fch=2037.40 (Fvco=4074.80, Nint=078, Nfrac=047)
-Fch=2037.60 (Fvco=4075.20, Nint=078, Nfrac=048)
-Fch=2037.80 (Fvco=4075.60, Nint=078, Nfrac=049)
-Fch=2038.00 (Fvco=4076.00, Nint=078, Nfrac=050)
-Fch=2038.20 (Fvco=4076.40, Nint=078, Nfrac=051)
-Fch=2038.40 (Fvco=4076.80, Nint=078, Nfrac=052)
-Fch=2038.60 (Fvco=4077.20, Nint=078, Nfrac=053)
-Fch=2038.80 (Fvco=4077.60, Nint=078, Nfrac=054)
-Fch=2039.00 (Fvco=4078.00, Nint=078, Nfrac=055)
-Fch=2039.20 (Fvco=4078.40, Nint=078, Nfrac=056)
-Fch=2039.40 (Fvco=4078.80, Nint=078, Nfrac=057)
-Fch=2039.60 (Fvco=4079.20, Nint=078, Nfrac=058)
-Fch=2039.80 (Fvco=4079.60, Nint=078, Nfrac=059)
-Fch=2040.00 (Fvco=4080.00, Nint=078, Nfrac=060)
-Fch=2040.20 (Fvco=4080.40, Nint=078, Nfrac=061)
-Fch=2040.40 (Fvco=4080.80, Nint=078, Nfrac=062)
-Fch=2040.60 (Fvco=4081.20, Nint=078, Nfrac=063)
-Fch=2040.80 (Fvco=4081.60, Nint=078, Nfrac=064)
-Fch=2041.00 (Fvco=4082.00, Nint=078, Nfrac=065)
-Fch=2041.20 (Fvco=4082.40, Nint=078, Nfrac=066)
-Fch=2041.40 (Fvco=4082.80, Nint=078, Nfrac=067)
-Fch=2041.60 (Fvco=4083.20, Nint=078, Nfrac=068)
-Fch=2041.80 (Fvco=4083.60, Nint=078, Nfrac=069)
-Fch=2042.00 (Fvco=4084.00, Nint=078, Nfrac=070)
-Fch=2042.20 (Fvco=4084.40, Nint=078, Nfrac=071)
-Fch=2042.40 (Fvco=4084.80, Nint=078, Nfrac=072)
-Fch=2042.60 (Fvco=4085.20, Nint=078, Nfrac=073)
-Fch=2042.80 (Fvco=4085.60, Nint=078, Nfrac=074)
-Fch=2043.00 (Fvco=4086.00, Nint=078, Nfrac=075)
-Fch=2043.20 (Fvco=4086.40, Nint=078, Nfrac=076)
-Fch=2043.40 (Fvco=4086.80, Nint=078, Nfrac=077)
-Fch=2043.60 (Fvco=4087.20, Nint=078, Nfrac=078)
-Fch=2043.80 (Fvco=4087.60, Nint=078, Nfrac=079)
-Fch=2044.00 (Fvco=4088.00, Nint=078, Nfrac=080)
-Fch=2044.20 (Fvco=4088.40, Nint=078, Nfrac=081)
-Fch=2044.40 (Fvco=4088.80, Nint=078, Nfrac=082)
-Fch=2044.60 (Fvco=4089.20, Nint=078, Nfrac=083)
-Fch=2044.80 (Fvco=4089.60, Nint=078, Nfrac=084)
-Fch=2045.00 (Fvco=4090.00, Nint=078, Nfrac=085)
-Fch=2045.20 (Fvco=4090.40, Nint=078, Nfrac=086)
-Fch=2045.40 (Fvco=4090.80, Nint=078, Nfrac=087)
-Fch=2045.60 (Fvco=4091.20, Nint=078, Nfrac=088)
-Fch=2045.80 (Fvco=4091.60, Nint=078, Nfrac=089)
-Fch=2046.00 (Fvco=4092.00, Nint=078, Nfrac=090)
-Fch=2046.20 (Fvco=4092.40, Nint=078, Nfrac=091)
-Fch=2046.40 (Fvco=4092.80, Nint=078, Nfrac=092)
-Fch=2046.60 (Fvco=4093.20, Nint=078, Nfrac=093)
-Fch=2046.80 (Fvco=4093.60, Nint=078, Nfrac=094)
-Fch=2047.00 (Fvco=4094.00, Nint=078, Nfrac=095)
-Fch=2047.20 (Fvco=4094.40, Nint=078, Nfrac=096)
-Fch=2047.40 (Fvco=4094.80, Nint=078, Nfrac=097)
-Fch=2047.60 (Fvco=4095.20, Nint=078, Nfrac=098)
-Fch=2047.80 (Fvco=4095.60, Nint=078, Nfrac=099)
-Fch=2048.00 (Fvco=4096.00, Nint=078, Nfrac=100)
-Fch=2048.20 (Fvco=4096.40, Nint=078, Nfrac=101)
-Fch=2048.40 (Fvco=4096.80, Nint=078, Nfrac=102)
-Fch=2048.60 (Fvco=4097.20, Nint=078, Nfrac=103)
-Fch=2048.80 (Fvco=4097.60, Nint=078, Nfrac=104)
-Fch=2049.00 (Fvco=4098.00, Nint=078, Nfrac=105)
-Fch=2049.20 (Fvco=4098.40, Nint=078, Nfrac=106)
-Fch=2049.40 (Fvco=4098.80, Nint=078, Nfrac=107)
-Fch=2049.60 (Fvco=4099.20, Nint=078, Nfrac=108)
-Fch=2049.80 (Fvco=4099.60, Nint=078, Nfrac=109)
-Fch=2050.00 (Fvco=4100.00, Nint=078, Nfrac=110)
-Fch=2050.20 (Fvco=4100.40, Nint=078, Nfrac=111)
-Fch=2050.40 (Fvco=4100.80, Nint=078, Nfrac=112)
-Fch=2050.60 (Fvco=4101.20, Nint=078, Nfrac=113)
-Fch=2050.80 (Fvco=4101.60, Nint=078, Nfrac=114)
-Fch=2051.00 (Fvco=4102.00, Nint=078, Nfrac=115)
-Fch=2051.20 (Fvco=4102.40, Nint=078, Nfrac=116)
-Fch=2051.40 (Fvco=4102.80, Nint=078, Nfrac=117)
-Fch=2051.60 (Fvco=4103.20, Nint=078, Nfrac=118)
-Fch=2051.80 (Fvco=4103.60, Nint=078, Nfrac=119)
-Fch=2052.00 (Fvco=4104.00, Nint=078, Nfrac=120)
-Fch=2052.20 (Fvco=4104.40, Nint=078, Nfrac=121)
-Fch=2052.40 (Fvco=4104.80, Nint=078, Nfrac=122)
-Fch=2052.60 (Fvco=4105.20, Nint=078, Nfrac=123)
-Fch=2052.80 (Fvco=4105.60, Nint=078, Nfrac=124)
-Fch=2053.00 (Fvco=4106.00, Nint=078, Nfrac=125)
-Fch=2053.20 (Fvco=4106.40, Nint=078, Nfrac=126)
-Fch=2053.40 (Fvco=4106.80, Nint=078, Nfrac=127)
-Fch=2053.60 (Fvco=4107.20, Nint=078, Nfrac=128)
-Fch=2053.80 (Fvco=4107.60, Nint=078, Nfrac=129)
-Fch=2054.00 (Fvco=4108.00, Nint=078, Nfrac=130)
-Fch=2054.00 (Fvco=4108.00, Nint=079, Nfrac=000)
-Fch=2054.20 (Fvco=4108.40, Nint=079, Nfrac=001)
-Fch=2054.40 (Fvco=4108.80, Nint=079, Nfrac=002)
-Fch=2054.60 (Fvco=4109.20, Nint=079, Nfrac=003)
-Fch=2054.80 (Fvco=4109.60, Nint=079, Nfrac=004)
-Fch=2055.00 (Fvco=4110.00, Nint=079, Nfrac=005)
-Fch=2055.20 (Fvco=4110.40, Nint=079, Nfrac=006)
-Fch=2055.40 (Fvco=4110.80, Nint=079, Nfrac=007)
-Fch=2055.60 (Fvco=4111.20, Nint=079, Nfrac=008)
-Fch=2055.80 (Fvco=4111.60, Nint=079, Nfrac=009)
-Fch=2056.00 (Fvco=4112.00, Nint=079, Nfrac=010)
-Fch=2056.20 (Fvco=4112.40, Nint=079, Nfrac=011)
-Fch=2056.40 (Fvco=4112.80, Nint=079, Nfrac=012)
-Fch=2056.60 (Fvco=4113.20, Nint=079, Nfrac=013)
-Fch=2056.80 (Fvco=4113.60, Nint=079, Nfrac=014)
-Fch=2057.00 (Fvco=4114.00, Nint=079, Nfrac=015)
-Fch=2057.20 (Fvco=4114.40, Nint=079, Nfrac=016)
-Fch=2057.40 (Fvco=4114.80, Nint=079, Nfrac=017)
-Fch=2057.60 (Fvco=4115.20, Nint=079, Nfrac=018)
-Fch=2057.80 (Fvco=4115.60, Nint=079, Nfrac=019)
-Fch=2058.00 (Fvco=4116.00, Nint=079, Nfrac=020)
-Fch=2058.20 (Fvco=4116.40, Nint=079, Nfrac=021)
-Fch=2058.40 (Fvco=4116.80, Nint=079, Nfrac=022)
-Fch=2058.60 (Fvco=4117.20, Nint=079, Nfrac=023)
-Fch=2058.80 (Fvco=4117.60, Nint=079, Nfrac=024)
-Fch=2059.00 (Fvco=4118.00, Nint=079, Nfrac=025)
-Fch=2059.20 (Fvco=4118.40, Nint=079, Nfrac=026)
-Fch=2059.40 (Fvco=4118.80, Nint=079, Nfrac=027)
-Fch=2059.60 (Fvco=4119.20, Nint=079, Nfrac=028)
-Fch=2059.80 (Fvco=4119.60, Nint=079, Nfrac=029)
-Fch=2060.00 (Fvco=4120.00, Nint=079, Nfrac=030)
-Fch=2060.20 (Fvco=4120.40, Nint=079, Nfrac=031)
-Fch=2060.40 (Fvco=4120.80, Nint=079, Nfrac=032)
-Fch=2060.60 (Fvco=4121.20, Nint=079, Nfrac=033)
-Fch=2060.80 (Fvco=4121.60, Nint=079, Nfrac=034)
-Fch=2061.00 (Fvco=4122.00, Nint=079, Nfrac=035)
-Fch=2061.20 (Fvco=4122.40, Nint=079, Nfrac=036)
-Fch=2061.40 (Fvco=4122.80, Nint=079, Nfrac=037)
-Fch=2061.60 (Fvco=4123.20, Nint=079, Nfrac=038)
-Fch=2061.80 (Fvco=4123.60, Nint=079, Nfrac=039)
-Fch=2062.00 (Fvco=4124.00, Nint=079, Nfrac=040)
-Fch=2062.20 (Fvco=4124.40, Nint=079, Nfrac=041)
-Fch=2062.40 (Fvco=4124.80, Nint=079, Nfrac=042)
-Fch=2062.60 (Fvco=4125.20, Nint=079, Nfrac=043)
-Fch=2062.80 (Fvco=4125.60, Nint=079, Nfrac=044)
-Fch=2063.00 (Fvco=4126.00, Nint=079, Nfrac=045)
-Fch=2063.20 (Fvco=4126.40, Nint=079, Nfrac=046)
-Fch=2063.40 (Fvco=4126.80, Nint=079, Nfrac=047)
-Fch=2063.60 (Fvco=4127.20, Nint=079, Nfrac=048)
-Fch=2063.80 (Fvco=4127.60, Nint=079, Nfrac=049)
-Fch=2064.00 (Fvco=4128.00, Nint=079, Nfrac=050)
-Fch=2064.20 (Fvco=4128.40, Nint=079, Nfrac=051)
-Fch=2064.40 (Fvco=4128.80, Nint=079, Nfrac=052)
-Fch=2064.60 (Fvco=4129.20, Nint=079, Nfrac=053)
-Fch=2064.80 (Fvco=4129.60, Nint=079, Nfrac=054)
-Fch=2065.00 (Fvco=4130.00, Nint=079, Nfrac=055)
-Fch=2065.20 (Fvco=4130.40, Nint=079, Nfrac=056)
-Fch=2065.40 (Fvco=4130.80, Nint=079, Nfrac=057)
-Fch=2065.60 (Fvco=4131.20, Nint=079, Nfrac=058)
-Fch=2065.80 (Fvco=4131.60, Nint=079, Nfrac=059)
-Fch=2066.00 (Fvco=4132.00, Nint=079, Nfrac=060)
-Fch=2066.20 (Fvco=4132.40, Nint=079, Nfrac=061)
-Fch=2066.40 (Fvco=4132.80, Nint=079, Nfrac=062)
-Fch=2066.60 (Fvco=4133.20, Nint=079, Nfrac=063)
-Fch=2066.80 (Fvco=4133.60, Nint=079, Nfrac=064)
-Fch=2067.00 (Fvco=4134.00, Nint=079, Nfrac=065)
-Fch=2067.20 (Fvco=4134.40, Nint=079, Nfrac=066)
-Fch=2067.40 (Fvco=4134.80, Nint=079, Nfrac=067)
-Fch=2067.60 (Fvco=4135.20, Nint=079, Nfrac=068)
-Fch=2067.80 (Fvco=4135.60, Nint=079, Nfrac=069)
-Fch=2068.00 (Fvco=4136.00, Nint=079, Nfrac=070)
-Fch=2068.20 (Fvco=4136.40, Nint=079, Nfrac=071)
-Fch=2068.40 (Fvco=4136.80, Nint=079, Nfrac=072)
-Fch=2068.60 (Fvco=4137.20, Nint=079, Nfrac=073)
-Fch=2068.80 (Fvco=4137.60, Nint=079, Nfrac=074)
-Fch=2069.00 (Fvco=4138.00, Nint=079, Nfrac=075)
-Fch=2069.20 (Fvco=4138.40, Nint=079, Nfrac=076)
-Fch=2069.40 (Fvco=4138.80, Nint=079, Nfrac=077)
-Fch=2069.60 (Fvco=4139.20, Nint=079, Nfrac=078)
-Fch=2069.80 (Fvco=4139.60, Nint=079, Nfrac=079)
-Fch=2070.00 (Fvco=4140.00, Nint=079, Nfrac=080)
-Fch=2070.20 (Fvco=4140.40, Nint=079, Nfrac=081)
-Fch=2070.40 (Fvco=4140.80, Nint=079, Nfrac=082)
-Fch=2070.60 (Fvco=4141.20, Nint=079, Nfrac=083)
-Fch=2070.80 (Fvco=4141.60, Nint=079, Nfrac=084)
-Fch=2071.00 (Fvco=4142.00, Nint=079, Nfrac=085)
-Fch=2071.20 (Fvco=4142.40, Nint=079, Nfrac=086)
-Fch=2071.40 (Fvco=4142.80, Nint=079, Nfrac=087)
-Fch=2071.60 (Fvco=4143.20, Nint=079, Nfrac=088)
-Fch=2071.80 (Fvco=4143.60, Nint=079, Nfrac=089)
-Fch=2072.00 (Fvco=4144.00, Nint=079, Nfrac=090)
-Fch=2072.20 (Fvco=4144.40, Nint=079, Nfrac=091)
-Fch=2072.40 (Fvco=4144.80, Nint=079, Nfrac=092)
-Fch=2072.60 (Fvco=4145.20, Nint=079, Nfrac=093)
-Fch=2072.80 (Fvco=4145.60, Nint=079, Nfrac=094)
-Fch=2073.00 (Fvco=4146.00, Nint=079, Nfrac=095)
-Fch=2073.20 (Fvco=4146.40, Nint=079, Nfrac=096)
-Fch=2073.40 (Fvco=4146.80, Nint=079, Nfrac=097)
-Fch=2073.60 (Fvco=4147.20, Nint=079, Nfrac=098)
-Fch=2073.80 (Fvco=4147.60, Nint=079, Nfrac=099)
-Fch=2074.00 (Fvco=4148.00, Nint=079, Nfrac=100)
-Fch=2074.20 (Fvco=4148.40, Nint=079, Nfrac=101)
-Fch=2074.40 (Fvco=4148.80, Nint=079, Nfrac=102)
-Fch=2074.60 (Fvco=4149.20, Nint=079, Nfrac=103)
-Fch=2074.80 (Fvco=4149.60, Nint=079, Nfrac=104)
-Fch=2075.00 (Fvco=4150.00, Nint=079, Nfrac=105)
-Fch=2075.20 (Fvco=4150.40, Nint=079, Nfrac=106)
-Fch=2075.40 (Fvco=4150.80, Nint=079, Nfrac=107)
-Fch=2075.60 (Fvco=4151.20, Nint=079, Nfrac=108)
-Fch=2075.80 (Fvco=4151.60, Nint=079, Nfrac=109)
-Fch=2076.00 (Fvco=4152.00, Nint=079, Nfrac=110)
-Fch=2076.20 (Fvco=4152.40, Nint=079, Nfrac=111)
-Fch=2076.40 (Fvco=4152.80, Nint=079, Nfrac=112)
-Fch=2076.60 (Fvco=4153.20, Nint=079, Nfrac=113)
-Fch=2076.80 (Fvco=4153.60, Nint=079, Nfrac=114)
-Fch=2077.00 (Fvco=4154.00, Nint=079, Nfrac=115)
-Fch=2077.20 (Fvco=4154.40, Nint=079, Nfrac=116)
-Fch=2077.40 (Fvco=4154.80, Nint=079, Nfrac=117)
-Fch=2077.60 (Fvco=4155.20, Nint=079, Nfrac=118)
-Fch=2077.80 (Fvco=4155.60, Nint=079, Nfrac=119)
-Fch=2078.00 (Fvco=4156.00, Nint=079, Nfrac=120)
-Fch=2078.20 (Fvco=4156.40, Nint=079, Nfrac=121)
-Fch=2078.40 (Fvco=4156.80, Nint=079, Nfrac=122)
-Fch=2078.60 (Fvco=4157.20, Nint=079, Nfrac=123)
-Fch=2078.80 (Fvco=4157.60, Nint=079, Nfrac=124)
-Fch=2079.00 (Fvco=4158.00, Nint=079, Nfrac=125)
-Fch=2079.20 (Fvco=4158.40, Nint=079, Nfrac=126)
-Fch=2079.40 (Fvco=4158.80, Nint=079, Nfrac=127)
-Fch=2079.60 (Fvco=4159.20, Nint=079, Nfrac=128)
-Fch=2079.80 (Fvco=4159.60, Nint=079, Nfrac=129)
-Fch=2080.00 (Fvco=4160.00, Nint=079, Nfrac=130)
-======================================================================
-PLL Tx Low Band:
-Fch=819.00 (Fvco=3276.00, Nint=063, Nfrac=000)
-Fch=819.10 (Fvco=3276.40, Nint=063, Nfrac=001)
-Fch=819.20 (Fvco=3276.80, Nint=063, Nfrac=002)
-Fch=819.30 (Fvco=3277.20, Nint=063, Nfrac=003)
-Fch=819.40 (Fvco=3277.60, Nint=063, Nfrac=004)
-Fch=819.50 (Fvco=3278.00, Nint=063, Nfrac=005)
-Fch=819.60 (Fvco=3278.40, Nint=063, Nfrac=006)
-Fch=819.70 (Fvco=3278.80, Nint=063, Nfrac=007)
-Fch=819.80 (Fvco=3279.20, Nint=063, Nfrac=008)
-Fch=819.90 (Fvco=3279.60, Nint=063, Nfrac=009)
-Fch=820.00 (Fvco=3280.00, Nint=063, Nfrac=010)
-Fch=820.10 (Fvco=3280.40, Nint=063, Nfrac=011)
-Fch=820.20 (Fvco=3280.80, Nint=063, Nfrac=012)
-Fch=820.30 (Fvco=3281.20, Nint=063, Nfrac=013)
-Fch=820.40 (Fvco=3281.60, Nint=063, Nfrac=014)
-Fch=820.50 (Fvco=3282.00, Nint=063, Nfrac=015)
-Fch=820.60 (Fvco=3282.40, Nint=063, Nfrac=016)
-Fch=820.70 (Fvco=3282.80, Nint=063, Nfrac=017)
-Fch=820.80 (Fvco=3283.20, Nint=063, Nfrac=018)
-Fch=820.90 (Fvco=3283.60, Nint=063, Nfrac=019)
-Fch=821.00 (Fvco=3284.00, Nint=063, Nfrac=020)
-Fch=821.10 (Fvco=3284.40, Nint=063, Nfrac=021)
-Fch=821.20 (Fvco=3284.80, Nint=063, Nfrac=022)
-Fch=821.30 (Fvco=3285.20, Nint=063, Nfrac=023)
-Fch=821.40 (Fvco=3285.60, Nint=063, Nfrac=024)
-Fch=821.50 (Fvco=3286.00, Nint=063, Nfrac=025)
-Fch=821.60 (Fvco=3286.40, Nint=063, Nfrac=026)
-Fch=821.70 (Fvco=3286.80, Nint=063, Nfrac=027)
-Fch=821.80 (Fvco=3287.20, Nint=063, Nfrac=028)
-Fch=821.90 (Fvco=3287.60, Nint=063, Nfrac=029)
-Fch=822.00 (Fvco=3288.00, Nint=063, Nfrac=030)
-Fch=822.10 (Fvco=3288.40, Nint=063, Nfrac=031)
-Fch=822.20 (Fvco=3288.80, Nint=063, Nfrac=032)
-Fch=822.30 (Fvco=3289.20, Nint=063, Nfrac=033)
-Fch=822.40 (Fvco=3289.60, Nint=063, Nfrac=034)
-Fch=822.50 (Fvco=3290.00, Nint=063, Nfrac=035)
-Fch=822.60 (Fvco=3290.40, Nint=063, Nfrac=036)
-Fch=822.70 (Fvco=3290.80, Nint=063, Nfrac=037)
-Fch=822.80 (Fvco=3291.20, Nint=063, Nfrac=038)
-Fch=822.90 (Fvco=3291.60, Nint=063, Nfrac=039)
-Fch=823.00 (Fvco=3292.00, Nint=063, Nfrac=040)
-Fch=823.10 (Fvco=3292.40, Nint=063, Nfrac=041)
-Fch=823.20 (Fvco=3292.80, Nint=063, Nfrac=042)
-Fch=823.30 (Fvco=3293.20, Nint=063, Nfrac=043)
-Fch=823.40 (Fvco=3293.60, Nint=063, Nfrac=044)
-Fch=823.50 (Fvco=3294.00, Nint=063, Nfrac=045)
-Fch=823.60 (Fvco=3294.40, Nint=063, Nfrac=046)
-Fch=823.70 (Fvco=3294.80, Nint=063, Nfrac=047)
-Fch=823.80 (Fvco=3295.20, Nint=063, Nfrac=048)
-Fch=823.90 (Fvco=3295.60, Nint=063, Nfrac=049)
-Fch=824.00 (Fvco=3296.00, Nint=063, Nfrac=050)
-Fch=824.10 (Fvco=3296.40, Nint=063, Nfrac=051)
-Fch=824.20 (Fvco=3296.80, Nint=063, Nfrac=052)
-Fch=824.30 (Fvco=3297.20, Nint=063, Nfrac=053)
-Fch=824.40 (Fvco=3297.60, Nint=063, Nfrac=054)
-Fch=824.50 (Fvco=3298.00, Nint=063, Nfrac=055)
-Fch=824.60 (Fvco=3298.40, Nint=063, Nfrac=056)
-Fch=824.70 (Fvco=3298.80, Nint=063, Nfrac=057)
-Fch=824.80 (Fvco=3299.20, Nint=063, Nfrac=058)
-Fch=824.90 (Fvco=3299.60, Nint=063, Nfrac=059)
-Fch=825.00 (Fvco=3300.00, Nint=063, Nfrac=060)
-Fch=825.10 (Fvco=3300.40, Nint=063, Nfrac=061)
-Fch=825.20 (Fvco=3300.80, Nint=063, Nfrac=062)
-Fch=825.30 (Fvco=3301.20, Nint=063, Nfrac=063)
-Fch=825.40 (Fvco=3301.60, Nint=063, Nfrac=064)
-Fch=825.50 (Fvco=3302.00, Nint=063, Nfrac=065)
-Fch=825.60 (Fvco=3302.40, Nint=063, Nfrac=066)
-Fch=825.70 (Fvco=3302.80, Nint=063, Nfrac=067)
-Fch=825.80 (Fvco=3303.20, Nint=063, Nfrac=068)
-Fch=825.90 (Fvco=3303.60, Nint=063, Nfrac=069)
-Fch=826.00 (Fvco=3304.00, Nint=063, Nfrac=070)
-Fch=826.10 (Fvco=3304.40, Nint=063, Nfrac=071)
-Fch=826.20 (Fvco=3304.80, Nint=063, Nfrac=072)
-Fch=826.30 (Fvco=3305.20, Nint=063, Nfrac=073)
-Fch=826.40 (Fvco=3305.60, Nint=063, Nfrac=074)
-Fch=826.50 (Fvco=3306.00, Nint=063, Nfrac=075)
-Fch=826.60 (Fvco=3306.40, Nint=063, Nfrac=076)
-Fch=826.70 (Fvco=3306.80, Nint=063, Nfrac=077)
-Fch=826.80 (Fvco=3307.20, Nint=063, Nfrac=078)
-Fch=826.90 (Fvco=3307.60, Nint=063, Nfrac=079)
-Fch=827.00 (Fvco=3308.00, Nint=063, Nfrac=080)
-Fch=827.10 (Fvco=3308.40, Nint=063, Nfrac=081)
-Fch=827.20 (Fvco=3308.80, Nint=063, Nfrac=082)
-Fch=827.30 (Fvco=3309.20, Nint=063, Nfrac=083)
-Fch=827.40 (Fvco=3309.60, Nint=063, Nfrac=084)
-Fch=827.50 (Fvco=3310.00, Nint=063, Nfrac=085)
-Fch=827.60 (Fvco=3310.40, Nint=063, Nfrac=086)
-Fch=827.70 (Fvco=3310.80, Nint=063, Nfrac=087)
-Fch=827.80 (Fvco=3311.20, Nint=063, Nfrac=088)
-Fch=827.90 (Fvco=3311.60, Nint=063, Nfrac=089)
-Fch=828.00 (Fvco=3312.00, Nint=063, Nfrac=090)
-Fch=828.10 (Fvco=3312.40, Nint=063, Nfrac=091)
-Fch=828.20 (Fvco=3312.80, Nint=063, Nfrac=092)
-Fch=828.30 (Fvco=3313.20, Nint=063, Nfrac=093)
-Fch=828.40 (Fvco=3313.60, Nint=063, Nfrac=094)
-Fch=828.50 (Fvco=3314.00, Nint=063, Nfrac=095)
-Fch=828.60 (Fvco=3314.40, Nint=063, Nfrac=096)
-Fch=828.70 (Fvco=3314.80, Nint=063, Nfrac=097)
-Fch=828.80 (Fvco=3315.20, Nint=063, Nfrac=098)
-Fch=828.90 (Fvco=3315.60, Nint=063, Nfrac=099)
-Fch=829.00 (Fvco=3316.00, Nint=063, Nfrac=100)
-Fch=829.10 (Fvco=3316.40, Nint=063, Nfrac=101)
-Fch=829.20 (Fvco=3316.80, Nint=063, Nfrac=102)
-Fch=829.30 (Fvco=3317.20, Nint=063, Nfrac=103)
-Fch=829.40 (Fvco=3317.60, Nint=063, Nfrac=104)
-Fch=829.50 (Fvco=3318.00, Nint=063, Nfrac=105)
-Fch=829.60 (Fvco=3318.40, Nint=063, Nfrac=106)
-Fch=829.70 (Fvco=3318.80, Nint=063, Nfrac=107)
-Fch=829.80 (Fvco=3319.20, Nint=063, Nfrac=108)
-Fch=829.90 (Fvco=3319.60, Nint=063, Nfrac=109)
-Fch=830.00 (Fvco=3320.00, Nint=063, Nfrac=110)
-Fch=830.10 (Fvco=3320.40, Nint=063, Nfrac=111)
-Fch=830.20 (Fvco=3320.80, Nint=063, Nfrac=112)
-Fch=830.30 (Fvco=3321.20, Nint=063, Nfrac=113)
-Fch=830.40 (Fvco=3321.60, Nint=063, Nfrac=114)
-Fch=830.50 (Fvco=3322.00, Nint=063, Nfrac=115)
-Fch=830.60 (Fvco=3322.40, Nint=063, Nfrac=116)
-Fch=830.70 (Fvco=3322.80, Nint=063, Nfrac=117)
-Fch=830.80 (Fvco=3323.20, Nint=063, Nfrac=118)
-Fch=830.90 (Fvco=3323.60, Nint=063, Nfrac=119)
-Fch=831.00 (Fvco=3324.00, Nint=063, Nfrac=120)
-Fch=831.10 (Fvco=3324.40, Nint=063, Nfrac=121)
-Fch=831.20 (Fvco=3324.80, Nint=063, Nfrac=122)
-Fch=831.30 (Fvco=3325.20, Nint=063, Nfrac=123)
-Fch=831.40 (Fvco=3325.60, Nint=063, Nfrac=124)
-Fch=831.50 (Fvco=3326.00, Nint=063, Nfrac=125)
-Fch=831.60 (Fvco=3326.40, Nint=063, Nfrac=126)
-Fch=831.70 (Fvco=3326.80, Nint=063, Nfrac=127)
-Fch=831.80 (Fvco=3327.20, Nint=063, Nfrac=128)
-Fch=831.90 (Fvco=3327.60, Nint=063, Nfrac=129)
-Fch=832.00 (Fvco=3328.00, Nint=063, Nfrac=130)
-Fch=832.00 (Fvco=3328.00, Nint=064, Nfrac=000)
-Fch=832.10 (Fvco=3328.40, Nint=064, Nfrac=001)
-Fch=832.20 (Fvco=3328.80, Nint=064, Nfrac=002)
-Fch=832.30 (Fvco=3329.20, Nint=064, Nfrac=003)
-Fch=832.40 (Fvco=3329.60, Nint=064, Nfrac=004)
-Fch=832.50 (Fvco=3330.00, Nint=064, Nfrac=005)
-Fch=832.60 (Fvco=3330.40, Nint=064, Nfrac=006)
-Fch=832.70 (Fvco=3330.80, Nint=064, Nfrac=007)
-Fch=832.80 (Fvco=3331.20, Nint=064, Nfrac=008)
-Fch=832.90 (Fvco=3331.60, Nint=064, Nfrac=009)
-Fch=833.00 (Fvco=3332.00, Nint=064, Nfrac=010)
-Fch=833.10 (Fvco=3332.40, Nint=064, Nfrac=011)
-Fch=833.20 (Fvco=3332.80, Nint=064, Nfrac=012)
-Fch=833.30 (Fvco=3333.20, Nint=064, Nfrac=013)
-Fch=833.40 (Fvco=3333.60, Nint=064, Nfrac=014)
-Fch=833.50 (Fvco=3334.00, Nint=064, Nfrac=015)
-Fch=833.60 (Fvco=3334.40, Nint=064, Nfrac=016)
-Fch=833.70 (Fvco=3334.80, Nint=064, Nfrac=017)
-Fch=833.80 (Fvco=3335.20, Nint=064, Nfrac=018)
-Fch=833.90 (Fvco=3335.60, Nint=064, Nfrac=019)
-Fch=834.00 (Fvco=3336.00, Nint=064, Nfrac=020)
-Fch=834.10 (Fvco=3336.40, Nint=064, Nfrac=021)
-Fch=834.20 (Fvco=3336.80, Nint=064, Nfrac=022)
-Fch=834.30 (Fvco=3337.20, Nint=064, Nfrac=023)
-Fch=834.40 (Fvco=3337.60, Nint=064, Nfrac=024)
-Fch=834.50 (Fvco=3338.00, Nint=064, Nfrac=025)
-Fch=834.60 (Fvco=3338.40, Nint=064, Nfrac=026)
-Fch=834.70 (Fvco=3338.80, Nint=064, Nfrac=027)
-Fch=834.80 (Fvco=3339.20, Nint=064, Nfrac=028)
-Fch=834.90 (Fvco=3339.60, Nint=064, Nfrac=029)
-Fch=835.00 (Fvco=3340.00, Nint=064, Nfrac=030)
-Fch=835.10 (Fvco=3340.40, Nint=064, Nfrac=031)
-Fch=835.20 (Fvco=3340.80, Nint=064, Nfrac=032)
-Fch=835.30 (Fvco=3341.20, Nint=064, Nfrac=033)
-Fch=835.40 (Fvco=3341.60, Nint=064, Nfrac=034)
-Fch=835.50 (Fvco=3342.00, Nint=064, Nfrac=035)
-Fch=835.60 (Fvco=3342.40, Nint=064, Nfrac=036)
-Fch=835.70 (Fvco=3342.80, Nint=064, Nfrac=037)
-Fch=835.80 (Fvco=3343.20, Nint=064, Nfrac=038)
-Fch=835.90 (Fvco=3343.60, Nint=064, Nfrac=039)
-Fch=836.00 (Fvco=3344.00, Nint=064, Nfrac=040)
-Fch=836.10 (Fvco=3344.40, Nint=064, Nfrac=041)
-Fch=836.20 (Fvco=3344.80, Nint=064, Nfrac=042)
-Fch=836.30 (Fvco=3345.20, Nint=064, Nfrac=043)
-Fch=836.40 (Fvco=3345.60, Nint=064, Nfrac=044)
-Fch=836.50 (Fvco=3346.00, Nint=064, Nfrac=045)
-Fch=836.60 (Fvco=3346.40, Nint=064, Nfrac=046)
-Fch=836.70 (Fvco=3346.80, Nint=064, Nfrac=047)
-Fch=836.80 (Fvco=3347.20, Nint=064, Nfrac=048)
-Fch=836.90 (Fvco=3347.60, Nint=064, Nfrac=049)
-Fch=837.00 (Fvco=3348.00, Nint=064, Nfrac=050)
-Fch=837.10 (Fvco=3348.40, Nint=064, Nfrac=051)
-Fch=837.20 (Fvco=3348.80, Nint=064, Nfrac=052)
-Fch=837.30 (Fvco=3349.20, Nint=064, Nfrac=053)
-Fch=837.40 (Fvco=3349.60, Nint=064, Nfrac=054)
-Fch=837.50 (Fvco=3350.00, Nint=064, Nfrac=055)
-Fch=837.60 (Fvco=3350.40, Nint=064, Nfrac=056)
-Fch=837.70 (Fvco=3350.80, Nint=064, Nfrac=057)
-Fch=837.80 (Fvco=3351.20, Nint=064, Nfrac=058)
-Fch=837.90 (Fvco=3351.60, Nint=064, Nfrac=059)
-Fch=838.00 (Fvco=3352.00, Nint=064, Nfrac=060)
-Fch=838.10 (Fvco=3352.40, Nint=064, Nfrac=061)
-Fch=838.20 (Fvco=3352.80, Nint=064, Nfrac=062)
-Fch=838.30 (Fvco=3353.20, Nint=064, Nfrac=063)
-Fch=838.40 (Fvco=3353.60, Nint=064, Nfrac=064)
-Fch=838.50 (Fvco=3354.00, Nint=064, Nfrac=065)
-Fch=838.60 (Fvco=3354.40, Nint=064, Nfrac=066)
-Fch=838.70 (Fvco=3354.80, Nint=064, Nfrac=067)
-Fch=838.80 (Fvco=3355.20, Nint=064, Nfrac=068)
-Fch=838.90 (Fvco=3355.60, Nint=064, Nfrac=069)
-Fch=839.00 (Fvco=3356.00, Nint=064, Nfrac=070)
-Fch=839.10 (Fvco=3356.40, Nint=064, Nfrac=071)
-Fch=839.20 (Fvco=3356.80, Nint=064, Nfrac=072)
-Fch=839.30 (Fvco=3357.20, Nint=064, Nfrac=073)
-Fch=839.40 (Fvco=3357.60, Nint=064, Nfrac=074)
-Fch=839.50 (Fvco=3358.00, Nint=064, Nfrac=075)
-Fch=839.60 (Fvco=3358.40, Nint=064, Nfrac=076)
-Fch=839.70 (Fvco=3358.80, Nint=064, Nfrac=077)
-Fch=839.80 (Fvco=3359.20, Nint=064, Nfrac=078)
-Fch=839.90 (Fvco=3359.60, Nint=064, Nfrac=079)
-Fch=840.00 (Fvco=3360.00, Nint=064, Nfrac=080)
-Fch=840.10 (Fvco=3360.40, Nint=064, Nfrac=081)
-Fch=840.20 (Fvco=3360.80, Nint=064, Nfrac=082)
-Fch=840.30 (Fvco=3361.20, Nint=064, Nfrac=083)
-Fch=840.40 (Fvco=3361.60, Nint=064, Nfrac=084)
-Fch=840.50 (Fvco=3362.00, Nint=064, Nfrac=085)
-Fch=840.60 (Fvco=3362.40, Nint=064, Nfrac=086)
-Fch=840.70 (Fvco=3362.80, Nint=064, Nfrac=087)
-Fch=840.80 (Fvco=3363.20, Nint=064, Nfrac=088)
-Fch=840.90 (Fvco=3363.60, Nint=064, Nfrac=089)
-Fch=841.00 (Fvco=3364.00, Nint=064, Nfrac=090)
-Fch=841.10 (Fvco=3364.40, Nint=064, Nfrac=091)
-Fch=841.20 (Fvco=3364.80, Nint=064, Nfrac=092)
-Fch=841.30 (Fvco=3365.20, Nint=064, Nfrac=093)
-Fch=841.40 (Fvco=3365.60, Nint=064, Nfrac=094)
-Fch=841.50 (Fvco=3366.00, Nint=064, Nfrac=095)
-Fch=841.60 (Fvco=3366.40, Nint=064, Nfrac=096)
-Fch=841.70 (Fvco=3366.80, Nint=064, Nfrac=097)
-Fch=841.80 (Fvco=3367.20, Nint=064, Nfrac=098)
-Fch=841.90 (Fvco=3367.60, Nint=064, Nfrac=099)
-Fch=842.00 (Fvco=3368.00, Nint=064, Nfrac=100)
-Fch=842.10 (Fvco=3368.40, Nint=064, Nfrac=101)
-Fch=842.20 (Fvco=3368.80, Nint=064, Nfrac=102)
-Fch=842.30 (Fvco=3369.20, Nint=064, Nfrac=103)
-Fch=842.40 (Fvco=3369.60, Nint=064, Nfrac=104)
-Fch=842.50 (Fvco=3370.00, Nint=064, Nfrac=105)
-Fch=842.60 (Fvco=3370.40, Nint=064, Nfrac=106)
-Fch=842.70 (Fvco=3370.80, Nint=064, Nfrac=107)
-Fch=842.80 (Fvco=3371.20, Nint=064, Nfrac=108)
-Fch=842.90 (Fvco=3371.60, Nint=064, Nfrac=109)
-Fch=843.00 (Fvco=3372.00, Nint=064, Nfrac=110)
-Fch=843.10 (Fvco=3372.40, Nint=064, Nfrac=111)
-Fch=843.20 (Fvco=3372.80, Nint=064, Nfrac=112)
-Fch=843.30 (Fvco=3373.20, Nint=064, Nfrac=113)
-Fch=843.40 (Fvco=3373.60, Nint=064, Nfrac=114)
-Fch=843.50 (Fvco=3374.00, Nint=064, Nfrac=115)
-Fch=843.60 (Fvco=3374.40, Nint=064, Nfrac=116)
-Fch=843.70 (Fvco=3374.80, Nint=064, Nfrac=117)
-Fch=843.80 (Fvco=3375.20, Nint=064, Nfrac=118)
-Fch=843.90 (Fvco=3375.60, Nint=064, Nfrac=119)
-Fch=844.00 (Fvco=3376.00, Nint=064, Nfrac=120)
-Fch=844.10 (Fvco=3376.40, Nint=064, Nfrac=121)
-Fch=844.20 (Fvco=3376.80, Nint=064, Nfrac=122)
-Fch=844.30 (Fvco=3377.20, Nint=064, Nfrac=123)
-Fch=844.40 (Fvco=3377.60, Nint=064, Nfrac=124)
-Fch=844.50 (Fvco=3378.00, Nint=064, Nfrac=125)
-Fch=844.60 (Fvco=3378.40, Nint=064, Nfrac=126)
-Fch=844.70 (Fvco=3378.80, Nint=064, Nfrac=127)
-Fch=844.80 (Fvco=3379.20, Nint=064, Nfrac=128)
-Fch=844.90 (Fvco=3379.60, Nint=064, Nfrac=129)
-Fch=845.00 (Fvco=3380.00, Nint=064, Nfrac=130)
-Fch=845.00 (Fvco=3380.00, Nint=065, Nfrac=000)
-Fch=845.10 (Fvco=3380.40, Nint=065, Nfrac=001)
-Fch=845.20 (Fvco=3380.80, Nint=065, Nfrac=002)
-Fch=845.30 (Fvco=3381.20, Nint=065, Nfrac=003)
-Fch=845.40 (Fvco=3381.60, Nint=065, Nfrac=004)
-Fch=845.50 (Fvco=3382.00, Nint=065, Nfrac=005)
-Fch=845.60 (Fvco=3382.40, Nint=065, Nfrac=006)
-Fch=845.70 (Fvco=3382.80, Nint=065, Nfrac=007)
-Fch=845.80 (Fvco=3383.20, Nint=065, Nfrac=008)
-Fch=845.90 (Fvco=3383.60, Nint=065, Nfrac=009)
-Fch=846.00 (Fvco=3384.00, Nint=065, Nfrac=010)
-Fch=846.10 (Fvco=3384.40, Nint=065, Nfrac=011)
-Fch=846.20 (Fvco=3384.80, Nint=065, Nfrac=012)
-Fch=846.30 (Fvco=3385.20, Nint=065, Nfrac=013)
-Fch=846.40 (Fvco=3385.60, Nint=065, Nfrac=014)
-Fch=846.50 (Fvco=3386.00, Nint=065, Nfrac=015)
-Fch=846.60 (Fvco=3386.40, Nint=065, Nfrac=016)
-Fch=846.70 (Fvco=3386.80, Nint=065, Nfrac=017)
-Fch=846.80 (Fvco=3387.20, Nint=065, Nfrac=018)
-Fch=846.90 (Fvco=3387.60, Nint=065, Nfrac=019)
-Fch=847.00 (Fvco=3388.00, Nint=065, Nfrac=020)
-Fch=847.10 (Fvco=3388.40, Nint=065, Nfrac=021)
-Fch=847.20 (Fvco=3388.80, Nint=065, Nfrac=022)
-Fch=847.30 (Fvco=3389.20, Nint=065, Nfrac=023)
-Fch=847.40 (Fvco=3389.60, Nint=065, Nfrac=024)
-Fch=847.50 (Fvco=3390.00, Nint=065, Nfrac=025)
-Fch=847.60 (Fvco=3390.40, Nint=065, Nfrac=026)
-Fch=847.70 (Fvco=3390.80, Nint=065, Nfrac=027)
-Fch=847.80 (Fvco=3391.20, Nint=065, Nfrac=028)
-Fch=847.90 (Fvco=3391.60, Nint=065, Nfrac=029)
-Fch=848.00 (Fvco=3392.00, Nint=065, Nfrac=030)
-Fch=848.10 (Fvco=3392.40, Nint=065, Nfrac=031)
-Fch=848.20 (Fvco=3392.80, Nint=065, Nfrac=032)
-Fch=848.30 (Fvco=3393.20, Nint=065, Nfrac=033)
-Fch=848.40 (Fvco=3393.60, Nint=065, Nfrac=034)
-Fch=848.50 (Fvco=3394.00, Nint=065, Nfrac=035)
-Fch=848.60 (Fvco=3394.40, Nint=065, Nfrac=036)
-Fch=848.70 (Fvco=3394.80, Nint=065, Nfrac=037)
-Fch=848.80 (Fvco=3395.20, Nint=065, Nfrac=038)
-Fch=848.90 (Fvco=3395.60, Nint=065, Nfrac=039)
-Fch=849.00 (Fvco=3396.00, Nint=065, Nfrac=040)
-Fch=849.10 (Fvco=3396.40, Nint=065, Nfrac=041)
-Fch=849.20 (Fvco=3396.80, Nint=065, Nfrac=042)
-Fch=849.30 (Fvco=3397.20, Nint=065, Nfrac=043)
-Fch=849.40 (Fvco=3397.60, Nint=065, Nfrac=044)
-Fch=849.50 (Fvco=3398.00, Nint=065, Nfrac=045)
-Fch=849.60 (Fvco=3398.40, Nint=065, Nfrac=046)
-Fch=849.70 (Fvco=3398.80, Nint=065, Nfrac=047)
-Fch=849.80 (Fvco=3399.20, Nint=065, Nfrac=048)
-Fch=849.90 (Fvco=3399.60, Nint=065, Nfrac=049)
-Fch=850.00 (Fvco=3400.00, Nint=065, Nfrac=050)
-Fch=850.10 (Fvco=3400.40, Nint=065, Nfrac=051)
-Fch=850.20 (Fvco=3400.80, Nint=065, Nfrac=052)
-Fch=850.30 (Fvco=3401.20, Nint=065, Nfrac=053)
-Fch=850.40 (Fvco=3401.60, Nint=065, Nfrac=054)
-Fch=850.50 (Fvco=3402.00, Nint=065, Nfrac=055)
-Fch=850.60 (Fvco=3402.40, Nint=065, Nfrac=056)
-Fch=850.70 (Fvco=3402.80, Nint=065, Nfrac=057)
-Fch=850.80 (Fvco=3403.20, Nint=065, Nfrac=058)
-Fch=850.90 (Fvco=3403.60, Nint=065, Nfrac=059)
-Fch=851.00 (Fvco=3404.00, Nint=065, Nfrac=060)
-Fch=851.10 (Fvco=3404.40, Nint=065, Nfrac=061)
-Fch=851.20 (Fvco=3404.80, Nint=065, Nfrac=062)
-Fch=851.30 (Fvco=3405.20, Nint=065, Nfrac=063)
-Fch=851.40 (Fvco=3405.60, Nint=065, Nfrac=064)
-Fch=851.50 (Fvco=3406.00, Nint=065, Nfrac=065)
-Fch=851.60 (Fvco=3406.40, Nint=065, Nfrac=066)
-Fch=851.70 (Fvco=3406.80, Nint=065, Nfrac=067)
-Fch=851.80 (Fvco=3407.20, Nint=065, Nfrac=068)
-Fch=851.90 (Fvco=3407.60, Nint=065, Nfrac=069)
-Fch=852.00 (Fvco=3408.00, Nint=065, Nfrac=070)
-Fch=852.10 (Fvco=3408.40, Nint=065, Nfrac=071)
-Fch=852.20 (Fvco=3408.80, Nint=065, Nfrac=072)
-Fch=852.30 (Fvco=3409.20, Nint=065, Nfrac=073)
-Fch=852.40 (Fvco=3409.60, Nint=065, Nfrac=074)
-Fch=852.50 (Fvco=3410.00, Nint=065, Nfrac=075)
-Fch=852.60 (Fvco=3410.40, Nint=065, Nfrac=076)
-Fch=852.70 (Fvco=3410.80, Nint=065, Nfrac=077)
-Fch=852.80 (Fvco=3411.20, Nint=065, Nfrac=078)
-Fch=852.90 (Fvco=3411.60, Nint=065, Nfrac=079)
-Fch=853.00 (Fvco=3412.00, Nint=065, Nfrac=080)
-Fch=853.10 (Fvco=3412.40, Nint=065, Nfrac=081)
-Fch=853.20 (Fvco=3412.80, Nint=065, Nfrac=082)
-Fch=853.30 (Fvco=3413.20, Nint=065, Nfrac=083)
-Fch=853.40 (Fvco=3413.60, Nint=065, Nfrac=084)
-Fch=853.50 (Fvco=3414.00, Nint=065, Nfrac=085)
-Fch=853.60 (Fvco=3414.40, Nint=065, Nfrac=086)
-Fch=853.70 (Fvco=3414.80, Nint=065, Nfrac=087)
-Fch=853.80 (Fvco=3415.20, Nint=065, Nfrac=088)
-Fch=853.90 (Fvco=3415.60, Nint=065, Nfrac=089)
-Fch=854.00 (Fvco=3416.00, Nint=065, Nfrac=090)
-Fch=854.10 (Fvco=3416.40, Nint=065, Nfrac=091)
-Fch=854.20 (Fvco=3416.80, Nint=065, Nfrac=092)
-Fch=854.30 (Fvco=3417.20, Nint=065, Nfrac=093)
-Fch=854.40 (Fvco=3417.60, Nint=065, Nfrac=094)
-Fch=854.50 (Fvco=3418.00, Nint=065, Nfrac=095)
-Fch=854.60 (Fvco=3418.40, Nint=065, Nfrac=096)
-Fch=854.70 (Fvco=3418.80, Nint=065, Nfrac=097)
-Fch=854.80 (Fvco=3419.20, Nint=065, Nfrac=098)
-Fch=854.90 (Fvco=3419.60, Nint=065, Nfrac=099)
-Fch=855.00 (Fvco=3420.00, Nint=065, Nfrac=100)
-Fch=855.10 (Fvco=3420.40, Nint=065, Nfrac=101)
-Fch=855.20 (Fvco=3420.80, Nint=065, Nfrac=102)
-Fch=855.30 (Fvco=3421.20, Nint=065, Nfrac=103)
-Fch=855.40 (Fvco=3421.60, Nint=065, Nfrac=104)
-Fch=855.50 (Fvco=3422.00, Nint=065, Nfrac=105)
-Fch=855.60 (Fvco=3422.40, Nint=065, Nfrac=106)
-Fch=855.70 (Fvco=3422.80, Nint=065, Nfrac=107)
-Fch=855.80 (Fvco=3423.20, Nint=065, Nfrac=108)
-Fch=855.90 (Fvco=3423.60, Nint=065, Nfrac=109)
-Fch=856.00 (Fvco=3424.00, Nint=065, Nfrac=110)
-Fch=856.10 (Fvco=3424.40, Nint=065, Nfrac=111)
-Fch=856.20 (Fvco=3424.80, Nint=065, Nfrac=112)
-Fch=856.30 (Fvco=3425.20, Nint=065, Nfrac=113)
-Fch=856.40 (Fvco=3425.60, Nint=065, Nfrac=114)
-Fch=856.50 (Fvco=3426.00, Nint=065, Nfrac=115)
-Fch=856.60 (Fvco=3426.40, Nint=065, Nfrac=116)
-Fch=856.70 (Fvco=3426.80, Nint=065, Nfrac=117)
-Fch=856.80 (Fvco=3427.20, Nint=065, Nfrac=118)
-Fch=856.90 (Fvco=3427.60, Nint=065, Nfrac=119)
-Fch=857.00 (Fvco=3428.00, Nint=065, Nfrac=120)
-Fch=857.10 (Fvco=3428.40, Nint=065, Nfrac=121)
-Fch=857.20 (Fvco=3428.80, Nint=065, Nfrac=122)
-Fch=857.30 (Fvco=3429.20, Nint=065, Nfrac=123)
-Fch=857.40 (Fvco=3429.60, Nint=065, Nfrac=124)
-Fch=857.50 (Fvco=3430.00, Nint=065, Nfrac=125)
-Fch=857.60 (Fvco=3430.40, Nint=065, Nfrac=126)
-Fch=857.70 (Fvco=3430.80, Nint=065, Nfrac=127)
-Fch=857.80 (Fvco=3431.20, Nint=065, Nfrac=128)
-Fch=857.90 (Fvco=3431.60, Nint=065, Nfrac=129)
-Fch=858.00 (Fvco=3432.00, Nint=065, Nfrac=130)
-Fch=858.00 (Fvco=3432.00, Nint=066, Nfrac=000)
-Fch=858.10 (Fvco=3432.40, Nint=066, Nfrac=001)
-Fch=858.20 (Fvco=3432.80, Nint=066, Nfrac=002)
-Fch=858.30 (Fvco=3433.20, Nint=066, Nfrac=003)
-Fch=858.40 (Fvco=3433.60, Nint=066, Nfrac=004)
-Fch=858.50 (Fvco=3434.00, Nint=066, Nfrac=005)
-Fch=858.60 (Fvco=3434.40, Nint=066, Nfrac=006)
-Fch=858.70 (Fvco=3434.80, Nint=066, Nfrac=007)
-Fch=858.80 (Fvco=3435.20, Nint=066, Nfrac=008)
-Fch=858.90 (Fvco=3435.60, Nint=066, Nfrac=009)
-Fch=859.00 (Fvco=3436.00, Nint=066, Nfrac=010)
-Fch=859.10 (Fvco=3436.40, Nint=066, Nfrac=011)
-Fch=859.20 (Fvco=3436.80, Nint=066, Nfrac=012)
-Fch=859.30 (Fvco=3437.20, Nint=066, Nfrac=013)
-Fch=859.40 (Fvco=3437.60, Nint=066, Nfrac=014)
-Fch=859.50 (Fvco=3438.00, Nint=066, Nfrac=015)
-Fch=859.60 (Fvco=3438.40, Nint=066, Nfrac=016)
-Fch=859.70 (Fvco=3438.80, Nint=066, Nfrac=017)
-Fch=859.80 (Fvco=3439.20, Nint=066, Nfrac=018)
-Fch=859.90 (Fvco=3439.60, Nint=066, Nfrac=019)
-Fch=860.00 (Fvco=3440.00, Nint=066, Nfrac=020)
-Fch=860.10 (Fvco=3440.40, Nint=066, Nfrac=021)
-Fch=860.20 (Fvco=3440.80, Nint=066, Nfrac=022)
-Fch=860.30 (Fvco=3441.20, Nint=066, Nfrac=023)
-Fch=860.40 (Fvco=3441.60, Nint=066, Nfrac=024)
-Fch=860.50 (Fvco=3442.00, Nint=066, Nfrac=025)
-Fch=860.60 (Fvco=3442.40, Nint=066, Nfrac=026)
-Fch=860.70 (Fvco=3442.80, Nint=066, Nfrac=027)
-Fch=860.80 (Fvco=3443.20, Nint=066, Nfrac=028)
-Fch=860.90 (Fvco=3443.60, Nint=066, Nfrac=029)
-Fch=861.00 (Fvco=3444.00, Nint=066, Nfrac=030)
-Fch=861.10 (Fvco=3444.40, Nint=066, Nfrac=031)
-Fch=861.20 (Fvco=3444.80, Nint=066, Nfrac=032)
-Fch=861.30 (Fvco=3445.20, Nint=066, Nfrac=033)
-Fch=861.40 (Fvco=3445.60, Nint=066, Nfrac=034)
-Fch=861.50 (Fvco=3446.00, Nint=066, Nfrac=035)
-Fch=861.60 (Fvco=3446.40, Nint=066, Nfrac=036)
-Fch=861.70 (Fvco=3446.80, Nint=066, Nfrac=037)
-Fch=861.80 (Fvco=3447.20, Nint=066, Nfrac=038)
-Fch=861.90 (Fvco=3447.60, Nint=066, Nfrac=039)
-Fch=862.00 (Fvco=3448.00, Nint=066, Nfrac=040)
-Fch=862.10 (Fvco=3448.40, Nint=066, Nfrac=041)
-Fch=862.20 (Fvco=3448.80, Nint=066, Nfrac=042)
-Fch=862.30 (Fvco=3449.20, Nint=066, Nfrac=043)
-Fch=862.40 (Fvco=3449.60, Nint=066, Nfrac=044)
-Fch=862.50 (Fvco=3450.00, Nint=066, Nfrac=045)
-Fch=862.60 (Fvco=3450.40, Nint=066, Nfrac=046)
-Fch=862.70 (Fvco=3450.80, Nint=066, Nfrac=047)
-Fch=862.80 (Fvco=3451.20, Nint=066, Nfrac=048)
-Fch=862.90 (Fvco=3451.60, Nint=066, Nfrac=049)
-Fch=863.00 (Fvco=3452.00, Nint=066, Nfrac=050)
-Fch=863.10 (Fvco=3452.40, Nint=066, Nfrac=051)
-Fch=863.20 (Fvco=3452.80, Nint=066, Nfrac=052)
-Fch=863.30 (Fvco=3453.20, Nint=066, Nfrac=053)
-Fch=863.40 (Fvco=3453.60, Nint=066, Nfrac=054)
-Fch=863.50 (Fvco=3454.00, Nint=066, Nfrac=055)
-Fch=863.60 (Fvco=3454.40, Nint=066, Nfrac=056)
-Fch=863.70 (Fvco=3454.80, Nint=066, Nfrac=057)
-Fch=863.80 (Fvco=3455.20, Nint=066, Nfrac=058)
-Fch=863.90 (Fvco=3455.60, Nint=066, Nfrac=059)
-Fch=864.00 (Fvco=3456.00, Nint=066, Nfrac=060)
-Fch=864.10 (Fvco=3456.40, Nint=066, Nfrac=061)
-Fch=864.20 (Fvco=3456.80, Nint=066, Nfrac=062)
-Fch=864.30 (Fvco=3457.20, Nint=066, Nfrac=063)
-Fch=864.40 (Fvco=3457.60, Nint=066, Nfrac=064)
-Fch=864.50 (Fvco=3458.00, Nint=066, Nfrac=065)
-Fch=864.60 (Fvco=3458.40, Nint=066, Nfrac=066)
-Fch=864.70 (Fvco=3458.80, Nint=066, Nfrac=067)
-Fch=864.80 (Fvco=3459.20, Nint=066, Nfrac=068)
-Fch=864.90 (Fvco=3459.60, Nint=066, Nfrac=069)
-Fch=865.00 (Fvco=3460.00, Nint=066, Nfrac=070)
-Fch=865.10 (Fvco=3460.40, Nint=066, Nfrac=071)
-Fch=865.20 (Fvco=3460.80, Nint=066, Nfrac=072)
-Fch=865.30 (Fvco=3461.20, Nint=066, Nfrac=073)
-Fch=865.40 (Fvco=3461.60, Nint=066, Nfrac=074)
-Fch=865.50 (Fvco=3462.00, Nint=066, Nfrac=075)
-Fch=865.60 (Fvco=3462.40, Nint=066, Nfrac=076)
-Fch=865.70 (Fvco=3462.80, Nint=066, Nfrac=077)
-Fch=865.80 (Fvco=3463.20, Nint=066, Nfrac=078)
-Fch=865.90 (Fvco=3463.60, Nint=066, Nfrac=079)
-Fch=866.00 (Fvco=3464.00, Nint=066, Nfrac=080)
-Fch=866.10 (Fvco=3464.40, Nint=066, Nfrac=081)
-Fch=866.20 (Fvco=3464.80, Nint=066, Nfrac=082)
-Fch=866.30 (Fvco=3465.20, Nint=066, Nfrac=083)
-Fch=866.40 (Fvco=3465.60, Nint=066, Nfrac=084)
-Fch=866.50 (Fvco=3466.00, Nint=066, Nfrac=085)
-Fch=866.60 (Fvco=3466.40, Nint=066, Nfrac=086)
-Fch=866.70 (Fvco=3466.80, Nint=066, Nfrac=087)
-Fch=866.80 (Fvco=3467.20, Nint=066, Nfrac=088)
-Fch=866.90 (Fvco=3467.60, Nint=066, Nfrac=089)
-Fch=867.00 (Fvco=3468.00, Nint=066, Nfrac=090)
-Fch=867.10 (Fvco=3468.40, Nint=066, Nfrac=091)
-Fch=867.20 (Fvco=3468.80, Nint=066, Nfrac=092)
-Fch=867.30 (Fvco=3469.20, Nint=066, Nfrac=093)
-Fch=867.40 (Fvco=3469.60, Nint=066, Nfrac=094)
-Fch=867.50 (Fvco=3470.00, Nint=066, Nfrac=095)
-Fch=867.60 (Fvco=3470.40, Nint=066, Nfrac=096)
-Fch=867.70 (Fvco=3470.80, Nint=066, Nfrac=097)
-Fch=867.80 (Fvco=3471.20, Nint=066, Nfrac=098)
-Fch=867.90 (Fvco=3471.60, Nint=066, Nfrac=099)
-Fch=868.00 (Fvco=3472.00, Nint=066, Nfrac=100)
-Fch=868.10 (Fvco=3472.40, Nint=066, Nfrac=101)
-Fch=868.20 (Fvco=3472.80, Nint=066, Nfrac=102)
-Fch=868.30 (Fvco=3473.20, Nint=066, Nfrac=103)
-Fch=868.40 (Fvco=3473.60, Nint=066, Nfrac=104)
-Fch=868.50 (Fvco=3474.00, Nint=066, Nfrac=105)
-Fch=868.60 (Fvco=3474.40, Nint=066, Nfrac=106)
-Fch=868.70 (Fvco=3474.80, Nint=066, Nfrac=107)
-Fch=868.80 (Fvco=3475.20, Nint=066, Nfrac=108)
-Fch=868.90 (Fvco=3475.60, Nint=066, Nfrac=109)
-Fch=869.00 (Fvco=3476.00, Nint=066, Nfrac=110)
-Fch=869.10 (Fvco=3476.40, Nint=066, Nfrac=111)
-Fch=869.20 (Fvco=3476.80, Nint=066, Nfrac=112)
-Fch=869.30 (Fvco=3477.20, Nint=066, Nfrac=113)
-Fch=869.40 (Fvco=3477.60, Nint=066, Nfrac=114)
-Fch=869.50 (Fvco=3478.00, Nint=066, Nfrac=115)
-Fch=869.60 (Fvco=3478.40, Nint=066, Nfrac=116)
-Fch=869.70 (Fvco=3478.80, Nint=066, Nfrac=117)
-Fch=869.80 (Fvco=3479.20, Nint=066, Nfrac=118)
-Fch=869.90 (Fvco=3479.60, Nint=066, Nfrac=119)
-Fch=870.00 (Fvco=3480.00, Nint=066, Nfrac=120)
-Fch=870.10 (Fvco=3480.40, Nint=066, Nfrac=121)
-Fch=870.20 (Fvco=3480.80, Nint=066, Nfrac=122)
-Fch=870.30 (Fvco=3481.20, Nint=066, Nfrac=123)
-Fch=870.40 (Fvco=3481.60, Nint=066, Nfrac=124)
-Fch=870.50 (Fvco=3482.00, Nint=066, Nfrac=125)
-Fch=870.60 (Fvco=3482.40, Nint=066, Nfrac=126)
-Fch=870.70 (Fvco=3482.80, Nint=066, Nfrac=127)
-Fch=870.80 (Fvco=3483.20, Nint=066, Nfrac=128)
-Fch=870.90 (Fvco=3483.60, Nint=066, Nfrac=129)
-Fch=871.00 (Fvco=3484.00, Nint=066, Nfrac=130)
-Fch=871.00 (Fvco=3484.00, Nint=067, Nfrac=000)
-Fch=871.10 (Fvco=3484.40, Nint=067, Nfrac=001)
-Fch=871.20 (Fvco=3484.80, Nint=067, Nfrac=002)
-Fch=871.30 (Fvco=3485.20, Nint=067, Nfrac=003)
-Fch=871.40 (Fvco=3485.60, Nint=067, Nfrac=004)
-Fch=871.50 (Fvco=3486.00, Nint=067, Nfrac=005)
-Fch=871.60 (Fvco=3486.40, Nint=067, Nfrac=006)
-Fch=871.70 (Fvco=3486.80, Nint=067, Nfrac=007)
-Fch=871.80 (Fvco=3487.20, Nint=067, Nfrac=008)
-Fch=871.90 (Fvco=3487.60, Nint=067, Nfrac=009)
-Fch=872.00 (Fvco=3488.00, Nint=067, Nfrac=010)
-Fch=872.10 (Fvco=3488.40, Nint=067, Nfrac=011)
-Fch=872.20 (Fvco=3488.80, Nint=067, Nfrac=012)
-Fch=872.30 (Fvco=3489.20, Nint=067, Nfrac=013)
-Fch=872.40 (Fvco=3489.60, Nint=067, Nfrac=014)
-Fch=872.50 (Fvco=3490.00, Nint=067, Nfrac=015)
-Fch=872.60 (Fvco=3490.40, Nint=067, Nfrac=016)
-Fch=872.70 (Fvco=3490.80, Nint=067, Nfrac=017)
-Fch=872.80 (Fvco=3491.20, Nint=067, Nfrac=018)
-Fch=872.90 (Fvco=3491.60, Nint=067, Nfrac=019)
-Fch=873.00 (Fvco=3492.00, Nint=067, Nfrac=020)
-Fch=873.10 (Fvco=3492.40, Nint=067, Nfrac=021)
-Fch=873.20 (Fvco=3492.80, Nint=067, Nfrac=022)
-Fch=873.30 (Fvco=3493.20, Nint=067, Nfrac=023)
-Fch=873.40 (Fvco=3493.60, Nint=067, Nfrac=024)
-Fch=873.50 (Fvco=3494.00, Nint=067, Nfrac=025)
-Fch=873.60 (Fvco=3494.40, Nint=067, Nfrac=026)
-Fch=873.70 (Fvco=3494.80, Nint=067, Nfrac=027)
-Fch=873.80 (Fvco=3495.20, Nint=067, Nfrac=028)
-Fch=873.90 (Fvco=3495.60, Nint=067, Nfrac=029)
-Fch=874.00 (Fvco=3496.00, Nint=067, Nfrac=030)
-Fch=874.10 (Fvco=3496.40, Nint=067, Nfrac=031)
-Fch=874.20 (Fvco=3496.80, Nint=067, Nfrac=032)
-Fch=874.30 (Fvco=3497.20, Nint=067, Nfrac=033)
-Fch=874.40 (Fvco=3497.60, Nint=067, Nfrac=034)
-Fch=874.50 (Fvco=3498.00, Nint=067, Nfrac=035)
-Fch=874.60 (Fvco=3498.40, Nint=067, Nfrac=036)
-Fch=874.70 (Fvco=3498.80, Nint=067, Nfrac=037)
-Fch=874.80 (Fvco=3499.20, Nint=067, Nfrac=038)
-Fch=874.90 (Fvco=3499.60, Nint=067, Nfrac=039)
-Fch=875.00 (Fvco=3500.00, Nint=067, Nfrac=040)
-Fch=875.10 (Fvco=3500.40, Nint=067, Nfrac=041)
-Fch=875.20 (Fvco=3500.80, Nint=067, Nfrac=042)
-Fch=875.30 (Fvco=3501.20, Nint=067, Nfrac=043)
-Fch=875.40 (Fvco=3501.60, Nint=067, Nfrac=044)
-Fch=875.50 (Fvco=3502.00, Nint=067, Nfrac=045)
-Fch=875.60 (Fvco=3502.40, Nint=067, Nfrac=046)
-Fch=875.70 (Fvco=3502.80, Nint=067, Nfrac=047)
-Fch=875.80 (Fvco=3503.20, Nint=067, Nfrac=048)
-Fch=875.90 (Fvco=3503.60, Nint=067, Nfrac=049)
-Fch=876.00 (Fvco=3504.00, Nint=067, Nfrac=050)
-Fch=876.10 (Fvco=3504.40, Nint=067, Nfrac=051)
-Fch=876.20 (Fvco=3504.80, Nint=067, Nfrac=052)
-Fch=876.30 (Fvco=3505.20, Nint=067, Nfrac=053)
-Fch=876.40 (Fvco=3505.60, Nint=067, Nfrac=054)
-Fch=876.50 (Fvco=3506.00, Nint=067, Nfrac=055)
-Fch=876.60 (Fvco=3506.40, Nint=067, Nfrac=056)
-Fch=876.70 (Fvco=3506.80, Nint=067, Nfrac=057)
-Fch=876.80 (Fvco=3507.20, Nint=067, Nfrac=058)
-Fch=876.90 (Fvco=3507.60, Nint=067, Nfrac=059)
-Fch=877.00 (Fvco=3508.00, Nint=067, Nfrac=060)
-Fch=877.10 (Fvco=3508.40, Nint=067, Nfrac=061)
-Fch=877.20 (Fvco=3508.80, Nint=067, Nfrac=062)
-Fch=877.30 (Fvco=3509.20, Nint=067, Nfrac=063)
-Fch=877.40 (Fvco=3509.60, Nint=067, Nfrac=064)
-Fch=877.50 (Fvco=3510.00, Nint=067, Nfrac=065)
-Fch=877.60 (Fvco=3510.40, Nint=067, Nfrac=066)
-Fch=877.70 (Fvco=3510.80, Nint=067, Nfrac=067)
-Fch=877.80 (Fvco=3511.20, Nint=067, Nfrac=068)
-Fch=877.90 (Fvco=3511.60, Nint=067, Nfrac=069)
-Fch=878.00 (Fvco=3512.00, Nint=067, Nfrac=070)
-Fch=878.10 (Fvco=3512.40, Nint=067, Nfrac=071)
-Fch=878.20 (Fvco=3512.80, Nint=067, Nfrac=072)
-Fch=878.30 (Fvco=3513.20, Nint=067, Nfrac=073)
-Fch=878.40 (Fvco=3513.60, Nint=067, Nfrac=074)
-Fch=878.50 (Fvco=3514.00, Nint=067, Nfrac=075)
-Fch=878.60 (Fvco=3514.40, Nint=067, Nfrac=076)
-Fch=878.70 (Fvco=3514.80, Nint=067, Nfrac=077)
-Fch=878.80 (Fvco=3515.20, Nint=067, Nfrac=078)
-Fch=878.90 (Fvco=3515.60, Nint=067, Nfrac=079)
-Fch=879.00 (Fvco=3516.00, Nint=067, Nfrac=080)
-Fch=879.10 (Fvco=3516.40, Nint=067, Nfrac=081)
-Fch=879.20 (Fvco=3516.80, Nint=067, Nfrac=082)
-Fch=879.30 (Fvco=3517.20, Nint=067, Nfrac=083)
-Fch=879.40 (Fvco=3517.60, Nint=067, Nfrac=084)
-Fch=879.50 (Fvco=3518.00, Nint=067, Nfrac=085)
-Fch=879.60 (Fvco=3518.40, Nint=067, Nfrac=086)
-Fch=879.70 (Fvco=3518.80, Nint=067, Nfrac=087)
-Fch=879.80 (Fvco=3519.20, Nint=067, Nfrac=088)
-Fch=879.90 (Fvco=3519.60, Nint=067, Nfrac=089)
-Fch=880.00 (Fvco=3520.00, Nint=067, Nfrac=090)
-Fch=880.10 (Fvco=3520.40, Nint=067, Nfrac=091)
-Fch=880.20 (Fvco=3520.80, Nint=067, Nfrac=092)
-Fch=880.30 (Fvco=3521.20, Nint=067, Nfrac=093)
-Fch=880.40 (Fvco=3521.60, Nint=067, Nfrac=094)
-Fch=880.50 (Fvco=3522.00, Nint=067, Nfrac=095)
-Fch=880.60 (Fvco=3522.40, Nint=067, Nfrac=096)
-Fch=880.70 (Fvco=3522.80, Nint=067, Nfrac=097)
-Fch=880.80 (Fvco=3523.20, Nint=067, Nfrac=098)
-Fch=880.90 (Fvco=3523.60, Nint=067, Nfrac=099)
-Fch=881.00 (Fvco=3524.00, Nint=067, Nfrac=100)
-Fch=881.10 (Fvco=3524.40, Nint=067, Nfrac=101)
-Fch=881.20 (Fvco=3524.80, Nint=067, Nfrac=102)
-Fch=881.30 (Fvco=3525.20, Nint=067, Nfrac=103)
-Fch=881.40 (Fvco=3525.60, Nint=067, Nfrac=104)
-Fch=881.50 (Fvco=3526.00, Nint=067, Nfrac=105)
-Fch=881.60 (Fvco=3526.40, Nint=067, Nfrac=106)
-Fch=881.70 (Fvco=3526.80, Nint=067, Nfrac=107)
-Fch=881.80 (Fvco=3527.20, Nint=067, Nfrac=108)
-Fch=881.90 (Fvco=3527.60, Nint=067, Nfrac=109)
-Fch=882.00 (Fvco=3528.00, Nint=067, Nfrac=110)
-Fch=882.10 (Fvco=3528.40, Nint=067, Nfrac=111)
-Fch=882.20 (Fvco=3528.80, Nint=067, Nfrac=112)
-Fch=882.30 (Fvco=3529.20, Nint=067, Nfrac=113)
-Fch=882.40 (Fvco=3529.60, Nint=067, Nfrac=114)
-Fch=882.50 (Fvco=3530.00, Nint=067, Nfrac=115)
-Fch=882.60 (Fvco=3530.40, Nint=067, Nfrac=116)
-Fch=882.70 (Fvco=3530.80, Nint=067, Nfrac=117)
-Fch=882.80 (Fvco=3531.20, Nint=067, Nfrac=118)
-Fch=882.90 (Fvco=3531.60, Nint=067, Nfrac=119)
-Fch=883.00 (Fvco=3532.00, Nint=067, Nfrac=120)
-Fch=883.10 (Fvco=3532.40, Nint=067, Nfrac=121)
-Fch=883.20 (Fvco=3532.80, Nint=067, Nfrac=122)
-Fch=883.30 (Fvco=3533.20, Nint=067, Nfrac=123)
-Fch=883.40 (Fvco=3533.60, Nint=067, Nfrac=124)
-Fch=883.50 (Fvco=3534.00, Nint=067, Nfrac=125)
-Fch=883.60 (Fvco=3534.40, Nint=067, Nfrac=126)
-Fch=883.70 (Fvco=3534.80, Nint=067, Nfrac=127)
-Fch=883.80 (Fvco=3535.20, Nint=067, Nfrac=128)
-Fch=883.90 (Fvco=3535.60, Nint=067, Nfrac=129)
-Fch=884.00 (Fvco=3536.00, Nint=067, Nfrac=130)
-Fch=884.00 (Fvco=3536.00, Nint=068, Nfrac=000)
-Fch=884.10 (Fvco=3536.40, Nint=068, Nfrac=001)
-Fch=884.20 (Fvco=3536.80, Nint=068, Nfrac=002)
-Fch=884.30 (Fvco=3537.20, Nint=068, Nfrac=003)
-Fch=884.40 (Fvco=3537.60, Nint=068, Nfrac=004)
-Fch=884.50 (Fvco=3538.00, Nint=068, Nfrac=005)
-Fch=884.60 (Fvco=3538.40, Nint=068, Nfrac=006)
-Fch=884.70 (Fvco=3538.80, Nint=068, Nfrac=007)
-Fch=884.80 (Fvco=3539.20, Nint=068, Nfrac=008)
-Fch=884.90 (Fvco=3539.60, Nint=068, Nfrac=009)
-Fch=885.00 (Fvco=3540.00, Nint=068, Nfrac=010)
-Fch=885.10 (Fvco=3540.40, Nint=068, Nfrac=011)
-Fch=885.20 (Fvco=3540.80, Nint=068, Nfrac=012)
-Fch=885.30 (Fvco=3541.20, Nint=068, Nfrac=013)
-Fch=885.40 (Fvco=3541.60, Nint=068, Nfrac=014)
-Fch=885.50 (Fvco=3542.00, Nint=068, Nfrac=015)
-Fch=885.60 (Fvco=3542.40, Nint=068, Nfrac=016)
-Fch=885.70 (Fvco=3542.80, Nint=068, Nfrac=017)
-Fch=885.80 (Fvco=3543.20, Nint=068, Nfrac=018)
-Fch=885.90 (Fvco=3543.60, Nint=068, Nfrac=019)
-Fch=886.00 (Fvco=3544.00, Nint=068, Nfrac=020)
-Fch=886.10 (Fvco=3544.40, Nint=068, Nfrac=021)
-Fch=886.20 (Fvco=3544.80, Nint=068, Nfrac=022)
-Fch=886.30 (Fvco=3545.20, Nint=068, Nfrac=023)
-Fch=886.40 (Fvco=3545.60, Nint=068, Nfrac=024)
-Fch=886.50 (Fvco=3546.00, Nint=068, Nfrac=025)
-Fch=886.60 (Fvco=3546.40, Nint=068, Nfrac=026)
-Fch=886.70 (Fvco=3546.80, Nint=068, Nfrac=027)
-Fch=886.80 (Fvco=3547.20, Nint=068, Nfrac=028)
-Fch=886.90 (Fvco=3547.60, Nint=068, Nfrac=029)
-Fch=887.00 (Fvco=3548.00, Nint=068, Nfrac=030)
-Fch=887.10 (Fvco=3548.40, Nint=068, Nfrac=031)
-Fch=887.20 (Fvco=3548.80, Nint=068, Nfrac=032)
-Fch=887.30 (Fvco=3549.20, Nint=068, Nfrac=033)
-Fch=887.40 (Fvco=3549.60, Nint=068, Nfrac=034)
-Fch=887.50 (Fvco=3550.00, Nint=068, Nfrac=035)
-Fch=887.60 (Fvco=3550.40, Nint=068, Nfrac=036)
-Fch=887.70 (Fvco=3550.80, Nint=068, Nfrac=037)
-Fch=887.80 (Fvco=3551.20, Nint=068, Nfrac=038)
-Fch=887.90 (Fvco=3551.60, Nint=068, Nfrac=039)
-Fch=888.00 (Fvco=3552.00, Nint=068, Nfrac=040)
-Fch=888.10 (Fvco=3552.40, Nint=068, Nfrac=041)
-Fch=888.20 (Fvco=3552.80, Nint=068, Nfrac=042)
-Fch=888.30 (Fvco=3553.20, Nint=068, Nfrac=043)
-Fch=888.40 (Fvco=3553.60, Nint=068, Nfrac=044)
-Fch=888.50 (Fvco=3554.00, Nint=068, Nfrac=045)
-Fch=888.60 (Fvco=3554.40, Nint=068, Nfrac=046)
-Fch=888.70 (Fvco=3554.80, Nint=068, Nfrac=047)
-Fch=888.80 (Fvco=3555.20, Nint=068, Nfrac=048)
-Fch=888.90 (Fvco=3555.60, Nint=068, Nfrac=049)
-Fch=889.00 (Fvco=3556.00, Nint=068, Nfrac=050)
-Fch=889.10 (Fvco=3556.40, Nint=068, Nfrac=051)
-Fch=889.20 (Fvco=3556.80, Nint=068, Nfrac=052)
-Fch=889.30 (Fvco=3557.20, Nint=068, Nfrac=053)
-Fch=889.40 (Fvco=3557.60, Nint=068, Nfrac=054)
-Fch=889.50 (Fvco=3558.00, Nint=068, Nfrac=055)
-Fch=889.60 (Fvco=3558.40, Nint=068, Nfrac=056)
-Fch=889.70 (Fvco=3558.80, Nint=068, Nfrac=057)
-Fch=889.80 (Fvco=3559.20, Nint=068, Nfrac=058)
-Fch=889.90 (Fvco=3559.60, Nint=068, Nfrac=059)
-Fch=890.00 (Fvco=3560.00, Nint=068, Nfrac=060)
-Fch=890.10 (Fvco=3560.40, Nint=068, Nfrac=061)
-Fch=890.20 (Fvco=3560.80, Nint=068, Nfrac=062)
-Fch=890.30 (Fvco=3561.20, Nint=068, Nfrac=063)
-Fch=890.40 (Fvco=3561.60, Nint=068, Nfrac=064)
-Fch=890.50 (Fvco=3562.00, Nint=068, Nfrac=065)
-Fch=890.60 (Fvco=3562.40, Nint=068, Nfrac=066)
-Fch=890.70 (Fvco=3562.80, Nint=068, Nfrac=067)
-Fch=890.80 (Fvco=3563.20, Nint=068, Nfrac=068)
-Fch=890.90 (Fvco=3563.60, Nint=068, Nfrac=069)
-Fch=891.00 (Fvco=3564.00, Nint=068, Nfrac=070)
-Fch=891.10 (Fvco=3564.40, Nint=068, Nfrac=071)
-Fch=891.20 (Fvco=3564.80, Nint=068, Nfrac=072)
-Fch=891.30 (Fvco=3565.20, Nint=068, Nfrac=073)
-Fch=891.40 (Fvco=3565.60, Nint=068, Nfrac=074)
-Fch=891.50 (Fvco=3566.00, Nint=068, Nfrac=075)
-Fch=891.60 (Fvco=3566.40, Nint=068, Nfrac=076)
-Fch=891.70 (Fvco=3566.80, Nint=068, Nfrac=077)
-Fch=891.80 (Fvco=3567.20, Nint=068, Nfrac=078)
-Fch=891.90 (Fvco=3567.60, Nint=068, Nfrac=079)
-Fch=892.00 (Fvco=3568.00, Nint=068, Nfrac=080)
-Fch=892.10 (Fvco=3568.40, Nint=068, Nfrac=081)
-Fch=892.20 (Fvco=3568.80, Nint=068, Nfrac=082)
-Fch=892.30 (Fvco=3569.20, Nint=068, Nfrac=083)
-Fch=892.40 (Fvco=3569.60, Nint=068, Nfrac=084)
-Fch=892.50 (Fvco=3570.00, Nint=068, Nfrac=085)
-Fch=892.60 (Fvco=3570.40, Nint=068, Nfrac=086)
-Fch=892.70 (Fvco=3570.80, Nint=068, Nfrac=087)
-Fch=892.80 (Fvco=3571.20, Nint=068, Nfrac=088)
-Fch=892.90 (Fvco=3571.60, Nint=068, Nfrac=089)
-Fch=893.00 (Fvco=3572.00, Nint=068, Nfrac=090)
-Fch=893.10 (Fvco=3572.40, Nint=068, Nfrac=091)
-Fch=893.20 (Fvco=3572.80, Nint=068, Nfrac=092)
-Fch=893.30 (Fvco=3573.20, Nint=068, Nfrac=093)
-Fch=893.40 (Fvco=3573.60, Nint=068, Nfrac=094)
-Fch=893.50 (Fvco=3574.00, Nint=068, Nfrac=095)
-Fch=893.60 (Fvco=3574.40, Nint=068, Nfrac=096)
-Fch=893.70 (Fvco=3574.80, Nint=068, Nfrac=097)
-Fch=893.80 (Fvco=3575.20, Nint=068, Nfrac=098)
-Fch=893.90 (Fvco=3575.60, Nint=068, Nfrac=099)
-Fch=894.00 (Fvco=3576.00, Nint=068, Nfrac=100)
-Fch=894.10 (Fvco=3576.40, Nint=068, Nfrac=101)
-Fch=894.20 (Fvco=3576.80, Nint=068, Nfrac=102)
-Fch=894.30 (Fvco=3577.20, Nint=068, Nfrac=103)
-Fch=894.40 (Fvco=3577.60, Nint=068, Nfrac=104)
-Fch=894.50 (Fvco=3578.00, Nint=068, Nfrac=105)
-Fch=894.60 (Fvco=3578.40, Nint=068, Nfrac=106)
-Fch=894.70 (Fvco=3578.80, Nint=068, Nfrac=107)
-Fch=894.80 (Fvco=3579.20, Nint=068, Nfrac=108)
-Fch=894.90 (Fvco=3579.60, Nint=068, Nfrac=109)
-Fch=895.00 (Fvco=3580.00, Nint=068, Nfrac=110)
-Fch=895.10 (Fvco=3580.40, Nint=068, Nfrac=111)
-Fch=895.20 (Fvco=3580.80, Nint=068, Nfrac=112)
-Fch=895.30 (Fvco=3581.20, Nint=068, Nfrac=113)
-Fch=895.40 (Fvco=3581.60, Nint=068, Nfrac=114)
-Fch=895.50 (Fvco=3582.00, Nint=068, Nfrac=115)
-Fch=895.60 (Fvco=3582.40, Nint=068, Nfrac=116)
-Fch=895.70 (Fvco=3582.80, Nint=068, Nfrac=117)
-Fch=895.80 (Fvco=3583.20, Nint=068, Nfrac=118)
-Fch=895.90 (Fvco=3583.60, Nint=068, Nfrac=119)
-Fch=896.00 (Fvco=3584.00, Nint=068, Nfrac=120)
-Fch=896.10 (Fvco=3584.40, Nint=068, Nfrac=121)
-Fch=896.20 (Fvco=3584.80, Nint=068, Nfrac=122)
-Fch=896.30 (Fvco=3585.20, Nint=068, Nfrac=123)
-Fch=896.40 (Fvco=3585.60, Nint=068, Nfrac=124)
-Fch=896.50 (Fvco=3586.00, Nint=068, Nfrac=125)
-Fch=896.60 (Fvco=3586.40, Nint=068, Nfrac=126)
-Fch=896.70 (Fvco=3586.80, Nint=068, Nfrac=127)
-Fch=896.80 (Fvco=3587.20, Nint=068, Nfrac=128)
-Fch=896.90 (Fvco=3587.60, Nint=068, Nfrac=129)
-Fch=897.00 (Fvco=3588.00, Nint=068, Nfrac=130)
-Fch=897.00 (Fvco=3588.00, Nint=069, Nfrac=000)
-Fch=897.10 (Fvco=3588.40, Nint=069, Nfrac=001)
-Fch=897.20 (Fvco=3588.80, Nint=069, Nfrac=002)
-Fch=897.30 (Fvco=3589.20, Nint=069, Nfrac=003)
-Fch=897.40 (Fvco=3589.60, Nint=069, Nfrac=004)
-Fch=897.50 (Fvco=3590.00, Nint=069, Nfrac=005)
-Fch=897.60 (Fvco=3590.40, Nint=069, Nfrac=006)
-Fch=897.70 (Fvco=3590.80, Nint=069, Nfrac=007)
-Fch=897.80 (Fvco=3591.20, Nint=069, Nfrac=008)
-Fch=897.90 (Fvco=3591.60, Nint=069, Nfrac=009)
-Fch=898.00 (Fvco=3592.00, Nint=069, Nfrac=010)
-Fch=898.10 (Fvco=3592.40, Nint=069, Nfrac=011)
-Fch=898.20 (Fvco=3592.80, Nint=069, Nfrac=012)
-Fch=898.30 (Fvco=3593.20, Nint=069, Nfrac=013)
-Fch=898.40 (Fvco=3593.60, Nint=069, Nfrac=014)
-Fch=898.50 (Fvco=3594.00, Nint=069, Nfrac=015)
-Fch=898.60 (Fvco=3594.40, Nint=069, Nfrac=016)
-Fch=898.70 (Fvco=3594.80, Nint=069, Nfrac=017)
-Fch=898.80 (Fvco=3595.20, Nint=069, Nfrac=018)
-Fch=898.90 (Fvco=3595.60, Nint=069, Nfrac=019)
-Fch=899.00 (Fvco=3596.00, Nint=069, Nfrac=020)
-Fch=899.10 (Fvco=3596.40, Nint=069, Nfrac=021)
-Fch=899.20 (Fvco=3596.80, Nint=069, Nfrac=022)
-Fch=899.30 (Fvco=3597.20, Nint=069, Nfrac=023)
-Fch=899.40 (Fvco=3597.60, Nint=069, Nfrac=024)
-Fch=899.50 (Fvco=3598.00, Nint=069, Nfrac=025)
-Fch=899.60 (Fvco=3598.40, Nint=069, Nfrac=026)
-Fch=899.70 (Fvco=3598.80, Nint=069, Nfrac=027)
-Fch=899.80 (Fvco=3599.20, Nint=069, Nfrac=028)
-Fch=899.90 (Fvco=3599.60, Nint=069, Nfrac=029)
-Fch=900.00 (Fvco=3600.00, Nint=069, Nfrac=030)
-Fch=900.10 (Fvco=3600.40, Nint=069, Nfrac=031)
-Fch=900.20 (Fvco=3600.80, Nint=069, Nfrac=032)
-Fch=900.30 (Fvco=3601.20, Nint=069, Nfrac=033)
-Fch=900.40 (Fvco=3601.60, Nint=069, Nfrac=034)
-Fch=900.50 (Fvco=3602.00, Nint=069, Nfrac=035)
-Fch=900.60 (Fvco=3602.40, Nint=069, Nfrac=036)
-Fch=900.70 (Fvco=3602.80, Nint=069, Nfrac=037)
-Fch=900.80 (Fvco=3603.20, Nint=069, Nfrac=038)
-Fch=900.90 (Fvco=3603.60, Nint=069, Nfrac=039)
-Fch=901.00 (Fvco=3604.00, Nint=069, Nfrac=040)
-Fch=901.10 (Fvco=3604.40, Nint=069, Nfrac=041)
-Fch=901.20 (Fvco=3604.80, Nint=069, Nfrac=042)
-Fch=901.30 (Fvco=3605.20, Nint=069, Nfrac=043)
-Fch=901.40 (Fvco=3605.60, Nint=069, Nfrac=044)
-Fch=901.50 (Fvco=3606.00, Nint=069, Nfrac=045)
-Fch=901.60 (Fvco=3606.40, Nint=069, Nfrac=046)
-Fch=901.70 (Fvco=3606.80, Nint=069, Nfrac=047)
-Fch=901.80 (Fvco=3607.20, Nint=069, Nfrac=048)
-Fch=901.90 (Fvco=3607.60, Nint=069, Nfrac=049)
-Fch=902.00 (Fvco=3608.00, Nint=069, Nfrac=050)
-Fch=902.10 (Fvco=3608.40, Nint=069, Nfrac=051)
-Fch=902.20 (Fvco=3608.80, Nint=069, Nfrac=052)
-Fch=902.30 (Fvco=3609.20, Nint=069, Nfrac=053)
-Fch=902.40 (Fvco=3609.60, Nint=069, Nfrac=054)
-Fch=902.50 (Fvco=3610.00, Nint=069, Nfrac=055)
-Fch=902.60 (Fvco=3610.40, Nint=069, Nfrac=056)
-Fch=902.70 (Fvco=3610.80, Nint=069, Nfrac=057)
-Fch=902.80 (Fvco=3611.20, Nint=069, Nfrac=058)
-Fch=902.90 (Fvco=3611.60, Nint=069, Nfrac=059)
-Fch=903.00 (Fvco=3612.00, Nint=069, Nfrac=060)
-Fch=903.10 (Fvco=3612.40, Nint=069, Nfrac=061)
-Fch=903.20 (Fvco=3612.80, Nint=069, Nfrac=062)
-Fch=903.30 (Fvco=3613.20, Nint=069, Nfrac=063)
-Fch=903.40 (Fvco=3613.60, Nint=069, Nfrac=064)
-Fch=903.50 (Fvco=3614.00, Nint=069, Nfrac=065)
-Fch=903.60 (Fvco=3614.40, Nint=069, Nfrac=066)
-Fch=903.70 (Fvco=3614.80, Nint=069, Nfrac=067)
-Fch=903.80 (Fvco=3615.20, Nint=069, Nfrac=068)
-Fch=903.90 (Fvco=3615.60, Nint=069, Nfrac=069)
-Fch=904.00 (Fvco=3616.00, Nint=069, Nfrac=070)
-Fch=904.10 (Fvco=3616.40, Nint=069, Nfrac=071)
-Fch=904.20 (Fvco=3616.80, Nint=069, Nfrac=072)
-Fch=904.30 (Fvco=3617.20, Nint=069, Nfrac=073)
-Fch=904.40 (Fvco=3617.60, Nint=069, Nfrac=074)
-Fch=904.50 (Fvco=3618.00, Nint=069, Nfrac=075)
-Fch=904.60 (Fvco=3618.40, Nint=069, Nfrac=076)
-Fch=904.70 (Fvco=3618.80, Nint=069, Nfrac=077)
-Fch=904.80 (Fvco=3619.20, Nint=069, Nfrac=078)
-Fch=904.90 (Fvco=3619.60, Nint=069, Nfrac=079)
-Fch=905.00 (Fvco=3620.00, Nint=069, Nfrac=080)
-Fch=905.10 (Fvco=3620.40, Nint=069, Nfrac=081)
-Fch=905.20 (Fvco=3620.80, Nint=069, Nfrac=082)
-Fch=905.30 (Fvco=3621.20, Nint=069, Nfrac=083)
-Fch=905.40 (Fvco=3621.60, Nint=069, Nfrac=084)
-Fch=905.50 (Fvco=3622.00, Nint=069, Nfrac=085)
-Fch=905.60 (Fvco=3622.40, Nint=069, Nfrac=086)
-Fch=905.70 (Fvco=3622.80, Nint=069, Nfrac=087)
-Fch=905.80 (Fvco=3623.20, Nint=069, Nfrac=088)
-Fch=905.90 (Fvco=3623.60, Nint=069, Nfrac=089)
-Fch=906.00 (Fvco=3624.00, Nint=069, Nfrac=090)
-Fch=906.10 (Fvco=3624.40, Nint=069, Nfrac=091)
-Fch=906.20 (Fvco=3624.80, Nint=069, Nfrac=092)
-Fch=906.30 (Fvco=3625.20, Nint=069, Nfrac=093)
-Fch=906.40 (Fvco=3625.60, Nint=069, Nfrac=094)
-Fch=906.50 (Fvco=3626.00, Nint=069, Nfrac=095)
-Fch=906.60 (Fvco=3626.40, Nint=069, Nfrac=096)
-Fch=906.70 (Fvco=3626.80, Nint=069, Nfrac=097)
-Fch=906.80 (Fvco=3627.20, Nint=069, Nfrac=098)
-Fch=906.90 (Fvco=3627.60, Nint=069, Nfrac=099)
-Fch=907.00 (Fvco=3628.00, Nint=069, Nfrac=100)
-Fch=907.10 (Fvco=3628.40, Nint=069, Nfrac=101)
-Fch=907.20 (Fvco=3628.80, Nint=069, Nfrac=102)
-Fch=907.30 (Fvco=3629.20, Nint=069, Nfrac=103)
-Fch=907.40 (Fvco=3629.60, Nint=069, Nfrac=104)
-Fch=907.50 (Fvco=3630.00, Nint=069, Nfrac=105)
-Fch=907.60 (Fvco=3630.40, Nint=069, Nfrac=106)
-Fch=907.70 (Fvco=3630.80, Nint=069, Nfrac=107)
-Fch=907.80 (Fvco=3631.20, Nint=069, Nfrac=108)
-Fch=907.90 (Fvco=3631.60, Nint=069, Nfrac=109)
-Fch=908.00 (Fvco=3632.00, Nint=069, Nfrac=110)
-Fch=908.10 (Fvco=3632.40, Nint=069, Nfrac=111)
-Fch=908.20 (Fvco=3632.80, Nint=069, Nfrac=112)
-Fch=908.30 (Fvco=3633.20, Nint=069, Nfrac=113)
-Fch=908.40 (Fvco=3633.60, Nint=069, Nfrac=114)
-Fch=908.50 (Fvco=3634.00, Nint=069, Nfrac=115)
-Fch=908.60 (Fvco=3634.40, Nint=069, Nfrac=116)
-Fch=908.70 (Fvco=3634.80, Nint=069, Nfrac=117)
-Fch=908.80 (Fvco=3635.20, Nint=069, Nfrac=118)
-Fch=908.90 (Fvco=3635.60, Nint=069, Nfrac=119)
-Fch=909.00 (Fvco=3636.00, Nint=069, Nfrac=120)
-Fch=909.10 (Fvco=3636.40, Nint=069, Nfrac=121)
-Fch=909.20 (Fvco=3636.80, Nint=069, Nfrac=122)
-Fch=909.30 (Fvco=3637.20, Nint=069, Nfrac=123)
-Fch=909.40 (Fvco=3637.60, Nint=069, Nfrac=124)
-Fch=909.50 (Fvco=3638.00, Nint=069, Nfrac=125)
-Fch=909.60 (Fvco=3638.40, Nint=069, Nfrac=126)
-Fch=909.70 (Fvco=3638.80, Nint=069, Nfrac=127)
-Fch=909.80 (Fvco=3639.20, Nint=069, Nfrac=128)
-Fch=909.90 (Fvco=3639.60, Nint=069, Nfrac=129)
-Fch=910.00 (Fvco=3640.00, Nint=069, Nfrac=130)
-Fch=910.00 (Fvco=3640.00, Nint=070, Nfrac=000)
-Fch=910.10 (Fvco=3640.40, Nint=070, Nfrac=001)
-Fch=910.20 (Fvco=3640.80, Nint=070, Nfrac=002)
-Fch=910.30 (Fvco=3641.20, Nint=070, Nfrac=003)
-Fch=910.40 (Fvco=3641.60, Nint=070, Nfrac=004)
-Fch=910.50 (Fvco=3642.00, Nint=070, Nfrac=005)
-Fch=910.60 (Fvco=3642.40, Nint=070, Nfrac=006)
-Fch=910.70 (Fvco=3642.80, Nint=070, Nfrac=007)
-Fch=910.80 (Fvco=3643.20, Nint=070, Nfrac=008)
-Fch=910.90 (Fvco=3643.60, Nint=070, Nfrac=009)
-Fch=911.00 (Fvco=3644.00, Nint=070, Nfrac=010)
-Fch=911.10 (Fvco=3644.40, Nint=070, Nfrac=011)
-Fch=911.20 (Fvco=3644.80, Nint=070, Nfrac=012)
-Fch=911.30 (Fvco=3645.20, Nint=070, Nfrac=013)
-Fch=911.40 (Fvco=3645.60, Nint=070, Nfrac=014)
-Fch=911.50 (Fvco=3646.00, Nint=070, Nfrac=015)
-Fch=911.60 (Fvco=3646.40, Nint=070, Nfrac=016)
-Fch=911.70 (Fvco=3646.80, Nint=070, Nfrac=017)
-Fch=911.80 (Fvco=3647.20, Nint=070, Nfrac=018)
-Fch=911.90 (Fvco=3647.60, Nint=070, Nfrac=019)
-Fch=912.00 (Fvco=3648.00, Nint=070, Nfrac=020)
-Fch=912.10 (Fvco=3648.40, Nint=070, Nfrac=021)
-Fch=912.20 (Fvco=3648.80, Nint=070, Nfrac=022)
-Fch=912.30 (Fvco=3649.20, Nint=070, Nfrac=023)
-Fch=912.40 (Fvco=3649.60, Nint=070, Nfrac=024)
-Fch=912.50 (Fvco=3650.00, Nint=070, Nfrac=025)
-Fch=912.60 (Fvco=3650.40, Nint=070, Nfrac=026)
-Fch=912.70 (Fvco=3650.80, Nint=070, Nfrac=027)
-Fch=912.80 (Fvco=3651.20, Nint=070, Nfrac=028)
-Fch=912.90 (Fvco=3651.60, Nint=070, Nfrac=029)
-Fch=913.00 (Fvco=3652.00, Nint=070, Nfrac=030)
-Fch=913.10 (Fvco=3652.40, Nint=070, Nfrac=031)
-Fch=913.20 (Fvco=3652.80, Nint=070, Nfrac=032)
-Fch=913.30 (Fvco=3653.20, Nint=070, Nfrac=033)
-Fch=913.40 (Fvco=3653.60, Nint=070, Nfrac=034)
-Fch=913.50 (Fvco=3654.00, Nint=070, Nfrac=035)
-Fch=913.60 (Fvco=3654.40, Nint=070, Nfrac=036)
-Fch=913.70 (Fvco=3654.80, Nint=070, Nfrac=037)
-Fch=913.80 (Fvco=3655.20, Nint=070, Nfrac=038)
-Fch=913.90 (Fvco=3655.60, Nint=070, Nfrac=039)
-Fch=914.00 (Fvco=3656.00, Nint=070, Nfrac=040)
-Fch=914.10 (Fvco=3656.40, Nint=070, Nfrac=041)
-Fch=914.20 (Fvco=3656.80, Nint=070, Nfrac=042)
-Fch=914.30 (Fvco=3657.20, Nint=070, Nfrac=043)
-Fch=914.40 (Fvco=3657.60, Nint=070, Nfrac=044)
-Fch=914.50 (Fvco=3658.00, Nint=070, Nfrac=045)
-Fch=914.60 (Fvco=3658.40, Nint=070, Nfrac=046)
-Fch=914.70 (Fvco=3658.80, Nint=070, Nfrac=047)
-Fch=914.80 (Fvco=3659.20, Nint=070, Nfrac=048)
-Fch=914.90 (Fvco=3659.60, Nint=070, Nfrac=049)
-Fch=915.00 (Fvco=3660.00, Nint=070, Nfrac=050)
-Fch=915.10 (Fvco=3660.40, Nint=070, Nfrac=051)
-Fch=915.20 (Fvco=3660.80, Nint=070, Nfrac=052)
-Fch=915.30 (Fvco=3661.20, Nint=070, Nfrac=053)
-Fch=915.40 (Fvco=3661.60, Nint=070, Nfrac=054)
-Fch=915.50 (Fvco=3662.00, Nint=070, Nfrac=055)
-Fch=915.60 (Fvco=3662.40, Nint=070, Nfrac=056)
-Fch=915.70 (Fvco=3662.80, Nint=070, Nfrac=057)
-Fch=915.80 (Fvco=3663.20, Nint=070, Nfrac=058)
-Fch=915.90 (Fvco=3663.60, Nint=070, Nfrac=059)
-Fch=916.00 (Fvco=3664.00, Nint=070, Nfrac=060)
-Fch=916.10 (Fvco=3664.40, Nint=070, Nfrac=061)
-Fch=916.20 (Fvco=3664.80, Nint=070, Nfrac=062)
-Fch=916.30 (Fvco=3665.20, Nint=070, Nfrac=063)
-Fch=916.40 (Fvco=3665.60, Nint=070, Nfrac=064)
-Fch=916.50 (Fvco=3666.00, Nint=070, Nfrac=065)
-Fch=916.60 (Fvco=3666.40, Nint=070, Nfrac=066)
-Fch=916.70 (Fvco=3666.80, Nint=070, Nfrac=067)
-Fch=916.80 (Fvco=3667.20, Nint=070, Nfrac=068)
-Fch=916.90 (Fvco=3667.60, Nint=070, Nfrac=069)
-Fch=917.00 (Fvco=3668.00, Nint=070, Nfrac=070)
-Fch=917.10 (Fvco=3668.40, Nint=070, Nfrac=071)
-Fch=917.20 (Fvco=3668.80, Nint=070, Nfrac=072)
-Fch=917.30 (Fvco=3669.20, Nint=070, Nfrac=073)
-Fch=917.40 (Fvco=3669.60, Nint=070, Nfrac=074)
-Fch=917.50 (Fvco=3670.00, Nint=070, Nfrac=075)
-Fch=917.60 (Fvco=3670.40, Nint=070, Nfrac=076)
-Fch=917.70 (Fvco=3670.80, Nint=070, Nfrac=077)
-Fch=917.80 (Fvco=3671.20, Nint=070, Nfrac=078)
-Fch=917.90 (Fvco=3671.60, Nint=070, Nfrac=079)
-Fch=918.00 (Fvco=3672.00, Nint=070, Nfrac=080)
-Fch=918.10 (Fvco=3672.40, Nint=070, Nfrac=081)
-Fch=918.20 (Fvco=3672.80, Nint=070, Nfrac=082)
-Fch=918.30 (Fvco=3673.20, Nint=070, Nfrac=083)
-Fch=918.40 (Fvco=3673.60, Nint=070, Nfrac=084)
-Fch=918.50 (Fvco=3674.00, Nint=070, Nfrac=085)
-Fch=918.60 (Fvco=3674.40, Nint=070, Nfrac=086)
-Fch=918.70 (Fvco=3674.80, Nint=070, Nfrac=087)
-Fch=918.80 (Fvco=3675.20, Nint=070, Nfrac=088)
-Fch=918.90 (Fvco=3675.60, Nint=070, Nfrac=089)
-Fch=919.00 (Fvco=3676.00, Nint=070, Nfrac=090)
-Fch=919.10 (Fvco=3676.40, Nint=070, Nfrac=091)
-Fch=919.20 (Fvco=3676.80, Nint=070, Nfrac=092)
-Fch=919.30 (Fvco=3677.20, Nint=070, Nfrac=093)
-Fch=919.40 (Fvco=3677.60, Nint=070, Nfrac=094)
-Fch=919.50 (Fvco=3678.00, Nint=070, Nfrac=095)
-Fch=919.60 (Fvco=3678.40, Nint=070, Nfrac=096)
-Fch=919.70 (Fvco=3678.80, Nint=070, Nfrac=097)
-Fch=919.80 (Fvco=3679.20, Nint=070, Nfrac=098)
-Fch=919.90 (Fvco=3679.60, Nint=070, Nfrac=099)
-Fch=920.00 (Fvco=3680.00, Nint=070, Nfrac=100)
-Fch=920.10 (Fvco=3680.40, Nint=070, Nfrac=101)
-Fch=920.20 (Fvco=3680.80, Nint=070, Nfrac=102)
-Fch=920.30 (Fvco=3681.20, Nint=070, Nfrac=103)
-Fch=920.40 (Fvco=3681.60, Nint=070, Nfrac=104)
-Fch=920.50 (Fvco=3682.00, Nint=070, Nfrac=105)
-Fch=920.60 (Fvco=3682.40, Nint=070, Nfrac=106)
-Fch=920.70 (Fvco=3682.80, Nint=070, Nfrac=107)
-Fch=920.80 (Fvco=3683.20, Nint=070, Nfrac=108)
-Fch=920.90 (Fvco=3683.60, Nint=070, Nfrac=109)
-Fch=921.00 (Fvco=3684.00, Nint=070, Nfrac=110)
-Fch=921.10 (Fvco=3684.40, Nint=070, Nfrac=111)
-Fch=921.20 (Fvco=3684.80, Nint=070, Nfrac=112)
-Fch=921.30 (Fvco=3685.20, Nint=070, Nfrac=113)
-Fch=921.40 (Fvco=3685.60, Nint=070, Nfrac=114)
-Fch=921.50 (Fvco=3686.00, Nint=070, Nfrac=115)
-Fch=921.60 (Fvco=3686.40, Nint=070, Nfrac=116)
-Fch=921.70 (Fvco=3686.80, Nint=070, Nfrac=117)
-Fch=921.80 (Fvco=3687.20, Nint=070, Nfrac=118)
-Fch=921.90 (Fvco=3687.60, Nint=070, Nfrac=119)
-Fch=922.00 (Fvco=3688.00, Nint=070, Nfrac=120)
-Fch=922.10 (Fvco=3688.40, Nint=070, Nfrac=121)
-Fch=922.20 (Fvco=3688.80, Nint=070, Nfrac=122)
-Fch=922.30 (Fvco=3689.20, Nint=070, Nfrac=123)
-Fch=922.40 (Fvco=3689.60, Nint=070, Nfrac=124)
-Fch=922.50 (Fvco=3690.00, Nint=070, Nfrac=125)
-Fch=922.60 (Fvco=3690.40, Nint=070, Nfrac=126)
-Fch=922.70 (Fvco=3690.80, Nint=070, Nfrac=127)
-Fch=922.80 (Fvco=3691.20, Nint=070, Nfrac=128)
-Fch=922.90 (Fvco=3691.60, Nint=070, Nfrac=129)
-Fch=923.00 (Fvco=3692.00, Nint=070, Nfrac=130)
-======================================================================
-PLL Tx High Band
-Fch=1690.00 (Fvco=3380.00, Nint=065, Nfrac=000)
-Fch=1690.20 (Fvco=3380.40, Nint=065, Nfrac=001)
-Fch=1690.40 (Fvco=3380.80, Nint=065, Nfrac=002)
-Fch=1690.60 (Fvco=3381.20, Nint=065, Nfrac=003)
-Fch=1690.80 (Fvco=3381.60, Nint=065, Nfrac=004)
-Fch=1691.00 (Fvco=3382.00, Nint=065, Nfrac=005)
-Fch=1691.20 (Fvco=3382.40, Nint=065, Nfrac=006)
-Fch=1691.40 (Fvco=3382.80, Nint=065, Nfrac=007)
-Fch=1691.60 (Fvco=3383.20, Nint=065, Nfrac=008)
-Fch=1691.80 (Fvco=3383.60, Nint=065, Nfrac=009)
-Fch=1692.00 (Fvco=3384.00, Nint=065, Nfrac=010)
-Fch=1692.20 (Fvco=3384.40, Nint=065, Nfrac=011)
-Fch=1692.40 (Fvco=3384.80, Nint=065, Nfrac=012)
-Fch=1692.60 (Fvco=3385.20, Nint=065, Nfrac=013)
-Fch=1692.80 (Fvco=3385.60, Nint=065, Nfrac=014)
-Fch=1693.00 (Fvco=3386.00, Nint=065, Nfrac=015)
-Fch=1693.20 (Fvco=3386.40, Nint=065, Nfrac=016)
-Fch=1693.40 (Fvco=3386.80, Nint=065, Nfrac=017)
-Fch=1693.60 (Fvco=3387.20, Nint=065, Nfrac=018)
-Fch=1693.80 (Fvco=3387.60, Nint=065, Nfrac=019)
-Fch=1694.00 (Fvco=3388.00, Nint=065, Nfrac=020)
-Fch=1694.20 (Fvco=3388.40, Nint=065, Nfrac=021)
-Fch=1694.40 (Fvco=3388.80, Nint=065, Nfrac=022)
-Fch=1694.60 (Fvco=3389.20, Nint=065, Nfrac=023)
-Fch=1694.80 (Fvco=3389.60, Nint=065, Nfrac=024)
-Fch=1695.00 (Fvco=3390.00, Nint=065, Nfrac=025)
-Fch=1695.20 (Fvco=3390.40, Nint=065, Nfrac=026)
-Fch=1695.40 (Fvco=3390.80, Nint=065, Nfrac=027)
-Fch=1695.60 (Fvco=3391.20, Nint=065, Nfrac=028)
-Fch=1695.80 (Fvco=3391.60, Nint=065, Nfrac=029)
-Fch=1696.00 (Fvco=3392.00, Nint=065, Nfrac=030)
-Fch=1696.20 (Fvco=3392.40, Nint=065, Nfrac=031)
-Fch=1696.40 (Fvco=3392.80, Nint=065, Nfrac=032)
-Fch=1696.60 (Fvco=3393.20, Nint=065, Nfrac=033)
-Fch=1696.80 (Fvco=3393.60, Nint=065, Nfrac=034)
-Fch=1697.00 (Fvco=3394.00, Nint=065, Nfrac=035)
-Fch=1697.20 (Fvco=3394.40, Nint=065, Nfrac=036)
-Fch=1697.40 (Fvco=3394.80, Nint=065, Nfrac=037)
-Fch=1697.60 (Fvco=3395.20, Nint=065, Nfrac=038)
-Fch=1697.80 (Fvco=3395.60, Nint=065, Nfrac=039)
-Fch=1698.00 (Fvco=3396.00, Nint=065, Nfrac=040)
-Fch=1698.20 (Fvco=3396.40, Nint=065, Nfrac=041)
-Fch=1698.40 (Fvco=3396.80, Nint=065, Nfrac=042)
-Fch=1698.60 (Fvco=3397.20, Nint=065, Nfrac=043)
-Fch=1698.80 (Fvco=3397.60, Nint=065, Nfrac=044)
-Fch=1699.00 (Fvco=3398.00, Nint=065, Nfrac=045)
-Fch=1699.20 (Fvco=3398.40, Nint=065, Nfrac=046)
-Fch=1699.40 (Fvco=3398.80, Nint=065, Nfrac=047)
-Fch=1699.60 (Fvco=3399.20, Nint=065, Nfrac=048)
-Fch=1699.80 (Fvco=3399.60, Nint=065, Nfrac=049)
-Fch=1700.00 (Fvco=3400.00, Nint=065, Nfrac=050)
-Fch=1700.20 (Fvco=3400.40, Nint=065, Nfrac=051)
-Fch=1700.40 (Fvco=3400.80, Nint=065, Nfrac=052)
-Fch=1700.60 (Fvco=3401.20, Nint=065, Nfrac=053)
-Fch=1700.80 (Fvco=3401.60, Nint=065, Nfrac=054)
-Fch=1701.00 (Fvco=3402.00, Nint=065, Nfrac=055)
-Fch=1701.20 (Fvco=3402.40, Nint=065, Nfrac=056)
-Fch=1701.40 (Fvco=3402.80, Nint=065, Nfrac=057)
-Fch=1701.60 (Fvco=3403.20, Nint=065, Nfrac=058)
-Fch=1701.80 (Fvco=3403.60, Nint=065, Nfrac=059)
-Fch=1702.00 (Fvco=3404.00, Nint=065, Nfrac=060)
-Fch=1702.20 (Fvco=3404.40, Nint=065, Nfrac=061)
-Fch=1702.40 (Fvco=3404.80, Nint=065, Nfrac=062)
-Fch=1702.60 (Fvco=3405.20, Nint=065, Nfrac=063)
-Fch=1702.80 (Fvco=3405.60, Nint=065, Nfrac=064)
-Fch=1703.00 (Fvco=3406.00, Nint=065, Nfrac=065)
-Fch=1703.20 (Fvco=3406.40, Nint=065, Nfrac=066)
-Fch=1703.40 (Fvco=3406.80, Nint=065, Nfrac=067)
-Fch=1703.60 (Fvco=3407.20, Nint=065, Nfrac=068)
-Fch=1703.80 (Fvco=3407.60, Nint=065, Nfrac=069)
-Fch=1704.00 (Fvco=3408.00, Nint=065, Nfrac=070)
-Fch=1704.20 (Fvco=3408.40, Nint=065, Nfrac=071)
-Fch=1704.40 (Fvco=3408.80, Nint=065, Nfrac=072)
-Fch=1704.60 (Fvco=3409.20, Nint=065, Nfrac=073)
-Fch=1704.80 (Fvco=3409.60, Nint=065, Nfrac=074)
-Fch=1705.00 (Fvco=3410.00, Nint=065, Nfrac=075)
-Fch=1705.20 (Fvco=3410.40, Nint=065, Nfrac=076)
-Fch=1705.40 (Fvco=3410.80, Nint=065, Nfrac=077)
-Fch=1705.60 (Fvco=3411.20, Nint=065, Nfrac=078)
-Fch=1705.80 (Fvco=3411.60, Nint=065, Nfrac=079)
-Fch=1706.00 (Fvco=3412.00, Nint=065, Nfrac=080)
-Fch=1706.20 (Fvco=3412.40, Nint=065, Nfrac=081)
-Fch=1706.40 (Fvco=3412.80, Nint=065, Nfrac=082)
-Fch=1706.60 (Fvco=3413.20, Nint=065, Nfrac=083)
-Fch=1706.80 (Fvco=3413.60, Nint=065, Nfrac=084)
-Fch=1707.00 (Fvco=3414.00, Nint=065, Nfrac=085)
-Fch=1707.20 (Fvco=3414.40, Nint=065, Nfrac=086)
-Fch=1707.40 (Fvco=3414.80, Nint=065, Nfrac=087)
-Fch=1707.60 (Fvco=3415.20, Nint=065, Nfrac=088)
-Fch=1707.80 (Fvco=3415.60, Nint=065, Nfrac=089)
-Fch=1708.00 (Fvco=3416.00, Nint=065, Nfrac=090)
-Fch=1708.20 (Fvco=3416.40, Nint=065, Nfrac=091)
-Fch=1708.40 (Fvco=3416.80, Nint=065, Nfrac=092)
-Fch=1708.60 (Fvco=3417.20, Nint=065, Nfrac=093)
-Fch=1708.80 (Fvco=3417.60, Nint=065, Nfrac=094)
-Fch=1709.00 (Fvco=3418.00, Nint=065, Nfrac=095)
-Fch=1709.20 (Fvco=3418.40, Nint=065, Nfrac=096)
-Fch=1709.40 (Fvco=3418.80, Nint=065, Nfrac=097)
-Fch=1709.60 (Fvco=3419.20, Nint=065, Nfrac=098)
-Fch=1709.80 (Fvco=3419.60, Nint=065, Nfrac=099)
-Fch=1710.00 (Fvco=3420.00, Nint=065, Nfrac=100)
-Fch=1710.20 (Fvco=3420.40, Nint=065, Nfrac=101)
-Fch=1710.40 (Fvco=3420.80, Nint=065, Nfrac=102)
-Fch=1710.60 (Fvco=3421.20, Nint=065, Nfrac=103)
-Fch=1710.80 (Fvco=3421.60, Nint=065, Nfrac=104)
-Fch=1711.00 (Fvco=3422.00, Nint=065, Nfrac=105)
-Fch=1711.20 (Fvco=3422.40, Nint=065, Nfrac=106)
-Fch=1711.40 (Fvco=3422.80, Nint=065, Nfrac=107)
-Fch=1711.60 (Fvco=3423.20, Nint=065, Nfrac=108)
-Fch=1711.80 (Fvco=3423.60, Nint=065, Nfrac=109)
-Fch=1712.00 (Fvco=3424.00, Nint=065, Nfrac=110)
-Fch=1712.20 (Fvco=3424.40, Nint=065, Nfrac=111)
-Fch=1712.40 (Fvco=3424.80, Nint=065, Nfrac=112)
-Fch=1712.60 (Fvco=3425.20, Nint=065, Nfrac=113)
-Fch=1712.80 (Fvco=3425.60, Nint=065, Nfrac=114)
-Fch=1713.00 (Fvco=3426.00, Nint=065, Nfrac=115)
-Fch=1713.20 (Fvco=3426.40, Nint=065, Nfrac=116)
-Fch=1713.40 (Fvco=3426.80, Nint=065, Nfrac=117)
-Fch=1713.60 (Fvco=3427.20, Nint=065, Nfrac=118)
-Fch=1713.80 (Fvco=3427.60, Nint=065, Nfrac=119)
-Fch=1714.00 (Fvco=3428.00, Nint=065, Nfrac=120)
-Fch=1714.20 (Fvco=3428.40, Nint=065, Nfrac=121)
-Fch=1714.40 (Fvco=3428.80, Nint=065, Nfrac=122)
-Fch=1714.60 (Fvco=3429.20, Nint=065, Nfrac=123)
-Fch=1714.80 (Fvco=3429.60, Nint=065, Nfrac=124)
-Fch=1715.00 (Fvco=3430.00, Nint=065, Nfrac=125)
-Fch=1715.20 (Fvco=3430.40, Nint=065, Nfrac=126)
-Fch=1715.40 (Fvco=3430.80, Nint=065, Nfrac=127)
-Fch=1715.60 (Fvco=3431.20, Nint=065, Nfrac=128)
-Fch=1715.80 (Fvco=3431.60, Nint=065, Nfrac=129)
-Fch=1716.00 (Fvco=3432.00, Nint=065, Nfrac=130)
-Fch=1716.00 (Fvco=3432.00, Nint=066, Nfrac=000)
-Fch=1716.20 (Fvco=3432.40, Nint=066, Nfrac=001)
-Fch=1716.40 (Fvco=3432.80, Nint=066, Nfrac=002)
-Fch=1716.60 (Fvco=3433.20, Nint=066, Nfrac=003)
-Fch=1716.80 (Fvco=3433.60, Nint=066, Nfrac=004)
-Fch=1717.00 (Fvco=3434.00, Nint=066, Nfrac=005)
-Fch=1717.20 (Fvco=3434.40, Nint=066, Nfrac=006)
-Fch=1717.40 (Fvco=3434.80, Nint=066, Nfrac=007)
-Fch=1717.60 (Fvco=3435.20, Nint=066, Nfrac=008)
-Fch=1717.80 (Fvco=3435.60, Nint=066, Nfrac=009)
-Fch=1718.00 (Fvco=3436.00, Nint=066, Nfrac=010)
-Fch=1718.20 (Fvco=3436.40, Nint=066, Nfrac=011)
-Fch=1718.40 (Fvco=3436.80, Nint=066, Nfrac=012)
-Fch=1718.60 (Fvco=3437.20, Nint=066, Nfrac=013)
-Fch=1718.80 (Fvco=3437.60, Nint=066, Nfrac=014)
-Fch=1719.00 (Fvco=3438.00, Nint=066, Nfrac=015)
-Fch=1719.20 (Fvco=3438.40, Nint=066, Nfrac=016)
-Fch=1719.40 (Fvco=3438.80, Nint=066, Nfrac=017)
-Fch=1719.60 (Fvco=3439.20, Nint=066, Nfrac=018)
-Fch=1719.80 (Fvco=3439.60, Nint=066, Nfrac=019)
-Fch=1720.00 (Fvco=3440.00, Nint=066, Nfrac=020)
-Fch=1720.20 (Fvco=3440.40, Nint=066, Nfrac=021)
-Fch=1720.40 (Fvco=3440.80, Nint=066, Nfrac=022)
-Fch=1720.60 (Fvco=3441.20, Nint=066, Nfrac=023)
-Fch=1720.80 (Fvco=3441.60, Nint=066, Nfrac=024)
-Fch=1721.00 (Fvco=3442.00, Nint=066, Nfrac=025)
-Fch=1721.20 (Fvco=3442.40, Nint=066, Nfrac=026)
-Fch=1721.40 (Fvco=3442.80, Nint=066, Nfrac=027)
-Fch=1721.60 (Fvco=3443.20, Nint=066, Nfrac=028)
-Fch=1721.80 (Fvco=3443.60, Nint=066, Nfrac=029)
-Fch=1722.00 (Fvco=3444.00, Nint=066, Nfrac=030)
-Fch=1722.20 (Fvco=3444.40, Nint=066, Nfrac=031)
-Fch=1722.40 (Fvco=3444.80, Nint=066, Nfrac=032)
-Fch=1722.60 (Fvco=3445.20, Nint=066, Nfrac=033)
-Fch=1722.80 (Fvco=3445.60, Nint=066, Nfrac=034)
-Fch=1723.00 (Fvco=3446.00, Nint=066, Nfrac=035)
-Fch=1723.20 (Fvco=3446.40, Nint=066, Nfrac=036)
-Fch=1723.40 (Fvco=3446.80, Nint=066, Nfrac=037)
-Fch=1723.60 (Fvco=3447.20, Nint=066, Nfrac=038)
-Fch=1723.80 (Fvco=3447.60, Nint=066, Nfrac=039)
-Fch=1724.00 (Fvco=3448.00, Nint=066, Nfrac=040)
-Fch=1724.20 (Fvco=3448.40, Nint=066, Nfrac=041)
-Fch=1724.40 (Fvco=3448.80, Nint=066, Nfrac=042)
-Fch=1724.60 (Fvco=3449.20, Nint=066, Nfrac=043)
-Fch=1724.80 (Fvco=3449.60, Nint=066, Nfrac=044)
-Fch=1725.00 (Fvco=3450.00, Nint=066, Nfrac=045)
-Fch=1725.20 (Fvco=3450.40, Nint=066, Nfrac=046)
-Fch=1725.40 (Fvco=3450.80, Nint=066, Nfrac=047)
-Fch=1725.60 (Fvco=3451.20, Nint=066, Nfrac=048)
-Fch=1725.80 (Fvco=3451.60, Nint=066, Nfrac=049)
-Fch=1726.00 (Fvco=3452.00, Nint=066, Nfrac=050)
-Fch=1726.20 (Fvco=3452.40, Nint=066, Nfrac=051)
-Fch=1726.40 (Fvco=3452.80, Nint=066, Nfrac=052)
-Fch=1726.60 (Fvco=3453.20, Nint=066, Nfrac=053)
-Fch=1726.80 (Fvco=3453.60, Nint=066, Nfrac=054)
-Fch=1727.00 (Fvco=3454.00, Nint=066, Nfrac=055)
-Fch=1727.20 (Fvco=3454.40, Nint=066, Nfrac=056)
-Fch=1727.40 (Fvco=3454.80, Nint=066, Nfrac=057)
-Fch=1727.60 (Fvco=3455.20, Nint=066, Nfrac=058)
-Fch=1727.80 (Fvco=3455.60, Nint=066, Nfrac=059)
-Fch=1728.00 (Fvco=3456.00, Nint=066, Nfrac=060)
-Fch=1728.20 (Fvco=3456.40, Nint=066, Nfrac=061)
-Fch=1728.40 (Fvco=3456.80, Nint=066, Nfrac=062)
-Fch=1728.60 (Fvco=3457.20, Nint=066, Nfrac=063)
-Fch=1728.80 (Fvco=3457.60, Nint=066, Nfrac=064)
-Fch=1729.00 (Fvco=3458.00, Nint=066, Nfrac=065)
-Fch=1729.20 (Fvco=3458.40, Nint=066, Nfrac=066)
-Fch=1729.40 (Fvco=3458.80, Nint=066, Nfrac=067)
-Fch=1729.60 (Fvco=3459.20, Nint=066, Nfrac=068)
-Fch=1729.80 (Fvco=3459.60, Nint=066, Nfrac=069)
-Fch=1730.00 (Fvco=3460.00, Nint=066, Nfrac=070)
-Fch=1730.20 (Fvco=3460.40, Nint=066, Nfrac=071)
-Fch=1730.40 (Fvco=3460.80, Nint=066, Nfrac=072)
-Fch=1730.60 (Fvco=3461.20, Nint=066, Nfrac=073)
-Fch=1730.80 (Fvco=3461.60, Nint=066, Nfrac=074)
-Fch=1731.00 (Fvco=3462.00, Nint=066, Nfrac=075)
-Fch=1731.20 (Fvco=3462.40, Nint=066, Nfrac=076)
-Fch=1731.40 (Fvco=3462.80, Nint=066, Nfrac=077)
-Fch=1731.60 (Fvco=3463.20, Nint=066, Nfrac=078)
-Fch=1731.80 (Fvco=3463.60, Nint=066, Nfrac=079)
-Fch=1732.00 (Fvco=3464.00, Nint=066, Nfrac=080)
-Fch=1732.20 (Fvco=3464.40, Nint=066, Nfrac=081)
-Fch=1732.40 (Fvco=3464.80, Nint=066, Nfrac=082)
-Fch=1732.60 (Fvco=3465.20, Nint=066, Nfrac=083)
-Fch=1732.80 (Fvco=3465.60, Nint=066, Nfrac=084)
-Fch=1733.00 (Fvco=3466.00, Nint=066, Nfrac=085)
-Fch=1733.20 (Fvco=3466.40, Nint=066, Nfrac=086)
-Fch=1733.40 (Fvco=3466.80, Nint=066, Nfrac=087)
-Fch=1733.60 (Fvco=3467.20, Nint=066, Nfrac=088)
-Fch=1733.80 (Fvco=3467.60, Nint=066, Nfrac=089)
-Fch=1734.00 (Fvco=3468.00, Nint=066, Nfrac=090)
-Fch=1734.20 (Fvco=3468.40, Nint=066, Nfrac=091)
-Fch=1734.40 (Fvco=3468.80, Nint=066, Nfrac=092)
-Fch=1734.60 (Fvco=3469.20, Nint=066, Nfrac=093)
-Fch=1734.80 (Fvco=3469.60, Nint=066, Nfrac=094)
-Fch=1735.00 (Fvco=3470.00, Nint=066, Nfrac=095)
-Fch=1735.20 (Fvco=3470.40, Nint=066, Nfrac=096)
-Fch=1735.40 (Fvco=3470.80, Nint=066, Nfrac=097)
-Fch=1735.60 (Fvco=3471.20, Nint=066, Nfrac=098)
-Fch=1735.80 (Fvco=3471.60, Nint=066, Nfrac=099)
-Fch=1736.00 (Fvco=3472.00, Nint=066, Nfrac=100)
-Fch=1736.20 (Fvco=3472.40, Nint=066, Nfrac=101)
-Fch=1736.40 (Fvco=3472.80, Nint=066, Nfrac=102)
-Fch=1736.60 (Fvco=3473.20, Nint=066, Nfrac=103)
-Fch=1736.80 (Fvco=3473.60, Nint=066, Nfrac=104)
-Fch=1737.00 (Fvco=3474.00, Nint=066, Nfrac=105)
-Fch=1737.20 (Fvco=3474.40, Nint=066, Nfrac=106)
-Fch=1737.40 (Fvco=3474.80, Nint=066, Nfrac=107)
-Fch=1737.60 (Fvco=3475.20, Nint=066, Nfrac=108)
-Fch=1737.80 (Fvco=3475.60, Nint=066, Nfrac=109)
-Fch=1738.00 (Fvco=3476.00, Nint=066, Nfrac=110)
-Fch=1738.20 (Fvco=3476.40, Nint=066, Nfrac=111)
-Fch=1738.40 (Fvco=3476.80, Nint=066, Nfrac=112)
-Fch=1738.60 (Fvco=3477.20, Nint=066, Nfrac=113)
-Fch=1738.80 (Fvco=3477.60, Nint=066, Nfrac=114)
-Fch=1739.00 (Fvco=3478.00, Nint=066, Nfrac=115)
-Fch=1739.20 (Fvco=3478.40, Nint=066, Nfrac=116)
-Fch=1739.40 (Fvco=3478.80, Nint=066, Nfrac=117)
-Fch=1739.60 (Fvco=3479.20, Nint=066, Nfrac=118)
-Fch=1739.80 (Fvco=3479.60, Nint=066, Nfrac=119)
-Fch=1740.00 (Fvco=3480.00, Nint=066, Nfrac=120)
-Fch=1740.20 (Fvco=3480.40, Nint=066, Nfrac=121)
-Fch=1740.40 (Fvco=3480.80, Nint=066, Nfrac=122)
-Fch=1740.60 (Fvco=3481.20, Nint=066, Nfrac=123)
-Fch=1740.80 (Fvco=3481.60, Nint=066, Nfrac=124)
-Fch=1741.00 (Fvco=3482.00, Nint=066, Nfrac=125)
-Fch=1741.20 (Fvco=3482.40, Nint=066, Nfrac=126)
-Fch=1741.40 (Fvco=3482.80, Nint=066, Nfrac=127)
-Fch=1741.60 (Fvco=3483.20, Nint=066, Nfrac=128)
-Fch=1741.80 (Fvco=3483.60, Nint=066, Nfrac=129)
-Fch=1742.00 (Fvco=3484.00, Nint=066, Nfrac=130)
-Fch=1742.00 (Fvco=3484.00, Nint=067, Nfrac=000)
-Fch=1742.20 (Fvco=3484.40, Nint=067, Nfrac=001)
-Fch=1742.40 (Fvco=3484.80, Nint=067, Nfrac=002)
-Fch=1742.60 (Fvco=3485.20, Nint=067, Nfrac=003)
-Fch=1742.80 (Fvco=3485.60, Nint=067, Nfrac=004)
-Fch=1743.00 (Fvco=3486.00, Nint=067, Nfrac=005)
-Fch=1743.20 (Fvco=3486.40, Nint=067, Nfrac=006)
-Fch=1743.40 (Fvco=3486.80, Nint=067, Nfrac=007)
-Fch=1743.60 (Fvco=3487.20, Nint=067, Nfrac=008)
-Fch=1743.80 (Fvco=3487.60, Nint=067, Nfrac=009)
-Fch=1744.00 (Fvco=3488.00, Nint=067, Nfrac=010)
-Fch=1744.20 (Fvco=3488.40, Nint=067, Nfrac=011)
-Fch=1744.40 (Fvco=3488.80, Nint=067, Nfrac=012)
-Fch=1744.60 (Fvco=3489.20, Nint=067, Nfrac=013)
-Fch=1744.80 (Fvco=3489.60, Nint=067, Nfrac=014)
-Fch=1745.00 (Fvco=3490.00, Nint=067, Nfrac=015)
-Fch=1745.20 (Fvco=3490.40, Nint=067, Nfrac=016)
-Fch=1745.40 (Fvco=3490.80, Nint=067, Nfrac=017)
-Fch=1745.60 (Fvco=3491.20, Nint=067, Nfrac=018)
-Fch=1745.80 (Fvco=3491.60, Nint=067, Nfrac=019)
-Fch=1746.00 (Fvco=3492.00, Nint=067, Nfrac=020)
-Fch=1746.20 (Fvco=3492.40, Nint=067, Nfrac=021)
-Fch=1746.40 (Fvco=3492.80, Nint=067, Nfrac=022)
-Fch=1746.60 (Fvco=3493.20, Nint=067, Nfrac=023)
-Fch=1746.80 (Fvco=3493.60, Nint=067, Nfrac=024)
-Fch=1747.00 (Fvco=3494.00, Nint=067, Nfrac=025)
-Fch=1747.20 (Fvco=3494.40, Nint=067, Nfrac=026)
-Fch=1747.40 (Fvco=3494.80, Nint=067, Nfrac=027)
-Fch=1747.60 (Fvco=3495.20, Nint=067, Nfrac=028)
-Fch=1747.80 (Fvco=3495.60, Nint=067, Nfrac=029)
-Fch=1748.00 (Fvco=3496.00, Nint=067, Nfrac=030)
-Fch=1748.20 (Fvco=3496.40, Nint=067, Nfrac=031)
-Fch=1748.40 (Fvco=3496.80, Nint=067, Nfrac=032)
-Fch=1748.60 (Fvco=3497.20, Nint=067, Nfrac=033)
-Fch=1748.80 (Fvco=3497.60, Nint=067, Nfrac=034)
-Fch=1749.00 (Fvco=3498.00, Nint=067, Nfrac=035)
-Fch=1749.20 (Fvco=3498.40, Nint=067, Nfrac=036)
-Fch=1749.40 (Fvco=3498.80, Nint=067, Nfrac=037)
-Fch=1749.60 (Fvco=3499.20, Nint=067, Nfrac=038)
-Fch=1749.80 (Fvco=3499.60, Nint=067, Nfrac=039)
-Fch=1750.00 (Fvco=3500.00, Nint=067, Nfrac=040)
-Fch=1750.20 (Fvco=3500.40, Nint=067, Nfrac=041)
-Fch=1750.40 (Fvco=3500.80, Nint=067, Nfrac=042)
-Fch=1750.60 (Fvco=3501.20, Nint=067, Nfrac=043)
-Fch=1750.80 (Fvco=3501.60, Nint=067, Nfrac=044)
-Fch=1751.00 (Fvco=3502.00, Nint=067, Nfrac=045)
-Fch=1751.20 (Fvco=3502.40, Nint=067, Nfrac=046)
-Fch=1751.40 (Fvco=3502.80, Nint=067, Nfrac=047)
-Fch=1751.60 (Fvco=3503.20, Nint=067, Nfrac=048)
-Fch=1751.80 (Fvco=3503.60, Nint=067, Nfrac=049)
-Fch=1752.00 (Fvco=3504.00, Nint=067, Nfrac=050)
-Fch=1752.20 (Fvco=3504.40, Nint=067, Nfrac=051)
-Fch=1752.40 (Fvco=3504.80, Nint=067, Nfrac=052)
-Fch=1752.60 (Fvco=3505.20, Nint=067, Nfrac=053)
-Fch=1752.80 (Fvco=3505.60, Nint=067, Nfrac=054)
-Fch=1753.00 (Fvco=3506.00, Nint=067, Nfrac=055)
-Fch=1753.20 (Fvco=3506.40, Nint=067, Nfrac=056)
-Fch=1753.40 (Fvco=3506.80, Nint=067, Nfrac=057)
-Fch=1753.60 (Fvco=3507.20, Nint=067, Nfrac=058)
-Fch=1753.80 (Fvco=3507.60, Nint=067, Nfrac=059)
-Fch=1754.00 (Fvco=3508.00, Nint=067, Nfrac=060)
-Fch=1754.20 (Fvco=3508.40, Nint=067, Nfrac=061)
-Fch=1754.40 (Fvco=3508.80, Nint=067, Nfrac=062)
-Fch=1754.60 (Fvco=3509.20, Nint=067, Nfrac=063)
-Fch=1754.80 (Fvco=3509.60, Nint=067, Nfrac=064)
-Fch=1755.00 (Fvco=3510.00, Nint=067, Nfrac=065)
-Fch=1755.20 (Fvco=3510.40, Nint=067, Nfrac=066)
-Fch=1755.40 (Fvco=3510.80, Nint=067, Nfrac=067)
-Fch=1755.60 (Fvco=3511.20, Nint=067, Nfrac=068)
-Fch=1755.80 (Fvco=3511.60, Nint=067, Nfrac=069)
-Fch=1756.00 (Fvco=3512.00, Nint=067, Nfrac=070)
-Fch=1756.20 (Fvco=3512.40, Nint=067, Nfrac=071)
-Fch=1756.40 (Fvco=3512.80, Nint=067, Nfrac=072)
-Fch=1756.60 (Fvco=3513.20, Nint=067, Nfrac=073)
-Fch=1756.80 (Fvco=3513.60, Nint=067, Nfrac=074)
-Fch=1757.00 (Fvco=3514.00, Nint=067, Nfrac=075)
-Fch=1757.20 (Fvco=3514.40, Nint=067, Nfrac=076)
-Fch=1757.40 (Fvco=3514.80, Nint=067, Nfrac=077)
-Fch=1757.60 (Fvco=3515.20, Nint=067, Nfrac=078)
-Fch=1757.80 (Fvco=3515.60, Nint=067, Nfrac=079)
-Fch=1758.00 (Fvco=3516.00, Nint=067, Nfrac=080)
-Fch=1758.20 (Fvco=3516.40, Nint=067, Nfrac=081)
-Fch=1758.40 (Fvco=3516.80, Nint=067, Nfrac=082)
-Fch=1758.60 (Fvco=3517.20, Nint=067, Nfrac=083)
-Fch=1758.80 (Fvco=3517.60, Nint=067, Nfrac=084)
-Fch=1759.00 (Fvco=3518.00, Nint=067, Nfrac=085)
-Fch=1759.20 (Fvco=3518.40, Nint=067, Nfrac=086)
-Fch=1759.40 (Fvco=3518.80, Nint=067, Nfrac=087)
-Fch=1759.60 (Fvco=3519.20, Nint=067, Nfrac=088)
-Fch=1759.80 (Fvco=3519.60, Nint=067, Nfrac=089)
-Fch=1760.00 (Fvco=3520.00, Nint=067, Nfrac=090)
-Fch=1760.20 (Fvco=3520.40, Nint=067, Nfrac=091)
-Fch=1760.40 (Fvco=3520.80, Nint=067, Nfrac=092)
-Fch=1760.60 (Fvco=3521.20, Nint=067, Nfrac=093)
-Fch=1760.80 (Fvco=3521.60, Nint=067, Nfrac=094)
-Fch=1761.00 (Fvco=3522.00, Nint=067, Nfrac=095)
-Fch=1761.20 (Fvco=3522.40, Nint=067, Nfrac=096)
-Fch=1761.40 (Fvco=3522.80, Nint=067, Nfrac=097)
-Fch=1761.60 (Fvco=3523.20, Nint=067, Nfrac=098)
-Fch=1761.80 (Fvco=3523.60, Nint=067, Nfrac=099)
-Fch=1762.00 (Fvco=3524.00, Nint=067, Nfrac=100)
-Fch=1762.20 (Fvco=3524.40, Nint=067, Nfrac=101)
-Fch=1762.40 (Fvco=3524.80, Nint=067, Nfrac=102)
-Fch=1762.60 (Fvco=3525.20, Nint=067, Nfrac=103)
-Fch=1762.80 (Fvco=3525.60, Nint=067, Nfrac=104)
-Fch=1763.00 (Fvco=3526.00, Nint=067, Nfrac=105)
-Fch=1763.20 (Fvco=3526.40, Nint=067, Nfrac=106)
-Fch=1763.40 (Fvco=3526.80, Nint=067, Nfrac=107)
-Fch=1763.60 (Fvco=3527.20, Nint=067, Nfrac=108)
-Fch=1763.80 (Fvco=3527.60, Nint=067, Nfrac=109)
-Fch=1764.00 (Fvco=3528.00, Nint=067, Nfrac=110)
-Fch=1764.20 (Fvco=3528.40, Nint=067, Nfrac=111)
-Fch=1764.40 (Fvco=3528.80, Nint=067, Nfrac=112)
-Fch=1764.60 (Fvco=3529.20, Nint=067, Nfrac=113)
-Fch=1764.80 (Fvco=3529.60, Nint=067, Nfrac=114)
-Fch=1765.00 (Fvco=3530.00, Nint=067, Nfrac=115)
-Fch=1765.20 (Fvco=3530.40, Nint=067, Nfrac=116)
-Fch=1765.40 (Fvco=3530.80, Nint=067, Nfrac=117)
-Fch=1765.60 (Fvco=3531.20, Nint=067, Nfrac=118)
-Fch=1765.80 (Fvco=3531.60, Nint=067, Nfrac=119)
-Fch=1766.00 (Fvco=3532.00, Nint=067, Nfrac=120)
-Fch=1766.20 (Fvco=3532.40, Nint=067, Nfrac=121)
-Fch=1766.40 (Fvco=3532.80, Nint=067, Nfrac=122)
-Fch=1766.60 (Fvco=3533.20, Nint=067, Nfrac=123)
-Fch=1766.80 (Fvco=3533.60, Nint=067, Nfrac=124)
-Fch=1767.00 (Fvco=3534.00, Nint=067, Nfrac=125)
-Fch=1767.20 (Fvco=3534.40, Nint=067, Nfrac=126)
-Fch=1767.40 (Fvco=3534.80, Nint=067, Nfrac=127)
-Fch=1767.60 (Fvco=3535.20, Nint=067, Nfrac=128)
-Fch=1767.80 (Fvco=3535.60, Nint=067, Nfrac=129)
-Fch=1768.00 (Fvco=3536.00, Nint=067, Nfrac=130)
-Fch=1768.00 (Fvco=3536.00, Nint=068, Nfrac=000)
-Fch=1768.20 (Fvco=3536.40, Nint=068, Nfrac=001)
-Fch=1768.40 (Fvco=3536.80, Nint=068, Nfrac=002)
-Fch=1768.60 (Fvco=3537.20, Nint=068, Nfrac=003)
-Fch=1768.80 (Fvco=3537.60, Nint=068, Nfrac=004)
-Fch=1769.00 (Fvco=3538.00, Nint=068, Nfrac=005)
-Fch=1769.20 (Fvco=3538.40, Nint=068, Nfrac=006)
-Fch=1769.40 (Fvco=3538.80, Nint=068, Nfrac=007)
-Fch=1769.60 (Fvco=3539.20, Nint=068, Nfrac=008)
-Fch=1769.80 (Fvco=3539.60, Nint=068, Nfrac=009)
-Fch=1770.00 (Fvco=3540.00, Nint=068, Nfrac=010)
-Fch=1770.20 (Fvco=3540.40, Nint=068, Nfrac=011)
-Fch=1770.40 (Fvco=3540.80, Nint=068, Nfrac=012)
-Fch=1770.60 (Fvco=3541.20, Nint=068, Nfrac=013)
-Fch=1770.80 (Fvco=3541.60, Nint=068, Nfrac=014)
-Fch=1771.00 (Fvco=3542.00, Nint=068, Nfrac=015)
-Fch=1771.20 (Fvco=3542.40, Nint=068, Nfrac=016)
-Fch=1771.40 (Fvco=3542.80, Nint=068, Nfrac=017)
-Fch=1771.60 (Fvco=3543.20, Nint=068, Nfrac=018)
-Fch=1771.80 (Fvco=3543.60, Nint=068, Nfrac=019)
-Fch=1772.00 (Fvco=3544.00, Nint=068, Nfrac=020)
-Fch=1772.20 (Fvco=3544.40, Nint=068, Nfrac=021)
-Fch=1772.40 (Fvco=3544.80, Nint=068, Nfrac=022)
-Fch=1772.60 (Fvco=3545.20, Nint=068, Nfrac=023)
-Fch=1772.80 (Fvco=3545.60, Nint=068, Nfrac=024)
-Fch=1773.00 (Fvco=3546.00, Nint=068, Nfrac=025)
-Fch=1773.20 (Fvco=3546.40, Nint=068, Nfrac=026)
-Fch=1773.40 (Fvco=3546.80, Nint=068, Nfrac=027)
-Fch=1773.60 (Fvco=3547.20, Nint=068, Nfrac=028)
-Fch=1773.80 (Fvco=3547.60, Nint=068, Nfrac=029)
-Fch=1774.00 (Fvco=3548.00, Nint=068, Nfrac=030)
-Fch=1774.20 (Fvco=3548.40, Nint=068, Nfrac=031)
-Fch=1774.40 (Fvco=3548.80, Nint=068, Nfrac=032)
-Fch=1774.60 (Fvco=3549.20, Nint=068, Nfrac=033)
-Fch=1774.80 (Fvco=3549.60, Nint=068, Nfrac=034)
-Fch=1775.00 (Fvco=3550.00, Nint=068, Nfrac=035)
-Fch=1775.20 (Fvco=3550.40, Nint=068, Nfrac=036)
-Fch=1775.40 (Fvco=3550.80, Nint=068, Nfrac=037)
-Fch=1775.60 (Fvco=3551.20, Nint=068, Nfrac=038)
-Fch=1775.80 (Fvco=3551.60, Nint=068, Nfrac=039)
-Fch=1776.00 (Fvco=3552.00, Nint=068, Nfrac=040)
-Fch=1776.20 (Fvco=3552.40, Nint=068, Nfrac=041)
-Fch=1776.40 (Fvco=3552.80, Nint=068, Nfrac=042)
-Fch=1776.60 (Fvco=3553.20, Nint=068, Nfrac=043)
-Fch=1776.80 (Fvco=3553.60, Nint=068, Nfrac=044)
-Fch=1777.00 (Fvco=3554.00, Nint=068, Nfrac=045)
-Fch=1777.20 (Fvco=3554.40, Nint=068, Nfrac=046)
-Fch=1777.40 (Fvco=3554.80, Nint=068, Nfrac=047)
-Fch=1777.60 (Fvco=3555.20, Nint=068, Nfrac=048)
-Fch=1777.80 (Fvco=3555.60, Nint=068, Nfrac=049)
-Fch=1778.00 (Fvco=3556.00, Nint=068, Nfrac=050)
-Fch=1778.20 (Fvco=3556.40, Nint=068, Nfrac=051)
-Fch=1778.40 (Fvco=3556.80, Nint=068, Nfrac=052)
-Fch=1778.60 (Fvco=3557.20, Nint=068, Nfrac=053)
-Fch=1778.80 (Fvco=3557.60, Nint=068, Nfrac=054)
-Fch=1779.00 (Fvco=3558.00, Nint=068, Nfrac=055)
-Fch=1779.20 (Fvco=3558.40, Nint=068, Nfrac=056)
-Fch=1779.40 (Fvco=3558.80, Nint=068, Nfrac=057)
-Fch=1779.60 (Fvco=3559.20, Nint=068, Nfrac=058)
-Fch=1779.80 (Fvco=3559.60, Nint=068, Nfrac=059)
-Fch=1780.00 (Fvco=3560.00, Nint=068, Nfrac=060)
-Fch=1780.20 (Fvco=3560.40, Nint=068, Nfrac=061)
-Fch=1780.40 (Fvco=3560.80, Nint=068, Nfrac=062)
-Fch=1780.60 (Fvco=3561.20, Nint=068, Nfrac=063)
-Fch=1780.80 (Fvco=3561.60, Nint=068, Nfrac=064)
-Fch=1781.00 (Fvco=3562.00, Nint=068, Nfrac=065)
-Fch=1781.20 (Fvco=3562.40, Nint=068, Nfrac=066)
-Fch=1781.40 (Fvco=3562.80, Nint=068, Nfrac=067)
-Fch=1781.60 (Fvco=3563.20, Nint=068, Nfrac=068)
-Fch=1781.80 (Fvco=3563.60, Nint=068, Nfrac=069)
-Fch=1782.00 (Fvco=3564.00, Nint=068, Nfrac=070)
-Fch=1782.20 (Fvco=3564.40, Nint=068, Nfrac=071)
-Fch=1782.40 (Fvco=3564.80, Nint=068, Nfrac=072)
-Fch=1782.60 (Fvco=3565.20, Nint=068, Nfrac=073)
-Fch=1782.80 (Fvco=3565.60, Nint=068, Nfrac=074)
-Fch=1783.00 (Fvco=3566.00, Nint=068, Nfrac=075)
-Fch=1783.20 (Fvco=3566.40, Nint=068, Nfrac=076)
-Fch=1783.40 (Fvco=3566.80, Nint=068, Nfrac=077)
-Fch=1783.60 (Fvco=3567.20, Nint=068, Nfrac=078)
-Fch=1783.80 (Fvco=3567.60, Nint=068, Nfrac=079)
-Fch=1784.00 (Fvco=3568.00, Nint=068, Nfrac=080)
-Fch=1784.20 (Fvco=3568.40, Nint=068, Nfrac=081)
-Fch=1784.40 (Fvco=3568.80, Nint=068, Nfrac=082)
-Fch=1784.60 (Fvco=3569.20, Nint=068, Nfrac=083)
-Fch=1784.80 (Fvco=3569.60, Nint=068, Nfrac=084)
-Fch=1785.00 (Fvco=3570.00, Nint=068, Nfrac=085)
-Fch=1785.20 (Fvco=3570.40, Nint=068, Nfrac=086)
-Fch=1785.40 (Fvco=3570.80, Nint=068, Nfrac=087)
-Fch=1785.60 (Fvco=3571.20, Nint=068, Nfrac=088)
-Fch=1785.80 (Fvco=3571.60, Nint=068, Nfrac=089)
-Fch=1786.00 (Fvco=3572.00, Nint=068, Nfrac=090)
-Fch=1786.20 (Fvco=3572.40, Nint=068, Nfrac=091)
-Fch=1786.40 (Fvco=3572.80, Nint=068, Nfrac=092)
-Fch=1786.60 (Fvco=3573.20, Nint=068, Nfrac=093)
-Fch=1786.80 (Fvco=3573.60, Nint=068, Nfrac=094)
-Fch=1787.00 (Fvco=3574.00, Nint=068, Nfrac=095)
-Fch=1787.20 (Fvco=3574.40, Nint=068, Nfrac=096)
-Fch=1787.40 (Fvco=3574.80, Nint=068, Nfrac=097)
-Fch=1787.60 (Fvco=3575.20, Nint=068, Nfrac=098)
-Fch=1787.80 (Fvco=3575.60, Nint=068, Nfrac=099)
-Fch=1788.00 (Fvco=3576.00, Nint=068, Nfrac=100)
-Fch=1788.20 (Fvco=3576.40, Nint=068, Nfrac=101)
-Fch=1788.40 (Fvco=3576.80, Nint=068, Nfrac=102)
-Fch=1788.60 (Fvco=3577.20, Nint=068, Nfrac=103)
-Fch=1788.80 (Fvco=3577.60, Nint=068, Nfrac=104)
-Fch=1789.00 (Fvco=3578.00, Nint=068, Nfrac=105)
-Fch=1789.20 (Fvco=3578.40, Nint=068, Nfrac=106)
-Fch=1789.40 (Fvco=3578.80, Nint=068, Nfrac=107)
-Fch=1789.60 (Fvco=3579.20, Nint=068, Nfrac=108)
-Fch=1789.80 (Fvco=3579.60, Nint=068, Nfrac=109)
-Fch=1790.00 (Fvco=3580.00, Nint=068, Nfrac=110)
-Fch=1790.20 (Fvco=3580.40, Nint=068, Nfrac=111)
-Fch=1790.40 (Fvco=3580.80, Nint=068, Nfrac=112)
-Fch=1790.60 (Fvco=3581.20, Nint=068, Nfrac=113)
-Fch=1790.80 (Fvco=3581.60, Nint=068, Nfrac=114)
-Fch=1791.00 (Fvco=3582.00, Nint=068, Nfrac=115)
-Fch=1791.20 (Fvco=3582.40, Nint=068, Nfrac=116)
-Fch=1791.40 (Fvco=3582.80, Nint=068, Nfrac=117)
-Fch=1791.60 (Fvco=3583.20, Nint=068, Nfrac=118)
-Fch=1791.80 (Fvco=3583.60, Nint=068, Nfrac=119)
-Fch=1792.00 (Fvco=3584.00, Nint=068, Nfrac=120)
-Fch=1792.20 (Fvco=3584.40, Nint=068, Nfrac=121)
-Fch=1792.40 (Fvco=3584.80, Nint=068, Nfrac=122)
-Fch=1792.60 (Fvco=3585.20, Nint=068, Nfrac=123)
-Fch=1792.80 (Fvco=3585.60, Nint=068, Nfrac=124)
-Fch=1793.00 (Fvco=3586.00, Nint=068, Nfrac=125)
-Fch=1793.20 (Fvco=3586.40, Nint=068, Nfrac=126)
-Fch=1793.40 (Fvco=3586.80, Nint=068, Nfrac=127)
-Fch=1793.60 (Fvco=3587.20, Nint=068, Nfrac=128)
-Fch=1793.80 (Fvco=3587.60, Nint=068, Nfrac=129)
-Fch=1794.00 (Fvco=3588.00, Nint=068, Nfrac=130)
-Fch=1794.00 (Fvco=3588.00, Nint=069, Nfrac=000)
-Fch=1794.20 (Fvco=3588.40, Nint=069, Nfrac=001)
-Fch=1794.40 (Fvco=3588.80, Nint=069, Nfrac=002)
-Fch=1794.60 (Fvco=3589.20, Nint=069, Nfrac=003)
-Fch=1794.80 (Fvco=3589.60, Nint=069, Nfrac=004)
-Fch=1795.00 (Fvco=3590.00, Nint=069, Nfrac=005)
-Fch=1795.20 (Fvco=3590.40, Nint=069, Nfrac=006)
-Fch=1795.40 (Fvco=3590.80, Nint=069, Nfrac=007)
-Fch=1795.60 (Fvco=3591.20, Nint=069, Nfrac=008)
-Fch=1795.80 (Fvco=3591.60, Nint=069, Nfrac=009)
-Fch=1796.00 (Fvco=3592.00, Nint=069, Nfrac=010)
-Fch=1796.20 (Fvco=3592.40, Nint=069, Nfrac=011)
-Fch=1796.40 (Fvco=3592.80, Nint=069, Nfrac=012)
-Fch=1796.60 (Fvco=3593.20, Nint=069, Nfrac=013)
-Fch=1796.80 (Fvco=3593.60, Nint=069, Nfrac=014)
-Fch=1797.00 (Fvco=3594.00, Nint=069, Nfrac=015)
-Fch=1797.20 (Fvco=3594.40, Nint=069, Nfrac=016)
-Fch=1797.40 (Fvco=3594.80, Nint=069, Nfrac=017)
-Fch=1797.60 (Fvco=3595.20, Nint=069, Nfrac=018)
-Fch=1797.80 (Fvco=3595.60, Nint=069, Nfrac=019)
-Fch=1798.00 (Fvco=3596.00, Nint=069, Nfrac=020)
-Fch=1798.20 (Fvco=3596.40, Nint=069, Nfrac=021)
-Fch=1798.40 (Fvco=3596.80, Nint=069, Nfrac=022)
-Fch=1798.60 (Fvco=3597.20, Nint=069, Nfrac=023)
-Fch=1798.80 (Fvco=3597.60, Nint=069, Nfrac=024)
-Fch=1799.00 (Fvco=3598.00, Nint=069, Nfrac=025)
-Fch=1799.20 (Fvco=3598.40, Nint=069, Nfrac=026)
-Fch=1799.40 (Fvco=3598.80, Nint=069, Nfrac=027)
-Fch=1799.60 (Fvco=3599.20, Nint=069, Nfrac=028)
-Fch=1799.80 (Fvco=3599.60, Nint=069, Nfrac=029)
-Fch=1800.00 (Fvco=3600.00, Nint=069, Nfrac=030)
-Fch=1800.20 (Fvco=3600.40, Nint=069, Nfrac=031)
-Fch=1800.40 (Fvco=3600.80, Nint=069, Nfrac=032)
-Fch=1800.60 (Fvco=3601.20, Nint=069, Nfrac=033)
-Fch=1800.80 (Fvco=3601.60, Nint=069, Nfrac=034)
-Fch=1801.00 (Fvco=3602.00, Nint=069, Nfrac=035)
-Fch=1801.20 (Fvco=3602.40, Nint=069, Nfrac=036)
-Fch=1801.40 (Fvco=3602.80, Nint=069, Nfrac=037)
-Fch=1801.60 (Fvco=3603.20, Nint=069, Nfrac=038)
-Fch=1801.80 (Fvco=3603.60, Nint=069, Nfrac=039)
-Fch=1802.00 (Fvco=3604.00, Nint=069, Nfrac=040)
-Fch=1802.20 (Fvco=3604.40, Nint=069, Nfrac=041)
-Fch=1802.40 (Fvco=3604.80, Nint=069, Nfrac=042)
-Fch=1802.60 (Fvco=3605.20, Nint=069, Nfrac=043)
-Fch=1802.80 (Fvco=3605.60, Nint=069, Nfrac=044)
-Fch=1803.00 (Fvco=3606.00, Nint=069, Nfrac=045)
-Fch=1803.20 (Fvco=3606.40, Nint=069, Nfrac=046)
-Fch=1803.40 (Fvco=3606.80, Nint=069, Nfrac=047)
-Fch=1803.60 (Fvco=3607.20, Nint=069, Nfrac=048)
-Fch=1803.80 (Fvco=3607.60, Nint=069, Nfrac=049)
-Fch=1804.00 (Fvco=3608.00, Nint=069, Nfrac=050)
-Fch=1804.20 (Fvco=3608.40, Nint=069, Nfrac=051)
-Fch=1804.40 (Fvco=3608.80, Nint=069, Nfrac=052)
-Fch=1804.60 (Fvco=3609.20, Nint=069, Nfrac=053)
-Fch=1804.80 (Fvco=3609.60, Nint=069, Nfrac=054)
-Fch=1805.00 (Fvco=3610.00, Nint=069, Nfrac=055)
-Fch=1805.20 (Fvco=3610.40, Nint=069, Nfrac=056)
-Fch=1805.40 (Fvco=3610.80, Nint=069, Nfrac=057)
-Fch=1805.60 (Fvco=3611.20, Nint=069, Nfrac=058)
-Fch=1805.80 (Fvco=3611.60, Nint=069, Nfrac=059)
-Fch=1806.00 (Fvco=3612.00, Nint=069, Nfrac=060)
-Fch=1806.20 (Fvco=3612.40, Nint=069, Nfrac=061)
-Fch=1806.40 (Fvco=3612.80, Nint=069, Nfrac=062)
-Fch=1806.60 (Fvco=3613.20, Nint=069, Nfrac=063)
-Fch=1806.80 (Fvco=3613.60, Nint=069, Nfrac=064)
-Fch=1807.00 (Fvco=3614.00, Nint=069, Nfrac=065)
-Fch=1807.20 (Fvco=3614.40, Nint=069, Nfrac=066)
-Fch=1807.40 (Fvco=3614.80, Nint=069, Nfrac=067)
-Fch=1807.60 (Fvco=3615.20, Nint=069, Nfrac=068)
-Fch=1807.80 (Fvco=3615.60, Nint=069, Nfrac=069)
-Fch=1808.00 (Fvco=3616.00, Nint=069, Nfrac=070)
-Fch=1808.20 (Fvco=3616.40, Nint=069, Nfrac=071)
-Fch=1808.40 (Fvco=3616.80, Nint=069, Nfrac=072)
-Fch=1808.60 (Fvco=3617.20, Nint=069, Nfrac=073)
-Fch=1808.80 (Fvco=3617.60, Nint=069, Nfrac=074)
-Fch=1809.00 (Fvco=3618.00, Nint=069, Nfrac=075)
-Fch=1809.20 (Fvco=3618.40, Nint=069, Nfrac=076)
-Fch=1809.40 (Fvco=3618.80, Nint=069, Nfrac=077)
-Fch=1809.60 (Fvco=3619.20, Nint=069, Nfrac=078)
-Fch=1809.80 (Fvco=3619.60, Nint=069, Nfrac=079)
-Fch=1810.00 (Fvco=3620.00, Nint=069, Nfrac=080)
-Fch=1810.20 (Fvco=3620.40, Nint=069, Nfrac=081)
-Fch=1810.40 (Fvco=3620.80, Nint=069, Nfrac=082)
-Fch=1810.60 (Fvco=3621.20, Nint=069, Nfrac=083)
-Fch=1810.80 (Fvco=3621.60, Nint=069, Nfrac=084)
-Fch=1811.00 (Fvco=3622.00, Nint=069, Nfrac=085)
-Fch=1811.20 (Fvco=3622.40, Nint=069, Nfrac=086)
-Fch=1811.40 (Fvco=3622.80, Nint=069, Nfrac=087)
-Fch=1811.60 (Fvco=3623.20, Nint=069, Nfrac=088)
-Fch=1811.80 (Fvco=3623.60, Nint=069, Nfrac=089)
-Fch=1812.00 (Fvco=3624.00, Nint=069, Nfrac=090)
-Fch=1812.20 (Fvco=3624.40, Nint=069, Nfrac=091)
-Fch=1812.40 (Fvco=3624.80, Nint=069, Nfrac=092)
-Fch=1812.60 (Fvco=3625.20, Nint=069, Nfrac=093)
-Fch=1812.80 (Fvco=3625.60, Nint=069, Nfrac=094)
-Fch=1813.00 (Fvco=3626.00, Nint=069, Nfrac=095)
-Fch=1813.20 (Fvco=3626.40, Nint=069, Nfrac=096)
-Fch=1813.40 (Fvco=3626.80, Nint=069, Nfrac=097)
-Fch=1813.60 (Fvco=3627.20, Nint=069, Nfrac=098)
-Fch=1813.80 (Fvco=3627.60, Nint=069, Nfrac=099)
-Fch=1814.00 (Fvco=3628.00, Nint=069, Nfrac=100)
-Fch=1814.20 (Fvco=3628.40, Nint=069, Nfrac=101)
-Fch=1814.40 (Fvco=3628.80, Nint=069, Nfrac=102)
-Fch=1814.60 (Fvco=3629.20, Nint=069, Nfrac=103)
-Fch=1814.80 (Fvco=3629.60, Nint=069, Nfrac=104)
-Fch=1815.00 (Fvco=3630.00, Nint=069, Nfrac=105)
-Fch=1815.20 (Fvco=3630.40, Nint=069, Nfrac=106)
-Fch=1815.40 (Fvco=3630.80, Nint=069, Nfrac=107)
-Fch=1815.60 (Fvco=3631.20, Nint=069, Nfrac=108)
-Fch=1815.80 (Fvco=3631.60, Nint=069, Nfrac=109)
-Fch=1816.00 (Fvco=3632.00, Nint=069, Nfrac=110)
-Fch=1816.20 (Fvco=3632.40, Nint=069, Nfrac=111)
-Fch=1816.40 (Fvco=3632.80, Nint=069, Nfrac=112)
-Fch=1816.60 (Fvco=3633.20, Nint=069, Nfrac=113)
-Fch=1816.80 (Fvco=3633.60, Nint=069, Nfrac=114)
-Fch=1817.00 (Fvco=3634.00, Nint=069, Nfrac=115)
-Fch=1817.20 (Fvco=3634.40, Nint=069, Nfrac=116)
-Fch=1817.40 (Fvco=3634.80, Nint=069, Nfrac=117)
-Fch=1817.60 (Fvco=3635.20, Nint=069, Nfrac=118)
-Fch=1817.80 (Fvco=3635.60, Nint=069, Nfrac=119)
-Fch=1818.00 (Fvco=3636.00, Nint=069, Nfrac=120)
-Fch=1818.20 (Fvco=3636.40, Nint=069, Nfrac=121)
-Fch=1818.40 (Fvco=3636.80, Nint=069, Nfrac=122)
-Fch=1818.60 (Fvco=3637.20, Nint=069, Nfrac=123)
-Fch=1818.80 (Fvco=3637.60, Nint=069, Nfrac=124)
-Fch=1819.00 (Fvco=3638.00, Nint=069, Nfrac=125)
-Fch=1819.20 (Fvco=3638.40, Nint=069, Nfrac=126)
-Fch=1819.40 (Fvco=3638.80, Nint=069, Nfrac=127)
-Fch=1819.60 (Fvco=3639.20, Nint=069, Nfrac=128)
-Fch=1819.80 (Fvco=3639.60, Nint=069, Nfrac=129)
-Fch=1820.00 (Fvco=3640.00, Nint=069, Nfrac=130)
-Fch=1820.00 (Fvco=3640.00, Nint=070, Nfrac=000)
-Fch=1820.20 (Fvco=3640.40, Nint=070, Nfrac=001)
-Fch=1820.40 (Fvco=3640.80, Nint=070, Nfrac=002)
-Fch=1820.60 (Fvco=3641.20, Nint=070, Nfrac=003)
-Fch=1820.80 (Fvco=3641.60, Nint=070, Nfrac=004)
-Fch=1821.00 (Fvco=3642.00, Nint=070, Nfrac=005)
-Fch=1821.20 (Fvco=3642.40, Nint=070, Nfrac=006)
-Fch=1821.40 (Fvco=3642.80, Nint=070, Nfrac=007)
-Fch=1821.60 (Fvco=3643.20, Nint=070, Nfrac=008)
-Fch=1821.80 (Fvco=3643.60, Nint=070, Nfrac=009)
-Fch=1822.00 (Fvco=3644.00, Nint=070, Nfrac=010)
-Fch=1822.20 (Fvco=3644.40, Nint=070, Nfrac=011)
-Fch=1822.40 (Fvco=3644.80, Nint=070, Nfrac=012)
-Fch=1822.60 (Fvco=3645.20, Nint=070, Nfrac=013)
-Fch=1822.80 (Fvco=3645.60, Nint=070, Nfrac=014)
-Fch=1823.00 (Fvco=3646.00, Nint=070, Nfrac=015)
-Fch=1823.20 (Fvco=3646.40, Nint=070, Nfrac=016)
-Fch=1823.40 (Fvco=3646.80, Nint=070, Nfrac=017)
-Fch=1823.60 (Fvco=3647.20, Nint=070, Nfrac=018)
-Fch=1823.80 (Fvco=3647.60, Nint=070, Nfrac=019)
-Fch=1824.00 (Fvco=3648.00, Nint=070, Nfrac=020)
-Fch=1824.20 (Fvco=3648.40, Nint=070, Nfrac=021)
-Fch=1824.40 (Fvco=3648.80, Nint=070, Nfrac=022)
-Fch=1824.60 (Fvco=3649.20, Nint=070, Nfrac=023)
-Fch=1824.80 (Fvco=3649.60, Nint=070, Nfrac=024)
-Fch=1825.00 (Fvco=3650.00, Nint=070, Nfrac=025)
-Fch=1825.20 (Fvco=3650.40, Nint=070, Nfrac=026)
-Fch=1825.40 (Fvco=3650.80, Nint=070, Nfrac=027)
-Fch=1825.60 (Fvco=3651.20, Nint=070, Nfrac=028)
-Fch=1825.80 (Fvco=3651.60, Nint=070, Nfrac=029)
-Fch=1826.00 (Fvco=3652.00, Nint=070, Nfrac=030)
-Fch=1826.20 (Fvco=3652.40, Nint=070, Nfrac=031)
-Fch=1826.40 (Fvco=3652.80, Nint=070, Nfrac=032)
-Fch=1826.60 (Fvco=3653.20, Nint=070, Nfrac=033)
-Fch=1826.80 (Fvco=3653.60, Nint=070, Nfrac=034)
-Fch=1827.00 (Fvco=3654.00, Nint=070, Nfrac=035)
-Fch=1827.20 (Fvco=3654.40, Nint=070, Nfrac=036)
-Fch=1827.40 (Fvco=3654.80, Nint=070, Nfrac=037)
-Fch=1827.60 (Fvco=3655.20, Nint=070, Nfrac=038)
-Fch=1827.80 (Fvco=3655.60, Nint=070, Nfrac=039)
-Fch=1828.00 (Fvco=3656.00, Nint=070, Nfrac=040)
-Fch=1828.20 (Fvco=3656.40, Nint=070, Nfrac=041)
-Fch=1828.40 (Fvco=3656.80, Nint=070, Nfrac=042)
-Fch=1828.60 (Fvco=3657.20, Nint=070, Nfrac=043)
-Fch=1828.80 (Fvco=3657.60, Nint=070, Nfrac=044)
-Fch=1829.00 (Fvco=3658.00, Nint=070, Nfrac=045)
-Fch=1829.20 (Fvco=3658.40, Nint=070, Nfrac=046)
-Fch=1829.40 (Fvco=3658.80, Nint=070, Nfrac=047)
-Fch=1829.60 (Fvco=3659.20, Nint=070, Nfrac=048)
-Fch=1829.80 (Fvco=3659.60, Nint=070, Nfrac=049)
-Fch=1830.00 (Fvco=3660.00, Nint=070, Nfrac=050)
-Fch=1830.20 (Fvco=3660.40, Nint=070, Nfrac=051)
-Fch=1830.40 (Fvco=3660.80, Nint=070, Nfrac=052)
-Fch=1830.60 (Fvco=3661.20, Nint=070, Nfrac=053)
-Fch=1830.80 (Fvco=3661.60, Nint=070, Nfrac=054)
-Fch=1831.00 (Fvco=3662.00, Nint=070, Nfrac=055)
-Fch=1831.20 (Fvco=3662.40, Nint=070, Nfrac=056)
-Fch=1831.40 (Fvco=3662.80, Nint=070, Nfrac=057)
-Fch=1831.60 (Fvco=3663.20, Nint=070, Nfrac=058)
-Fch=1831.80 (Fvco=3663.60, Nint=070, Nfrac=059)
-Fch=1832.00 (Fvco=3664.00, Nint=070, Nfrac=060)
-Fch=1832.20 (Fvco=3664.40, Nint=070, Nfrac=061)
-Fch=1832.40 (Fvco=3664.80, Nint=070, Nfrac=062)
-Fch=1832.60 (Fvco=3665.20, Nint=070, Nfrac=063)
-Fch=1832.80 (Fvco=3665.60, Nint=070, Nfrac=064)
-Fch=1833.00 (Fvco=3666.00, Nint=070, Nfrac=065)
-Fch=1833.20 (Fvco=3666.40, Nint=070, Nfrac=066)
-Fch=1833.40 (Fvco=3666.80, Nint=070, Nfrac=067)
-Fch=1833.60 (Fvco=3667.20, Nint=070, Nfrac=068)
-Fch=1833.80 (Fvco=3667.60, Nint=070, Nfrac=069)
-Fch=1834.00 (Fvco=3668.00, Nint=070, Nfrac=070)
-Fch=1834.20 (Fvco=3668.40, Nint=070, Nfrac=071)
-Fch=1834.40 (Fvco=3668.80, Nint=070, Nfrac=072)
-Fch=1834.60 (Fvco=3669.20, Nint=070, Nfrac=073)
-Fch=1834.80 (Fvco=3669.60, Nint=070, Nfrac=074)
-Fch=1835.00 (Fvco=3670.00, Nint=070, Nfrac=075)
-Fch=1835.20 (Fvco=3670.40, Nint=070, Nfrac=076)
-Fch=1835.40 (Fvco=3670.80, Nint=070, Nfrac=077)
-Fch=1835.60 (Fvco=3671.20, Nint=070, Nfrac=078)
-Fch=1835.80 (Fvco=3671.60, Nint=070, Nfrac=079)
-Fch=1836.00 (Fvco=3672.00, Nint=070, Nfrac=080)
-Fch=1836.20 (Fvco=3672.40, Nint=070, Nfrac=081)
-Fch=1836.40 (Fvco=3672.80, Nint=070, Nfrac=082)
-Fch=1836.60 (Fvco=3673.20, Nint=070, Nfrac=083)
-Fch=1836.80 (Fvco=3673.60, Nint=070, Nfrac=084)
-Fch=1837.00 (Fvco=3674.00, Nint=070, Nfrac=085)
-Fch=1837.20 (Fvco=3674.40, Nint=070, Nfrac=086)
-Fch=1837.40 (Fvco=3674.80, Nint=070, Nfrac=087)
-Fch=1837.60 (Fvco=3675.20, Nint=070, Nfrac=088)
-Fch=1837.80 (Fvco=3675.60, Nint=070, Nfrac=089)
-Fch=1838.00 (Fvco=3676.00, Nint=070, Nfrac=090)
-Fch=1838.20 (Fvco=3676.40, Nint=070, Nfrac=091)
-Fch=1838.40 (Fvco=3676.80, Nint=070, Nfrac=092)
-Fch=1838.60 (Fvco=3677.20, Nint=070, Nfrac=093)
-Fch=1838.80 (Fvco=3677.60, Nint=070, Nfrac=094)
-Fch=1839.00 (Fvco=3678.00, Nint=070, Nfrac=095)
-Fch=1839.20 (Fvco=3678.40, Nint=070, Nfrac=096)
-Fch=1839.40 (Fvco=3678.80, Nint=070, Nfrac=097)
-Fch=1839.60 (Fvco=3679.20, Nint=070, Nfrac=098)
-Fch=1839.80 (Fvco=3679.60, Nint=070, Nfrac=099)
-Fch=1840.00 (Fvco=3680.00, Nint=070, Nfrac=100)
-Fch=1840.20 (Fvco=3680.40, Nint=070, Nfrac=101)
-Fch=1840.40 (Fvco=3680.80, Nint=070, Nfrac=102)
-Fch=1840.60 (Fvco=3681.20, Nint=070, Nfrac=103)
-Fch=1840.80 (Fvco=3681.60, Nint=070, Nfrac=104)
-Fch=1841.00 (Fvco=3682.00, Nint=070, Nfrac=105)
-Fch=1841.20 (Fvco=3682.40, Nint=070, Nfrac=106)
-Fch=1841.40 (Fvco=3682.80, Nint=070, Nfrac=107)
-Fch=1841.60 (Fvco=3683.20, Nint=070, Nfrac=108)
-Fch=1841.80 (Fvco=3683.60, Nint=070, Nfrac=109)
-Fch=1842.00 (Fvco=3684.00, Nint=070, Nfrac=110)
-Fch=1842.20 (Fvco=3684.40, Nint=070, Nfrac=111)
-Fch=1842.40 (Fvco=3684.80, Nint=070, Nfrac=112)
-Fch=1842.60 (Fvco=3685.20, Nint=070, Nfrac=113)
-Fch=1842.80 (Fvco=3685.60, Nint=070, Nfrac=114)
-Fch=1843.00 (Fvco=3686.00, Nint=070, Nfrac=115)
-Fch=1843.20 (Fvco=3686.40, Nint=070, Nfrac=116)
-Fch=1843.40 (Fvco=3686.80, Nint=070, Nfrac=117)
-Fch=1843.60 (Fvco=3687.20, Nint=070, Nfrac=118)
-Fch=1843.80 (Fvco=3687.60, Nint=070, Nfrac=119)
-Fch=1844.00 (Fvco=3688.00, Nint=070, Nfrac=120)
-Fch=1844.20 (Fvco=3688.40, Nint=070, Nfrac=121)
-Fch=1844.40 (Fvco=3688.80, Nint=070, Nfrac=122)
-Fch=1844.60 (Fvco=3689.20, Nint=070, Nfrac=123)
-Fch=1844.80 (Fvco=3689.60, Nint=070, Nfrac=124)
-Fch=1845.00 (Fvco=3690.00, Nint=070, Nfrac=125)
-Fch=1845.20 (Fvco=3690.40, Nint=070, Nfrac=126)
-Fch=1845.40 (Fvco=3690.80, Nint=070, Nfrac=127)
-Fch=1845.60 (Fvco=3691.20, Nint=070, Nfrac=128)
-Fch=1845.80 (Fvco=3691.60, Nint=070, Nfrac=129)
-Fch=1846.00 (Fvco=3692.00, Nint=070, Nfrac=130)
-Fch=1846.00 (Fvco=3692.00, Nint=071, Nfrac=000)
-Fch=1846.20 (Fvco=3692.40, Nint=071, Nfrac=001)
-Fch=1846.40 (Fvco=3692.80, Nint=071, Nfrac=002)
-Fch=1846.60 (Fvco=3693.20, Nint=071, Nfrac=003)
-Fch=1846.80 (Fvco=3693.60, Nint=071, Nfrac=004)
-Fch=1847.00 (Fvco=3694.00, Nint=071, Nfrac=005)
-Fch=1847.20 (Fvco=3694.40, Nint=071, Nfrac=006)
-Fch=1847.40 (Fvco=3694.80, Nint=071, Nfrac=007)
-Fch=1847.60 (Fvco=3695.20, Nint=071, Nfrac=008)
-Fch=1847.80 (Fvco=3695.60, Nint=071, Nfrac=009)
-Fch=1848.00 (Fvco=3696.00, Nint=071, Nfrac=010)
-Fch=1848.20 (Fvco=3696.40, Nint=071, Nfrac=011)
-Fch=1848.40 (Fvco=3696.80, Nint=071, Nfrac=012)
-Fch=1848.60 (Fvco=3697.20, Nint=071, Nfrac=013)
-Fch=1848.80 (Fvco=3697.60, Nint=071, Nfrac=014)
-Fch=1849.00 (Fvco=3698.00, Nint=071, Nfrac=015)
-Fch=1849.20 (Fvco=3698.40, Nint=071, Nfrac=016)
-Fch=1849.40 (Fvco=3698.80, Nint=071, Nfrac=017)
-Fch=1849.60 (Fvco=3699.20, Nint=071, Nfrac=018)
-Fch=1849.80 (Fvco=3699.60, Nint=071, Nfrac=019)
-Fch=1850.00 (Fvco=3700.00, Nint=071, Nfrac=020)
-Fch=1850.20 (Fvco=3700.40, Nint=071, Nfrac=021)
-Fch=1850.40 (Fvco=3700.80, Nint=071, Nfrac=022)
-Fch=1850.60 (Fvco=3701.20, Nint=071, Nfrac=023)
-Fch=1850.80 (Fvco=3701.60, Nint=071, Nfrac=024)
-Fch=1851.00 (Fvco=3702.00, Nint=071, Nfrac=025)
-Fch=1851.20 (Fvco=3702.40, Nint=071, Nfrac=026)
-Fch=1851.40 (Fvco=3702.80, Nint=071, Nfrac=027)
-Fch=1851.60 (Fvco=3703.20, Nint=071, Nfrac=028)
-Fch=1851.80 (Fvco=3703.60, Nint=071, Nfrac=029)
-Fch=1852.00 (Fvco=3704.00, Nint=071, Nfrac=030)
-Fch=1852.20 (Fvco=3704.40, Nint=071, Nfrac=031)
-Fch=1852.40 (Fvco=3704.80, Nint=071, Nfrac=032)
-Fch=1852.60 (Fvco=3705.20, Nint=071, Nfrac=033)
-Fch=1852.80 (Fvco=3705.60, Nint=071, Nfrac=034)
-Fch=1853.00 (Fvco=3706.00, Nint=071, Nfrac=035)
-Fch=1853.20 (Fvco=3706.40, Nint=071, Nfrac=036)
-Fch=1853.40 (Fvco=3706.80, Nint=071, Nfrac=037)
-Fch=1853.60 (Fvco=3707.20, Nint=071, Nfrac=038)
-Fch=1853.80 (Fvco=3707.60, Nint=071, Nfrac=039)
-Fch=1854.00 (Fvco=3708.00, Nint=071, Nfrac=040)
-Fch=1854.20 (Fvco=3708.40, Nint=071, Nfrac=041)
-Fch=1854.40 (Fvco=3708.80, Nint=071, Nfrac=042)
-Fch=1854.60 (Fvco=3709.20, Nint=071, Nfrac=043)
-Fch=1854.80 (Fvco=3709.60, Nint=071, Nfrac=044)
-Fch=1855.00 (Fvco=3710.00, Nint=071, Nfrac=045)
-Fch=1855.20 (Fvco=3710.40, Nint=071, Nfrac=046)
-Fch=1855.40 (Fvco=3710.80, Nint=071, Nfrac=047)
-Fch=1855.60 (Fvco=3711.20, Nint=071, Nfrac=048)
-Fch=1855.80 (Fvco=3711.60, Nint=071, Nfrac=049)
-Fch=1856.00 (Fvco=3712.00, Nint=071, Nfrac=050)
-Fch=1856.20 (Fvco=3712.40, Nint=071, Nfrac=051)
-Fch=1856.40 (Fvco=3712.80, Nint=071, Nfrac=052)
-Fch=1856.60 (Fvco=3713.20, Nint=071, Nfrac=053)
-Fch=1856.80 (Fvco=3713.60, Nint=071, Nfrac=054)
-Fch=1857.00 (Fvco=3714.00, Nint=071, Nfrac=055)
-Fch=1857.20 (Fvco=3714.40, Nint=071, Nfrac=056)
-Fch=1857.40 (Fvco=3714.80, Nint=071, Nfrac=057)
-Fch=1857.60 (Fvco=3715.20, Nint=071, Nfrac=058)
-Fch=1857.80 (Fvco=3715.60, Nint=071, Nfrac=059)
-Fch=1858.00 (Fvco=3716.00, Nint=071, Nfrac=060)
-Fch=1858.20 (Fvco=3716.40, Nint=071, Nfrac=061)
-Fch=1858.40 (Fvco=3716.80, Nint=071, Nfrac=062)
-Fch=1858.60 (Fvco=3717.20, Nint=071, Nfrac=063)
-Fch=1858.80 (Fvco=3717.60, Nint=071, Nfrac=064)
-Fch=1859.00 (Fvco=3718.00, Nint=071, Nfrac=065)
-Fch=1859.20 (Fvco=3718.40, Nint=071, Nfrac=066)
-Fch=1859.40 (Fvco=3718.80, Nint=071, Nfrac=067)
-Fch=1859.60 (Fvco=3719.20, Nint=071, Nfrac=068)
-Fch=1859.80 (Fvco=3719.60, Nint=071, Nfrac=069)
-Fch=1860.00 (Fvco=3720.00, Nint=071, Nfrac=070)
-Fch=1860.20 (Fvco=3720.40, Nint=071, Nfrac=071)
-Fch=1860.40 (Fvco=3720.80, Nint=071, Nfrac=072)
-Fch=1860.60 (Fvco=3721.20, Nint=071, Nfrac=073)
-Fch=1860.80 (Fvco=3721.60, Nint=071, Nfrac=074)
-Fch=1861.00 (Fvco=3722.00, Nint=071, Nfrac=075)
-Fch=1861.20 (Fvco=3722.40, Nint=071, Nfrac=076)
-Fch=1861.40 (Fvco=3722.80, Nint=071, Nfrac=077)
-Fch=1861.60 (Fvco=3723.20, Nint=071, Nfrac=078)
-Fch=1861.80 (Fvco=3723.60, Nint=071, Nfrac=079)
-Fch=1862.00 (Fvco=3724.00, Nint=071, Nfrac=080)
-Fch=1862.20 (Fvco=3724.40, Nint=071, Nfrac=081)
-Fch=1862.40 (Fvco=3724.80, Nint=071, Nfrac=082)
-Fch=1862.60 (Fvco=3725.20, Nint=071, Nfrac=083)
-Fch=1862.80 (Fvco=3725.60, Nint=071, Nfrac=084)
-Fch=1863.00 (Fvco=3726.00, Nint=071, Nfrac=085)
-Fch=1863.20 (Fvco=3726.40, Nint=071, Nfrac=086)
-Fch=1863.40 (Fvco=3726.80, Nint=071, Nfrac=087)
-Fch=1863.60 (Fvco=3727.20, Nint=071, Nfrac=088)
-Fch=1863.80 (Fvco=3727.60, Nint=071, Nfrac=089)
-Fch=1864.00 (Fvco=3728.00, Nint=071, Nfrac=090)
-Fch=1864.20 (Fvco=3728.40, Nint=071, Nfrac=091)
-Fch=1864.40 (Fvco=3728.80, Nint=071, Nfrac=092)
-Fch=1864.60 (Fvco=3729.20, Nint=071, Nfrac=093)
-Fch=1864.80 (Fvco=3729.60, Nint=071, Nfrac=094)
-Fch=1865.00 (Fvco=3730.00, Nint=071, Nfrac=095)
-Fch=1865.20 (Fvco=3730.40, Nint=071, Nfrac=096)
-Fch=1865.40 (Fvco=3730.80, Nint=071, Nfrac=097)
-Fch=1865.60 (Fvco=3731.20, Nint=071, Nfrac=098)
-Fch=1865.80 (Fvco=3731.60, Nint=071, Nfrac=099)
-Fch=1866.00 (Fvco=3732.00, Nint=071, Nfrac=100)
-Fch=1866.20 (Fvco=3732.40, Nint=071, Nfrac=101)
-Fch=1866.40 (Fvco=3732.80, Nint=071, Nfrac=102)
-Fch=1866.60 (Fvco=3733.20, Nint=071, Nfrac=103)
-Fch=1866.80 (Fvco=3733.60, Nint=071, Nfrac=104)
-Fch=1867.00 (Fvco=3734.00, Nint=071, Nfrac=105)
-Fch=1867.20 (Fvco=3734.40, Nint=071, Nfrac=106)
-Fch=1867.40 (Fvco=3734.80, Nint=071, Nfrac=107)
-Fch=1867.60 (Fvco=3735.20, Nint=071, Nfrac=108)
-Fch=1867.80 (Fvco=3735.60, Nint=071, Nfrac=109)
-Fch=1868.00 (Fvco=3736.00, Nint=071, Nfrac=110)
-Fch=1868.20 (Fvco=3736.40, Nint=071, Nfrac=111)
-Fch=1868.40 (Fvco=3736.80, Nint=071, Nfrac=112)
-Fch=1868.60 (Fvco=3737.20, Nint=071, Nfrac=113)
-Fch=1868.80 (Fvco=3737.60, Nint=071, Nfrac=114)
-Fch=1869.00 (Fvco=3738.00, Nint=071, Nfrac=115)
-Fch=1869.20 (Fvco=3738.40, Nint=071, Nfrac=116)
-Fch=1869.40 (Fvco=3738.80, Nint=071, Nfrac=117)
-Fch=1869.60 (Fvco=3739.20, Nint=071, Nfrac=118)
-Fch=1869.80 (Fvco=3739.60, Nint=071, Nfrac=119)
-Fch=1870.00 (Fvco=3740.00, Nint=071, Nfrac=120)
-Fch=1870.20 (Fvco=3740.40, Nint=071, Nfrac=121)
-Fch=1870.40 (Fvco=3740.80, Nint=071, Nfrac=122)
-Fch=1870.60 (Fvco=3741.20, Nint=071, Nfrac=123)
-Fch=1870.80 (Fvco=3741.60, Nint=071, Nfrac=124)
-Fch=1871.00 (Fvco=3742.00, Nint=071, Nfrac=125)
-Fch=1871.20 (Fvco=3742.40, Nint=071, Nfrac=126)
-Fch=1871.40 (Fvco=3742.80, Nint=071, Nfrac=127)
-Fch=1871.60 (Fvco=3743.20, Nint=071, Nfrac=128)
-Fch=1871.80 (Fvco=3743.60, Nint=071, Nfrac=129)
-Fch=1872.00 (Fvco=3744.00, Nint=071, Nfrac=130)
-Fch=1872.00 (Fvco=3744.00, Nint=072, Nfrac=000)
-Fch=1872.20 (Fvco=3744.40, Nint=072, Nfrac=001)
-Fch=1872.40 (Fvco=3744.80, Nint=072, Nfrac=002)
-Fch=1872.60 (Fvco=3745.20, Nint=072, Nfrac=003)
-Fch=1872.80 (Fvco=3745.60, Nint=072, Nfrac=004)
-Fch=1873.00 (Fvco=3746.00, Nint=072, Nfrac=005)
-Fch=1873.20 (Fvco=3746.40, Nint=072, Nfrac=006)
-Fch=1873.40 (Fvco=3746.80, Nint=072, Nfrac=007)
-Fch=1873.60 (Fvco=3747.20, Nint=072, Nfrac=008)
-Fch=1873.80 (Fvco=3747.60, Nint=072, Nfrac=009)
-Fch=1874.00 (Fvco=3748.00, Nint=072, Nfrac=010)
-Fch=1874.20 (Fvco=3748.40, Nint=072, Nfrac=011)
-Fch=1874.40 (Fvco=3748.80, Nint=072, Nfrac=012)
-Fch=1874.60 (Fvco=3749.20, Nint=072, Nfrac=013)
-Fch=1874.80 (Fvco=3749.60, Nint=072, Nfrac=014)
-Fch=1875.00 (Fvco=3750.00, Nint=072, Nfrac=015)
-Fch=1875.20 (Fvco=3750.40, Nint=072, Nfrac=016)
-Fch=1875.40 (Fvco=3750.80, Nint=072, Nfrac=017)
-Fch=1875.60 (Fvco=3751.20, Nint=072, Nfrac=018)
-Fch=1875.80 (Fvco=3751.60, Nint=072, Nfrac=019)
-Fch=1876.00 (Fvco=3752.00, Nint=072, Nfrac=020)
-Fch=1876.20 (Fvco=3752.40, Nint=072, Nfrac=021)
-Fch=1876.40 (Fvco=3752.80, Nint=072, Nfrac=022)
-Fch=1876.60 (Fvco=3753.20, Nint=072, Nfrac=023)
-Fch=1876.80 (Fvco=3753.60, Nint=072, Nfrac=024)
-Fch=1877.00 (Fvco=3754.00, Nint=072, Nfrac=025)
-Fch=1877.20 (Fvco=3754.40, Nint=072, Nfrac=026)
-Fch=1877.40 (Fvco=3754.80, Nint=072, Nfrac=027)
-Fch=1877.60 (Fvco=3755.20, Nint=072, Nfrac=028)
-Fch=1877.80 (Fvco=3755.60, Nint=072, Nfrac=029)
-Fch=1878.00 (Fvco=3756.00, Nint=072, Nfrac=030)
-Fch=1878.20 (Fvco=3756.40, Nint=072, Nfrac=031)
-Fch=1878.40 (Fvco=3756.80, Nint=072, Nfrac=032)
-Fch=1878.60 (Fvco=3757.20, Nint=072, Nfrac=033)
-Fch=1878.80 (Fvco=3757.60, Nint=072, Nfrac=034)
-Fch=1879.00 (Fvco=3758.00, Nint=072, Nfrac=035)
-Fch=1879.20 (Fvco=3758.40, Nint=072, Nfrac=036)
-Fch=1879.40 (Fvco=3758.80, Nint=072, Nfrac=037)
-Fch=1879.60 (Fvco=3759.20, Nint=072, Nfrac=038)
-Fch=1879.80 (Fvco=3759.60, Nint=072, Nfrac=039)
-Fch=1880.00 (Fvco=3760.00, Nint=072, Nfrac=040)
-Fch=1880.20 (Fvco=3760.40, Nint=072, Nfrac=041)
-Fch=1880.40 (Fvco=3760.80, Nint=072, Nfrac=042)
-Fch=1880.60 (Fvco=3761.20, Nint=072, Nfrac=043)
-Fch=1880.80 (Fvco=3761.60, Nint=072, Nfrac=044)
-Fch=1881.00 (Fvco=3762.00, Nint=072, Nfrac=045)
-Fch=1881.20 (Fvco=3762.40, Nint=072, Nfrac=046)
-Fch=1881.40 (Fvco=3762.80, Nint=072, Nfrac=047)
-Fch=1881.60 (Fvco=3763.20, Nint=072, Nfrac=048)
-Fch=1881.80 (Fvco=3763.60, Nint=072, Nfrac=049)
-Fch=1882.00 (Fvco=3764.00, Nint=072, Nfrac=050)
-Fch=1882.20 (Fvco=3764.40, Nint=072, Nfrac=051)
-Fch=1882.40 (Fvco=3764.80, Nint=072, Nfrac=052)
-Fch=1882.60 (Fvco=3765.20, Nint=072, Nfrac=053)
-Fch=1882.80 (Fvco=3765.60, Nint=072, Nfrac=054)
-Fch=1883.00 (Fvco=3766.00, Nint=072, Nfrac=055)
-Fch=1883.20 (Fvco=3766.40, Nint=072, Nfrac=056)
-Fch=1883.40 (Fvco=3766.80, Nint=072, Nfrac=057)
-Fch=1883.60 (Fvco=3767.20, Nint=072, Nfrac=058)
-Fch=1883.80 (Fvco=3767.60, Nint=072, Nfrac=059)
-Fch=1884.00 (Fvco=3768.00, Nint=072, Nfrac=060)
-Fch=1884.20 (Fvco=3768.40, Nint=072, Nfrac=061)
-Fch=1884.40 (Fvco=3768.80, Nint=072, Nfrac=062)
-Fch=1884.60 (Fvco=3769.20, Nint=072, Nfrac=063)
-Fch=1884.80 (Fvco=3769.60, Nint=072, Nfrac=064)
-Fch=1885.00 (Fvco=3770.00, Nint=072, Nfrac=065)
-Fch=1885.20 (Fvco=3770.40, Nint=072, Nfrac=066)
-Fch=1885.40 (Fvco=3770.80, Nint=072, Nfrac=067)
-Fch=1885.60 (Fvco=3771.20, Nint=072, Nfrac=068)
-Fch=1885.80 (Fvco=3771.60, Nint=072, Nfrac=069)
-Fch=1886.00 (Fvco=3772.00, Nint=072, Nfrac=070)
-Fch=1886.20 (Fvco=3772.40, Nint=072, Nfrac=071)
-Fch=1886.40 (Fvco=3772.80, Nint=072, Nfrac=072)
-Fch=1886.60 (Fvco=3773.20, Nint=072, Nfrac=073)
-Fch=1886.80 (Fvco=3773.60, Nint=072, Nfrac=074)
-Fch=1887.00 (Fvco=3774.00, Nint=072, Nfrac=075)
-Fch=1887.20 (Fvco=3774.40, Nint=072, Nfrac=076)
-Fch=1887.40 (Fvco=3774.80, Nint=072, Nfrac=077)
-Fch=1887.60 (Fvco=3775.20, Nint=072, Nfrac=078)
-Fch=1887.80 (Fvco=3775.60, Nint=072, Nfrac=079)
-Fch=1888.00 (Fvco=3776.00, Nint=072, Nfrac=080)
-Fch=1888.20 (Fvco=3776.40, Nint=072, Nfrac=081)
-Fch=1888.40 (Fvco=3776.80, Nint=072, Nfrac=082)
-Fch=1888.60 (Fvco=3777.20, Nint=072, Nfrac=083)
-Fch=1888.80 (Fvco=3777.60, Nint=072, Nfrac=084)
-Fch=1889.00 (Fvco=3778.00, Nint=072, Nfrac=085)
-Fch=1889.20 (Fvco=3778.40, Nint=072, Nfrac=086)
-Fch=1889.40 (Fvco=3778.80, Nint=072, Nfrac=087)
-Fch=1889.60 (Fvco=3779.20, Nint=072, Nfrac=088)
-Fch=1889.80 (Fvco=3779.60, Nint=072, Nfrac=089)
-Fch=1890.00 (Fvco=3780.00, Nint=072, Nfrac=090)
-Fch=1890.20 (Fvco=3780.40, Nint=072, Nfrac=091)
-Fch=1890.40 (Fvco=3780.80, Nint=072, Nfrac=092)
-Fch=1890.60 (Fvco=3781.20, Nint=072, Nfrac=093)
-Fch=1890.80 (Fvco=3781.60, Nint=072, Nfrac=094)
-Fch=1891.00 (Fvco=3782.00, Nint=072, Nfrac=095)
-Fch=1891.20 (Fvco=3782.40, Nint=072, Nfrac=096)
-Fch=1891.40 (Fvco=3782.80, Nint=072, Nfrac=097)
-Fch=1891.60 (Fvco=3783.20, Nint=072, Nfrac=098)
-Fch=1891.80 (Fvco=3783.60, Nint=072, Nfrac=099)
-Fch=1892.00 (Fvco=3784.00, Nint=072, Nfrac=100)
-Fch=1892.20 (Fvco=3784.40, Nint=072, Nfrac=101)
-Fch=1892.40 (Fvco=3784.80, Nint=072, Nfrac=102)
-Fch=1892.60 (Fvco=3785.20, Nint=072, Nfrac=103)
-Fch=1892.80 (Fvco=3785.60, Nint=072, Nfrac=104)
-Fch=1893.00 (Fvco=3786.00, Nint=072, Nfrac=105)
-Fch=1893.20 (Fvco=3786.40, Nint=072, Nfrac=106)
-Fch=1893.40 (Fvco=3786.80, Nint=072, Nfrac=107)
-Fch=1893.60 (Fvco=3787.20, Nint=072, Nfrac=108)
-Fch=1893.80 (Fvco=3787.60, Nint=072, Nfrac=109)
-Fch=1894.00 (Fvco=3788.00, Nint=072, Nfrac=110)
-Fch=1894.20 (Fvco=3788.40, Nint=072, Nfrac=111)
-Fch=1894.40 (Fvco=3788.80, Nint=072, Nfrac=112)
-Fch=1894.60 (Fvco=3789.20, Nint=072, Nfrac=113)
-Fch=1894.80 (Fvco=3789.60, Nint=072, Nfrac=114)
-Fch=1895.00 (Fvco=3790.00, Nint=072, Nfrac=115)
-Fch=1895.20 (Fvco=3790.40, Nint=072, Nfrac=116)
-Fch=1895.40 (Fvco=3790.80, Nint=072, Nfrac=117)
-Fch=1895.60 (Fvco=3791.20, Nint=072, Nfrac=118)
-Fch=1895.80 (Fvco=3791.60, Nint=072, Nfrac=119)
-Fch=1896.00 (Fvco=3792.00, Nint=072, Nfrac=120)
-Fch=1896.20 (Fvco=3792.40, Nint=072, Nfrac=121)
-Fch=1896.40 (Fvco=3792.80, Nint=072, Nfrac=122)
-Fch=1896.60 (Fvco=3793.20, Nint=072, Nfrac=123)
-Fch=1896.80 (Fvco=3793.60, Nint=072, Nfrac=124)
-Fch=1897.00 (Fvco=3794.00, Nint=072, Nfrac=125)
-Fch=1897.20 (Fvco=3794.40, Nint=072, Nfrac=126)
-Fch=1897.40 (Fvco=3794.80, Nint=072, Nfrac=127)
-Fch=1897.60 (Fvco=3795.20, Nint=072, Nfrac=128)
-Fch=1897.80 (Fvco=3795.60, Nint=072, Nfrac=129)
-Fch=1898.00 (Fvco=3796.00, Nint=072, Nfrac=130)
-Fch=1898.00 (Fvco=3796.00, Nint=073, Nfrac=000)
-Fch=1898.20 (Fvco=3796.40, Nint=073, Nfrac=001)
-Fch=1898.40 (Fvco=3796.80, Nint=073, Nfrac=002)
-Fch=1898.60 (Fvco=3797.20, Nint=073, Nfrac=003)
-Fch=1898.80 (Fvco=3797.60, Nint=073, Nfrac=004)
-Fch=1899.00 (Fvco=3798.00, Nint=073, Nfrac=005)
-Fch=1899.20 (Fvco=3798.40, Nint=073, Nfrac=006)
-Fch=1899.40 (Fvco=3798.80, Nint=073, Nfrac=007)
-Fch=1899.60 (Fvco=3799.20, Nint=073, Nfrac=008)
-Fch=1899.80 (Fvco=3799.60, Nint=073, Nfrac=009)
-Fch=1900.00 (Fvco=3800.00, Nint=073, Nfrac=010)
-Fch=1900.20 (Fvco=3800.40, Nint=073, Nfrac=011)
-Fch=1900.40 (Fvco=3800.80, Nint=073, Nfrac=012)
-Fch=1900.60 (Fvco=3801.20, Nint=073, Nfrac=013)
-Fch=1900.80 (Fvco=3801.60, Nint=073, Nfrac=014)
-Fch=1901.00 (Fvco=3802.00, Nint=073, Nfrac=015)
-Fch=1901.20 (Fvco=3802.40, Nint=073, Nfrac=016)
-Fch=1901.40 (Fvco=3802.80, Nint=073, Nfrac=017)
-Fch=1901.60 (Fvco=3803.20, Nint=073, Nfrac=018)
-Fch=1901.80 (Fvco=3803.60, Nint=073, Nfrac=019)
-Fch=1902.00 (Fvco=3804.00, Nint=073, Nfrac=020)
-Fch=1902.20 (Fvco=3804.40, Nint=073, Nfrac=021)
-Fch=1902.40 (Fvco=3804.80, Nint=073, Nfrac=022)
-Fch=1902.60 (Fvco=3805.20, Nint=073, Nfrac=023)
-Fch=1902.80 (Fvco=3805.60, Nint=073, Nfrac=024)
-Fch=1903.00 (Fvco=3806.00, Nint=073, Nfrac=025)
-Fch=1903.20 (Fvco=3806.40, Nint=073, Nfrac=026)
-Fch=1903.40 (Fvco=3806.80, Nint=073, Nfrac=027)
-Fch=1903.60 (Fvco=3807.20, Nint=073, Nfrac=028)
-Fch=1903.80 (Fvco=3807.60, Nint=073, Nfrac=029)
-Fch=1904.00 (Fvco=3808.00, Nint=073, Nfrac=030)
-Fch=1904.20 (Fvco=3808.40, Nint=073, Nfrac=031)
-Fch=1904.40 (Fvco=3808.80, Nint=073, Nfrac=032)
-Fch=1904.60 (Fvco=3809.20, Nint=073, Nfrac=033)
-Fch=1904.80 (Fvco=3809.60, Nint=073, Nfrac=034)
-Fch=1905.00 (Fvco=3810.00, Nint=073, Nfrac=035)
-Fch=1905.20 (Fvco=3810.40, Nint=073, Nfrac=036)
-Fch=1905.40 (Fvco=3810.80, Nint=073, Nfrac=037)
-Fch=1905.60 (Fvco=3811.20, Nint=073, Nfrac=038)
-Fch=1905.80 (Fvco=3811.60, Nint=073, Nfrac=039)
-Fch=1906.00 (Fvco=3812.00, Nint=073, Nfrac=040)
-Fch=1906.20 (Fvco=3812.40, Nint=073, Nfrac=041)
-Fch=1906.40 (Fvco=3812.80, Nint=073, Nfrac=042)
-Fch=1906.60 (Fvco=3813.20, Nint=073, Nfrac=043)
-Fch=1906.80 (Fvco=3813.60, Nint=073, Nfrac=044)
-Fch=1907.00 (Fvco=3814.00, Nint=073, Nfrac=045)
-Fch=1907.20 (Fvco=3814.40, Nint=073, Nfrac=046)
-Fch=1907.40 (Fvco=3814.80, Nint=073, Nfrac=047)
-Fch=1907.60 (Fvco=3815.20, Nint=073, Nfrac=048)
-Fch=1907.80 (Fvco=3815.60, Nint=073, Nfrac=049)
-Fch=1908.00 (Fvco=3816.00, Nint=073, Nfrac=050)
-Fch=1908.20 (Fvco=3816.40, Nint=073, Nfrac=051)
-Fch=1908.40 (Fvco=3816.80, Nint=073, Nfrac=052)
-Fch=1908.60 (Fvco=3817.20, Nint=073, Nfrac=053)
-Fch=1908.80 (Fvco=3817.60, Nint=073, Nfrac=054)
-Fch=1909.00 (Fvco=3818.00, Nint=073, Nfrac=055)
-Fch=1909.20 (Fvco=3818.40, Nint=073, Nfrac=056)
-Fch=1909.40 (Fvco=3818.80, Nint=073, Nfrac=057)
-Fch=1909.60 (Fvco=3819.20, Nint=073, Nfrac=058)
-Fch=1909.80 (Fvco=3819.60, Nint=073, Nfrac=059)
-Fch=1910.00 (Fvco=3820.00, Nint=073, Nfrac=060)
-Fch=1910.20 (Fvco=3820.40, Nint=073, Nfrac=061)
-Fch=1910.40 (Fvco=3820.80, Nint=073, Nfrac=062)
-Fch=1910.60 (Fvco=3821.20, Nint=073, Nfrac=063)
-Fch=1910.80 (Fvco=3821.60, Nint=073, Nfrac=064)
-Fch=1911.00 (Fvco=3822.00, Nint=073, Nfrac=065)
-Fch=1911.20 (Fvco=3822.40, Nint=073, Nfrac=066)
-Fch=1911.40 (Fvco=3822.80, Nint=073, Nfrac=067)
-Fch=1911.60 (Fvco=3823.20, Nint=073, Nfrac=068)
-Fch=1911.80 (Fvco=3823.60, Nint=073, Nfrac=069)
-Fch=1912.00 (Fvco=3824.00, Nint=073, Nfrac=070)
-Fch=1912.20 (Fvco=3824.40, Nint=073, Nfrac=071)
-Fch=1912.40 (Fvco=3824.80, Nint=073, Nfrac=072)
-Fch=1912.60 (Fvco=3825.20, Nint=073, Nfrac=073)
-Fch=1912.80 (Fvco=3825.60, Nint=073, Nfrac=074)
-Fch=1913.00 (Fvco=3826.00, Nint=073, Nfrac=075)
-Fch=1913.20 (Fvco=3826.40, Nint=073, Nfrac=076)
-Fch=1913.40 (Fvco=3826.80, Nint=073, Nfrac=077)
-Fch=1913.60 (Fvco=3827.20, Nint=073, Nfrac=078)
-Fch=1913.80 (Fvco=3827.60, Nint=073, Nfrac=079)
-Fch=1914.00 (Fvco=3828.00, Nint=073, Nfrac=080)
-Fch=1914.20 (Fvco=3828.40, Nint=073, Nfrac=081)
-Fch=1914.40 (Fvco=3828.80, Nint=073, Nfrac=082)
-Fch=1914.60 (Fvco=3829.20, Nint=073, Nfrac=083)
-Fch=1914.80 (Fvco=3829.60, Nint=073, Nfrac=084)
-Fch=1915.00 (Fvco=3830.00, Nint=073, Nfrac=085)
-Fch=1915.20 (Fvco=3830.40, Nint=073, Nfrac=086)
-Fch=1915.40 (Fvco=3830.80, Nint=073, Nfrac=087)
-Fch=1915.60 (Fvco=3831.20, Nint=073, Nfrac=088)
-Fch=1915.80 (Fvco=3831.60, Nint=073, Nfrac=089)
-Fch=1916.00 (Fvco=3832.00, Nint=073, Nfrac=090)
-Fch=1916.20 (Fvco=3832.40, Nint=073, Nfrac=091)
-Fch=1916.40 (Fvco=3832.80, Nint=073, Nfrac=092)
-Fch=1916.60 (Fvco=3833.20, Nint=073, Nfrac=093)
-Fch=1916.80 (Fvco=3833.60, Nint=073, Nfrac=094)
-Fch=1917.00 (Fvco=3834.00, Nint=073, Nfrac=095)
-Fch=1917.20 (Fvco=3834.40, Nint=073, Nfrac=096)
-Fch=1917.40 (Fvco=3834.80, Nint=073, Nfrac=097)
-Fch=1917.60 (Fvco=3835.20, Nint=073, Nfrac=098)
-Fch=1917.80 (Fvco=3835.60, Nint=073, Nfrac=099)
-Fch=1918.00 (Fvco=3836.00, Nint=073, Nfrac=100)
-Fch=1918.20 (Fvco=3836.40, Nint=073, Nfrac=101)
-Fch=1918.40 (Fvco=3836.80, Nint=073, Nfrac=102)
-Fch=1918.60 (Fvco=3837.20, Nint=073, Nfrac=103)
-Fch=1918.80 (Fvco=3837.60, Nint=073, Nfrac=104)
-Fch=1919.00 (Fvco=3838.00, Nint=073, Nfrac=105)
-Fch=1919.20 (Fvco=3838.40, Nint=073, Nfrac=106)
-Fch=1919.40 (Fvco=3838.80, Nint=073, Nfrac=107)
-Fch=1919.60 (Fvco=3839.20, Nint=073, Nfrac=108)
-Fch=1919.80 (Fvco=3839.60, Nint=073, Nfrac=109)
-Fch=1920.00 (Fvco=3840.00, Nint=073, Nfrac=110)
-Fch=1920.20 (Fvco=3840.40, Nint=073, Nfrac=111)
-Fch=1920.40 (Fvco=3840.80, Nint=073, Nfrac=112)
-Fch=1920.60 (Fvco=3841.20, Nint=073, Nfrac=113)
-Fch=1920.80 (Fvco=3841.60, Nint=073, Nfrac=114)
-Fch=1921.00 (Fvco=3842.00, Nint=073, Nfrac=115)
-Fch=1921.20 (Fvco=3842.40, Nint=073, Nfrac=116)
-Fch=1921.40 (Fvco=3842.80, Nint=073, Nfrac=117)
-Fch=1921.60 (Fvco=3843.20, Nint=073, Nfrac=118)
-Fch=1921.80 (Fvco=3843.60, Nint=073, Nfrac=119)
-Fch=1922.00 (Fvco=3844.00, Nint=073, Nfrac=120)
-Fch=1922.20 (Fvco=3844.40, Nint=073, Nfrac=121)
-Fch=1922.40 (Fvco=3844.80, Nint=073, Nfrac=122)
-Fch=1922.60 (Fvco=3845.20, Nint=073, Nfrac=123)
-Fch=1922.80 (Fvco=3845.60, Nint=073, Nfrac=124)
-Fch=1923.00 (Fvco=3846.00, Nint=073, Nfrac=125)
-Fch=1923.20 (Fvco=3846.40, Nint=073, Nfrac=126)
-Fch=1923.40 (Fvco=3846.80, Nint=073, Nfrac=127)
-Fch=1923.60 (Fvco=3847.20, Nint=073, Nfrac=128)
-Fch=1923.80 (Fvco=3847.60, Nint=073, Nfrac=129)
-Fch=1924.00 (Fvco=3848.00, Nint=073, Nfrac=130)
diff --git a/Src/osmoconbb/src/host/rita_pll/rita_pll.pl b/Src/osmoconbb/src/host/rita_pll/rita_pll.pl
deleted file mode 100755
index b5b0944..0000000
--- a/Src/osmoconbb/src/host/rita_pll/rita_pll.pl
+++ /dev/null
@@ -1,115 +0,0 @@
-#!/usr/bin/perl
-
-sub pll_rx($$$$$) {
- my ($a, $b, $p, $r, $l) = @_;
-
- return (($b*$p+$a)/($r*$l))*26;
-}
-
-sub pll_rx_low_band($$) {
- my ($a, $b) = @_;
- my $p = 64; my $r = 65; my $l = 4;
- return pll_rx($a, $b, $p, $r, $l);
-}
-
-sub pll_rx_high_band($$) {
- my ($a, $b) = @_;
- my $p = 64; my $r = 65; my $l = 2;
- return pll_rx($a, $b, $p, $r, $l);
-}
-
-sub pll_tx_gsm850_1($$) {
- my ($a, $b) = @_;
- my $p = 64; my $r = 55; my $l = 4; my $m = 26;
-
- my $left = ((1/$l) - (1/$m));
- my $right = (($b*$p+$a)/$r);
-
- return $left * $right * 26;
-}
-
-sub pll_tx_gsm850_2($$) {
- my ($a, $b) = @_;
- my $p = 64; my $r = 30; my $l = 4; my $m = 52;
-
- my $left = ((1/$l) - (1/$m));
- my $right = (($b*$p+$a)/$r);
-
- return $left * $right * 26;
-}
-
-sub pll_tx_gsm900($$) {
- my ($a, $b) = @_;
- my $p = 64; my $r = 35; my $l = 4; my $m = 52;
-
- my $left = ((1/$l) + (1/$m));
- my $right = (($b*$p+$a)/$r);
-
- return $left * $right * 26;
-}
-
-sub pll_tx_high($$) {
- my ($a, $b) = @_;
- my $p = 64; my $r = 70; my $l = 2; my $m = 26;
-
- my $left = ((1/$l) + (1/$m));
- my $right = (($b*$p+$a)/$r);
-
- return $left * $right * 26;
-}
-
-sub hr() {
- printf("======================================================================\n");
-}
-
-printf("PLL Rx Low Band:\n");
-for (my $b = 135; $b <= 150; $b++) {
-#for GSM 810
-#for (my $b = 132; $b <= 150; $b++) {
- for (my $a = 0; $a <= 62; $a++) {
- printf("Fout=%4.2f (A=%03u, B=%03u)\n", pll_rx_low_band($a, $b), $a, $b);
- }
-}
-
-hr();
-printf("PLL Rx High Band:\n");
-for (my $b = 141; $b <= 155; $b++) {
- for (my $a = 0; $a <= 62; $a++) {
- printf("Fout=%4.2f (A=%03u, B=%03u)\n", pll_rx_high_band($a, $b), $a, $b);
- }
-}
-
-hr();
-printf("PLL Tx GSM850_1\n");
-for (my $b = 128; $b <= 130; $b++) {
-#for GSM 810
-#for (my $b = 125; $b <= 130; $b++) {
- for (my $a = 0; $a <= 62; $a++) {
- printf("Fout=%4.2f (A=%03u, B=%03u)\n", pll_tx_gsm850_1($a, $b), $a, $b);
- }
-}
-
-hr();
-printf("PLL Tx GSM850_2\n");
-for (my $b = 65; $b <= 66; $b++) {
- for (my $a = 0; $a <= 63; $a++) {
- printf("Fout=%4.2f (A=%03u, B=%03u)\n", pll_tx_gsm850_2($a, $b), $a, $b);
- }
-}
-
-hr();
-printf("PLL Tx GSM900\n");
-for (my $b = 68; $b <= 71; $b++) {
- for (my $a = 0; $a <= 63; $a++) {
- printf("Fout=%4.2f (A=%03u, B=%03u)\n", pll_tx_gsm900($a, $b), $a, $b);
- }
-}
-
-hr();
-printf("PLL Tx GSM1800/1900\n");
-for (my $b = 133; $b <= 149; $b++) {
- for (my $a = 0; $a <= 63; $a++) {
- printf("Fout=%4.2f (A=%03u, B=%03u)\n", pll_tx_high($a, $b), $a, $b);
- }
-}
-
diff --git a/Src/osmoconbb/src/host/rita_pll/rita_pll.txt b/Src/osmoconbb/src/host/rita_pll/rita_pll.txt
deleted file mode 100644
index cac2cac..0000000
--- a/Src/osmoconbb/src/host/rita_pll/rita_pll.txt
+++ /dev/null
@@ -1,3625 +0,0 @@
-PLL Rx Low Band:
-Fout=864.00 (A=000, B=135)
-Fout=864.10 (A=001, B=135)
-Fout=864.20 (A=002, B=135)
-Fout=864.30 (A=003, B=135)
-Fout=864.40 (A=004, B=135)
-Fout=864.50 (A=005, B=135)
-Fout=864.60 (A=006, B=135)
-Fout=864.70 (A=007, B=135)
-Fout=864.80 (A=008, B=135)
-Fout=864.90 (A=009, B=135)
-Fout=865.00 (A=010, B=135)
-Fout=865.10 (A=011, B=135)
-Fout=865.20 (A=012, B=135)
-Fout=865.30 (A=013, B=135)
-Fout=865.40 (A=014, B=135)
-Fout=865.50 (A=015, B=135)
-Fout=865.60 (A=016, B=135)
-Fout=865.70 (A=017, B=135)
-Fout=865.80 (A=018, B=135)
-Fout=865.90 (A=019, B=135)
-Fout=866.00 (A=020, B=135)
-Fout=866.10 (A=021, B=135)
-Fout=866.20 (A=022, B=135)
-Fout=866.30 (A=023, B=135)
-Fout=866.40 (A=024, B=135)
-Fout=866.50 (A=025, B=135)
-Fout=866.60 (A=026, B=135)
-Fout=866.70 (A=027, B=135)
-Fout=866.80 (A=028, B=135)
-Fout=866.90 (A=029, B=135)
-Fout=867.00 (A=030, B=135)
-Fout=867.10 (A=031, B=135)
-Fout=867.20 (A=032, B=135)
-Fout=867.30 (A=033, B=135)
-Fout=867.40 (A=034, B=135)
-Fout=867.50 (A=035, B=135)
-Fout=867.60 (A=036, B=135)
-Fout=867.70 (A=037, B=135)
-Fout=867.80 (A=038, B=135)
-Fout=867.90 (A=039, B=135)
-Fout=868.00 (A=040, B=135)
-Fout=868.10 (A=041, B=135)
-Fout=868.20 (A=042, B=135)
-Fout=868.30 (A=043, B=135)
-Fout=868.40 (A=044, B=135)
-Fout=868.50 (A=045, B=135)
-Fout=868.60 (A=046, B=135)
-Fout=868.70 (A=047, B=135)
-Fout=868.80 (A=048, B=135)
-Fout=868.90 (A=049, B=135)
-Fout=869.00 (A=050, B=135)
-Fout=869.10 (A=051, B=135)
-Fout=869.20 (A=052, B=135)
-Fout=869.30 (A=053, B=135)
-Fout=869.40 (A=054, B=135)
-Fout=869.50 (A=055, B=135)
-Fout=869.60 (A=056, B=135)
-Fout=869.70 (A=057, B=135)
-Fout=869.80 (A=058, B=135)
-Fout=869.90 (A=059, B=135)
-Fout=870.00 (A=060, B=135)
-Fout=870.10 (A=061, B=135)
-Fout=870.20 (A=062, B=135)
-Fout=870.40 (A=000, B=136)
-Fout=870.50 (A=001, B=136)
-Fout=870.60 (A=002, B=136)
-Fout=870.70 (A=003, B=136)
-Fout=870.80 (A=004, B=136)
-Fout=870.90 (A=005, B=136)
-Fout=871.00 (A=006, B=136)
-Fout=871.10 (A=007, B=136)
-Fout=871.20 (A=008, B=136)
-Fout=871.30 (A=009, B=136)
-Fout=871.40 (A=010, B=136)
-Fout=871.50 (A=011, B=136)
-Fout=871.60 (A=012, B=136)
-Fout=871.70 (A=013, B=136)
-Fout=871.80 (A=014, B=136)
-Fout=871.90 (A=015, B=136)
-Fout=872.00 (A=016, B=136)
-Fout=872.10 (A=017, B=136)
-Fout=872.20 (A=018, B=136)
-Fout=872.30 (A=019, B=136)
-Fout=872.40 (A=020, B=136)
-Fout=872.50 (A=021, B=136)
-Fout=872.60 (A=022, B=136)
-Fout=872.70 (A=023, B=136)
-Fout=872.80 (A=024, B=136)
-Fout=872.90 (A=025, B=136)
-Fout=873.00 (A=026, B=136)
-Fout=873.10 (A=027, B=136)
-Fout=873.20 (A=028, B=136)
-Fout=873.30 (A=029, B=136)
-Fout=873.40 (A=030, B=136)
-Fout=873.50 (A=031, B=136)
-Fout=873.60 (A=032, B=136)
-Fout=873.70 (A=033, B=136)
-Fout=873.80 (A=034, B=136)
-Fout=873.90 (A=035, B=136)
-Fout=874.00 (A=036, B=136)
-Fout=874.10 (A=037, B=136)
-Fout=874.20 (A=038, B=136)
-Fout=874.30 (A=039, B=136)
-Fout=874.40 (A=040, B=136)
-Fout=874.50 (A=041, B=136)
-Fout=874.60 (A=042, B=136)
-Fout=874.70 (A=043, B=136)
-Fout=874.80 (A=044, B=136)
-Fout=874.90 (A=045, B=136)
-Fout=875.00 (A=046, B=136)
-Fout=875.10 (A=047, B=136)
-Fout=875.20 (A=048, B=136)
-Fout=875.30 (A=049, B=136)
-Fout=875.40 (A=050, B=136)
-Fout=875.50 (A=051, B=136)
-Fout=875.60 (A=052, B=136)
-Fout=875.70 (A=053, B=136)
-Fout=875.80 (A=054, B=136)
-Fout=875.90 (A=055, B=136)
-Fout=876.00 (A=056, B=136)
-Fout=876.10 (A=057, B=136)
-Fout=876.20 (A=058, B=136)
-Fout=876.30 (A=059, B=136)
-Fout=876.40 (A=060, B=136)
-Fout=876.50 (A=061, B=136)
-Fout=876.60 (A=062, B=136)
-Fout=876.80 (A=000, B=137)
-Fout=876.90 (A=001, B=137)
-Fout=877.00 (A=002, B=137)
-Fout=877.10 (A=003, B=137)
-Fout=877.20 (A=004, B=137)
-Fout=877.30 (A=005, B=137)
-Fout=877.40 (A=006, B=137)
-Fout=877.50 (A=007, B=137)
-Fout=877.60 (A=008, B=137)
-Fout=877.70 (A=009, B=137)
-Fout=877.80 (A=010, B=137)
-Fout=877.90 (A=011, B=137)
-Fout=878.00 (A=012, B=137)
-Fout=878.10 (A=013, B=137)
-Fout=878.20 (A=014, B=137)
-Fout=878.30 (A=015, B=137)
-Fout=878.40 (A=016, B=137)
-Fout=878.50 (A=017, B=137)
-Fout=878.60 (A=018, B=137)
-Fout=878.70 (A=019, B=137)
-Fout=878.80 (A=020, B=137)
-Fout=878.90 (A=021, B=137)
-Fout=879.00 (A=022, B=137)
-Fout=879.10 (A=023, B=137)
-Fout=879.20 (A=024, B=137)
-Fout=879.30 (A=025, B=137)
-Fout=879.40 (A=026, B=137)
-Fout=879.50 (A=027, B=137)
-Fout=879.60 (A=028, B=137)
-Fout=879.70 (A=029, B=137)
-Fout=879.80 (A=030, B=137)
-Fout=879.90 (A=031, B=137)
-Fout=880.00 (A=032, B=137)
-Fout=880.10 (A=033, B=137)
-Fout=880.20 (A=034, B=137)
-Fout=880.30 (A=035, B=137)
-Fout=880.40 (A=036, B=137)
-Fout=880.50 (A=037, B=137)
-Fout=880.60 (A=038, B=137)
-Fout=880.70 (A=039, B=137)
-Fout=880.80 (A=040, B=137)
-Fout=880.90 (A=041, B=137)
-Fout=881.00 (A=042, B=137)
-Fout=881.10 (A=043, B=137)
-Fout=881.20 (A=044, B=137)
-Fout=881.30 (A=045, B=137)
-Fout=881.40 (A=046, B=137)
-Fout=881.50 (A=047, B=137)
-Fout=881.60 (A=048, B=137)
-Fout=881.70 (A=049, B=137)
-Fout=881.80 (A=050, B=137)
-Fout=881.90 (A=051, B=137)
-Fout=882.00 (A=052, B=137)
-Fout=882.10 (A=053, B=137)
-Fout=882.20 (A=054, B=137)
-Fout=882.30 (A=055, B=137)
-Fout=882.40 (A=056, B=137)
-Fout=882.50 (A=057, B=137)
-Fout=882.60 (A=058, B=137)
-Fout=882.70 (A=059, B=137)
-Fout=882.80 (A=060, B=137)
-Fout=882.90 (A=061, B=137)
-Fout=883.00 (A=062, B=137)
-Fout=883.20 (A=000, B=138)
-Fout=883.30 (A=001, B=138)
-Fout=883.40 (A=002, B=138)
-Fout=883.50 (A=003, B=138)
-Fout=883.60 (A=004, B=138)
-Fout=883.70 (A=005, B=138)
-Fout=883.80 (A=006, B=138)
-Fout=883.90 (A=007, B=138)
-Fout=884.00 (A=008, B=138)
-Fout=884.10 (A=009, B=138)
-Fout=884.20 (A=010, B=138)
-Fout=884.30 (A=011, B=138)
-Fout=884.40 (A=012, B=138)
-Fout=884.50 (A=013, B=138)
-Fout=884.60 (A=014, B=138)
-Fout=884.70 (A=015, B=138)
-Fout=884.80 (A=016, B=138)
-Fout=884.90 (A=017, B=138)
-Fout=885.00 (A=018, B=138)
-Fout=885.10 (A=019, B=138)
-Fout=885.20 (A=020, B=138)
-Fout=885.30 (A=021, B=138)
-Fout=885.40 (A=022, B=138)
-Fout=885.50 (A=023, B=138)
-Fout=885.60 (A=024, B=138)
-Fout=885.70 (A=025, B=138)
-Fout=885.80 (A=026, B=138)
-Fout=885.90 (A=027, B=138)
-Fout=886.00 (A=028, B=138)
-Fout=886.10 (A=029, B=138)
-Fout=886.20 (A=030, B=138)
-Fout=886.30 (A=031, B=138)
-Fout=886.40 (A=032, B=138)
-Fout=886.50 (A=033, B=138)
-Fout=886.60 (A=034, B=138)
-Fout=886.70 (A=035, B=138)
-Fout=886.80 (A=036, B=138)
-Fout=886.90 (A=037, B=138)
-Fout=887.00 (A=038, B=138)
-Fout=887.10 (A=039, B=138)
-Fout=887.20 (A=040, B=138)
-Fout=887.30 (A=041, B=138)
-Fout=887.40 (A=042, B=138)
-Fout=887.50 (A=043, B=138)
-Fout=887.60 (A=044, B=138)
-Fout=887.70 (A=045, B=138)
-Fout=887.80 (A=046, B=138)
-Fout=887.90 (A=047, B=138)
-Fout=888.00 (A=048, B=138)
-Fout=888.10 (A=049, B=138)
-Fout=888.20 (A=050, B=138)
-Fout=888.30 (A=051, B=138)
-Fout=888.40 (A=052, B=138)
-Fout=888.50 (A=053, B=138)
-Fout=888.60 (A=054, B=138)
-Fout=888.70 (A=055, B=138)
-Fout=888.80 (A=056, B=138)
-Fout=888.90 (A=057, B=138)
-Fout=889.00 (A=058, B=138)
-Fout=889.10 (A=059, B=138)
-Fout=889.20 (A=060, B=138)
-Fout=889.30 (A=061, B=138)
-Fout=889.40 (A=062, B=138)
-Fout=889.60 (A=000, B=139)
-Fout=889.70 (A=001, B=139)
-Fout=889.80 (A=002, B=139)
-Fout=889.90 (A=003, B=139)
-Fout=890.00 (A=004, B=139)
-Fout=890.10 (A=005, B=139)
-Fout=890.20 (A=006, B=139)
-Fout=890.30 (A=007, B=139)
-Fout=890.40 (A=008, B=139)
-Fout=890.50 (A=009, B=139)
-Fout=890.60 (A=010, B=139)
-Fout=890.70 (A=011, B=139)
-Fout=890.80 (A=012, B=139)
-Fout=890.90 (A=013, B=139)
-Fout=891.00 (A=014, B=139)
-Fout=891.10 (A=015, B=139)
-Fout=891.20 (A=016, B=139)
-Fout=891.30 (A=017, B=139)
-Fout=891.40 (A=018, B=139)
-Fout=891.50 (A=019, B=139)
-Fout=891.60 (A=020, B=139)
-Fout=891.70 (A=021, B=139)
-Fout=891.80 (A=022, B=139)
-Fout=891.90 (A=023, B=139)
-Fout=892.00 (A=024, B=139)
-Fout=892.10 (A=025, B=139)
-Fout=892.20 (A=026, B=139)
-Fout=892.30 (A=027, B=139)
-Fout=892.40 (A=028, B=139)
-Fout=892.50 (A=029, B=139)
-Fout=892.60 (A=030, B=139)
-Fout=892.70 (A=031, B=139)
-Fout=892.80 (A=032, B=139)
-Fout=892.90 (A=033, B=139)
-Fout=893.00 (A=034, B=139)
-Fout=893.10 (A=035, B=139)
-Fout=893.20 (A=036, B=139)
-Fout=893.30 (A=037, B=139)
-Fout=893.40 (A=038, B=139)
-Fout=893.50 (A=039, B=139)
-Fout=893.60 (A=040, B=139)
-Fout=893.70 (A=041, B=139)
-Fout=893.80 (A=042, B=139)
-Fout=893.90 (A=043, B=139)
-Fout=894.00 (A=044, B=139)
-Fout=894.10 (A=045, B=139)
-Fout=894.20 (A=046, B=139)
-Fout=894.30 (A=047, B=139)
-Fout=894.40 (A=048, B=139)
-Fout=894.50 (A=049, B=139)
-Fout=894.60 (A=050, B=139)
-Fout=894.70 (A=051, B=139)
-Fout=894.80 (A=052, B=139)
-Fout=894.90 (A=053, B=139)
-Fout=895.00 (A=054, B=139)
-Fout=895.10 (A=055, B=139)
-Fout=895.20 (A=056, B=139)
-Fout=895.30 (A=057, B=139)
-Fout=895.40 (A=058, B=139)
-Fout=895.50 (A=059, B=139)
-Fout=895.60 (A=060, B=139)
-Fout=895.70 (A=061, B=139)
-Fout=895.80 (A=062, B=139)
-Fout=896.00 (A=000, B=140)
-Fout=896.10 (A=001, B=140)
-Fout=896.20 (A=002, B=140)
-Fout=896.30 (A=003, B=140)
-Fout=896.40 (A=004, B=140)
-Fout=896.50 (A=005, B=140)
-Fout=896.60 (A=006, B=140)
-Fout=896.70 (A=007, B=140)
-Fout=896.80 (A=008, B=140)
-Fout=896.90 (A=009, B=140)
-Fout=897.00 (A=010, B=140)
-Fout=897.10 (A=011, B=140)
-Fout=897.20 (A=012, B=140)
-Fout=897.30 (A=013, B=140)
-Fout=897.40 (A=014, B=140)
-Fout=897.50 (A=015, B=140)
-Fout=897.60 (A=016, B=140)
-Fout=897.70 (A=017, B=140)
-Fout=897.80 (A=018, B=140)
-Fout=897.90 (A=019, B=140)
-Fout=898.00 (A=020, B=140)
-Fout=898.10 (A=021, B=140)
-Fout=898.20 (A=022, B=140)
-Fout=898.30 (A=023, B=140)
-Fout=898.40 (A=024, B=140)
-Fout=898.50 (A=025, B=140)
-Fout=898.60 (A=026, B=140)
-Fout=898.70 (A=027, B=140)
-Fout=898.80 (A=028, B=140)
-Fout=898.90 (A=029, B=140)
-Fout=899.00 (A=030, B=140)
-Fout=899.10 (A=031, B=140)
-Fout=899.20 (A=032, B=140)
-Fout=899.30 (A=033, B=140)
-Fout=899.40 (A=034, B=140)
-Fout=899.50 (A=035, B=140)
-Fout=899.60 (A=036, B=140)
-Fout=899.70 (A=037, B=140)
-Fout=899.80 (A=038, B=140)
-Fout=899.90 (A=039, B=140)
-Fout=900.00 (A=040, B=140)
-Fout=900.10 (A=041, B=140)
-Fout=900.20 (A=042, B=140)
-Fout=900.30 (A=043, B=140)
-Fout=900.40 (A=044, B=140)
-Fout=900.50 (A=045, B=140)
-Fout=900.60 (A=046, B=140)
-Fout=900.70 (A=047, B=140)
-Fout=900.80 (A=048, B=140)
-Fout=900.90 (A=049, B=140)
-Fout=901.00 (A=050, B=140)
-Fout=901.10 (A=051, B=140)
-Fout=901.20 (A=052, B=140)
-Fout=901.30 (A=053, B=140)
-Fout=901.40 (A=054, B=140)
-Fout=901.50 (A=055, B=140)
-Fout=901.60 (A=056, B=140)
-Fout=901.70 (A=057, B=140)
-Fout=901.80 (A=058, B=140)
-Fout=901.90 (A=059, B=140)
-Fout=902.00 (A=060, B=140)
-Fout=902.10 (A=061, B=140)
-Fout=902.20 (A=062, B=140)
-Fout=902.40 (A=000, B=141)
-Fout=902.50 (A=001, B=141)
-Fout=902.60 (A=002, B=141)
-Fout=902.70 (A=003, B=141)
-Fout=902.80 (A=004, B=141)
-Fout=902.90 (A=005, B=141)
-Fout=903.00 (A=006, B=141)
-Fout=903.10 (A=007, B=141)
-Fout=903.20 (A=008, B=141)
-Fout=903.30 (A=009, B=141)
-Fout=903.40 (A=010, B=141)
-Fout=903.50 (A=011, B=141)
-Fout=903.60 (A=012, B=141)
-Fout=903.70 (A=013, B=141)
-Fout=903.80 (A=014, B=141)
-Fout=903.90 (A=015, B=141)
-Fout=904.00 (A=016, B=141)
-Fout=904.10 (A=017, B=141)
-Fout=904.20 (A=018, B=141)
-Fout=904.30 (A=019, B=141)
-Fout=904.40 (A=020, B=141)
-Fout=904.50 (A=021, B=141)
-Fout=904.60 (A=022, B=141)
-Fout=904.70 (A=023, B=141)
-Fout=904.80 (A=024, B=141)
-Fout=904.90 (A=025, B=141)
-Fout=905.00 (A=026, B=141)
-Fout=905.10 (A=027, B=141)
-Fout=905.20 (A=028, B=141)
-Fout=905.30 (A=029, B=141)
-Fout=905.40 (A=030, B=141)
-Fout=905.50 (A=031, B=141)
-Fout=905.60 (A=032, B=141)
-Fout=905.70 (A=033, B=141)
-Fout=905.80 (A=034, B=141)
-Fout=905.90 (A=035, B=141)
-Fout=906.00 (A=036, B=141)
-Fout=906.10 (A=037, B=141)
-Fout=906.20 (A=038, B=141)
-Fout=906.30 (A=039, B=141)
-Fout=906.40 (A=040, B=141)
-Fout=906.50 (A=041, B=141)
-Fout=906.60 (A=042, B=141)
-Fout=906.70 (A=043, B=141)
-Fout=906.80 (A=044, B=141)
-Fout=906.90 (A=045, B=141)
-Fout=907.00 (A=046, B=141)
-Fout=907.10 (A=047, B=141)
-Fout=907.20 (A=048, B=141)
-Fout=907.30 (A=049, B=141)
-Fout=907.40 (A=050, B=141)
-Fout=907.50 (A=051, B=141)
-Fout=907.60 (A=052, B=141)
-Fout=907.70 (A=053, B=141)
-Fout=907.80 (A=054, B=141)
-Fout=907.90 (A=055, B=141)
-Fout=908.00 (A=056, B=141)
-Fout=908.10 (A=057, B=141)
-Fout=908.20 (A=058, B=141)
-Fout=908.30 (A=059, B=141)
-Fout=908.40 (A=060, B=141)
-Fout=908.50 (A=061, B=141)
-Fout=908.60 (A=062, B=141)
-Fout=908.80 (A=000, B=142)
-Fout=908.90 (A=001, B=142)
-Fout=909.00 (A=002, B=142)
-Fout=909.10 (A=003, B=142)
-Fout=909.20 (A=004, B=142)
-Fout=909.30 (A=005, B=142)
-Fout=909.40 (A=006, B=142)
-Fout=909.50 (A=007, B=142)
-Fout=909.60 (A=008, B=142)
-Fout=909.70 (A=009, B=142)
-Fout=909.80 (A=010, B=142)
-Fout=909.90 (A=011, B=142)
-Fout=910.00 (A=012, B=142)
-Fout=910.10 (A=013, B=142)
-Fout=910.20 (A=014, B=142)
-Fout=910.30 (A=015, B=142)
-Fout=910.40 (A=016, B=142)
-Fout=910.50 (A=017, B=142)
-Fout=910.60 (A=018, B=142)
-Fout=910.70 (A=019, B=142)
-Fout=910.80 (A=020, B=142)
-Fout=910.90 (A=021, B=142)
-Fout=911.00 (A=022, B=142)
-Fout=911.10 (A=023, B=142)
-Fout=911.20 (A=024, B=142)
-Fout=911.30 (A=025, B=142)
-Fout=911.40 (A=026, B=142)
-Fout=911.50 (A=027, B=142)
-Fout=911.60 (A=028, B=142)
-Fout=911.70 (A=029, B=142)
-Fout=911.80 (A=030, B=142)
-Fout=911.90 (A=031, B=142)
-Fout=912.00 (A=032, B=142)
-Fout=912.10 (A=033, B=142)
-Fout=912.20 (A=034, B=142)
-Fout=912.30 (A=035, B=142)
-Fout=912.40 (A=036, B=142)
-Fout=912.50 (A=037, B=142)
-Fout=912.60 (A=038, B=142)
-Fout=912.70 (A=039, B=142)
-Fout=912.80 (A=040, B=142)
-Fout=912.90 (A=041, B=142)
-Fout=913.00 (A=042, B=142)
-Fout=913.10 (A=043, B=142)
-Fout=913.20 (A=044, B=142)
-Fout=913.30 (A=045, B=142)
-Fout=913.40 (A=046, B=142)
-Fout=913.50 (A=047, B=142)
-Fout=913.60 (A=048, B=142)
-Fout=913.70 (A=049, B=142)
-Fout=913.80 (A=050, B=142)
-Fout=913.90 (A=051, B=142)
-Fout=914.00 (A=052, B=142)
-Fout=914.10 (A=053, B=142)
-Fout=914.20 (A=054, B=142)
-Fout=914.30 (A=055, B=142)
-Fout=914.40 (A=056, B=142)
-Fout=914.50 (A=057, B=142)
-Fout=914.60 (A=058, B=142)
-Fout=914.70 (A=059, B=142)
-Fout=914.80 (A=060, B=142)
-Fout=914.90 (A=061, B=142)
-Fout=915.00 (A=062, B=142)
-Fout=915.20 (A=000, B=143)
-Fout=915.30 (A=001, B=143)
-Fout=915.40 (A=002, B=143)
-Fout=915.50 (A=003, B=143)
-Fout=915.60 (A=004, B=143)
-Fout=915.70 (A=005, B=143)
-Fout=915.80 (A=006, B=143)
-Fout=915.90 (A=007, B=143)
-Fout=916.00 (A=008, B=143)
-Fout=916.10 (A=009, B=143)
-Fout=916.20 (A=010, B=143)
-Fout=916.30 (A=011, B=143)
-Fout=916.40 (A=012, B=143)
-Fout=916.50 (A=013, B=143)
-Fout=916.60 (A=014, B=143)
-Fout=916.70 (A=015, B=143)
-Fout=916.80 (A=016, B=143)
-Fout=916.90 (A=017, B=143)
-Fout=917.00 (A=018, B=143)
-Fout=917.10 (A=019, B=143)
-Fout=917.20 (A=020, B=143)
-Fout=917.30 (A=021, B=143)
-Fout=917.40 (A=022, B=143)
-Fout=917.50 (A=023, B=143)
-Fout=917.60 (A=024, B=143)
-Fout=917.70 (A=025, B=143)
-Fout=917.80 (A=026, B=143)
-Fout=917.90 (A=027, B=143)
-Fout=918.00 (A=028, B=143)
-Fout=918.10 (A=029, B=143)
-Fout=918.20 (A=030, B=143)
-Fout=918.30 (A=031, B=143)
-Fout=918.40 (A=032, B=143)
-Fout=918.50 (A=033, B=143)
-Fout=918.60 (A=034, B=143)
-Fout=918.70 (A=035, B=143)
-Fout=918.80 (A=036, B=143)
-Fout=918.90 (A=037, B=143)
-Fout=919.00 (A=038, B=143)
-Fout=919.10 (A=039, B=143)
-Fout=919.20 (A=040, B=143)
-Fout=919.30 (A=041, B=143)
-Fout=919.40 (A=042, B=143)
-Fout=919.50 (A=043, B=143)
-Fout=919.60 (A=044, B=143)
-Fout=919.70 (A=045, B=143)
-Fout=919.80 (A=046, B=143)
-Fout=919.90 (A=047, B=143)
-Fout=920.00 (A=048, B=143)
-Fout=920.10 (A=049, B=143)
-Fout=920.20 (A=050, B=143)
-Fout=920.30 (A=051, B=143)
-Fout=920.40 (A=052, B=143)
-Fout=920.50 (A=053, B=143)
-Fout=920.60 (A=054, B=143)
-Fout=920.70 (A=055, B=143)
-Fout=920.80 (A=056, B=143)
-Fout=920.90 (A=057, B=143)
-Fout=921.00 (A=058, B=143)
-Fout=921.10 (A=059, B=143)
-Fout=921.20 (A=060, B=143)
-Fout=921.30 (A=061, B=143)
-Fout=921.40 (A=062, B=143)
-Fout=921.60 (A=000, B=144)
-Fout=921.70 (A=001, B=144)
-Fout=921.80 (A=002, B=144)
-Fout=921.90 (A=003, B=144)
-Fout=922.00 (A=004, B=144)
-Fout=922.10 (A=005, B=144)
-Fout=922.20 (A=006, B=144)
-Fout=922.30 (A=007, B=144)
-Fout=922.40 (A=008, B=144)
-Fout=922.50 (A=009, B=144)
-Fout=922.60 (A=010, B=144)
-Fout=922.70 (A=011, B=144)
-Fout=922.80 (A=012, B=144)
-Fout=922.90 (A=013, B=144)
-Fout=923.00 (A=014, B=144)
-Fout=923.10 (A=015, B=144)
-Fout=923.20 (A=016, B=144)
-Fout=923.30 (A=017, B=144)
-Fout=923.40 (A=018, B=144)
-Fout=923.50 (A=019, B=144)
-Fout=923.60 (A=020, B=144)
-Fout=923.70 (A=021, B=144)
-Fout=923.80 (A=022, B=144)
-Fout=923.90 (A=023, B=144)
-Fout=924.00 (A=024, B=144)
-Fout=924.10 (A=025, B=144)
-Fout=924.20 (A=026, B=144)
-Fout=924.30 (A=027, B=144)
-Fout=924.40 (A=028, B=144)
-Fout=924.50 (A=029, B=144)
-Fout=924.60 (A=030, B=144)
-Fout=924.70 (A=031, B=144)
-Fout=924.80 (A=032, B=144)
-Fout=924.90 (A=033, B=144)
-Fout=925.00 (A=034, B=144)
-Fout=925.10 (A=035, B=144)
-Fout=925.20 (A=036, B=144)
-Fout=925.30 (A=037, B=144)
-Fout=925.40 (A=038, B=144)
-Fout=925.50 (A=039, B=144)
-Fout=925.60 (A=040, B=144)
-Fout=925.70 (A=041, B=144)
-Fout=925.80 (A=042, B=144)
-Fout=925.90 (A=043, B=144)
-Fout=926.00 (A=044, B=144)
-Fout=926.10 (A=045, B=144)
-Fout=926.20 (A=046, B=144)
-Fout=926.30 (A=047, B=144)
-Fout=926.40 (A=048, B=144)
-Fout=926.50 (A=049, B=144)
-Fout=926.60 (A=050, B=144)
-Fout=926.70 (A=051, B=144)
-Fout=926.80 (A=052, B=144)
-Fout=926.90 (A=053, B=144)
-Fout=927.00 (A=054, B=144)
-Fout=927.10 (A=055, B=144)
-Fout=927.20 (A=056, B=144)
-Fout=927.30 (A=057, B=144)
-Fout=927.40 (A=058, B=144)
-Fout=927.50 (A=059, B=144)
-Fout=927.60 (A=060, B=144)
-Fout=927.70 (A=061, B=144)
-Fout=927.80 (A=062, B=144)
-Fout=928.00 (A=000, B=145)
-Fout=928.10 (A=001, B=145)
-Fout=928.20 (A=002, B=145)
-Fout=928.30 (A=003, B=145)
-Fout=928.40 (A=004, B=145)
-Fout=928.50 (A=005, B=145)
-Fout=928.60 (A=006, B=145)
-Fout=928.70 (A=007, B=145)
-Fout=928.80 (A=008, B=145)
-Fout=928.90 (A=009, B=145)
-Fout=929.00 (A=010, B=145)
-Fout=929.10 (A=011, B=145)
-Fout=929.20 (A=012, B=145)
-Fout=929.30 (A=013, B=145)
-Fout=929.40 (A=014, B=145)
-Fout=929.50 (A=015, B=145)
-Fout=929.60 (A=016, B=145)
-Fout=929.70 (A=017, B=145)
-Fout=929.80 (A=018, B=145)
-Fout=929.90 (A=019, B=145)
-Fout=930.00 (A=020, B=145)
-Fout=930.10 (A=021, B=145)
-Fout=930.20 (A=022, B=145)
-Fout=930.30 (A=023, B=145)
-Fout=930.40 (A=024, B=145)
-Fout=930.50 (A=025, B=145)
-Fout=930.60 (A=026, B=145)
-Fout=930.70 (A=027, B=145)
-Fout=930.80 (A=028, B=145)
-Fout=930.90 (A=029, B=145)
-Fout=931.00 (A=030, B=145)
-Fout=931.10 (A=031, B=145)
-Fout=931.20 (A=032, B=145)
-Fout=931.30 (A=033, B=145)
-Fout=931.40 (A=034, B=145)
-Fout=931.50 (A=035, B=145)
-Fout=931.60 (A=036, B=145)
-Fout=931.70 (A=037, B=145)
-Fout=931.80 (A=038, B=145)
-Fout=931.90 (A=039, B=145)
-Fout=932.00 (A=040, B=145)
-Fout=932.10 (A=041, B=145)
-Fout=932.20 (A=042, B=145)
-Fout=932.30 (A=043, B=145)
-Fout=932.40 (A=044, B=145)
-Fout=932.50 (A=045, B=145)
-Fout=932.60 (A=046, B=145)
-Fout=932.70 (A=047, B=145)
-Fout=932.80 (A=048, B=145)
-Fout=932.90 (A=049, B=145)
-Fout=933.00 (A=050, B=145)
-Fout=933.10 (A=051, B=145)
-Fout=933.20 (A=052, B=145)
-Fout=933.30 (A=053, B=145)
-Fout=933.40 (A=054, B=145)
-Fout=933.50 (A=055, B=145)
-Fout=933.60 (A=056, B=145)
-Fout=933.70 (A=057, B=145)
-Fout=933.80 (A=058, B=145)
-Fout=933.90 (A=059, B=145)
-Fout=934.00 (A=060, B=145)
-Fout=934.10 (A=061, B=145)
-Fout=934.20 (A=062, B=145)
-Fout=934.40 (A=000, B=146)
-Fout=934.50 (A=001, B=146)
-Fout=934.60 (A=002, B=146)
-Fout=934.70 (A=003, B=146)
-Fout=934.80 (A=004, B=146)
-Fout=934.90 (A=005, B=146)
-Fout=935.00 (A=006, B=146)
-Fout=935.10 (A=007, B=146)
-Fout=935.20 (A=008, B=146)
-Fout=935.30 (A=009, B=146)
-Fout=935.40 (A=010, B=146)
-Fout=935.50 (A=011, B=146)
-Fout=935.60 (A=012, B=146)
-Fout=935.70 (A=013, B=146)
-Fout=935.80 (A=014, B=146)
-Fout=935.90 (A=015, B=146)
-Fout=936.00 (A=016, B=146)
-Fout=936.10 (A=017, B=146)
-Fout=936.20 (A=018, B=146)
-Fout=936.30 (A=019, B=146)
-Fout=936.40 (A=020, B=146)
-Fout=936.50 (A=021, B=146)
-Fout=936.60 (A=022, B=146)
-Fout=936.70 (A=023, B=146)
-Fout=936.80 (A=024, B=146)
-Fout=936.90 (A=025, B=146)
-Fout=937.00 (A=026, B=146)
-Fout=937.10 (A=027, B=146)
-Fout=937.20 (A=028, B=146)
-Fout=937.30 (A=029, B=146)
-Fout=937.40 (A=030, B=146)
-Fout=937.50 (A=031, B=146)
-Fout=937.60 (A=032, B=146)
-Fout=937.70 (A=033, B=146)
-Fout=937.80 (A=034, B=146)
-Fout=937.90 (A=035, B=146)
-Fout=938.00 (A=036, B=146)
-Fout=938.10 (A=037, B=146)
-Fout=938.20 (A=038, B=146)
-Fout=938.30 (A=039, B=146)
-Fout=938.40 (A=040, B=146)
-Fout=938.50 (A=041, B=146)
-Fout=938.60 (A=042, B=146)
-Fout=938.70 (A=043, B=146)
-Fout=938.80 (A=044, B=146)
-Fout=938.90 (A=045, B=146)
-Fout=939.00 (A=046, B=146)
-Fout=939.10 (A=047, B=146)
-Fout=939.20 (A=048, B=146)
-Fout=939.30 (A=049, B=146)
-Fout=939.40 (A=050, B=146)
-Fout=939.50 (A=051, B=146)
-Fout=939.60 (A=052, B=146)
-Fout=939.70 (A=053, B=146)
-Fout=939.80 (A=054, B=146)
-Fout=939.90 (A=055, B=146)
-Fout=940.00 (A=056, B=146)
-Fout=940.10 (A=057, B=146)
-Fout=940.20 (A=058, B=146)
-Fout=940.30 (A=059, B=146)
-Fout=940.40 (A=060, B=146)
-Fout=940.50 (A=061, B=146)
-Fout=940.60 (A=062, B=146)
-Fout=940.80 (A=000, B=147)
-Fout=940.90 (A=001, B=147)
-Fout=941.00 (A=002, B=147)
-Fout=941.10 (A=003, B=147)
-Fout=941.20 (A=004, B=147)
-Fout=941.30 (A=005, B=147)
-Fout=941.40 (A=006, B=147)
-Fout=941.50 (A=007, B=147)
-Fout=941.60 (A=008, B=147)
-Fout=941.70 (A=009, B=147)
-Fout=941.80 (A=010, B=147)
-Fout=941.90 (A=011, B=147)
-Fout=942.00 (A=012, B=147)
-Fout=942.10 (A=013, B=147)
-Fout=942.20 (A=014, B=147)
-Fout=942.30 (A=015, B=147)
-Fout=942.40 (A=016, B=147)
-Fout=942.50 (A=017, B=147)
-Fout=942.60 (A=018, B=147)
-Fout=942.70 (A=019, B=147)
-Fout=942.80 (A=020, B=147)
-Fout=942.90 (A=021, B=147)
-Fout=943.00 (A=022, B=147)
-Fout=943.10 (A=023, B=147)
-Fout=943.20 (A=024, B=147)
-Fout=943.30 (A=025, B=147)
-Fout=943.40 (A=026, B=147)
-Fout=943.50 (A=027, B=147)
-Fout=943.60 (A=028, B=147)
-Fout=943.70 (A=029, B=147)
-Fout=943.80 (A=030, B=147)
-Fout=943.90 (A=031, B=147)
-Fout=944.00 (A=032, B=147)
-Fout=944.10 (A=033, B=147)
-Fout=944.20 (A=034, B=147)
-Fout=944.30 (A=035, B=147)
-Fout=944.40 (A=036, B=147)
-Fout=944.50 (A=037, B=147)
-Fout=944.60 (A=038, B=147)
-Fout=944.70 (A=039, B=147)
-Fout=944.80 (A=040, B=147)
-Fout=944.90 (A=041, B=147)
-Fout=945.00 (A=042, B=147)
-Fout=945.10 (A=043, B=147)
-Fout=945.20 (A=044, B=147)
-Fout=945.30 (A=045, B=147)
-Fout=945.40 (A=046, B=147)
-Fout=945.50 (A=047, B=147)
-Fout=945.60 (A=048, B=147)
-Fout=945.70 (A=049, B=147)
-Fout=945.80 (A=050, B=147)
-Fout=945.90 (A=051, B=147)
-Fout=946.00 (A=052, B=147)
-Fout=946.10 (A=053, B=147)
-Fout=946.20 (A=054, B=147)
-Fout=946.30 (A=055, B=147)
-Fout=946.40 (A=056, B=147)
-Fout=946.50 (A=057, B=147)
-Fout=946.60 (A=058, B=147)
-Fout=946.70 (A=059, B=147)
-Fout=946.80 (A=060, B=147)
-Fout=946.90 (A=061, B=147)
-Fout=947.00 (A=062, B=147)
-Fout=947.20 (A=000, B=148)
-Fout=947.30 (A=001, B=148)
-Fout=947.40 (A=002, B=148)
-Fout=947.50 (A=003, B=148)
-Fout=947.60 (A=004, B=148)
-Fout=947.70 (A=005, B=148)
-Fout=947.80 (A=006, B=148)
-Fout=947.90 (A=007, B=148)
-Fout=948.00 (A=008, B=148)
-Fout=948.10 (A=009, B=148)
-Fout=948.20 (A=010, B=148)
-Fout=948.30 (A=011, B=148)
-Fout=948.40 (A=012, B=148)
-Fout=948.50 (A=013, B=148)
-Fout=948.60 (A=014, B=148)
-Fout=948.70 (A=015, B=148)
-Fout=948.80 (A=016, B=148)
-Fout=948.90 (A=017, B=148)
-Fout=949.00 (A=018, B=148)
-Fout=949.10 (A=019, B=148)
-Fout=949.20 (A=020, B=148)
-Fout=949.30 (A=021, B=148)
-Fout=949.40 (A=022, B=148)
-Fout=949.50 (A=023, B=148)
-Fout=949.60 (A=024, B=148)
-Fout=949.70 (A=025, B=148)
-Fout=949.80 (A=026, B=148)
-Fout=949.90 (A=027, B=148)
-Fout=950.00 (A=028, B=148)
-Fout=950.10 (A=029, B=148)
-Fout=950.20 (A=030, B=148)
-Fout=950.30 (A=031, B=148)
-Fout=950.40 (A=032, B=148)
-Fout=950.50 (A=033, B=148)
-Fout=950.60 (A=034, B=148)
-Fout=950.70 (A=035, B=148)
-Fout=950.80 (A=036, B=148)
-Fout=950.90 (A=037, B=148)
-Fout=951.00 (A=038, B=148)
-Fout=951.10 (A=039, B=148)
-Fout=951.20 (A=040, B=148)
-Fout=951.30 (A=041, B=148)
-Fout=951.40 (A=042, B=148)
-Fout=951.50 (A=043, B=148)
-Fout=951.60 (A=044, B=148)
-Fout=951.70 (A=045, B=148)
-Fout=951.80 (A=046, B=148)
-Fout=951.90 (A=047, B=148)
-Fout=952.00 (A=048, B=148)
-Fout=952.10 (A=049, B=148)
-Fout=952.20 (A=050, B=148)
-Fout=952.30 (A=051, B=148)
-Fout=952.40 (A=052, B=148)
-Fout=952.50 (A=053, B=148)
-Fout=952.60 (A=054, B=148)
-Fout=952.70 (A=055, B=148)
-Fout=952.80 (A=056, B=148)
-Fout=952.90 (A=057, B=148)
-Fout=953.00 (A=058, B=148)
-Fout=953.10 (A=059, B=148)
-Fout=953.20 (A=060, B=148)
-Fout=953.30 (A=061, B=148)
-Fout=953.40 (A=062, B=148)
-Fout=953.60 (A=000, B=149)
-Fout=953.70 (A=001, B=149)
-Fout=953.80 (A=002, B=149)
-Fout=953.90 (A=003, B=149)
-Fout=954.00 (A=004, B=149)
-Fout=954.10 (A=005, B=149)
-Fout=954.20 (A=006, B=149)
-Fout=954.30 (A=007, B=149)
-Fout=954.40 (A=008, B=149)
-Fout=954.50 (A=009, B=149)
-Fout=954.60 (A=010, B=149)
-Fout=954.70 (A=011, B=149)
-Fout=954.80 (A=012, B=149)
-Fout=954.90 (A=013, B=149)
-Fout=955.00 (A=014, B=149)
-Fout=955.10 (A=015, B=149)
-Fout=955.20 (A=016, B=149)
-Fout=955.30 (A=017, B=149)
-Fout=955.40 (A=018, B=149)
-Fout=955.50 (A=019, B=149)
-Fout=955.60 (A=020, B=149)
-Fout=955.70 (A=021, B=149)
-Fout=955.80 (A=022, B=149)
-Fout=955.90 (A=023, B=149)
-Fout=956.00 (A=024, B=149)
-Fout=956.10 (A=025, B=149)
-Fout=956.20 (A=026, B=149)
-Fout=956.30 (A=027, B=149)
-Fout=956.40 (A=028, B=149)
-Fout=956.50 (A=029, B=149)
-Fout=956.60 (A=030, B=149)
-Fout=956.70 (A=031, B=149)
-Fout=956.80 (A=032, B=149)
-Fout=956.90 (A=033, B=149)
-Fout=957.00 (A=034, B=149)
-Fout=957.10 (A=035, B=149)
-Fout=957.20 (A=036, B=149)
-Fout=957.30 (A=037, B=149)
-Fout=957.40 (A=038, B=149)
-Fout=957.50 (A=039, B=149)
-Fout=957.60 (A=040, B=149)
-Fout=957.70 (A=041, B=149)
-Fout=957.80 (A=042, B=149)
-Fout=957.90 (A=043, B=149)
-Fout=958.00 (A=044, B=149)
-Fout=958.10 (A=045, B=149)
-Fout=958.20 (A=046, B=149)
-Fout=958.30 (A=047, B=149)
-Fout=958.40 (A=048, B=149)
-Fout=958.50 (A=049, B=149)
-Fout=958.60 (A=050, B=149)
-Fout=958.70 (A=051, B=149)
-Fout=958.80 (A=052, B=149)
-Fout=958.90 (A=053, B=149)
-Fout=959.00 (A=054, B=149)
-Fout=959.10 (A=055, B=149)
-Fout=959.20 (A=056, B=149)
-Fout=959.30 (A=057, B=149)
-Fout=959.40 (A=058, B=149)
-Fout=959.50 (A=059, B=149)
-Fout=959.60 (A=060, B=149)
-Fout=959.70 (A=061, B=149)
-Fout=959.80 (A=062, B=149)
-Fout=960.00 (A=000, B=150)
-Fout=960.10 (A=001, B=150)
-Fout=960.20 (A=002, B=150)
-Fout=960.30 (A=003, B=150)
-Fout=960.40 (A=004, B=150)
-Fout=960.50 (A=005, B=150)
-Fout=960.60 (A=006, B=150)
-Fout=960.70 (A=007, B=150)
-Fout=960.80 (A=008, B=150)
-Fout=960.90 (A=009, B=150)
-Fout=961.00 (A=010, B=150)
-Fout=961.10 (A=011, B=150)
-Fout=961.20 (A=012, B=150)
-Fout=961.30 (A=013, B=150)
-Fout=961.40 (A=014, B=150)
-Fout=961.50 (A=015, B=150)
-Fout=961.60 (A=016, B=150)
-Fout=961.70 (A=017, B=150)
-Fout=961.80 (A=018, B=150)
-Fout=961.90 (A=019, B=150)
-Fout=962.00 (A=020, B=150)
-Fout=962.10 (A=021, B=150)
-Fout=962.20 (A=022, B=150)
-Fout=962.30 (A=023, B=150)
-Fout=962.40 (A=024, B=150)
-Fout=962.50 (A=025, B=150)
-Fout=962.60 (A=026, B=150)
-Fout=962.70 (A=027, B=150)
-Fout=962.80 (A=028, B=150)
-Fout=962.90 (A=029, B=150)
-Fout=963.00 (A=030, B=150)
-Fout=963.10 (A=031, B=150)
-Fout=963.20 (A=032, B=150)
-Fout=963.30 (A=033, B=150)
-Fout=963.40 (A=034, B=150)
-Fout=963.50 (A=035, B=150)
-Fout=963.60 (A=036, B=150)
-Fout=963.70 (A=037, B=150)
-Fout=963.80 (A=038, B=150)
-Fout=963.90 (A=039, B=150)
-Fout=964.00 (A=040, B=150)
-Fout=964.10 (A=041, B=150)
-Fout=964.20 (A=042, B=150)
-Fout=964.30 (A=043, B=150)
-Fout=964.40 (A=044, B=150)
-Fout=964.50 (A=045, B=150)
-Fout=964.60 (A=046, B=150)
-Fout=964.70 (A=047, B=150)
-Fout=964.80 (A=048, B=150)
-Fout=964.90 (A=049, B=150)
-Fout=965.00 (A=050, B=150)
-Fout=965.10 (A=051, B=150)
-Fout=965.20 (A=052, B=150)
-Fout=965.30 (A=053, B=150)
-Fout=965.40 (A=054, B=150)
-Fout=965.50 (A=055, B=150)
-Fout=965.60 (A=056, B=150)
-Fout=965.70 (A=057, B=150)
-Fout=965.80 (A=058, B=150)
-Fout=965.90 (A=059, B=150)
-Fout=966.00 (A=060, B=150)
-Fout=966.10 (A=061, B=150)
-Fout=966.20 (A=062, B=150)
-======================================================================
-PLL Rx High Band:
-Fout=1804.80 (A=000, B=141)
-Fout=1805.00 (A=001, B=141)
-Fout=1805.20 (A=002, B=141)
-Fout=1805.40 (A=003, B=141)
-Fout=1805.60 (A=004, B=141)
-Fout=1805.80 (A=005, B=141)
-Fout=1806.00 (A=006, B=141)
-Fout=1806.20 (A=007, B=141)
-Fout=1806.40 (A=008, B=141)
-Fout=1806.60 (A=009, B=141)
-Fout=1806.80 (A=010, B=141)
-Fout=1807.00 (A=011, B=141)
-Fout=1807.20 (A=012, B=141)
-Fout=1807.40 (A=013, B=141)
-Fout=1807.60 (A=014, B=141)
-Fout=1807.80 (A=015, B=141)
-Fout=1808.00 (A=016, B=141)
-Fout=1808.20 (A=017, B=141)
-Fout=1808.40 (A=018, B=141)
-Fout=1808.60 (A=019, B=141)
-Fout=1808.80 (A=020, B=141)
-Fout=1809.00 (A=021, B=141)
-Fout=1809.20 (A=022, B=141)
-Fout=1809.40 (A=023, B=141)
-Fout=1809.60 (A=024, B=141)
-Fout=1809.80 (A=025, B=141)
-Fout=1810.00 (A=026, B=141)
-Fout=1810.20 (A=027, B=141)
-Fout=1810.40 (A=028, B=141)
-Fout=1810.60 (A=029, B=141)
-Fout=1810.80 (A=030, B=141)
-Fout=1811.00 (A=031, B=141)
-Fout=1811.20 (A=032, B=141)
-Fout=1811.40 (A=033, B=141)
-Fout=1811.60 (A=034, B=141)
-Fout=1811.80 (A=035, B=141)
-Fout=1812.00 (A=036, B=141)
-Fout=1812.20 (A=037, B=141)
-Fout=1812.40 (A=038, B=141)
-Fout=1812.60 (A=039, B=141)
-Fout=1812.80 (A=040, B=141)
-Fout=1813.00 (A=041, B=141)
-Fout=1813.20 (A=042, B=141)
-Fout=1813.40 (A=043, B=141)
-Fout=1813.60 (A=044, B=141)
-Fout=1813.80 (A=045, B=141)
-Fout=1814.00 (A=046, B=141)
-Fout=1814.20 (A=047, B=141)
-Fout=1814.40 (A=048, B=141)
-Fout=1814.60 (A=049, B=141)
-Fout=1814.80 (A=050, B=141)
-Fout=1815.00 (A=051, B=141)
-Fout=1815.20 (A=052, B=141)
-Fout=1815.40 (A=053, B=141)
-Fout=1815.60 (A=054, B=141)
-Fout=1815.80 (A=055, B=141)
-Fout=1816.00 (A=056, B=141)
-Fout=1816.20 (A=057, B=141)
-Fout=1816.40 (A=058, B=141)
-Fout=1816.60 (A=059, B=141)
-Fout=1816.80 (A=060, B=141)
-Fout=1817.00 (A=061, B=141)
-Fout=1817.20 (A=062, B=141)
-Fout=1817.60 (A=000, B=142)
-Fout=1817.80 (A=001, B=142)
-Fout=1818.00 (A=002, B=142)
-Fout=1818.20 (A=003, B=142)
-Fout=1818.40 (A=004, B=142)
-Fout=1818.60 (A=005, B=142)
-Fout=1818.80 (A=006, B=142)
-Fout=1819.00 (A=007, B=142)
-Fout=1819.20 (A=008, B=142)
-Fout=1819.40 (A=009, B=142)
-Fout=1819.60 (A=010, B=142)
-Fout=1819.80 (A=011, B=142)
-Fout=1820.00 (A=012, B=142)
-Fout=1820.20 (A=013, B=142)
-Fout=1820.40 (A=014, B=142)
-Fout=1820.60 (A=015, B=142)
-Fout=1820.80 (A=016, B=142)
-Fout=1821.00 (A=017, B=142)
-Fout=1821.20 (A=018, B=142)
-Fout=1821.40 (A=019, B=142)
-Fout=1821.60 (A=020, B=142)
-Fout=1821.80 (A=021, B=142)
-Fout=1822.00 (A=022, B=142)
-Fout=1822.20 (A=023, B=142)
-Fout=1822.40 (A=024, B=142)
-Fout=1822.60 (A=025, B=142)
-Fout=1822.80 (A=026, B=142)
-Fout=1823.00 (A=027, B=142)
-Fout=1823.20 (A=028, B=142)
-Fout=1823.40 (A=029, B=142)
-Fout=1823.60 (A=030, B=142)
-Fout=1823.80 (A=031, B=142)
-Fout=1824.00 (A=032, B=142)
-Fout=1824.20 (A=033, B=142)
-Fout=1824.40 (A=034, B=142)
-Fout=1824.60 (A=035, B=142)
-Fout=1824.80 (A=036, B=142)
-Fout=1825.00 (A=037, B=142)
-Fout=1825.20 (A=038, B=142)
-Fout=1825.40 (A=039, B=142)
-Fout=1825.60 (A=040, B=142)
-Fout=1825.80 (A=041, B=142)
-Fout=1826.00 (A=042, B=142)
-Fout=1826.20 (A=043, B=142)
-Fout=1826.40 (A=044, B=142)
-Fout=1826.60 (A=045, B=142)
-Fout=1826.80 (A=046, B=142)
-Fout=1827.00 (A=047, B=142)
-Fout=1827.20 (A=048, B=142)
-Fout=1827.40 (A=049, B=142)
-Fout=1827.60 (A=050, B=142)
-Fout=1827.80 (A=051, B=142)
-Fout=1828.00 (A=052, B=142)
-Fout=1828.20 (A=053, B=142)
-Fout=1828.40 (A=054, B=142)
-Fout=1828.60 (A=055, B=142)
-Fout=1828.80 (A=056, B=142)
-Fout=1829.00 (A=057, B=142)
-Fout=1829.20 (A=058, B=142)
-Fout=1829.40 (A=059, B=142)
-Fout=1829.60 (A=060, B=142)
-Fout=1829.80 (A=061, B=142)
-Fout=1830.00 (A=062, B=142)
-Fout=1830.40 (A=000, B=143)
-Fout=1830.60 (A=001, B=143)
-Fout=1830.80 (A=002, B=143)
-Fout=1831.00 (A=003, B=143)
-Fout=1831.20 (A=004, B=143)
-Fout=1831.40 (A=005, B=143)
-Fout=1831.60 (A=006, B=143)
-Fout=1831.80 (A=007, B=143)
-Fout=1832.00 (A=008, B=143)
-Fout=1832.20 (A=009, B=143)
-Fout=1832.40 (A=010, B=143)
-Fout=1832.60 (A=011, B=143)
-Fout=1832.80 (A=012, B=143)
-Fout=1833.00 (A=013, B=143)
-Fout=1833.20 (A=014, B=143)
-Fout=1833.40 (A=015, B=143)
-Fout=1833.60 (A=016, B=143)
-Fout=1833.80 (A=017, B=143)
-Fout=1834.00 (A=018, B=143)
-Fout=1834.20 (A=019, B=143)
-Fout=1834.40 (A=020, B=143)
-Fout=1834.60 (A=021, B=143)
-Fout=1834.80 (A=022, B=143)
-Fout=1835.00 (A=023, B=143)
-Fout=1835.20 (A=024, B=143)
-Fout=1835.40 (A=025, B=143)
-Fout=1835.60 (A=026, B=143)
-Fout=1835.80 (A=027, B=143)
-Fout=1836.00 (A=028, B=143)
-Fout=1836.20 (A=029, B=143)
-Fout=1836.40 (A=030, B=143)
-Fout=1836.60 (A=031, B=143)
-Fout=1836.80 (A=032, B=143)
-Fout=1837.00 (A=033, B=143)
-Fout=1837.20 (A=034, B=143)
-Fout=1837.40 (A=035, B=143)
-Fout=1837.60 (A=036, B=143)
-Fout=1837.80 (A=037, B=143)
-Fout=1838.00 (A=038, B=143)
-Fout=1838.20 (A=039, B=143)
-Fout=1838.40 (A=040, B=143)
-Fout=1838.60 (A=041, B=143)
-Fout=1838.80 (A=042, B=143)
-Fout=1839.00 (A=043, B=143)
-Fout=1839.20 (A=044, B=143)
-Fout=1839.40 (A=045, B=143)
-Fout=1839.60 (A=046, B=143)
-Fout=1839.80 (A=047, B=143)
-Fout=1840.00 (A=048, B=143)
-Fout=1840.20 (A=049, B=143)
-Fout=1840.40 (A=050, B=143)
-Fout=1840.60 (A=051, B=143)
-Fout=1840.80 (A=052, B=143)
-Fout=1841.00 (A=053, B=143)
-Fout=1841.20 (A=054, B=143)
-Fout=1841.40 (A=055, B=143)
-Fout=1841.60 (A=056, B=143)
-Fout=1841.80 (A=057, B=143)
-Fout=1842.00 (A=058, B=143)
-Fout=1842.20 (A=059, B=143)
-Fout=1842.40 (A=060, B=143)
-Fout=1842.60 (A=061, B=143)
-Fout=1842.80 (A=062, B=143)
-Fout=1843.20 (A=000, B=144)
-Fout=1843.40 (A=001, B=144)
-Fout=1843.60 (A=002, B=144)
-Fout=1843.80 (A=003, B=144)
-Fout=1844.00 (A=004, B=144)
-Fout=1844.20 (A=005, B=144)
-Fout=1844.40 (A=006, B=144)
-Fout=1844.60 (A=007, B=144)
-Fout=1844.80 (A=008, B=144)
-Fout=1845.00 (A=009, B=144)
-Fout=1845.20 (A=010, B=144)
-Fout=1845.40 (A=011, B=144)
-Fout=1845.60 (A=012, B=144)
-Fout=1845.80 (A=013, B=144)
-Fout=1846.00 (A=014, B=144)
-Fout=1846.20 (A=015, B=144)
-Fout=1846.40 (A=016, B=144)
-Fout=1846.60 (A=017, B=144)
-Fout=1846.80 (A=018, B=144)
-Fout=1847.00 (A=019, B=144)
-Fout=1847.20 (A=020, B=144)
-Fout=1847.40 (A=021, B=144)
-Fout=1847.60 (A=022, B=144)
-Fout=1847.80 (A=023, B=144)
-Fout=1848.00 (A=024, B=144)
-Fout=1848.20 (A=025, B=144)
-Fout=1848.40 (A=026, B=144)
-Fout=1848.60 (A=027, B=144)
-Fout=1848.80 (A=028, B=144)
-Fout=1849.00 (A=029, B=144)
-Fout=1849.20 (A=030, B=144)
-Fout=1849.40 (A=031, B=144)
-Fout=1849.60 (A=032, B=144)
-Fout=1849.80 (A=033, B=144)
-Fout=1850.00 (A=034, B=144)
-Fout=1850.20 (A=035, B=144)
-Fout=1850.40 (A=036, B=144)
-Fout=1850.60 (A=037, B=144)
-Fout=1850.80 (A=038, B=144)
-Fout=1851.00 (A=039, B=144)
-Fout=1851.20 (A=040, B=144)
-Fout=1851.40 (A=041, B=144)
-Fout=1851.60 (A=042, B=144)
-Fout=1851.80 (A=043, B=144)
-Fout=1852.00 (A=044, B=144)
-Fout=1852.20 (A=045, B=144)
-Fout=1852.40 (A=046, B=144)
-Fout=1852.60 (A=047, B=144)
-Fout=1852.80 (A=048, B=144)
-Fout=1853.00 (A=049, B=144)
-Fout=1853.20 (A=050, B=144)
-Fout=1853.40 (A=051, B=144)
-Fout=1853.60 (A=052, B=144)
-Fout=1853.80 (A=053, B=144)
-Fout=1854.00 (A=054, B=144)
-Fout=1854.20 (A=055, B=144)
-Fout=1854.40 (A=056, B=144)
-Fout=1854.60 (A=057, B=144)
-Fout=1854.80 (A=058, B=144)
-Fout=1855.00 (A=059, B=144)
-Fout=1855.20 (A=060, B=144)
-Fout=1855.40 (A=061, B=144)
-Fout=1855.60 (A=062, B=144)
-Fout=1856.00 (A=000, B=145)
-Fout=1856.20 (A=001, B=145)
-Fout=1856.40 (A=002, B=145)
-Fout=1856.60 (A=003, B=145)
-Fout=1856.80 (A=004, B=145)
-Fout=1857.00 (A=005, B=145)
-Fout=1857.20 (A=006, B=145)
-Fout=1857.40 (A=007, B=145)
-Fout=1857.60 (A=008, B=145)
-Fout=1857.80 (A=009, B=145)
-Fout=1858.00 (A=010, B=145)
-Fout=1858.20 (A=011, B=145)
-Fout=1858.40 (A=012, B=145)
-Fout=1858.60 (A=013, B=145)
-Fout=1858.80 (A=014, B=145)
-Fout=1859.00 (A=015, B=145)
-Fout=1859.20 (A=016, B=145)
-Fout=1859.40 (A=017, B=145)
-Fout=1859.60 (A=018, B=145)
-Fout=1859.80 (A=019, B=145)
-Fout=1860.00 (A=020, B=145)
-Fout=1860.20 (A=021, B=145)
-Fout=1860.40 (A=022, B=145)
-Fout=1860.60 (A=023, B=145)
-Fout=1860.80 (A=024, B=145)
-Fout=1861.00 (A=025, B=145)
-Fout=1861.20 (A=026, B=145)
-Fout=1861.40 (A=027, B=145)
-Fout=1861.60 (A=028, B=145)
-Fout=1861.80 (A=029, B=145)
-Fout=1862.00 (A=030, B=145)
-Fout=1862.20 (A=031, B=145)
-Fout=1862.40 (A=032, B=145)
-Fout=1862.60 (A=033, B=145)
-Fout=1862.80 (A=034, B=145)
-Fout=1863.00 (A=035, B=145)
-Fout=1863.20 (A=036, B=145)
-Fout=1863.40 (A=037, B=145)
-Fout=1863.60 (A=038, B=145)
-Fout=1863.80 (A=039, B=145)
-Fout=1864.00 (A=040, B=145)
-Fout=1864.20 (A=041, B=145)
-Fout=1864.40 (A=042, B=145)
-Fout=1864.60 (A=043, B=145)
-Fout=1864.80 (A=044, B=145)
-Fout=1865.00 (A=045, B=145)
-Fout=1865.20 (A=046, B=145)
-Fout=1865.40 (A=047, B=145)
-Fout=1865.60 (A=048, B=145)
-Fout=1865.80 (A=049, B=145)
-Fout=1866.00 (A=050, B=145)
-Fout=1866.20 (A=051, B=145)
-Fout=1866.40 (A=052, B=145)
-Fout=1866.60 (A=053, B=145)
-Fout=1866.80 (A=054, B=145)
-Fout=1867.00 (A=055, B=145)
-Fout=1867.20 (A=056, B=145)
-Fout=1867.40 (A=057, B=145)
-Fout=1867.60 (A=058, B=145)
-Fout=1867.80 (A=059, B=145)
-Fout=1868.00 (A=060, B=145)
-Fout=1868.20 (A=061, B=145)
-Fout=1868.40 (A=062, B=145)
-Fout=1868.80 (A=000, B=146)
-Fout=1869.00 (A=001, B=146)
-Fout=1869.20 (A=002, B=146)
-Fout=1869.40 (A=003, B=146)
-Fout=1869.60 (A=004, B=146)
-Fout=1869.80 (A=005, B=146)
-Fout=1870.00 (A=006, B=146)
-Fout=1870.20 (A=007, B=146)
-Fout=1870.40 (A=008, B=146)
-Fout=1870.60 (A=009, B=146)
-Fout=1870.80 (A=010, B=146)
-Fout=1871.00 (A=011, B=146)
-Fout=1871.20 (A=012, B=146)
-Fout=1871.40 (A=013, B=146)
-Fout=1871.60 (A=014, B=146)
-Fout=1871.80 (A=015, B=146)
-Fout=1872.00 (A=016, B=146)
-Fout=1872.20 (A=017, B=146)
-Fout=1872.40 (A=018, B=146)
-Fout=1872.60 (A=019, B=146)
-Fout=1872.80 (A=020, B=146)
-Fout=1873.00 (A=021, B=146)
-Fout=1873.20 (A=022, B=146)
-Fout=1873.40 (A=023, B=146)
-Fout=1873.60 (A=024, B=146)
-Fout=1873.80 (A=025, B=146)
-Fout=1874.00 (A=026, B=146)
-Fout=1874.20 (A=027, B=146)
-Fout=1874.40 (A=028, B=146)
-Fout=1874.60 (A=029, B=146)
-Fout=1874.80 (A=030, B=146)
-Fout=1875.00 (A=031, B=146)
-Fout=1875.20 (A=032, B=146)
-Fout=1875.40 (A=033, B=146)
-Fout=1875.60 (A=034, B=146)
-Fout=1875.80 (A=035, B=146)
-Fout=1876.00 (A=036, B=146)
-Fout=1876.20 (A=037, B=146)
-Fout=1876.40 (A=038, B=146)
-Fout=1876.60 (A=039, B=146)
-Fout=1876.80 (A=040, B=146)
-Fout=1877.00 (A=041, B=146)
-Fout=1877.20 (A=042, B=146)
-Fout=1877.40 (A=043, B=146)
-Fout=1877.60 (A=044, B=146)
-Fout=1877.80 (A=045, B=146)
-Fout=1878.00 (A=046, B=146)
-Fout=1878.20 (A=047, B=146)
-Fout=1878.40 (A=048, B=146)
-Fout=1878.60 (A=049, B=146)
-Fout=1878.80 (A=050, B=146)
-Fout=1879.00 (A=051, B=146)
-Fout=1879.20 (A=052, B=146)
-Fout=1879.40 (A=053, B=146)
-Fout=1879.60 (A=054, B=146)
-Fout=1879.80 (A=055, B=146)
-Fout=1880.00 (A=056, B=146)
-Fout=1880.20 (A=057, B=146)
-Fout=1880.40 (A=058, B=146)
-Fout=1880.60 (A=059, B=146)
-Fout=1880.80 (A=060, B=146)
-Fout=1881.00 (A=061, B=146)
-Fout=1881.20 (A=062, B=146)
-Fout=1881.60 (A=000, B=147)
-Fout=1881.80 (A=001, B=147)
-Fout=1882.00 (A=002, B=147)
-Fout=1882.20 (A=003, B=147)
-Fout=1882.40 (A=004, B=147)
-Fout=1882.60 (A=005, B=147)
-Fout=1882.80 (A=006, B=147)
-Fout=1883.00 (A=007, B=147)
-Fout=1883.20 (A=008, B=147)
-Fout=1883.40 (A=009, B=147)
-Fout=1883.60 (A=010, B=147)
-Fout=1883.80 (A=011, B=147)
-Fout=1884.00 (A=012, B=147)
-Fout=1884.20 (A=013, B=147)
-Fout=1884.40 (A=014, B=147)
-Fout=1884.60 (A=015, B=147)
-Fout=1884.80 (A=016, B=147)
-Fout=1885.00 (A=017, B=147)
-Fout=1885.20 (A=018, B=147)
-Fout=1885.40 (A=019, B=147)
-Fout=1885.60 (A=020, B=147)
-Fout=1885.80 (A=021, B=147)
-Fout=1886.00 (A=022, B=147)
-Fout=1886.20 (A=023, B=147)
-Fout=1886.40 (A=024, B=147)
-Fout=1886.60 (A=025, B=147)
-Fout=1886.80 (A=026, B=147)
-Fout=1887.00 (A=027, B=147)
-Fout=1887.20 (A=028, B=147)
-Fout=1887.40 (A=029, B=147)
-Fout=1887.60 (A=030, B=147)
-Fout=1887.80 (A=031, B=147)
-Fout=1888.00 (A=032, B=147)
-Fout=1888.20 (A=033, B=147)
-Fout=1888.40 (A=034, B=147)
-Fout=1888.60 (A=035, B=147)
-Fout=1888.80 (A=036, B=147)
-Fout=1889.00 (A=037, B=147)
-Fout=1889.20 (A=038, B=147)
-Fout=1889.40 (A=039, B=147)
-Fout=1889.60 (A=040, B=147)
-Fout=1889.80 (A=041, B=147)
-Fout=1890.00 (A=042, B=147)
-Fout=1890.20 (A=043, B=147)
-Fout=1890.40 (A=044, B=147)
-Fout=1890.60 (A=045, B=147)
-Fout=1890.80 (A=046, B=147)
-Fout=1891.00 (A=047, B=147)
-Fout=1891.20 (A=048, B=147)
-Fout=1891.40 (A=049, B=147)
-Fout=1891.60 (A=050, B=147)
-Fout=1891.80 (A=051, B=147)
-Fout=1892.00 (A=052, B=147)
-Fout=1892.20 (A=053, B=147)
-Fout=1892.40 (A=054, B=147)
-Fout=1892.60 (A=055, B=147)
-Fout=1892.80 (A=056, B=147)
-Fout=1893.00 (A=057, B=147)
-Fout=1893.20 (A=058, B=147)
-Fout=1893.40 (A=059, B=147)
-Fout=1893.60 (A=060, B=147)
-Fout=1893.80 (A=061, B=147)
-Fout=1894.00 (A=062, B=147)
-Fout=1894.40 (A=000, B=148)
-Fout=1894.60 (A=001, B=148)
-Fout=1894.80 (A=002, B=148)
-Fout=1895.00 (A=003, B=148)
-Fout=1895.20 (A=004, B=148)
-Fout=1895.40 (A=005, B=148)
-Fout=1895.60 (A=006, B=148)
-Fout=1895.80 (A=007, B=148)
-Fout=1896.00 (A=008, B=148)
-Fout=1896.20 (A=009, B=148)
-Fout=1896.40 (A=010, B=148)
-Fout=1896.60 (A=011, B=148)
-Fout=1896.80 (A=012, B=148)
-Fout=1897.00 (A=013, B=148)
-Fout=1897.20 (A=014, B=148)
-Fout=1897.40 (A=015, B=148)
-Fout=1897.60 (A=016, B=148)
-Fout=1897.80 (A=017, B=148)
-Fout=1898.00 (A=018, B=148)
-Fout=1898.20 (A=019, B=148)
-Fout=1898.40 (A=020, B=148)
-Fout=1898.60 (A=021, B=148)
-Fout=1898.80 (A=022, B=148)
-Fout=1899.00 (A=023, B=148)
-Fout=1899.20 (A=024, B=148)
-Fout=1899.40 (A=025, B=148)
-Fout=1899.60 (A=026, B=148)
-Fout=1899.80 (A=027, B=148)
-Fout=1900.00 (A=028, B=148)
-Fout=1900.20 (A=029, B=148)
-Fout=1900.40 (A=030, B=148)
-Fout=1900.60 (A=031, B=148)
-Fout=1900.80 (A=032, B=148)
-Fout=1901.00 (A=033, B=148)
-Fout=1901.20 (A=034, B=148)
-Fout=1901.40 (A=035, B=148)
-Fout=1901.60 (A=036, B=148)
-Fout=1901.80 (A=037, B=148)
-Fout=1902.00 (A=038, B=148)
-Fout=1902.20 (A=039, B=148)
-Fout=1902.40 (A=040, B=148)
-Fout=1902.60 (A=041, B=148)
-Fout=1902.80 (A=042, B=148)
-Fout=1903.00 (A=043, B=148)
-Fout=1903.20 (A=044, B=148)
-Fout=1903.40 (A=045, B=148)
-Fout=1903.60 (A=046, B=148)
-Fout=1903.80 (A=047, B=148)
-Fout=1904.00 (A=048, B=148)
-Fout=1904.20 (A=049, B=148)
-Fout=1904.40 (A=050, B=148)
-Fout=1904.60 (A=051, B=148)
-Fout=1904.80 (A=052, B=148)
-Fout=1905.00 (A=053, B=148)
-Fout=1905.20 (A=054, B=148)
-Fout=1905.40 (A=055, B=148)
-Fout=1905.60 (A=056, B=148)
-Fout=1905.80 (A=057, B=148)
-Fout=1906.00 (A=058, B=148)
-Fout=1906.20 (A=059, B=148)
-Fout=1906.40 (A=060, B=148)
-Fout=1906.60 (A=061, B=148)
-Fout=1906.80 (A=062, B=148)
-Fout=1907.20 (A=000, B=149)
-Fout=1907.40 (A=001, B=149)
-Fout=1907.60 (A=002, B=149)
-Fout=1907.80 (A=003, B=149)
-Fout=1908.00 (A=004, B=149)
-Fout=1908.20 (A=005, B=149)
-Fout=1908.40 (A=006, B=149)
-Fout=1908.60 (A=007, B=149)
-Fout=1908.80 (A=008, B=149)
-Fout=1909.00 (A=009, B=149)
-Fout=1909.20 (A=010, B=149)
-Fout=1909.40 (A=011, B=149)
-Fout=1909.60 (A=012, B=149)
-Fout=1909.80 (A=013, B=149)
-Fout=1910.00 (A=014, B=149)
-Fout=1910.20 (A=015, B=149)
-Fout=1910.40 (A=016, B=149)
-Fout=1910.60 (A=017, B=149)
-Fout=1910.80 (A=018, B=149)
-Fout=1911.00 (A=019, B=149)
-Fout=1911.20 (A=020, B=149)
-Fout=1911.40 (A=021, B=149)
-Fout=1911.60 (A=022, B=149)
-Fout=1911.80 (A=023, B=149)
-Fout=1912.00 (A=024, B=149)
-Fout=1912.20 (A=025, B=149)
-Fout=1912.40 (A=026, B=149)
-Fout=1912.60 (A=027, B=149)
-Fout=1912.80 (A=028, B=149)
-Fout=1913.00 (A=029, B=149)
-Fout=1913.20 (A=030, B=149)
-Fout=1913.40 (A=031, B=149)
-Fout=1913.60 (A=032, B=149)
-Fout=1913.80 (A=033, B=149)
-Fout=1914.00 (A=034, B=149)
-Fout=1914.20 (A=035, B=149)
-Fout=1914.40 (A=036, B=149)
-Fout=1914.60 (A=037, B=149)
-Fout=1914.80 (A=038, B=149)
-Fout=1915.00 (A=039, B=149)
-Fout=1915.20 (A=040, B=149)
-Fout=1915.40 (A=041, B=149)
-Fout=1915.60 (A=042, B=149)
-Fout=1915.80 (A=043, B=149)
-Fout=1916.00 (A=044, B=149)
-Fout=1916.20 (A=045, B=149)
-Fout=1916.40 (A=046, B=149)
-Fout=1916.60 (A=047, B=149)
-Fout=1916.80 (A=048, B=149)
-Fout=1917.00 (A=049, B=149)
-Fout=1917.20 (A=050, B=149)
-Fout=1917.40 (A=051, B=149)
-Fout=1917.60 (A=052, B=149)
-Fout=1917.80 (A=053, B=149)
-Fout=1918.00 (A=054, B=149)
-Fout=1918.20 (A=055, B=149)
-Fout=1918.40 (A=056, B=149)
-Fout=1918.60 (A=057, B=149)
-Fout=1918.80 (A=058, B=149)
-Fout=1919.00 (A=059, B=149)
-Fout=1919.20 (A=060, B=149)
-Fout=1919.40 (A=061, B=149)
-Fout=1919.60 (A=062, B=149)
-Fout=1920.00 (A=000, B=150)
-Fout=1920.20 (A=001, B=150)
-Fout=1920.40 (A=002, B=150)
-Fout=1920.60 (A=003, B=150)
-Fout=1920.80 (A=004, B=150)
-Fout=1921.00 (A=005, B=150)
-Fout=1921.20 (A=006, B=150)
-Fout=1921.40 (A=007, B=150)
-Fout=1921.60 (A=008, B=150)
-Fout=1921.80 (A=009, B=150)
-Fout=1922.00 (A=010, B=150)
-Fout=1922.20 (A=011, B=150)
-Fout=1922.40 (A=012, B=150)
-Fout=1922.60 (A=013, B=150)
-Fout=1922.80 (A=014, B=150)
-Fout=1923.00 (A=015, B=150)
-Fout=1923.20 (A=016, B=150)
-Fout=1923.40 (A=017, B=150)
-Fout=1923.60 (A=018, B=150)
-Fout=1923.80 (A=019, B=150)
-Fout=1924.00 (A=020, B=150)
-Fout=1924.20 (A=021, B=150)
-Fout=1924.40 (A=022, B=150)
-Fout=1924.60 (A=023, B=150)
-Fout=1924.80 (A=024, B=150)
-Fout=1925.00 (A=025, B=150)
-Fout=1925.20 (A=026, B=150)
-Fout=1925.40 (A=027, B=150)
-Fout=1925.60 (A=028, B=150)
-Fout=1925.80 (A=029, B=150)
-Fout=1926.00 (A=030, B=150)
-Fout=1926.20 (A=031, B=150)
-Fout=1926.40 (A=032, B=150)
-Fout=1926.60 (A=033, B=150)
-Fout=1926.80 (A=034, B=150)
-Fout=1927.00 (A=035, B=150)
-Fout=1927.20 (A=036, B=150)
-Fout=1927.40 (A=037, B=150)
-Fout=1927.60 (A=038, B=150)
-Fout=1927.80 (A=039, B=150)
-Fout=1928.00 (A=040, B=150)
-Fout=1928.20 (A=041, B=150)
-Fout=1928.40 (A=042, B=150)
-Fout=1928.60 (A=043, B=150)
-Fout=1928.80 (A=044, B=150)
-Fout=1929.00 (A=045, B=150)
-Fout=1929.20 (A=046, B=150)
-Fout=1929.40 (A=047, B=150)
-Fout=1929.60 (A=048, B=150)
-Fout=1929.80 (A=049, B=150)
-Fout=1930.00 (A=050, B=150)
-Fout=1930.20 (A=051, B=150)
-Fout=1930.40 (A=052, B=150)
-Fout=1930.60 (A=053, B=150)
-Fout=1930.80 (A=054, B=150)
-Fout=1931.00 (A=055, B=150)
-Fout=1931.20 (A=056, B=150)
-Fout=1931.40 (A=057, B=150)
-Fout=1931.60 (A=058, B=150)
-Fout=1931.80 (A=059, B=150)
-Fout=1932.00 (A=060, B=150)
-Fout=1932.20 (A=061, B=150)
-Fout=1932.40 (A=062, B=150)
-Fout=1932.80 (A=000, B=151)
-Fout=1933.00 (A=001, B=151)
-Fout=1933.20 (A=002, B=151)
-Fout=1933.40 (A=003, B=151)
-Fout=1933.60 (A=004, B=151)
-Fout=1933.80 (A=005, B=151)
-Fout=1934.00 (A=006, B=151)
-Fout=1934.20 (A=007, B=151)
-Fout=1934.40 (A=008, B=151)
-Fout=1934.60 (A=009, B=151)
-Fout=1934.80 (A=010, B=151)
-Fout=1935.00 (A=011, B=151)
-Fout=1935.20 (A=012, B=151)
-Fout=1935.40 (A=013, B=151)
-Fout=1935.60 (A=014, B=151)
-Fout=1935.80 (A=015, B=151)
-Fout=1936.00 (A=016, B=151)
-Fout=1936.20 (A=017, B=151)
-Fout=1936.40 (A=018, B=151)
-Fout=1936.60 (A=019, B=151)
-Fout=1936.80 (A=020, B=151)
-Fout=1937.00 (A=021, B=151)
-Fout=1937.20 (A=022, B=151)
-Fout=1937.40 (A=023, B=151)
-Fout=1937.60 (A=024, B=151)
-Fout=1937.80 (A=025, B=151)
-Fout=1938.00 (A=026, B=151)
-Fout=1938.20 (A=027, B=151)
-Fout=1938.40 (A=028, B=151)
-Fout=1938.60 (A=029, B=151)
-Fout=1938.80 (A=030, B=151)
-Fout=1939.00 (A=031, B=151)
-Fout=1939.20 (A=032, B=151)
-Fout=1939.40 (A=033, B=151)
-Fout=1939.60 (A=034, B=151)
-Fout=1939.80 (A=035, B=151)
-Fout=1940.00 (A=036, B=151)
-Fout=1940.20 (A=037, B=151)
-Fout=1940.40 (A=038, B=151)
-Fout=1940.60 (A=039, B=151)
-Fout=1940.80 (A=040, B=151)
-Fout=1941.00 (A=041, B=151)
-Fout=1941.20 (A=042, B=151)
-Fout=1941.40 (A=043, B=151)
-Fout=1941.60 (A=044, B=151)
-Fout=1941.80 (A=045, B=151)
-Fout=1942.00 (A=046, B=151)
-Fout=1942.20 (A=047, B=151)
-Fout=1942.40 (A=048, B=151)
-Fout=1942.60 (A=049, B=151)
-Fout=1942.80 (A=050, B=151)
-Fout=1943.00 (A=051, B=151)
-Fout=1943.20 (A=052, B=151)
-Fout=1943.40 (A=053, B=151)
-Fout=1943.60 (A=054, B=151)
-Fout=1943.80 (A=055, B=151)
-Fout=1944.00 (A=056, B=151)
-Fout=1944.20 (A=057, B=151)
-Fout=1944.40 (A=058, B=151)
-Fout=1944.60 (A=059, B=151)
-Fout=1944.80 (A=060, B=151)
-Fout=1945.00 (A=061, B=151)
-Fout=1945.20 (A=062, B=151)
-Fout=1945.60 (A=000, B=152)
-Fout=1945.80 (A=001, B=152)
-Fout=1946.00 (A=002, B=152)
-Fout=1946.20 (A=003, B=152)
-Fout=1946.40 (A=004, B=152)
-Fout=1946.60 (A=005, B=152)
-Fout=1946.80 (A=006, B=152)
-Fout=1947.00 (A=007, B=152)
-Fout=1947.20 (A=008, B=152)
-Fout=1947.40 (A=009, B=152)
-Fout=1947.60 (A=010, B=152)
-Fout=1947.80 (A=011, B=152)
-Fout=1948.00 (A=012, B=152)
-Fout=1948.20 (A=013, B=152)
-Fout=1948.40 (A=014, B=152)
-Fout=1948.60 (A=015, B=152)
-Fout=1948.80 (A=016, B=152)
-Fout=1949.00 (A=017, B=152)
-Fout=1949.20 (A=018, B=152)
-Fout=1949.40 (A=019, B=152)
-Fout=1949.60 (A=020, B=152)
-Fout=1949.80 (A=021, B=152)
-Fout=1950.00 (A=022, B=152)
-Fout=1950.20 (A=023, B=152)
-Fout=1950.40 (A=024, B=152)
-Fout=1950.60 (A=025, B=152)
-Fout=1950.80 (A=026, B=152)
-Fout=1951.00 (A=027, B=152)
-Fout=1951.20 (A=028, B=152)
-Fout=1951.40 (A=029, B=152)
-Fout=1951.60 (A=030, B=152)
-Fout=1951.80 (A=031, B=152)
-Fout=1952.00 (A=032, B=152)
-Fout=1952.20 (A=033, B=152)
-Fout=1952.40 (A=034, B=152)
-Fout=1952.60 (A=035, B=152)
-Fout=1952.80 (A=036, B=152)
-Fout=1953.00 (A=037, B=152)
-Fout=1953.20 (A=038, B=152)
-Fout=1953.40 (A=039, B=152)
-Fout=1953.60 (A=040, B=152)
-Fout=1953.80 (A=041, B=152)
-Fout=1954.00 (A=042, B=152)
-Fout=1954.20 (A=043, B=152)
-Fout=1954.40 (A=044, B=152)
-Fout=1954.60 (A=045, B=152)
-Fout=1954.80 (A=046, B=152)
-Fout=1955.00 (A=047, B=152)
-Fout=1955.20 (A=048, B=152)
-Fout=1955.40 (A=049, B=152)
-Fout=1955.60 (A=050, B=152)
-Fout=1955.80 (A=051, B=152)
-Fout=1956.00 (A=052, B=152)
-Fout=1956.20 (A=053, B=152)
-Fout=1956.40 (A=054, B=152)
-Fout=1956.60 (A=055, B=152)
-Fout=1956.80 (A=056, B=152)
-Fout=1957.00 (A=057, B=152)
-Fout=1957.20 (A=058, B=152)
-Fout=1957.40 (A=059, B=152)
-Fout=1957.60 (A=060, B=152)
-Fout=1957.80 (A=061, B=152)
-Fout=1958.00 (A=062, B=152)
-Fout=1958.40 (A=000, B=153)
-Fout=1958.60 (A=001, B=153)
-Fout=1958.80 (A=002, B=153)
-Fout=1959.00 (A=003, B=153)
-Fout=1959.20 (A=004, B=153)
-Fout=1959.40 (A=005, B=153)
-Fout=1959.60 (A=006, B=153)
-Fout=1959.80 (A=007, B=153)
-Fout=1960.00 (A=008, B=153)
-Fout=1960.20 (A=009, B=153)
-Fout=1960.40 (A=010, B=153)
-Fout=1960.60 (A=011, B=153)
-Fout=1960.80 (A=012, B=153)
-Fout=1961.00 (A=013, B=153)
-Fout=1961.20 (A=014, B=153)
-Fout=1961.40 (A=015, B=153)
-Fout=1961.60 (A=016, B=153)
-Fout=1961.80 (A=017, B=153)
-Fout=1962.00 (A=018, B=153)
-Fout=1962.20 (A=019, B=153)
-Fout=1962.40 (A=020, B=153)
-Fout=1962.60 (A=021, B=153)
-Fout=1962.80 (A=022, B=153)
-Fout=1963.00 (A=023, B=153)
-Fout=1963.20 (A=024, B=153)
-Fout=1963.40 (A=025, B=153)
-Fout=1963.60 (A=026, B=153)
-Fout=1963.80 (A=027, B=153)
-Fout=1964.00 (A=028, B=153)
-Fout=1964.20 (A=029, B=153)
-Fout=1964.40 (A=030, B=153)
-Fout=1964.60 (A=031, B=153)
-Fout=1964.80 (A=032, B=153)
-Fout=1965.00 (A=033, B=153)
-Fout=1965.20 (A=034, B=153)
-Fout=1965.40 (A=035, B=153)
-Fout=1965.60 (A=036, B=153)
-Fout=1965.80 (A=037, B=153)
-Fout=1966.00 (A=038, B=153)
-Fout=1966.20 (A=039, B=153)
-Fout=1966.40 (A=040, B=153)
-Fout=1966.60 (A=041, B=153)
-Fout=1966.80 (A=042, B=153)
-Fout=1967.00 (A=043, B=153)
-Fout=1967.20 (A=044, B=153)
-Fout=1967.40 (A=045, B=153)
-Fout=1967.60 (A=046, B=153)
-Fout=1967.80 (A=047, B=153)
-Fout=1968.00 (A=048, B=153)
-Fout=1968.20 (A=049, B=153)
-Fout=1968.40 (A=050, B=153)
-Fout=1968.60 (A=051, B=153)
-Fout=1968.80 (A=052, B=153)
-Fout=1969.00 (A=053, B=153)
-Fout=1969.20 (A=054, B=153)
-Fout=1969.40 (A=055, B=153)
-Fout=1969.60 (A=056, B=153)
-Fout=1969.80 (A=057, B=153)
-Fout=1970.00 (A=058, B=153)
-Fout=1970.20 (A=059, B=153)
-Fout=1970.40 (A=060, B=153)
-Fout=1970.60 (A=061, B=153)
-Fout=1970.80 (A=062, B=153)
-Fout=1971.20 (A=000, B=154)
-Fout=1971.40 (A=001, B=154)
-Fout=1971.60 (A=002, B=154)
-Fout=1971.80 (A=003, B=154)
-Fout=1972.00 (A=004, B=154)
-Fout=1972.20 (A=005, B=154)
-Fout=1972.40 (A=006, B=154)
-Fout=1972.60 (A=007, B=154)
-Fout=1972.80 (A=008, B=154)
-Fout=1973.00 (A=009, B=154)
-Fout=1973.20 (A=010, B=154)
-Fout=1973.40 (A=011, B=154)
-Fout=1973.60 (A=012, B=154)
-Fout=1973.80 (A=013, B=154)
-Fout=1974.00 (A=014, B=154)
-Fout=1974.20 (A=015, B=154)
-Fout=1974.40 (A=016, B=154)
-Fout=1974.60 (A=017, B=154)
-Fout=1974.80 (A=018, B=154)
-Fout=1975.00 (A=019, B=154)
-Fout=1975.20 (A=020, B=154)
-Fout=1975.40 (A=021, B=154)
-Fout=1975.60 (A=022, B=154)
-Fout=1975.80 (A=023, B=154)
-Fout=1976.00 (A=024, B=154)
-Fout=1976.20 (A=025, B=154)
-Fout=1976.40 (A=026, B=154)
-Fout=1976.60 (A=027, B=154)
-Fout=1976.80 (A=028, B=154)
-Fout=1977.00 (A=029, B=154)
-Fout=1977.20 (A=030, B=154)
-Fout=1977.40 (A=031, B=154)
-Fout=1977.60 (A=032, B=154)
-Fout=1977.80 (A=033, B=154)
-Fout=1978.00 (A=034, B=154)
-Fout=1978.20 (A=035, B=154)
-Fout=1978.40 (A=036, B=154)
-Fout=1978.60 (A=037, B=154)
-Fout=1978.80 (A=038, B=154)
-Fout=1979.00 (A=039, B=154)
-Fout=1979.20 (A=040, B=154)
-Fout=1979.40 (A=041, B=154)
-Fout=1979.60 (A=042, B=154)
-Fout=1979.80 (A=043, B=154)
-Fout=1980.00 (A=044, B=154)
-Fout=1980.20 (A=045, B=154)
-Fout=1980.40 (A=046, B=154)
-Fout=1980.60 (A=047, B=154)
-Fout=1980.80 (A=048, B=154)
-Fout=1981.00 (A=049, B=154)
-Fout=1981.20 (A=050, B=154)
-Fout=1981.40 (A=051, B=154)
-Fout=1981.60 (A=052, B=154)
-Fout=1981.80 (A=053, B=154)
-Fout=1982.00 (A=054, B=154)
-Fout=1982.20 (A=055, B=154)
-Fout=1982.40 (A=056, B=154)
-Fout=1982.60 (A=057, B=154)
-Fout=1982.80 (A=058, B=154)
-Fout=1983.00 (A=059, B=154)
-Fout=1983.20 (A=060, B=154)
-Fout=1983.40 (A=061, B=154)
-Fout=1983.60 (A=062, B=154)
-Fout=1984.00 (A=000, B=155)
-Fout=1984.20 (A=001, B=155)
-Fout=1984.40 (A=002, B=155)
-Fout=1984.60 (A=003, B=155)
-Fout=1984.80 (A=004, B=155)
-Fout=1985.00 (A=005, B=155)
-Fout=1985.20 (A=006, B=155)
-Fout=1985.40 (A=007, B=155)
-Fout=1985.60 (A=008, B=155)
-Fout=1985.80 (A=009, B=155)
-Fout=1986.00 (A=010, B=155)
-Fout=1986.20 (A=011, B=155)
-Fout=1986.40 (A=012, B=155)
-Fout=1986.60 (A=013, B=155)
-Fout=1986.80 (A=014, B=155)
-Fout=1987.00 (A=015, B=155)
-Fout=1987.20 (A=016, B=155)
-Fout=1987.40 (A=017, B=155)
-Fout=1987.60 (A=018, B=155)
-Fout=1987.80 (A=019, B=155)
-Fout=1988.00 (A=020, B=155)
-Fout=1988.20 (A=021, B=155)
-Fout=1988.40 (A=022, B=155)
-Fout=1988.60 (A=023, B=155)
-Fout=1988.80 (A=024, B=155)
-Fout=1989.00 (A=025, B=155)
-Fout=1989.20 (A=026, B=155)
-Fout=1989.40 (A=027, B=155)
-Fout=1989.60 (A=028, B=155)
-Fout=1989.80 (A=029, B=155)
-Fout=1990.00 (A=030, B=155)
-Fout=1990.20 (A=031, B=155)
-Fout=1990.40 (A=032, B=155)
-Fout=1990.60 (A=033, B=155)
-Fout=1990.80 (A=034, B=155)
-Fout=1991.00 (A=035, B=155)
-Fout=1991.20 (A=036, B=155)
-Fout=1991.40 (A=037, B=155)
-Fout=1991.60 (A=038, B=155)
-Fout=1991.80 (A=039, B=155)
-Fout=1992.00 (A=040, B=155)
-Fout=1992.20 (A=041, B=155)
-Fout=1992.40 (A=042, B=155)
-Fout=1992.60 (A=043, B=155)
-Fout=1992.80 (A=044, B=155)
-Fout=1993.00 (A=045, B=155)
-Fout=1993.20 (A=046, B=155)
-Fout=1993.40 (A=047, B=155)
-Fout=1993.60 (A=048, B=155)
-Fout=1993.80 (A=049, B=155)
-Fout=1994.00 (A=050, B=155)
-Fout=1994.20 (A=051, B=155)
-Fout=1994.40 (A=052, B=155)
-Fout=1994.60 (A=053, B=155)
-Fout=1994.80 (A=054, B=155)
-Fout=1995.00 (A=055, B=155)
-Fout=1995.20 (A=056, B=155)
-Fout=1995.40 (A=057, B=155)
-Fout=1995.60 (A=058, B=155)
-Fout=1995.80 (A=059, B=155)
-Fout=1996.00 (A=060, B=155)
-Fout=1996.20 (A=061, B=155)
-Fout=1996.40 (A=062, B=155)
-======================================================================
-PLL Tx GSM850_1
-Fout=819.20 (A=000, B=128)
-Fout=819.30 (A=001, B=128)
-Fout=819.40 (A=002, B=128)
-Fout=819.50 (A=003, B=128)
-Fout=819.60 (A=004, B=128)
-Fout=819.70 (A=005, B=128)
-Fout=819.80 (A=006, B=128)
-Fout=819.90 (A=007, B=128)
-Fout=820.00 (A=008, B=128)
-Fout=820.10 (A=009, B=128)
-Fout=820.20 (A=010, B=128)
-Fout=820.30 (A=011, B=128)
-Fout=820.40 (A=012, B=128)
-Fout=820.50 (A=013, B=128)
-Fout=820.60 (A=014, B=128)
-Fout=820.70 (A=015, B=128)
-Fout=820.80 (A=016, B=128)
-Fout=820.90 (A=017, B=128)
-Fout=821.00 (A=018, B=128)
-Fout=821.10 (A=019, B=128)
-Fout=821.20 (A=020, B=128)
-Fout=821.30 (A=021, B=128)
-Fout=821.40 (A=022, B=128)
-Fout=821.50 (A=023, B=128)
-Fout=821.60 (A=024, B=128)
-Fout=821.70 (A=025, B=128)
-Fout=821.80 (A=026, B=128)
-Fout=821.90 (A=027, B=128)
-Fout=822.00 (A=028, B=128)
-Fout=822.10 (A=029, B=128)
-Fout=822.20 (A=030, B=128)
-Fout=822.30 (A=031, B=128)
-Fout=822.40 (A=032, B=128)
-Fout=822.50 (A=033, B=128)
-Fout=822.60 (A=034, B=128)
-Fout=822.70 (A=035, B=128)
-Fout=822.80 (A=036, B=128)
-Fout=822.90 (A=037, B=128)
-Fout=823.00 (A=038, B=128)
-Fout=823.10 (A=039, B=128)
-Fout=823.20 (A=040, B=128)
-Fout=823.30 (A=041, B=128)
-Fout=823.40 (A=042, B=128)
-Fout=823.50 (A=043, B=128)
-Fout=823.60 (A=044, B=128)
-Fout=823.70 (A=045, B=128)
-Fout=823.80 (A=046, B=128)
-Fout=823.90 (A=047, B=128)
-Fout=824.00 (A=048, B=128)
-Fout=824.10 (A=049, B=128)
-Fout=824.20 (A=050, B=128)
-Fout=824.30 (A=051, B=128)
-Fout=824.40 (A=052, B=128)
-Fout=824.50 (A=053, B=128)
-Fout=824.60 (A=054, B=128)
-Fout=824.70 (A=055, B=128)
-Fout=824.80 (A=056, B=128)
-Fout=824.90 (A=057, B=128)
-Fout=825.00 (A=058, B=128)
-Fout=825.10 (A=059, B=128)
-Fout=825.20 (A=060, B=128)
-Fout=825.30 (A=061, B=128)
-Fout=825.40 (A=062, B=128)
-Fout=825.60 (A=000, B=129)
-Fout=825.70 (A=001, B=129)
-Fout=825.80 (A=002, B=129)
-Fout=825.90 (A=003, B=129)
-Fout=826.00 (A=004, B=129)
-Fout=826.10 (A=005, B=129)
-Fout=826.20 (A=006, B=129)
-Fout=826.30 (A=007, B=129)
-Fout=826.40 (A=008, B=129)
-Fout=826.50 (A=009, B=129)
-Fout=826.60 (A=010, B=129)
-Fout=826.70 (A=011, B=129)
-Fout=826.80 (A=012, B=129)
-Fout=826.90 (A=013, B=129)
-Fout=827.00 (A=014, B=129)
-Fout=827.10 (A=015, B=129)
-Fout=827.20 (A=016, B=129)
-Fout=827.30 (A=017, B=129)
-Fout=827.40 (A=018, B=129)
-Fout=827.50 (A=019, B=129)
-Fout=827.60 (A=020, B=129)
-Fout=827.70 (A=021, B=129)
-Fout=827.80 (A=022, B=129)
-Fout=827.90 (A=023, B=129)
-Fout=828.00 (A=024, B=129)
-Fout=828.10 (A=025, B=129)
-Fout=828.20 (A=026, B=129)
-Fout=828.30 (A=027, B=129)
-Fout=828.40 (A=028, B=129)
-Fout=828.50 (A=029, B=129)
-Fout=828.60 (A=030, B=129)
-Fout=828.70 (A=031, B=129)
-Fout=828.80 (A=032, B=129)
-Fout=828.90 (A=033, B=129)
-Fout=829.00 (A=034, B=129)
-Fout=829.10 (A=035, B=129)
-Fout=829.20 (A=036, B=129)
-Fout=829.30 (A=037, B=129)
-Fout=829.40 (A=038, B=129)
-Fout=829.50 (A=039, B=129)
-Fout=829.60 (A=040, B=129)
-Fout=829.70 (A=041, B=129)
-Fout=829.80 (A=042, B=129)
-Fout=829.90 (A=043, B=129)
-Fout=830.00 (A=044, B=129)
-Fout=830.10 (A=045, B=129)
-Fout=830.20 (A=046, B=129)
-Fout=830.30 (A=047, B=129)
-Fout=830.40 (A=048, B=129)
-Fout=830.50 (A=049, B=129)
-Fout=830.60 (A=050, B=129)
-Fout=830.70 (A=051, B=129)
-Fout=830.80 (A=052, B=129)
-Fout=830.90 (A=053, B=129)
-Fout=831.00 (A=054, B=129)
-Fout=831.10 (A=055, B=129)
-Fout=831.20 (A=056, B=129)
-Fout=831.30 (A=057, B=129)
-Fout=831.40 (A=058, B=129)
-Fout=831.50 (A=059, B=129)
-Fout=831.60 (A=060, B=129)
-Fout=831.70 (A=061, B=129)
-Fout=831.80 (A=062, B=129)
-Fout=832.00 (A=000, B=130)
-Fout=832.10 (A=001, B=130)
-Fout=832.20 (A=002, B=130)
-Fout=832.30 (A=003, B=130)
-Fout=832.40 (A=004, B=130)
-Fout=832.50 (A=005, B=130)
-Fout=832.60 (A=006, B=130)
-Fout=832.70 (A=007, B=130)
-Fout=832.80 (A=008, B=130)
-Fout=832.90 (A=009, B=130)
-Fout=833.00 (A=010, B=130)
-Fout=833.10 (A=011, B=130)
-Fout=833.20 (A=012, B=130)
-Fout=833.30 (A=013, B=130)
-Fout=833.40 (A=014, B=130)
-Fout=833.50 (A=015, B=130)
-Fout=833.60 (A=016, B=130)
-Fout=833.70 (A=017, B=130)
-Fout=833.80 (A=018, B=130)
-Fout=833.90 (A=019, B=130)
-Fout=834.00 (A=020, B=130)
-Fout=834.10 (A=021, B=130)
-Fout=834.20 (A=022, B=130)
-Fout=834.30 (A=023, B=130)
-Fout=834.40 (A=024, B=130)
-Fout=834.50 (A=025, B=130)
-Fout=834.60 (A=026, B=130)
-Fout=834.70 (A=027, B=130)
-Fout=834.80 (A=028, B=130)
-Fout=834.90 (A=029, B=130)
-Fout=835.00 (A=030, B=130)
-Fout=835.10 (A=031, B=130)
-Fout=835.20 (A=032, B=130)
-Fout=835.30 (A=033, B=130)
-Fout=835.40 (A=034, B=130)
-Fout=835.50 (A=035, B=130)
-Fout=835.60 (A=036, B=130)
-Fout=835.70 (A=037, B=130)
-Fout=835.80 (A=038, B=130)
-Fout=835.90 (A=039, B=130)
-Fout=836.00 (A=040, B=130)
-Fout=836.10 (A=041, B=130)
-Fout=836.20 (A=042, B=130)
-Fout=836.30 (A=043, B=130)
-Fout=836.40 (A=044, B=130)
-Fout=836.50 (A=045, B=130)
-Fout=836.60 (A=046, B=130)
-Fout=836.70 (A=047, B=130)
-Fout=836.80 (A=048, B=130)
-Fout=836.90 (A=049, B=130)
-Fout=837.00 (A=050, B=130)
-Fout=837.10 (A=051, B=130)
-Fout=837.20 (A=052, B=130)
-Fout=837.30 (A=053, B=130)
-Fout=837.40 (A=054, B=130)
-Fout=837.50 (A=055, B=130)
-Fout=837.60 (A=056, B=130)
-Fout=837.70 (A=057, B=130)
-Fout=837.80 (A=058, B=130)
-Fout=837.90 (A=059, B=130)
-Fout=838.00 (A=060, B=130)
-Fout=838.10 (A=061, B=130)
-Fout=838.20 (A=062, B=130)
-======================================================================
-PLL Tx GSM850_2
-Fout=832.00 (A=000, B=065)
-Fout=832.20 (A=001, B=065)
-Fout=832.40 (A=002, B=065)
-Fout=832.60 (A=003, B=065)
-Fout=832.80 (A=004, B=065)
-Fout=833.00 (A=005, B=065)
-Fout=833.20 (A=006, B=065)
-Fout=833.40 (A=007, B=065)
-Fout=833.60 (A=008, B=065)
-Fout=833.80 (A=009, B=065)
-Fout=834.00 (A=010, B=065)
-Fout=834.20 (A=011, B=065)
-Fout=834.40 (A=012, B=065)
-Fout=834.60 (A=013, B=065)
-Fout=834.80 (A=014, B=065)
-Fout=835.00 (A=015, B=065)
-Fout=835.20 (A=016, B=065)
-Fout=835.40 (A=017, B=065)
-Fout=835.60 (A=018, B=065)
-Fout=835.80 (A=019, B=065)
-Fout=836.00 (A=020, B=065)
-Fout=836.20 (A=021, B=065)
-Fout=836.40 (A=022, B=065)
-Fout=836.60 (A=023, B=065)
-Fout=836.80 (A=024, B=065)
-Fout=837.00 (A=025, B=065)
-Fout=837.20 (A=026, B=065)
-Fout=837.40 (A=027, B=065)
-Fout=837.60 (A=028, B=065)
-Fout=837.80 (A=029, B=065)
-Fout=838.00 (A=030, B=065)
-Fout=838.20 (A=031, B=065)
-Fout=838.40 (A=032, B=065)
-Fout=838.60 (A=033, B=065)
-Fout=838.80 (A=034, B=065)
-Fout=839.00 (A=035, B=065)
-Fout=839.20 (A=036, B=065)
-Fout=839.40 (A=037, B=065)
-Fout=839.60 (A=038, B=065)
-Fout=839.80 (A=039, B=065)
-Fout=840.00 (A=040, B=065)
-Fout=840.20 (A=041, B=065)
-Fout=840.40 (A=042, B=065)
-Fout=840.60 (A=043, B=065)
-Fout=840.80 (A=044, B=065)
-Fout=841.00 (A=045, B=065)
-Fout=841.20 (A=046, B=065)
-Fout=841.40 (A=047, B=065)
-Fout=841.60 (A=048, B=065)
-Fout=841.80 (A=049, B=065)
-Fout=842.00 (A=050, B=065)
-Fout=842.20 (A=051, B=065)
-Fout=842.40 (A=052, B=065)
-Fout=842.60 (A=053, B=065)
-Fout=842.80 (A=054, B=065)
-Fout=843.00 (A=055, B=065)
-Fout=843.20 (A=056, B=065)
-Fout=843.40 (A=057, B=065)
-Fout=843.60 (A=058, B=065)
-Fout=843.80 (A=059, B=065)
-Fout=844.00 (A=060, B=065)
-Fout=844.20 (A=061, B=065)
-Fout=844.40 (A=062, B=065)
-Fout=844.60 (A=063, B=065)
-Fout=844.80 (A=000, B=066)
-Fout=845.00 (A=001, B=066)
-Fout=845.20 (A=002, B=066)
-Fout=845.40 (A=003, B=066)
-Fout=845.60 (A=004, B=066)
-Fout=845.80 (A=005, B=066)
-Fout=846.00 (A=006, B=066)
-Fout=846.20 (A=007, B=066)
-Fout=846.40 (A=008, B=066)
-Fout=846.60 (A=009, B=066)
-Fout=846.80 (A=010, B=066)
-Fout=847.00 (A=011, B=066)
-Fout=847.20 (A=012, B=066)
-Fout=847.40 (A=013, B=066)
-Fout=847.60 (A=014, B=066)
-Fout=847.80 (A=015, B=066)
-Fout=848.00 (A=016, B=066)
-Fout=848.20 (A=017, B=066)
-Fout=848.40 (A=018, B=066)
-Fout=848.60 (A=019, B=066)
-Fout=848.80 (A=020, B=066)
-Fout=849.00 (A=021, B=066)
-Fout=849.20 (A=022, B=066)
-Fout=849.40 (A=023, B=066)
-Fout=849.60 (A=024, B=066)
-Fout=849.80 (A=025, B=066)
-Fout=850.00 (A=026, B=066)
-Fout=850.20 (A=027, B=066)
-Fout=850.40 (A=028, B=066)
-Fout=850.60 (A=029, B=066)
-Fout=850.80 (A=030, B=066)
-Fout=851.00 (A=031, B=066)
-Fout=851.20 (A=032, B=066)
-Fout=851.40 (A=033, B=066)
-Fout=851.60 (A=034, B=066)
-Fout=851.80 (A=035, B=066)
-Fout=852.00 (A=036, B=066)
-Fout=852.20 (A=037, B=066)
-Fout=852.40 (A=038, B=066)
-Fout=852.60 (A=039, B=066)
-Fout=852.80 (A=040, B=066)
-Fout=853.00 (A=041, B=066)
-Fout=853.20 (A=042, B=066)
-Fout=853.40 (A=043, B=066)
-Fout=853.60 (A=044, B=066)
-Fout=853.80 (A=045, B=066)
-Fout=854.00 (A=046, B=066)
-Fout=854.20 (A=047, B=066)
-Fout=854.40 (A=048, B=066)
-Fout=854.60 (A=049, B=066)
-Fout=854.80 (A=050, B=066)
-Fout=855.00 (A=051, B=066)
-Fout=855.20 (A=052, B=066)
-Fout=855.40 (A=053, B=066)
-Fout=855.60 (A=054, B=066)
-Fout=855.80 (A=055, B=066)
-Fout=856.00 (A=056, B=066)
-Fout=856.20 (A=057, B=066)
-Fout=856.40 (A=058, B=066)
-Fout=856.60 (A=059, B=066)
-Fout=856.80 (A=060, B=066)
-Fout=857.00 (A=061, B=066)
-Fout=857.20 (A=062, B=066)
-Fout=857.40 (A=063, B=066)
-======================================================================
-PLL Tx GSM900
-Fout=870.40 (A=000, B=068)
-Fout=870.60 (A=001, B=068)
-Fout=870.80 (A=002, B=068)
-Fout=871.00 (A=003, B=068)
-Fout=871.20 (A=004, B=068)
-Fout=871.40 (A=005, B=068)
-Fout=871.60 (A=006, B=068)
-Fout=871.80 (A=007, B=068)
-Fout=872.00 (A=008, B=068)
-Fout=872.20 (A=009, B=068)
-Fout=872.40 (A=010, B=068)
-Fout=872.60 (A=011, B=068)
-Fout=872.80 (A=012, B=068)
-Fout=873.00 (A=013, B=068)
-Fout=873.20 (A=014, B=068)
-Fout=873.40 (A=015, B=068)
-Fout=873.60 (A=016, B=068)
-Fout=873.80 (A=017, B=068)
-Fout=874.00 (A=018, B=068)
-Fout=874.20 (A=019, B=068)
-Fout=874.40 (A=020, B=068)
-Fout=874.60 (A=021, B=068)
-Fout=874.80 (A=022, B=068)
-Fout=875.00 (A=023, B=068)
-Fout=875.20 (A=024, B=068)
-Fout=875.40 (A=025, B=068)
-Fout=875.60 (A=026, B=068)
-Fout=875.80 (A=027, B=068)
-Fout=876.00 (A=028, B=068)
-Fout=876.20 (A=029, B=068)
-Fout=876.40 (A=030, B=068)
-Fout=876.60 (A=031, B=068)
-Fout=876.80 (A=032, B=068)
-Fout=877.00 (A=033, B=068)
-Fout=877.20 (A=034, B=068)
-Fout=877.40 (A=035, B=068)
-Fout=877.60 (A=036, B=068)
-Fout=877.80 (A=037, B=068)
-Fout=878.00 (A=038, B=068)
-Fout=878.20 (A=039, B=068)
-Fout=878.40 (A=040, B=068)
-Fout=878.60 (A=041, B=068)
-Fout=878.80 (A=042, B=068)
-Fout=879.00 (A=043, B=068)
-Fout=879.20 (A=044, B=068)
-Fout=879.40 (A=045, B=068)
-Fout=879.60 (A=046, B=068)
-Fout=879.80 (A=047, B=068)
-Fout=880.00 (A=048, B=068)
-Fout=880.20 (A=049, B=068)
-Fout=880.40 (A=050, B=068)
-Fout=880.60 (A=051, B=068)
-Fout=880.80 (A=052, B=068)
-Fout=881.00 (A=053, B=068)
-Fout=881.20 (A=054, B=068)
-Fout=881.40 (A=055, B=068)
-Fout=881.60 (A=056, B=068)
-Fout=881.80 (A=057, B=068)
-Fout=882.00 (A=058, B=068)
-Fout=882.20 (A=059, B=068)
-Fout=882.40 (A=060, B=068)
-Fout=882.60 (A=061, B=068)
-Fout=882.80 (A=062, B=068)
-Fout=883.00 (A=063, B=068)
-Fout=883.20 (A=000, B=069)
-Fout=883.40 (A=001, B=069)
-Fout=883.60 (A=002, B=069)
-Fout=883.80 (A=003, B=069)
-Fout=884.00 (A=004, B=069)
-Fout=884.20 (A=005, B=069)
-Fout=884.40 (A=006, B=069)
-Fout=884.60 (A=007, B=069)
-Fout=884.80 (A=008, B=069)
-Fout=885.00 (A=009, B=069)
-Fout=885.20 (A=010, B=069)
-Fout=885.40 (A=011, B=069)
-Fout=885.60 (A=012, B=069)
-Fout=885.80 (A=013, B=069)
-Fout=886.00 (A=014, B=069)
-Fout=886.20 (A=015, B=069)
-Fout=886.40 (A=016, B=069)
-Fout=886.60 (A=017, B=069)
-Fout=886.80 (A=018, B=069)
-Fout=887.00 (A=019, B=069)
-Fout=887.20 (A=020, B=069)
-Fout=887.40 (A=021, B=069)
-Fout=887.60 (A=022, B=069)
-Fout=887.80 (A=023, B=069)
-Fout=888.00 (A=024, B=069)
-Fout=888.20 (A=025, B=069)
-Fout=888.40 (A=026, B=069)
-Fout=888.60 (A=027, B=069)
-Fout=888.80 (A=028, B=069)
-Fout=889.00 (A=029, B=069)
-Fout=889.20 (A=030, B=069)
-Fout=889.40 (A=031, B=069)
-Fout=889.60 (A=032, B=069)
-Fout=889.80 (A=033, B=069)
-Fout=890.00 (A=034, B=069)
-Fout=890.20 (A=035, B=069)
-Fout=890.40 (A=036, B=069)
-Fout=890.60 (A=037, B=069)
-Fout=890.80 (A=038, B=069)
-Fout=891.00 (A=039, B=069)
-Fout=891.20 (A=040, B=069)
-Fout=891.40 (A=041, B=069)
-Fout=891.60 (A=042, B=069)
-Fout=891.80 (A=043, B=069)
-Fout=892.00 (A=044, B=069)
-Fout=892.20 (A=045, B=069)
-Fout=892.40 (A=046, B=069)
-Fout=892.60 (A=047, B=069)
-Fout=892.80 (A=048, B=069)
-Fout=893.00 (A=049, B=069)
-Fout=893.20 (A=050, B=069)
-Fout=893.40 (A=051, B=069)
-Fout=893.60 (A=052, B=069)
-Fout=893.80 (A=053, B=069)
-Fout=894.00 (A=054, B=069)
-Fout=894.20 (A=055, B=069)
-Fout=894.40 (A=056, B=069)
-Fout=894.60 (A=057, B=069)
-Fout=894.80 (A=058, B=069)
-Fout=895.00 (A=059, B=069)
-Fout=895.20 (A=060, B=069)
-Fout=895.40 (A=061, B=069)
-Fout=895.60 (A=062, B=069)
-Fout=895.80 (A=063, B=069)
-Fout=896.00 (A=000, B=070)
-Fout=896.20 (A=001, B=070)
-Fout=896.40 (A=002, B=070)
-Fout=896.60 (A=003, B=070)
-Fout=896.80 (A=004, B=070)
-Fout=897.00 (A=005, B=070)
-Fout=897.20 (A=006, B=070)
-Fout=897.40 (A=007, B=070)
-Fout=897.60 (A=008, B=070)
-Fout=897.80 (A=009, B=070)
-Fout=898.00 (A=010, B=070)
-Fout=898.20 (A=011, B=070)
-Fout=898.40 (A=012, B=070)
-Fout=898.60 (A=013, B=070)
-Fout=898.80 (A=014, B=070)
-Fout=899.00 (A=015, B=070)
-Fout=899.20 (A=016, B=070)
-Fout=899.40 (A=017, B=070)
-Fout=899.60 (A=018, B=070)
-Fout=899.80 (A=019, B=070)
-Fout=900.00 (A=020, B=070)
-Fout=900.20 (A=021, B=070)
-Fout=900.40 (A=022, B=070)
-Fout=900.60 (A=023, B=070)
-Fout=900.80 (A=024, B=070)
-Fout=901.00 (A=025, B=070)
-Fout=901.20 (A=026, B=070)
-Fout=901.40 (A=027, B=070)
-Fout=901.60 (A=028, B=070)
-Fout=901.80 (A=029, B=070)
-Fout=902.00 (A=030, B=070)
-Fout=902.20 (A=031, B=070)
-Fout=902.40 (A=032, B=070)
-Fout=902.60 (A=033, B=070)
-Fout=902.80 (A=034, B=070)
-Fout=903.00 (A=035, B=070)
-Fout=903.20 (A=036, B=070)
-Fout=903.40 (A=037, B=070)
-Fout=903.60 (A=038, B=070)
-Fout=903.80 (A=039, B=070)
-Fout=904.00 (A=040, B=070)
-Fout=904.20 (A=041, B=070)
-Fout=904.40 (A=042, B=070)
-Fout=904.60 (A=043, B=070)
-Fout=904.80 (A=044, B=070)
-Fout=905.00 (A=045, B=070)
-Fout=905.20 (A=046, B=070)
-Fout=905.40 (A=047, B=070)
-Fout=905.60 (A=048, B=070)
-Fout=905.80 (A=049, B=070)
-Fout=906.00 (A=050, B=070)
-Fout=906.20 (A=051, B=070)
-Fout=906.40 (A=052, B=070)
-Fout=906.60 (A=053, B=070)
-Fout=906.80 (A=054, B=070)
-Fout=907.00 (A=055, B=070)
-Fout=907.20 (A=056, B=070)
-Fout=907.40 (A=057, B=070)
-Fout=907.60 (A=058, B=070)
-Fout=907.80 (A=059, B=070)
-Fout=908.00 (A=060, B=070)
-Fout=908.20 (A=061, B=070)
-Fout=908.40 (A=062, B=070)
-Fout=908.60 (A=063, B=070)
-Fout=908.80 (A=000, B=071)
-Fout=909.00 (A=001, B=071)
-Fout=909.20 (A=002, B=071)
-Fout=909.40 (A=003, B=071)
-Fout=909.60 (A=004, B=071)
-Fout=909.80 (A=005, B=071)
-Fout=910.00 (A=006, B=071)
-Fout=910.20 (A=007, B=071)
-Fout=910.40 (A=008, B=071)
-Fout=910.60 (A=009, B=071)
-Fout=910.80 (A=010, B=071)
-Fout=911.00 (A=011, B=071)
-Fout=911.20 (A=012, B=071)
-Fout=911.40 (A=013, B=071)
-Fout=911.60 (A=014, B=071)
-Fout=911.80 (A=015, B=071)
-Fout=912.00 (A=016, B=071)
-Fout=912.20 (A=017, B=071)
-Fout=912.40 (A=018, B=071)
-Fout=912.60 (A=019, B=071)
-Fout=912.80 (A=020, B=071)
-Fout=913.00 (A=021, B=071)
-Fout=913.20 (A=022, B=071)
-Fout=913.40 (A=023, B=071)
-Fout=913.60 (A=024, B=071)
-Fout=913.80 (A=025, B=071)
-Fout=914.00 (A=026, B=071)
-Fout=914.20 (A=027, B=071)
-Fout=914.40 (A=028, B=071)
-Fout=914.60 (A=029, B=071)
-Fout=914.80 (A=030, B=071)
-Fout=915.00 (A=031, B=071)
-Fout=915.20 (A=032, B=071)
-Fout=915.40 (A=033, B=071)
-Fout=915.60 (A=034, B=071)
-Fout=915.80 (A=035, B=071)
-Fout=916.00 (A=036, B=071)
-Fout=916.20 (A=037, B=071)
-Fout=916.40 (A=038, B=071)
-Fout=916.60 (A=039, B=071)
-Fout=916.80 (A=040, B=071)
-Fout=917.00 (A=041, B=071)
-Fout=917.20 (A=042, B=071)
-Fout=917.40 (A=043, B=071)
-Fout=917.60 (A=044, B=071)
-Fout=917.80 (A=045, B=071)
-Fout=918.00 (A=046, B=071)
-Fout=918.20 (A=047, B=071)
-Fout=918.40 (A=048, B=071)
-Fout=918.60 (A=049, B=071)
-Fout=918.80 (A=050, B=071)
-Fout=919.00 (A=051, B=071)
-Fout=919.20 (A=052, B=071)
-Fout=919.40 (A=053, B=071)
-Fout=919.60 (A=054, B=071)
-Fout=919.80 (A=055, B=071)
-Fout=920.00 (A=056, B=071)
-Fout=920.20 (A=057, B=071)
-Fout=920.40 (A=058, B=071)
-Fout=920.60 (A=059, B=071)
-Fout=920.80 (A=060, B=071)
-Fout=921.00 (A=061, B=071)
-Fout=921.20 (A=062, B=071)
-Fout=921.40 (A=063, B=071)
-======================================================================
-PLL Tx GSM1800/1900
-Fout=1702.40 (A=000, B=133)
-Fout=1702.60 (A=001, B=133)
-Fout=1702.80 (A=002, B=133)
-Fout=1703.00 (A=003, B=133)
-Fout=1703.20 (A=004, B=133)
-Fout=1703.40 (A=005, B=133)
-Fout=1703.60 (A=006, B=133)
-Fout=1703.80 (A=007, B=133)
-Fout=1704.00 (A=008, B=133)
-Fout=1704.20 (A=009, B=133)
-Fout=1704.40 (A=010, B=133)
-Fout=1704.60 (A=011, B=133)
-Fout=1704.80 (A=012, B=133)
-Fout=1705.00 (A=013, B=133)
-Fout=1705.20 (A=014, B=133)
-Fout=1705.40 (A=015, B=133)
-Fout=1705.60 (A=016, B=133)
-Fout=1705.80 (A=017, B=133)
-Fout=1706.00 (A=018, B=133)
-Fout=1706.20 (A=019, B=133)
-Fout=1706.40 (A=020, B=133)
-Fout=1706.60 (A=021, B=133)
-Fout=1706.80 (A=022, B=133)
-Fout=1707.00 (A=023, B=133)
-Fout=1707.20 (A=024, B=133)
-Fout=1707.40 (A=025, B=133)
-Fout=1707.60 (A=026, B=133)
-Fout=1707.80 (A=027, B=133)
-Fout=1708.00 (A=028, B=133)
-Fout=1708.20 (A=029, B=133)
-Fout=1708.40 (A=030, B=133)
-Fout=1708.60 (A=031, B=133)
-Fout=1708.80 (A=032, B=133)
-Fout=1709.00 (A=033, B=133)
-Fout=1709.20 (A=034, B=133)
-Fout=1709.40 (A=035, B=133)
-Fout=1709.60 (A=036, B=133)
-Fout=1709.80 (A=037, B=133)
-Fout=1710.00 (A=038, B=133)
-Fout=1710.20 (A=039, B=133)
-Fout=1710.40 (A=040, B=133)
-Fout=1710.60 (A=041, B=133)
-Fout=1710.80 (A=042, B=133)
-Fout=1711.00 (A=043, B=133)
-Fout=1711.20 (A=044, B=133)
-Fout=1711.40 (A=045, B=133)
-Fout=1711.60 (A=046, B=133)
-Fout=1711.80 (A=047, B=133)
-Fout=1712.00 (A=048, B=133)
-Fout=1712.20 (A=049, B=133)
-Fout=1712.40 (A=050, B=133)
-Fout=1712.60 (A=051, B=133)
-Fout=1712.80 (A=052, B=133)
-Fout=1713.00 (A=053, B=133)
-Fout=1713.20 (A=054, B=133)
-Fout=1713.40 (A=055, B=133)
-Fout=1713.60 (A=056, B=133)
-Fout=1713.80 (A=057, B=133)
-Fout=1714.00 (A=058, B=133)
-Fout=1714.20 (A=059, B=133)
-Fout=1714.40 (A=060, B=133)
-Fout=1714.60 (A=061, B=133)
-Fout=1714.80 (A=062, B=133)
-Fout=1715.00 (A=063, B=133)
-Fout=1715.20 (A=000, B=134)
-Fout=1715.40 (A=001, B=134)
-Fout=1715.60 (A=002, B=134)
-Fout=1715.80 (A=003, B=134)
-Fout=1716.00 (A=004, B=134)
-Fout=1716.20 (A=005, B=134)
-Fout=1716.40 (A=006, B=134)
-Fout=1716.60 (A=007, B=134)
-Fout=1716.80 (A=008, B=134)
-Fout=1717.00 (A=009, B=134)
-Fout=1717.20 (A=010, B=134)
-Fout=1717.40 (A=011, B=134)
-Fout=1717.60 (A=012, B=134)
-Fout=1717.80 (A=013, B=134)
-Fout=1718.00 (A=014, B=134)
-Fout=1718.20 (A=015, B=134)
-Fout=1718.40 (A=016, B=134)
-Fout=1718.60 (A=017, B=134)
-Fout=1718.80 (A=018, B=134)
-Fout=1719.00 (A=019, B=134)
-Fout=1719.20 (A=020, B=134)
-Fout=1719.40 (A=021, B=134)
-Fout=1719.60 (A=022, B=134)
-Fout=1719.80 (A=023, B=134)
-Fout=1720.00 (A=024, B=134)
-Fout=1720.20 (A=025, B=134)
-Fout=1720.40 (A=026, B=134)
-Fout=1720.60 (A=027, B=134)
-Fout=1720.80 (A=028, B=134)
-Fout=1721.00 (A=029, B=134)
-Fout=1721.20 (A=030, B=134)
-Fout=1721.40 (A=031, B=134)
-Fout=1721.60 (A=032, B=134)
-Fout=1721.80 (A=033, B=134)
-Fout=1722.00 (A=034, B=134)
-Fout=1722.20 (A=035, B=134)
-Fout=1722.40 (A=036, B=134)
-Fout=1722.60 (A=037, B=134)
-Fout=1722.80 (A=038, B=134)
-Fout=1723.00 (A=039, B=134)
-Fout=1723.20 (A=040, B=134)
-Fout=1723.40 (A=041, B=134)
-Fout=1723.60 (A=042, B=134)
-Fout=1723.80 (A=043, B=134)
-Fout=1724.00 (A=044, B=134)
-Fout=1724.20 (A=045, B=134)
-Fout=1724.40 (A=046, B=134)
-Fout=1724.60 (A=047, B=134)
-Fout=1724.80 (A=048, B=134)
-Fout=1725.00 (A=049, B=134)
-Fout=1725.20 (A=050, B=134)
-Fout=1725.40 (A=051, B=134)
-Fout=1725.60 (A=052, B=134)
-Fout=1725.80 (A=053, B=134)
-Fout=1726.00 (A=054, B=134)
-Fout=1726.20 (A=055, B=134)
-Fout=1726.40 (A=056, B=134)
-Fout=1726.60 (A=057, B=134)
-Fout=1726.80 (A=058, B=134)
-Fout=1727.00 (A=059, B=134)
-Fout=1727.20 (A=060, B=134)
-Fout=1727.40 (A=061, B=134)
-Fout=1727.60 (A=062, B=134)
-Fout=1727.80 (A=063, B=134)
-Fout=1728.00 (A=000, B=135)
-Fout=1728.20 (A=001, B=135)
-Fout=1728.40 (A=002, B=135)
-Fout=1728.60 (A=003, B=135)
-Fout=1728.80 (A=004, B=135)
-Fout=1729.00 (A=005, B=135)
-Fout=1729.20 (A=006, B=135)
-Fout=1729.40 (A=007, B=135)
-Fout=1729.60 (A=008, B=135)
-Fout=1729.80 (A=009, B=135)
-Fout=1730.00 (A=010, B=135)
-Fout=1730.20 (A=011, B=135)
-Fout=1730.40 (A=012, B=135)
-Fout=1730.60 (A=013, B=135)
-Fout=1730.80 (A=014, B=135)
-Fout=1731.00 (A=015, B=135)
-Fout=1731.20 (A=016, B=135)
-Fout=1731.40 (A=017, B=135)
-Fout=1731.60 (A=018, B=135)
-Fout=1731.80 (A=019, B=135)
-Fout=1732.00 (A=020, B=135)
-Fout=1732.20 (A=021, B=135)
-Fout=1732.40 (A=022, B=135)
-Fout=1732.60 (A=023, B=135)
-Fout=1732.80 (A=024, B=135)
-Fout=1733.00 (A=025, B=135)
-Fout=1733.20 (A=026, B=135)
-Fout=1733.40 (A=027, B=135)
-Fout=1733.60 (A=028, B=135)
-Fout=1733.80 (A=029, B=135)
-Fout=1734.00 (A=030, B=135)
-Fout=1734.20 (A=031, B=135)
-Fout=1734.40 (A=032, B=135)
-Fout=1734.60 (A=033, B=135)
-Fout=1734.80 (A=034, B=135)
-Fout=1735.00 (A=035, B=135)
-Fout=1735.20 (A=036, B=135)
-Fout=1735.40 (A=037, B=135)
-Fout=1735.60 (A=038, B=135)
-Fout=1735.80 (A=039, B=135)
-Fout=1736.00 (A=040, B=135)
-Fout=1736.20 (A=041, B=135)
-Fout=1736.40 (A=042, B=135)
-Fout=1736.60 (A=043, B=135)
-Fout=1736.80 (A=044, B=135)
-Fout=1737.00 (A=045, B=135)
-Fout=1737.20 (A=046, B=135)
-Fout=1737.40 (A=047, B=135)
-Fout=1737.60 (A=048, B=135)
-Fout=1737.80 (A=049, B=135)
-Fout=1738.00 (A=050, B=135)
-Fout=1738.20 (A=051, B=135)
-Fout=1738.40 (A=052, B=135)
-Fout=1738.60 (A=053, B=135)
-Fout=1738.80 (A=054, B=135)
-Fout=1739.00 (A=055, B=135)
-Fout=1739.20 (A=056, B=135)
-Fout=1739.40 (A=057, B=135)
-Fout=1739.60 (A=058, B=135)
-Fout=1739.80 (A=059, B=135)
-Fout=1740.00 (A=060, B=135)
-Fout=1740.20 (A=061, B=135)
-Fout=1740.40 (A=062, B=135)
-Fout=1740.60 (A=063, B=135)
-Fout=1740.80 (A=000, B=136)
-Fout=1741.00 (A=001, B=136)
-Fout=1741.20 (A=002, B=136)
-Fout=1741.40 (A=003, B=136)
-Fout=1741.60 (A=004, B=136)
-Fout=1741.80 (A=005, B=136)
-Fout=1742.00 (A=006, B=136)
-Fout=1742.20 (A=007, B=136)
-Fout=1742.40 (A=008, B=136)
-Fout=1742.60 (A=009, B=136)
-Fout=1742.80 (A=010, B=136)
-Fout=1743.00 (A=011, B=136)
-Fout=1743.20 (A=012, B=136)
-Fout=1743.40 (A=013, B=136)
-Fout=1743.60 (A=014, B=136)
-Fout=1743.80 (A=015, B=136)
-Fout=1744.00 (A=016, B=136)
-Fout=1744.20 (A=017, B=136)
-Fout=1744.40 (A=018, B=136)
-Fout=1744.60 (A=019, B=136)
-Fout=1744.80 (A=020, B=136)
-Fout=1745.00 (A=021, B=136)
-Fout=1745.20 (A=022, B=136)
-Fout=1745.40 (A=023, B=136)
-Fout=1745.60 (A=024, B=136)
-Fout=1745.80 (A=025, B=136)
-Fout=1746.00 (A=026, B=136)
-Fout=1746.20 (A=027, B=136)
-Fout=1746.40 (A=028, B=136)
-Fout=1746.60 (A=029, B=136)
-Fout=1746.80 (A=030, B=136)
-Fout=1747.00 (A=031, B=136)
-Fout=1747.20 (A=032, B=136)
-Fout=1747.40 (A=033, B=136)
-Fout=1747.60 (A=034, B=136)
-Fout=1747.80 (A=035, B=136)
-Fout=1748.00 (A=036, B=136)
-Fout=1748.20 (A=037, B=136)
-Fout=1748.40 (A=038, B=136)
-Fout=1748.60 (A=039, B=136)
-Fout=1748.80 (A=040, B=136)
-Fout=1749.00 (A=041, B=136)
-Fout=1749.20 (A=042, B=136)
-Fout=1749.40 (A=043, B=136)
-Fout=1749.60 (A=044, B=136)
-Fout=1749.80 (A=045, B=136)
-Fout=1750.00 (A=046, B=136)
-Fout=1750.20 (A=047, B=136)
-Fout=1750.40 (A=048, B=136)
-Fout=1750.60 (A=049, B=136)
-Fout=1750.80 (A=050, B=136)
-Fout=1751.00 (A=051, B=136)
-Fout=1751.20 (A=052, B=136)
-Fout=1751.40 (A=053, B=136)
-Fout=1751.60 (A=054, B=136)
-Fout=1751.80 (A=055, B=136)
-Fout=1752.00 (A=056, B=136)
-Fout=1752.20 (A=057, B=136)
-Fout=1752.40 (A=058, B=136)
-Fout=1752.60 (A=059, B=136)
-Fout=1752.80 (A=060, B=136)
-Fout=1753.00 (A=061, B=136)
-Fout=1753.20 (A=062, B=136)
-Fout=1753.40 (A=063, B=136)
-Fout=1753.60 (A=000, B=137)
-Fout=1753.80 (A=001, B=137)
-Fout=1754.00 (A=002, B=137)
-Fout=1754.20 (A=003, B=137)
-Fout=1754.40 (A=004, B=137)
-Fout=1754.60 (A=005, B=137)
-Fout=1754.80 (A=006, B=137)
-Fout=1755.00 (A=007, B=137)
-Fout=1755.20 (A=008, B=137)
-Fout=1755.40 (A=009, B=137)
-Fout=1755.60 (A=010, B=137)
-Fout=1755.80 (A=011, B=137)
-Fout=1756.00 (A=012, B=137)
-Fout=1756.20 (A=013, B=137)
-Fout=1756.40 (A=014, B=137)
-Fout=1756.60 (A=015, B=137)
-Fout=1756.80 (A=016, B=137)
-Fout=1757.00 (A=017, B=137)
-Fout=1757.20 (A=018, B=137)
-Fout=1757.40 (A=019, B=137)
-Fout=1757.60 (A=020, B=137)
-Fout=1757.80 (A=021, B=137)
-Fout=1758.00 (A=022, B=137)
-Fout=1758.20 (A=023, B=137)
-Fout=1758.40 (A=024, B=137)
-Fout=1758.60 (A=025, B=137)
-Fout=1758.80 (A=026, B=137)
-Fout=1759.00 (A=027, B=137)
-Fout=1759.20 (A=028, B=137)
-Fout=1759.40 (A=029, B=137)
-Fout=1759.60 (A=030, B=137)
-Fout=1759.80 (A=031, B=137)
-Fout=1760.00 (A=032, B=137)
-Fout=1760.20 (A=033, B=137)
-Fout=1760.40 (A=034, B=137)
-Fout=1760.60 (A=035, B=137)
-Fout=1760.80 (A=036, B=137)
-Fout=1761.00 (A=037, B=137)
-Fout=1761.20 (A=038, B=137)
-Fout=1761.40 (A=039, B=137)
-Fout=1761.60 (A=040, B=137)
-Fout=1761.80 (A=041, B=137)
-Fout=1762.00 (A=042, B=137)
-Fout=1762.20 (A=043, B=137)
-Fout=1762.40 (A=044, B=137)
-Fout=1762.60 (A=045, B=137)
-Fout=1762.80 (A=046, B=137)
-Fout=1763.00 (A=047, B=137)
-Fout=1763.20 (A=048, B=137)
-Fout=1763.40 (A=049, B=137)
-Fout=1763.60 (A=050, B=137)
-Fout=1763.80 (A=051, B=137)
-Fout=1764.00 (A=052, B=137)
-Fout=1764.20 (A=053, B=137)
-Fout=1764.40 (A=054, B=137)
-Fout=1764.60 (A=055, B=137)
-Fout=1764.80 (A=056, B=137)
-Fout=1765.00 (A=057, B=137)
-Fout=1765.20 (A=058, B=137)
-Fout=1765.40 (A=059, B=137)
-Fout=1765.60 (A=060, B=137)
-Fout=1765.80 (A=061, B=137)
-Fout=1766.00 (A=062, B=137)
-Fout=1766.20 (A=063, B=137)
-Fout=1766.40 (A=000, B=138)
-Fout=1766.60 (A=001, B=138)
-Fout=1766.80 (A=002, B=138)
-Fout=1767.00 (A=003, B=138)
-Fout=1767.20 (A=004, B=138)
-Fout=1767.40 (A=005, B=138)
-Fout=1767.60 (A=006, B=138)
-Fout=1767.80 (A=007, B=138)
-Fout=1768.00 (A=008, B=138)
-Fout=1768.20 (A=009, B=138)
-Fout=1768.40 (A=010, B=138)
-Fout=1768.60 (A=011, B=138)
-Fout=1768.80 (A=012, B=138)
-Fout=1769.00 (A=013, B=138)
-Fout=1769.20 (A=014, B=138)
-Fout=1769.40 (A=015, B=138)
-Fout=1769.60 (A=016, B=138)
-Fout=1769.80 (A=017, B=138)
-Fout=1770.00 (A=018, B=138)
-Fout=1770.20 (A=019, B=138)
-Fout=1770.40 (A=020, B=138)
-Fout=1770.60 (A=021, B=138)
-Fout=1770.80 (A=022, B=138)
-Fout=1771.00 (A=023, B=138)
-Fout=1771.20 (A=024, B=138)
-Fout=1771.40 (A=025, B=138)
-Fout=1771.60 (A=026, B=138)
-Fout=1771.80 (A=027, B=138)
-Fout=1772.00 (A=028, B=138)
-Fout=1772.20 (A=029, B=138)
-Fout=1772.40 (A=030, B=138)
-Fout=1772.60 (A=031, B=138)
-Fout=1772.80 (A=032, B=138)
-Fout=1773.00 (A=033, B=138)
-Fout=1773.20 (A=034, B=138)
-Fout=1773.40 (A=035, B=138)
-Fout=1773.60 (A=036, B=138)
-Fout=1773.80 (A=037, B=138)
-Fout=1774.00 (A=038, B=138)
-Fout=1774.20 (A=039, B=138)
-Fout=1774.40 (A=040, B=138)
-Fout=1774.60 (A=041, B=138)
-Fout=1774.80 (A=042, B=138)
-Fout=1775.00 (A=043, B=138)
-Fout=1775.20 (A=044, B=138)
-Fout=1775.40 (A=045, B=138)
-Fout=1775.60 (A=046, B=138)
-Fout=1775.80 (A=047, B=138)
-Fout=1776.00 (A=048, B=138)
-Fout=1776.20 (A=049, B=138)
-Fout=1776.40 (A=050, B=138)
-Fout=1776.60 (A=051, B=138)
-Fout=1776.80 (A=052, B=138)
-Fout=1777.00 (A=053, B=138)
-Fout=1777.20 (A=054, B=138)
-Fout=1777.40 (A=055, B=138)
-Fout=1777.60 (A=056, B=138)
-Fout=1777.80 (A=057, B=138)
-Fout=1778.00 (A=058, B=138)
-Fout=1778.20 (A=059, B=138)
-Fout=1778.40 (A=060, B=138)
-Fout=1778.60 (A=061, B=138)
-Fout=1778.80 (A=062, B=138)
-Fout=1779.00 (A=063, B=138)
-Fout=1779.20 (A=000, B=139)
-Fout=1779.40 (A=001, B=139)
-Fout=1779.60 (A=002, B=139)
-Fout=1779.80 (A=003, B=139)
-Fout=1780.00 (A=004, B=139)
-Fout=1780.20 (A=005, B=139)
-Fout=1780.40 (A=006, B=139)
-Fout=1780.60 (A=007, B=139)
-Fout=1780.80 (A=008, B=139)
-Fout=1781.00 (A=009, B=139)
-Fout=1781.20 (A=010, B=139)
-Fout=1781.40 (A=011, B=139)
-Fout=1781.60 (A=012, B=139)
-Fout=1781.80 (A=013, B=139)
-Fout=1782.00 (A=014, B=139)
-Fout=1782.20 (A=015, B=139)
-Fout=1782.40 (A=016, B=139)
-Fout=1782.60 (A=017, B=139)
-Fout=1782.80 (A=018, B=139)
-Fout=1783.00 (A=019, B=139)
-Fout=1783.20 (A=020, B=139)
-Fout=1783.40 (A=021, B=139)
-Fout=1783.60 (A=022, B=139)
-Fout=1783.80 (A=023, B=139)
-Fout=1784.00 (A=024, B=139)
-Fout=1784.20 (A=025, B=139)
-Fout=1784.40 (A=026, B=139)
-Fout=1784.60 (A=027, B=139)
-Fout=1784.80 (A=028, B=139)
-Fout=1785.00 (A=029, B=139)
-Fout=1785.20 (A=030, B=139)
-Fout=1785.40 (A=031, B=139)
-Fout=1785.60 (A=032, B=139)
-Fout=1785.80 (A=033, B=139)
-Fout=1786.00 (A=034, B=139)
-Fout=1786.20 (A=035, B=139)
-Fout=1786.40 (A=036, B=139)
-Fout=1786.60 (A=037, B=139)
-Fout=1786.80 (A=038, B=139)
-Fout=1787.00 (A=039, B=139)
-Fout=1787.20 (A=040, B=139)
-Fout=1787.40 (A=041, B=139)
-Fout=1787.60 (A=042, B=139)
-Fout=1787.80 (A=043, B=139)
-Fout=1788.00 (A=044, B=139)
-Fout=1788.20 (A=045, B=139)
-Fout=1788.40 (A=046, B=139)
-Fout=1788.60 (A=047, B=139)
-Fout=1788.80 (A=048, B=139)
-Fout=1789.00 (A=049, B=139)
-Fout=1789.20 (A=050, B=139)
-Fout=1789.40 (A=051, B=139)
-Fout=1789.60 (A=052, B=139)
-Fout=1789.80 (A=053, B=139)
-Fout=1790.00 (A=054, B=139)
-Fout=1790.20 (A=055, B=139)
-Fout=1790.40 (A=056, B=139)
-Fout=1790.60 (A=057, B=139)
-Fout=1790.80 (A=058, B=139)
-Fout=1791.00 (A=059, B=139)
-Fout=1791.20 (A=060, B=139)
-Fout=1791.40 (A=061, B=139)
-Fout=1791.60 (A=062, B=139)
-Fout=1791.80 (A=063, B=139)
-Fout=1792.00 (A=000, B=140)
-Fout=1792.20 (A=001, B=140)
-Fout=1792.40 (A=002, B=140)
-Fout=1792.60 (A=003, B=140)
-Fout=1792.80 (A=004, B=140)
-Fout=1793.00 (A=005, B=140)
-Fout=1793.20 (A=006, B=140)
-Fout=1793.40 (A=007, B=140)
-Fout=1793.60 (A=008, B=140)
-Fout=1793.80 (A=009, B=140)
-Fout=1794.00 (A=010, B=140)
-Fout=1794.20 (A=011, B=140)
-Fout=1794.40 (A=012, B=140)
-Fout=1794.60 (A=013, B=140)
-Fout=1794.80 (A=014, B=140)
-Fout=1795.00 (A=015, B=140)
-Fout=1795.20 (A=016, B=140)
-Fout=1795.40 (A=017, B=140)
-Fout=1795.60 (A=018, B=140)
-Fout=1795.80 (A=019, B=140)
-Fout=1796.00 (A=020, B=140)
-Fout=1796.20 (A=021, B=140)
-Fout=1796.40 (A=022, B=140)
-Fout=1796.60 (A=023, B=140)
-Fout=1796.80 (A=024, B=140)
-Fout=1797.00 (A=025, B=140)
-Fout=1797.20 (A=026, B=140)
-Fout=1797.40 (A=027, B=140)
-Fout=1797.60 (A=028, B=140)
-Fout=1797.80 (A=029, B=140)
-Fout=1798.00 (A=030, B=140)
-Fout=1798.20 (A=031, B=140)
-Fout=1798.40 (A=032, B=140)
-Fout=1798.60 (A=033, B=140)
-Fout=1798.80 (A=034, B=140)
-Fout=1799.00 (A=035, B=140)
-Fout=1799.20 (A=036, B=140)
-Fout=1799.40 (A=037, B=140)
-Fout=1799.60 (A=038, B=140)
-Fout=1799.80 (A=039, B=140)
-Fout=1800.00 (A=040, B=140)
-Fout=1800.20 (A=041, B=140)
-Fout=1800.40 (A=042, B=140)
-Fout=1800.60 (A=043, B=140)
-Fout=1800.80 (A=044, B=140)
-Fout=1801.00 (A=045, B=140)
-Fout=1801.20 (A=046, B=140)
-Fout=1801.40 (A=047, B=140)
-Fout=1801.60 (A=048, B=140)
-Fout=1801.80 (A=049, B=140)
-Fout=1802.00 (A=050, B=140)
-Fout=1802.20 (A=051, B=140)
-Fout=1802.40 (A=052, B=140)
-Fout=1802.60 (A=053, B=140)
-Fout=1802.80 (A=054, B=140)
-Fout=1803.00 (A=055, B=140)
-Fout=1803.20 (A=056, B=140)
-Fout=1803.40 (A=057, B=140)
-Fout=1803.60 (A=058, B=140)
-Fout=1803.80 (A=059, B=140)
-Fout=1804.00 (A=060, B=140)
-Fout=1804.20 (A=061, B=140)
-Fout=1804.40 (A=062, B=140)
-Fout=1804.60 (A=063, B=140)
-Fout=1804.80 (A=000, B=141)
-Fout=1805.00 (A=001, B=141)
-Fout=1805.20 (A=002, B=141)
-Fout=1805.40 (A=003, B=141)
-Fout=1805.60 (A=004, B=141)
-Fout=1805.80 (A=005, B=141)
-Fout=1806.00 (A=006, B=141)
-Fout=1806.20 (A=007, B=141)
-Fout=1806.40 (A=008, B=141)
-Fout=1806.60 (A=009, B=141)
-Fout=1806.80 (A=010, B=141)
-Fout=1807.00 (A=011, B=141)
-Fout=1807.20 (A=012, B=141)
-Fout=1807.40 (A=013, B=141)
-Fout=1807.60 (A=014, B=141)
-Fout=1807.80 (A=015, B=141)
-Fout=1808.00 (A=016, B=141)
-Fout=1808.20 (A=017, B=141)
-Fout=1808.40 (A=018, B=141)
-Fout=1808.60 (A=019, B=141)
-Fout=1808.80 (A=020, B=141)
-Fout=1809.00 (A=021, B=141)
-Fout=1809.20 (A=022, B=141)
-Fout=1809.40 (A=023, B=141)
-Fout=1809.60 (A=024, B=141)
-Fout=1809.80 (A=025, B=141)
-Fout=1810.00 (A=026, B=141)
-Fout=1810.20 (A=027, B=141)
-Fout=1810.40 (A=028, B=141)
-Fout=1810.60 (A=029, B=141)
-Fout=1810.80 (A=030, B=141)
-Fout=1811.00 (A=031, B=141)
-Fout=1811.20 (A=032, B=141)
-Fout=1811.40 (A=033, B=141)
-Fout=1811.60 (A=034, B=141)
-Fout=1811.80 (A=035, B=141)
-Fout=1812.00 (A=036, B=141)
-Fout=1812.20 (A=037, B=141)
-Fout=1812.40 (A=038, B=141)
-Fout=1812.60 (A=039, B=141)
-Fout=1812.80 (A=040, B=141)
-Fout=1813.00 (A=041, B=141)
-Fout=1813.20 (A=042, B=141)
-Fout=1813.40 (A=043, B=141)
-Fout=1813.60 (A=044, B=141)
-Fout=1813.80 (A=045, B=141)
-Fout=1814.00 (A=046, B=141)
-Fout=1814.20 (A=047, B=141)
-Fout=1814.40 (A=048, B=141)
-Fout=1814.60 (A=049, B=141)
-Fout=1814.80 (A=050, B=141)
-Fout=1815.00 (A=051, B=141)
-Fout=1815.20 (A=052, B=141)
-Fout=1815.40 (A=053, B=141)
-Fout=1815.60 (A=054, B=141)
-Fout=1815.80 (A=055, B=141)
-Fout=1816.00 (A=056, B=141)
-Fout=1816.20 (A=057, B=141)
-Fout=1816.40 (A=058, B=141)
-Fout=1816.60 (A=059, B=141)
-Fout=1816.80 (A=060, B=141)
-Fout=1817.00 (A=061, B=141)
-Fout=1817.20 (A=062, B=141)
-Fout=1817.40 (A=063, B=141)
-Fout=1817.60 (A=000, B=142)
-Fout=1817.80 (A=001, B=142)
-Fout=1818.00 (A=002, B=142)
-Fout=1818.20 (A=003, B=142)
-Fout=1818.40 (A=004, B=142)
-Fout=1818.60 (A=005, B=142)
-Fout=1818.80 (A=006, B=142)
-Fout=1819.00 (A=007, B=142)
-Fout=1819.20 (A=008, B=142)
-Fout=1819.40 (A=009, B=142)
-Fout=1819.60 (A=010, B=142)
-Fout=1819.80 (A=011, B=142)
-Fout=1820.00 (A=012, B=142)
-Fout=1820.20 (A=013, B=142)
-Fout=1820.40 (A=014, B=142)
-Fout=1820.60 (A=015, B=142)
-Fout=1820.80 (A=016, B=142)
-Fout=1821.00 (A=017, B=142)
-Fout=1821.20 (A=018, B=142)
-Fout=1821.40 (A=019, B=142)
-Fout=1821.60 (A=020, B=142)
-Fout=1821.80 (A=021, B=142)
-Fout=1822.00 (A=022, B=142)
-Fout=1822.20 (A=023, B=142)
-Fout=1822.40 (A=024, B=142)
-Fout=1822.60 (A=025, B=142)
-Fout=1822.80 (A=026, B=142)
-Fout=1823.00 (A=027, B=142)
-Fout=1823.20 (A=028, B=142)
-Fout=1823.40 (A=029, B=142)
-Fout=1823.60 (A=030, B=142)
-Fout=1823.80 (A=031, B=142)
-Fout=1824.00 (A=032, B=142)
-Fout=1824.20 (A=033, B=142)
-Fout=1824.40 (A=034, B=142)
-Fout=1824.60 (A=035, B=142)
-Fout=1824.80 (A=036, B=142)
-Fout=1825.00 (A=037, B=142)
-Fout=1825.20 (A=038, B=142)
-Fout=1825.40 (A=039, B=142)
-Fout=1825.60 (A=040, B=142)
-Fout=1825.80 (A=041, B=142)
-Fout=1826.00 (A=042, B=142)
-Fout=1826.20 (A=043, B=142)
-Fout=1826.40 (A=044, B=142)
-Fout=1826.60 (A=045, B=142)
-Fout=1826.80 (A=046, B=142)
-Fout=1827.00 (A=047, B=142)
-Fout=1827.20 (A=048, B=142)
-Fout=1827.40 (A=049, B=142)
-Fout=1827.60 (A=050, B=142)
-Fout=1827.80 (A=051, B=142)
-Fout=1828.00 (A=052, B=142)
-Fout=1828.20 (A=053, B=142)
-Fout=1828.40 (A=054, B=142)
-Fout=1828.60 (A=055, B=142)
-Fout=1828.80 (A=056, B=142)
-Fout=1829.00 (A=057, B=142)
-Fout=1829.20 (A=058, B=142)
-Fout=1829.40 (A=059, B=142)
-Fout=1829.60 (A=060, B=142)
-Fout=1829.80 (A=061, B=142)
-Fout=1830.00 (A=062, B=142)
-Fout=1830.20 (A=063, B=142)
-Fout=1830.40 (A=000, B=143)
-Fout=1830.60 (A=001, B=143)
-Fout=1830.80 (A=002, B=143)
-Fout=1831.00 (A=003, B=143)
-Fout=1831.20 (A=004, B=143)
-Fout=1831.40 (A=005, B=143)
-Fout=1831.60 (A=006, B=143)
-Fout=1831.80 (A=007, B=143)
-Fout=1832.00 (A=008, B=143)
-Fout=1832.20 (A=009, B=143)
-Fout=1832.40 (A=010, B=143)
-Fout=1832.60 (A=011, B=143)
-Fout=1832.80 (A=012, B=143)
-Fout=1833.00 (A=013, B=143)
-Fout=1833.20 (A=014, B=143)
-Fout=1833.40 (A=015, B=143)
-Fout=1833.60 (A=016, B=143)
-Fout=1833.80 (A=017, B=143)
-Fout=1834.00 (A=018, B=143)
-Fout=1834.20 (A=019, B=143)
-Fout=1834.40 (A=020, B=143)
-Fout=1834.60 (A=021, B=143)
-Fout=1834.80 (A=022, B=143)
-Fout=1835.00 (A=023, B=143)
-Fout=1835.20 (A=024, B=143)
-Fout=1835.40 (A=025, B=143)
-Fout=1835.60 (A=026, B=143)
-Fout=1835.80 (A=027, B=143)
-Fout=1836.00 (A=028, B=143)
-Fout=1836.20 (A=029, B=143)
-Fout=1836.40 (A=030, B=143)
-Fout=1836.60 (A=031, B=143)
-Fout=1836.80 (A=032, B=143)
-Fout=1837.00 (A=033, B=143)
-Fout=1837.20 (A=034, B=143)
-Fout=1837.40 (A=035, B=143)
-Fout=1837.60 (A=036, B=143)
-Fout=1837.80 (A=037, B=143)
-Fout=1838.00 (A=038, B=143)
-Fout=1838.20 (A=039, B=143)
-Fout=1838.40 (A=040, B=143)
-Fout=1838.60 (A=041, B=143)
-Fout=1838.80 (A=042, B=143)
-Fout=1839.00 (A=043, B=143)
-Fout=1839.20 (A=044, B=143)
-Fout=1839.40 (A=045, B=143)
-Fout=1839.60 (A=046, B=143)
-Fout=1839.80 (A=047, B=143)
-Fout=1840.00 (A=048, B=143)
-Fout=1840.20 (A=049, B=143)
-Fout=1840.40 (A=050, B=143)
-Fout=1840.60 (A=051, B=143)
-Fout=1840.80 (A=052, B=143)
-Fout=1841.00 (A=053, B=143)
-Fout=1841.20 (A=054, B=143)
-Fout=1841.40 (A=055, B=143)
-Fout=1841.60 (A=056, B=143)
-Fout=1841.80 (A=057, B=143)
-Fout=1842.00 (A=058, B=143)
-Fout=1842.20 (A=059, B=143)
-Fout=1842.40 (A=060, B=143)
-Fout=1842.60 (A=061, B=143)
-Fout=1842.80 (A=062, B=143)
-Fout=1843.00 (A=063, B=143)
-Fout=1843.20 (A=000, B=144)
-Fout=1843.40 (A=001, B=144)
-Fout=1843.60 (A=002, B=144)
-Fout=1843.80 (A=003, B=144)
-Fout=1844.00 (A=004, B=144)
-Fout=1844.20 (A=005, B=144)
-Fout=1844.40 (A=006, B=144)
-Fout=1844.60 (A=007, B=144)
-Fout=1844.80 (A=008, B=144)
-Fout=1845.00 (A=009, B=144)
-Fout=1845.20 (A=010, B=144)
-Fout=1845.40 (A=011, B=144)
-Fout=1845.60 (A=012, B=144)
-Fout=1845.80 (A=013, B=144)
-Fout=1846.00 (A=014, B=144)
-Fout=1846.20 (A=015, B=144)
-Fout=1846.40 (A=016, B=144)
-Fout=1846.60 (A=017, B=144)
-Fout=1846.80 (A=018, B=144)
-Fout=1847.00 (A=019, B=144)
-Fout=1847.20 (A=020, B=144)
-Fout=1847.40 (A=021, B=144)
-Fout=1847.60 (A=022, B=144)
-Fout=1847.80 (A=023, B=144)
-Fout=1848.00 (A=024, B=144)
-Fout=1848.20 (A=025, B=144)
-Fout=1848.40 (A=026, B=144)
-Fout=1848.60 (A=027, B=144)
-Fout=1848.80 (A=028, B=144)
-Fout=1849.00 (A=029, B=144)
-Fout=1849.20 (A=030, B=144)
-Fout=1849.40 (A=031, B=144)
-Fout=1849.60 (A=032, B=144)
-Fout=1849.80 (A=033, B=144)
-Fout=1850.00 (A=034, B=144)
-Fout=1850.20 (A=035, B=144)
-Fout=1850.40 (A=036, B=144)
-Fout=1850.60 (A=037, B=144)
-Fout=1850.80 (A=038, B=144)
-Fout=1851.00 (A=039, B=144)
-Fout=1851.20 (A=040, B=144)
-Fout=1851.40 (A=041, B=144)
-Fout=1851.60 (A=042, B=144)
-Fout=1851.80 (A=043, B=144)
-Fout=1852.00 (A=044, B=144)
-Fout=1852.20 (A=045, B=144)
-Fout=1852.40 (A=046, B=144)
-Fout=1852.60 (A=047, B=144)
-Fout=1852.80 (A=048, B=144)
-Fout=1853.00 (A=049, B=144)
-Fout=1853.20 (A=050, B=144)
-Fout=1853.40 (A=051, B=144)
-Fout=1853.60 (A=052, B=144)
-Fout=1853.80 (A=053, B=144)
-Fout=1854.00 (A=054, B=144)
-Fout=1854.20 (A=055, B=144)
-Fout=1854.40 (A=056, B=144)
-Fout=1854.60 (A=057, B=144)
-Fout=1854.80 (A=058, B=144)
-Fout=1855.00 (A=059, B=144)
-Fout=1855.20 (A=060, B=144)
-Fout=1855.40 (A=061, B=144)
-Fout=1855.60 (A=062, B=144)
-Fout=1855.80 (A=063, B=144)
-Fout=1856.00 (A=000, B=145)
-Fout=1856.20 (A=001, B=145)
-Fout=1856.40 (A=002, B=145)
-Fout=1856.60 (A=003, B=145)
-Fout=1856.80 (A=004, B=145)
-Fout=1857.00 (A=005, B=145)
-Fout=1857.20 (A=006, B=145)
-Fout=1857.40 (A=007, B=145)
-Fout=1857.60 (A=008, B=145)
-Fout=1857.80 (A=009, B=145)
-Fout=1858.00 (A=010, B=145)
-Fout=1858.20 (A=011, B=145)
-Fout=1858.40 (A=012, B=145)
-Fout=1858.60 (A=013, B=145)
-Fout=1858.80 (A=014, B=145)
-Fout=1859.00 (A=015, B=145)
-Fout=1859.20 (A=016, B=145)
-Fout=1859.40 (A=017, B=145)
-Fout=1859.60 (A=018, B=145)
-Fout=1859.80 (A=019, B=145)
-Fout=1860.00 (A=020, B=145)
-Fout=1860.20 (A=021, B=145)
-Fout=1860.40 (A=022, B=145)
-Fout=1860.60 (A=023, B=145)
-Fout=1860.80 (A=024, B=145)
-Fout=1861.00 (A=025, B=145)
-Fout=1861.20 (A=026, B=145)
-Fout=1861.40 (A=027, B=145)
-Fout=1861.60 (A=028, B=145)
-Fout=1861.80 (A=029, B=145)
-Fout=1862.00 (A=030, B=145)
-Fout=1862.20 (A=031, B=145)
-Fout=1862.40 (A=032, B=145)
-Fout=1862.60 (A=033, B=145)
-Fout=1862.80 (A=034, B=145)
-Fout=1863.00 (A=035, B=145)
-Fout=1863.20 (A=036, B=145)
-Fout=1863.40 (A=037, B=145)
-Fout=1863.60 (A=038, B=145)
-Fout=1863.80 (A=039, B=145)
-Fout=1864.00 (A=040, B=145)
-Fout=1864.20 (A=041, B=145)
-Fout=1864.40 (A=042, B=145)
-Fout=1864.60 (A=043, B=145)
-Fout=1864.80 (A=044, B=145)
-Fout=1865.00 (A=045, B=145)
-Fout=1865.20 (A=046, B=145)
-Fout=1865.40 (A=047, B=145)
-Fout=1865.60 (A=048, B=145)
-Fout=1865.80 (A=049, B=145)
-Fout=1866.00 (A=050, B=145)
-Fout=1866.20 (A=051, B=145)
-Fout=1866.40 (A=052, B=145)
-Fout=1866.60 (A=053, B=145)
-Fout=1866.80 (A=054, B=145)
-Fout=1867.00 (A=055, B=145)
-Fout=1867.20 (A=056, B=145)
-Fout=1867.40 (A=057, B=145)
-Fout=1867.60 (A=058, B=145)
-Fout=1867.80 (A=059, B=145)
-Fout=1868.00 (A=060, B=145)
-Fout=1868.20 (A=061, B=145)
-Fout=1868.40 (A=062, B=145)
-Fout=1868.60 (A=063, B=145)
-Fout=1868.80 (A=000, B=146)
-Fout=1869.00 (A=001, B=146)
-Fout=1869.20 (A=002, B=146)
-Fout=1869.40 (A=003, B=146)
-Fout=1869.60 (A=004, B=146)
-Fout=1869.80 (A=005, B=146)
-Fout=1870.00 (A=006, B=146)
-Fout=1870.20 (A=007, B=146)
-Fout=1870.40 (A=008, B=146)
-Fout=1870.60 (A=009, B=146)
-Fout=1870.80 (A=010, B=146)
-Fout=1871.00 (A=011, B=146)
-Fout=1871.20 (A=012, B=146)
-Fout=1871.40 (A=013, B=146)
-Fout=1871.60 (A=014, B=146)
-Fout=1871.80 (A=015, B=146)
-Fout=1872.00 (A=016, B=146)
-Fout=1872.20 (A=017, B=146)
-Fout=1872.40 (A=018, B=146)
-Fout=1872.60 (A=019, B=146)
-Fout=1872.80 (A=020, B=146)
-Fout=1873.00 (A=021, B=146)
-Fout=1873.20 (A=022, B=146)
-Fout=1873.40 (A=023, B=146)
-Fout=1873.60 (A=024, B=146)
-Fout=1873.80 (A=025, B=146)
-Fout=1874.00 (A=026, B=146)
-Fout=1874.20 (A=027, B=146)
-Fout=1874.40 (A=028, B=146)
-Fout=1874.60 (A=029, B=146)
-Fout=1874.80 (A=030, B=146)
-Fout=1875.00 (A=031, B=146)
-Fout=1875.20 (A=032, B=146)
-Fout=1875.40 (A=033, B=146)
-Fout=1875.60 (A=034, B=146)
-Fout=1875.80 (A=035, B=146)
-Fout=1876.00 (A=036, B=146)
-Fout=1876.20 (A=037, B=146)
-Fout=1876.40 (A=038, B=146)
-Fout=1876.60 (A=039, B=146)
-Fout=1876.80 (A=040, B=146)
-Fout=1877.00 (A=041, B=146)
-Fout=1877.20 (A=042, B=146)
-Fout=1877.40 (A=043, B=146)
-Fout=1877.60 (A=044, B=146)
-Fout=1877.80 (A=045, B=146)
-Fout=1878.00 (A=046, B=146)
-Fout=1878.20 (A=047, B=146)
-Fout=1878.40 (A=048, B=146)
-Fout=1878.60 (A=049, B=146)
-Fout=1878.80 (A=050, B=146)
-Fout=1879.00 (A=051, B=146)
-Fout=1879.20 (A=052, B=146)
-Fout=1879.40 (A=053, B=146)
-Fout=1879.60 (A=054, B=146)
-Fout=1879.80 (A=055, B=146)
-Fout=1880.00 (A=056, B=146)
-Fout=1880.20 (A=057, B=146)
-Fout=1880.40 (A=058, B=146)
-Fout=1880.60 (A=059, B=146)
-Fout=1880.80 (A=060, B=146)
-Fout=1881.00 (A=061, B=146)
-Fout=1881.20 (A=062, B=146)
-Fout=1881.40 (A=063, B=146)
-Fout=1881.60 (A=000, B=147)
-Fout=1881.80 (A=001, B=147)
-Fout=1882.00 (A=002, B=147)
-Fout=1882.20 (A=003, B=147)
-Fout=1882.40 (A=004, B=147)
-Fout=1882.60 (A=005, B=147)
-Fout=1882.80 (A=006, B=147)
-Fout=1883.00 (A=007, B=147)
-Fout=1883.20 (A=008, B=147)
-Fout=1883.40 (A=009, B=147)
-Fout=1883.60 (A=010, B=147)
-Fout=1883.80 (A=011, B=147)
-Fout=1884.00 (A=012, B=147)
-Fout=1884.20 (A=013, B=147)
-Fout=1884.40 (A=014, B=147)
-Fout=1884.60 (A=015, B=147)
-Fout=1884.80 (A=016, B=147)
-Fout=1885.00 (A=017, B=147)
-Fout=1885.20 (A=018, B=147)
-Fout=1885.40 (A=019, B=147)
-Fout=1885.60 (A=020, B=147)
-Fout=1885.80 (A=021, B=147)
-Fout=1886.00 (A=022, B=147)
-Fout=1886.20 (A=023, B=147)
-Fout=1886.40 (A=024, B=147)
-Fout=1886.60 (A=025, B=147)
-Fout=1886.80 (A=026, B=147)
-Fout=1887.00 (A=027, B=147)
-Fout=1887.20 (A=028, B=147)
-Fout=1887.40 (A=029, B=147)
-Fout=1887.60 (A=030, B=147)
-Fout=1887.80 (A=031, B=147)
-Fout=1888.00 (A=032, B=147)
-Fout=1888.20 (A=033, B=147)
-Fout=1888.40 (A=034, B=147)
-Fout=1888.60 (A=035, B=147)
-Fout=1888.80 (A=036, B=147)
-Fout=1889.00 (A=037, B=147)
-Fout=1889.20 (A=038, B=147)
-Fout=1889.40 (A=039, B=147)
-Fout=1889.60 (A=040, B=147)
-Fout=1889.80 (A=041, B=147)
-Fout=1890.00 (A=042, B=147)
-Fout=1890.20 (A=043, B=147)
-Fout=1890.40 (A=044, B=147)
-Fout=1890.60 (A=045, B=147)
-Fout=1890.80 (A=046, B=147)
-Fout=1891.00 (A=047, B=147)
-Fout=1891.20 (A=048, B=147)
-Fout=1891.40 (A=049, B=147)
-Fout=1891.60 (A=050, B=147)
-Fout=1891.80 (A=051, B=147)
-Fout=1892.00 (A=052, B=147)
-Fout=1892.20 (A=053, B=147)
-Fout=1892.40 (A=054, B=147)
-Fout=1892.60 (A=055, B=147)
-Fout=1892.80 (A=056, B=147)
-Fout=1893.00 (A=057, B=147)
-Fout=1893.20 (A=058, B=147)
-Fout=1893.40 (A=059, B=147)
-Fout=1893.60 (A=060, B=147)
-Fout=1893.80 (A=061, B=147)
-Fout=1894.00 (A=062, B=147)
-Fout=1894.20 (A=063, B=147)
-Fout=1894.40 (A=000, B=148)
-Fout=1894.60 (A=001, B=148)
-Fout=1894.80 (A=002, B=148)
-Fout=1895.00 (A=003, B=148)
-Fout=1895.20 (A=004, B=148)
-Fout=1895.40 (A=005, B=148)
-Fout=1895.60 (A=006, B=148)
-Fout=1895.80 (A=007, B=148)
-Fout=1896.00 (A=008, B=148)
-Fout=1896.20 (A=009, B=148)
-Fout=1896.40 (A=010, B=148)
-Fout=1896.60 (A=011, B=148)
-Fout=1896.80 (A=012, B=148)
-Fout=1897.00 (A=013, B=148)
-Fout=1897.20 (A=014, B=148)
-Fout=1897.40 (A=015, B=148)
-Fout=1897.60 (A=016, B=148)
-Fout=1897.80 (A=017, B=148)
-Fout=1898.00 (A=018, B=148)
-Fout=1898.20 (A=019, B=148)
-Fout=1898.40 (A=020, B=148)
-Fout=1898.60 (A=021, B=148)
-Fout=1898.80 (A=022, B=148)
-Fout=1899.00 (A=023, B=148)
-Fout=1899.20 (A=024, B=148)
-Fout=1899.40 (A=025, B=148)
-Fout=1899.60 (A=026, B=148)
-Fout=1899.80 (A=027, B=148)
-Fout=1900.00 (A=028, B=148)
-Fout=1900.20 (A=029, B=148)
-Fout=1900.40 (A=030, B=148)
-Fout=1900.60 (A=031, B=148)
-Fout=1900.80 (A=032, B=148)
-Fout=1901.00 (A=033, B=148)
-Fout=1901.20 (A=034, B=148)
-Fout=1901.40 (A=035, B=148)
-Fout=1901.60 (A=036, B=148)
-Fout=1901.80 (A=037, B=148)
-Fout=1902.00 (A=038, B=148)
-Fout=1902.20 (A=039, B=148)
-Fout=1902.40 (A=040, B=148)
-Fout=1902.60 (A=041, B=148)
-Fout=1902.80 (A=042, B=148)
-Fout=1903.00 (A=043, B=148)
-Fout=1903.20 (A=044, B=148)
-Fout=1903.40 (A=045, B=148)
-Fout=1903.60 (A=046, B=148)
-Fout=1903.80 (A=047, B=148)
-Fout=1904.00 (A=048, B=148)
-Fout=1904.20 (A=049, B=148)
-Fout=1904.40 (A=050, B=148)
-Fout=1904.60 (A=051, B=148)
-Fout=1904.80 (A=052, B=148)
-Fout=1905.00 (A=053, B=148)
-Fout=1905.20 (A=054, B=148)
-Fout=1905.40 (A=055, B=148)
-Fout=1905.60 (A=056, B=148)
-Fout=1905.80 (A=057, B=148)
-Fout=1906.00 (A=058, B=148)
-Fout=1906.20 (A=059, B=148)
-Fout=1906.40 (A=060, B=148)
-Fout=1906.60 (A=061, B=148)
-Fout=1906.80 (A=062, B=148)
-Fout=1907.00 (A=063, B=148)
-Fout=1907.20 (A=000, B=149)
-Fout=1907.40 (A=001, B=149)
-Fout=1907.60 (A=002, B=149)
-Fout=1907.80 (A=003, B=149)
-Fout=1908.00 (A=004, B=149)
-Fout=1908.20 (A=005, B=149)
-Fout=1908.40 (A=006, B=149)
-Fout=1908.60 (A=007, B=149)
-Fout=1908.80 (A=008, B=149)
-Fout=1909.00 (A=009, B=149)
-Fout=1909.20 (A=010, B=149)
-Fout=1909.40 (A=011, B=149)
-Fout=1909.60 (A=012, B=149)
-Fout=1909.80 (A=013, B=149)
-Fout=1910.00 (A=014, B=149)
-Fout=1910.20 (A=015, B=149)
-Fout=1910.40 (A=016, B=149)
-Fout=1910.60 (A=017, B=149)
-Fout=1910.80 (A=018, B=149)
-Fout=1911.00 (A=019, B=149)
-Fout=1911.20 (A=020, B=149)
-Fout=1911.40 (A=021, B=149)
-Fout=1911.60 (A=022, B=149)
-Fout=1911.80 (A=023, B=149)
-Fout=1912.00 (A=024, B=149)
-Fout=1912.20 (A=025, B=149)
-Fout=1912.40 (A=026, B=149)
-Fout=1912.60 (A=027, B=149)
-Fout=1912.80 (A=028, B=149)
-Fout=1913.00 (A=029, B=149)
-Fout=1913.20 (A=030, B=149)
-Fout=1913.40 (A=031, B=149)
-Fout=1913.60 (A=032, B=149)
-Fout=1913.80 (A=033, B=149)
-Fout=1914.00 (A=034, B=149)
-Fout=1914.20 (A=035, B=149)
-Fout=1914.40 (A=036, B=149)
-Fout=1914.60 (A=037, B=149)
-Fout=1914.80 (A=038, B=149)
-Fout=1915.00 (A=039, B=149)
-Fout=1915.20 (A=040, B=149)
-Fout=1915.40 (A=041, B=149)
-Fout=1915.60 (A=042, B=149)
-Fout=1915.80 (A=043, B=149)
-Fout=1916.00 (A=044, B=149)
-Fout=1916.20 (A=045, B=149)
-Fout=1916.40 (A=046, B=149)
-Fout=1916.60 (A=047, B=149)
-Fout=1916.80 (A=048, B=149)
-Fout=1917.00 (A=049, B=149)
-Fout=1917.20 (A=050, B=149)
-Fout=1917.40 (A=051, B=149)
-Fout=1917.60 (A=052, B=149)
-Fout=1917.80 (A=053, B=149)
-Fout=1918.00 (A=054, B=149)
-Fout=1918.20 (A=055, B=149)
-Fout=1918.40 (A=056, B=149)
-Fout=1918.60 (A=057, B=149)
-Fout=1918.80 (A=058, B=149)
-Fout=1919.00 (A=059, B=149)
-Fout=1919.20 (A=060, B=149)
-Fout=1919.40 (A=061, B=149)
-Fout=1919.60 (A=062, B=149)
-Fout=1919.80 (A=063, B=149)
diff --git a/Src/osmoconbb/src/host/rita_pll/rita_pll_notes.txt b/Src/osmoconbb/src/host/rita_pll/rita_pll_notes.txt
deleted file mode 100644
index 7df03f5..0000000
--- a/Src/osmoconbb/src/host/rita_pll/rita_pll_notes.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-
-Regular Operation as per DS GSM SPEC
-
-GSM900 Tx: 870.4 ... 921.4 MHz 880.0 ... 914.8
-GSM900 Rx: 864.4 ... 966.2 MHz 925.0 ... 959.8
-
-GSM1800 Tx: 1702.4 ... 1919.8 MHz 1710.2 ... 1784.8
-GSM1800 Rx: 1804.8 ... 1996.4 MHz 1805.2 ... 1879.8
-
-GSM850 Tx:
-
-[824.2 ~ 837.0 MHz]
-[837.2 ~ 848.8 MHz]
-
-
-GSM810 Tx: 806.0 ... 821.0
-* modify B value to go down to 125 (A = 60)
-GSM810 Rx: 851.0 ... 866.0
-* modify B value to go down to 132 (A = 62)
diff --git a/Src/osmoconbb/src/shared/.gitignore b/Src/osmoconbb/src/shared/.gitignore
deleted file mode 100644
index 5058adb..0000000
--- a/Src/osmoconbb/src/shared/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-libosmocore/build-host/tests/msgfile/msgfile_test
-libosmocore/build-host/tests/smscb/smscb_test
-libosmocore/build-host/tests/sms/sms_test
-libosmocore/build-host/tests/timer/timer_test
-libosmocore/build-host/tests/ussd/ussd_test
diff --git a/Src/osmoconbb/src/shared/libosmocore/.gitignore b/Src/osmoconbb/src/shared/libosmocore/.gitignore
deleted file mode 100644
index d39ae4a..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/.gitignore
+++ /dev/null
@@ -1,32 +0,0 @@
-Makefile
-Makefile.in
-.deps
-.libs
-*.o
-*.lo
-*.la
-*.pc
-aclocal.m4
-m4/*.m4
-autom4te.cache
-config.h*
-config.sub
-config.log
-config.status
-config.guess
-configure
-depcomp
-missing
-ltmain.sh
-install-sh
-stamp-h1
-libtool
-
-.tarball-version
-.version
-
-tests/sms/sms_test
-tests/timer/timer_test
-tests/msgfile/msgfile_test
-tests/ussd/ussd_test
-tests/smscb/smscb_test
diff --git a/Src/osmoconbb/src/shared/libosmocore/COPYING b/Src/osmoconbb/src/shared/libosmocore/COPYING
deleted file mode 100644
index d511905..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/COPYING
+++ /dev/null
@@ -1,339 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.
diff --git a/Src/osmoconbb/src/shared/libosmocore/Makefile.am b/Src/osmoconbb/src/shared/libosmocore/Makefile.am
deleted file mode 100644
index 03bfdec..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/Makefile.am
+++ /dev/null
@@ -1,16 +0,0 @@
-AUTOMAKE_OPTIONS = foreign dist-bzip2 1.6
-ACLOCAL_AMFLAGS = -I m4
-
-INCLUDES = $(all_includes) -I$(top_srcdir)/include
-SUBDIRS = include src tests
-
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = libosmocore.pc libosmocodec.pc libosmovty.pc libosmogsm.pc
-
-BUILT_SOURCES = $(top_srcdir)/.version
-$(top_srcdir)/.version:
- echo $(VERSION) > $@-t && mv $@-t $@
-dist-hook:
- echo $(VERSION) > $(distdir)/.tarball-version
-
-EXTRA_DIST = git-version-gen
diff --git a/Src/osmoconbb/src/shared/libosmocore/configure.ac b/Src/osmoconbb/src/shared/libosmocore/configure.ac
deleted file mode 100644
index b923a21..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/configure.ac
+++ /dev/null
@@ -1,123 +0,0 @@
-AC_INIT([libosmocore],
- m4_esyscmd([./git-version-gen .tarball-version]),
- [openbsc-devel@lists.openbsc.org])
-
-AM_INIT_AUTOMAKE([dist-bzip2])
-
-dnl kernel style compile messages
-m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
-
-dnl checks for programs
-AC_PROG_MAKE_SET
-AC_PROG_CC
-AC_PROG_INSTALL
-LT_INIT
-AC_PROG_LIBTOOL
-
-AC_CONFIG_MACRO_DIR([m4])
-
-dnl checks for header files
-AC_HEADER_STDC
-AC_CHECK_HEADERS(execinfo.h sys/select.h sys/socket.h syslog.h ctype.h)
-
-# The following test is taken from WebKit's webkit.m4
-saved_CFLAGS="$CFLAGS"
-CFLAGS="$CFLAGS -fvisibility=hidden "
-AC_MSG_CHECKING([if ${CC} supports -fvisibility=hidden])
-AC_COMPILE_IFELSE([AC_LANG_SOURCE([char foo;])],
- [ AC_MSG_RESULT([yes])
- SYMBOL_VISIBILITY="-fvisibility=hidden"],
- AC_MSG_RESULT([no]))
-CFLAGS="$saved_CFLAGS"
-AC_SUBST(SYMBOL_VISIBILITY)
-
-dnl Generate the output
-AM_CONFIG_HEADER(config.h)
-
-AC_ARG_ENABLE(talloc,
- [AS_HELP_STRING(
- [--disable-talloc],
- [Disable building talloc memory allocator]
- )],
- [enable_talloc=0], [enable_talloc=1])
-AM_CONDITIONAL(ENABLE_TALLOC, test "x$enable_talloc" = "x1")
-
-AC_ARG_ENABLE(plugin,
- [AS_HELP_STRING(
- [--disable-plugin],
- [Disable support for dlopen plugins],
- )],
- [enable_plugin=0], [enable_plugin=1])
-AM_CONDITIONAL(ENABLE_PLUGIN, test "x$enable_plugin" = "x1")
-
-AC_ARG_ENABLE(tests,
- [AS_HELP_STRING(
- [--disable-tests],
- [Disable building test programs]
- )],
- [enable_tests=0], [enable_tests=1])
-AM_CONDITIONAL(ENABLE_TESTS, test "x$enable_tests" = "x1")
-
-AC_ARG_ENABLE(vty,
- [AS_HELP_STRING(
- [--disable-vty],
- [Disable building VTY telnet interface]
- )],
- [enable_vty=0], [enable_vty=1])
-AM_CONDITIONAL(ENABLE_VTY, test "x$enable_vty" = "x1")
-
-AC_ARG_ENABLE(panic_infloop,
- [AS_HELP_STRING(
- [--enable-panic-infloop],
- [Trigger infinite loop on panic rather than fprintf/abort]
- )],
- [panic_infloop=1], [panic_infloop=0])
-if test "x$panic_infloop" = "x1"
-then
- AC_DEFINE([PANIC_INFLOOP],[1],[Use infinite loop on panic rather than fprintf/abort])
-fi
-
-AC_ARG_ENABLE(bsc_fd_check,
- [AS_HELP_STRING(
- [--enable-bsc-fd-check],
- [Instrument bsc_register_fd to check that the fd is registered]
- )],
- [fd_check=1], [fd_check=0])
-if test "x$fd_check" = "x1"
-then
- AC_DEFINE([BSC_FD_CHECK],[1],[Instrument the bsc_register_fd])
-fi
-
-AC_ARG_ENABLE(msgfile,
- [AS_HELP_STRING(
- [--disable-msgfile],
- [Disable support for the msgfile],
- )],
- [enable_msgfile=0], [enable_msgfile=1])
-AM_CONDITIONAL(ENABLE_MSGFILE, test "x$enable_msgfile" = "x1")
-
-
-AC_OUTPUT(
- libosmocore.pc
- libosmocodec.pc
- libosmovty.pc
- libosmogsm.pc
- include/osmocom/Makefile
- include/osmocom/vty/Makefile
- include/osmocom/codec/Makefile
- include/osmocom/crypt/Makefile
- include/osmocom/gsm/Makefile
- include/osmocom/gsm/protocol/Makefile
- include/osmocom/core/Makefile
- include/Makefile
- src/Makefile
- src/vty/Makefile
- src/codec/Makefile
- src/gsm/Makefile
- tests/Makefile
- tests/timer/Makefile
- tests/sms/Makefile
- tests/msgfile/Makefile
- tests/ussd/Makefile
- tests/smscb/Makefile
- Makefile)
diff --git a/Src/osmoconbb/src/shared/libosmocore/debian/changelog b/Src/osmoconbb/src/shared/libosmocore/debian/changelog
deleted file mode 100644
index 20a0493..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/debian/changelog
+++ /dev/null
@@ -1,17 +0,0 @@
-libosmocore (0.3.0) natty; urgency=low
-
- * New upstream version of libosmocore
-
- -- Harald Welte <laforge@gnumonks.org> Tue, 10 May 2011 17:28:24 +0200
-
-libosmocore (0.1.27) natty; urgency=low
-
- * New upstream version of libosmocore.
-
- -- Holger Hans Peter Freyther <holger@freyther.de> Thu, 13 Jan 2011 18:07:36 +0800
-
-libosmocore (0.1.17-1) unstable; urgency=low
-
- * Initial release (Closes: #nnnn) <nnnn is the bug number of your ITP>
-
- -- Harald Welte <laforge@gnumonks.org> Tue, 24 Aug 2010 10:55:04 +0200
diff --git a/Src/osmoconbb/src/shared/libosmocore/debian/compat b/Src/osmoconbb/src/shared/libosmocore/debian/compat
deleted file mode 100644
index 7f8f011..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/debian/compat
+++ /dev/null
@@ -1 +0,0 @@
-7
diff --git a/Src/osmoconbb/src/shared/libosmocore/debian/control b/Src/osmoconbb/src/shared/libosmocore/debian/control
deleted file mode 100644
index 3f92875..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/debian/control
+++ /dev/null
@@ -1,27 +0,0 @@
-Source: libosmocore
-Section: libs
-Priority: optional
-Maintainer: Harald Welte <laforge@gnumonks.org>
-Build-Depends: debhelper (>= 7.0.50~), autotools-dev, autoconf, automake, libtool, dh-autoreconf
-Standards-Version: 3.8.4
-Homepage: http://bb.osmocom.org/trac/wiki/libosmocore
-Vcs-Git: git://git.osmocom.org/libosmocore.git
-Vcs-Browser: http://git.osmocom.org/gitweb?p=libosmocore.git;a=summary
-
-Package: libosmocore
-Section: libs
-Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: Open Source MObile COMmunications CORE library
-
-Package: libosmocore-dev
-Section: libdevel
-Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}, libosmocore
-Description: Development headers for Open Source MObile COMmunications CORE library
-
-#Package: libosmocore-dbg
-#Section: libdevel
-#Architecture: any
-#Depends: ${shlibs:Depends}, ${misc:Depends}
-#Description: Debug symbols for Open Source MObile COMmunications CORE library
diff --git a/Src/osmoconbb/src/shared/libosmocore/debian/copyright b/Src/osmoconbb/src/shared/libosmocore/debian/copyright
deleted file mode 100644
index c450be5..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/debian/copyright
+++ /dev/null
@@ -1,54 +0,0 @@
-This work was packaged for Debian by:
-
- Harald Welte <laforge@gnumonks.org> on Tue, 24 Aug 2010 10:55:04 +0200
-
-It was downloaded from:
-
- git://git.osmocom.org/libosmocore.git
-
-Upstream Author(s):
-
- Harald Welte <laforge@gnumonks.org>
- Holger Hans Peter Freyther <zecke@selfish.org>
- Sylvain Munaut <tnt@246tNt.com>
- Daniel Willmann <daniel@totalueberwachung.de>
- Golde <nico@ngolde.de>
- For src/talloc.c and include/osmocore/talloc.h:
- Andrew Tridgell
- Stefan Metzmacher
- For src/vty/* and include/osmocom/vty/*
- Kunihiro Ishiguro
-
-Copyright:
-
- Copyright (C) 2008-2010 Harald Welte <laforge@gnumonks.org>
- Copyright (C) 2008-2010 Holger Hans Peter Freyther <zecke@selfish.org>
- Copyright (C) 2009-2010 Sylvain Munaut <tnt@246tNt.com>
- Copyright (C) 2009-2010 On-Waves
- Copyright (C) 2008 Daniel Willmann <daniel@totalueberwachung.de>
- Copyright (C) 2010 Nico Golde <nico@ngolde.de>
- For src/talloc.c and include/osmocore/talloc.h:
- Copyright (C) 2004 Andrew Tridgell
- Copyright (C) 2006 Stefan Metzmacher
- For src/vty/* and include/osmocom/vty/*
- Copyright (C) 1998 Kunihiro Ishiguro
-
-License:
-
- GNU General Public License, Version 2 or later
-
-The Debian packaging is:
-
- Copyright (C) 2010 Harald Welte <laforge@gnumonks.org>
-
-# Please chose a license for your packaging work. If the program you package
-# uses a mainstream license, using the same license is the safest choice.
-# Please avoid to pick license terms that are more restrictive than the
-# packaged work, as it may make Debian's contributions unacceptable upstream.
-# If you just want it to be GPL version 3, leave the following lines in.
-
-and is licensed under the GPL version 3,
-see "/usr/share/common-licenses/GPL-3".
-
-# Please also look if there are files or directories which have a
-# different copyright/license attached and list them here.
diff --git a/Src/osmoconbb/src/shared/libosmocore/debian/docs b/Src/osmoconbb/src/shared/libosmocore/debian/docs
deleted file mode 100644
index e69de29..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/debian/docs
+++ /dev/null
diff --git a/Src/osmoconbb/src/shared/libosmocore/debian/libosmocore-dbg.debhelper.log b/Src/osmoconbb/src/shared/libosmocore/debian/libosmocore-dbg.debhelper.log
deleted file mode 100644
index 2742cb4..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/debian/libosmocore-dbg.debhelper.log
+++ /dev/null
@@ -1,6 +0,0 @@
-dh_auto_configure
-dh_auto_build
-dh_auto_test
-dh_prep
-dh_installdirs
-dh_auto_install
diff --git a/Src/osmoconbb/src/shared/libosmocore/debian/libosmocore-dbg.dirs b/Src/osmoconbb/src/shared/libosmocore/debian/libosmocore-dbg.dirs
deleted file mode 100644
index af59b0a..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/debian/libosmocore-dbg.dirs
+++ /dev/null
@@ -1 +0,0 @@
-usr/lib/debug/lib
diff --git a/Src/osmoconbb/src/shared/libosmocore/debian/libosmocore-dbg.install b/Src/osmoconbb/src/shared/libosmocore/debian/libosmocore-dbg.install
deleted file mode 100644
index 7ce0212..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/debian/libosmocore-dbg.install
+++ /dev/null
@@ -1 +0,0 @@
-usr/lib/debug/lib/*
diff --git a/Src/osmoconbb/src/shared/libosmocore/debian/libosmocore-dev.dirs b/Src/osmoconbb/src/shared/libosmocore/debian/libosmocore-dev.dirs
deleted file mode 100644
index 94090a3..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/debian/libosmocore-dev.dirs
+++ /dev/null
@@ -1,8 +0,0 @@
-usr/lib
-usr/include
-usr/include/osmocom
-usr/include/osmocom/codec
-usr/include/osmocom/core
-usr/include/osmocom/crypt
-usr/include/osmocom/gsm
-usr/include/osmocom/vty
diff --git a/Src/osmoconbb/src/shared/libosmocore/debian/libosmocore-dev.install b/Src/osmoconbb/src/shared/libosmocore/debian/libosmocore-dev.install
deleted file mode 100644
index eec0e15..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/debian/libosmocore-dev.install
+++ /dev/null
@@ -1,5 +0,0 @@
-usr/include/*
-usr/lib/lib*.a
-usr/lib/lib*.so
-usr/lib/lib*.la
-usr/lib/pkgconfig/*
diff --git a/Src/osmoconbb/src/shared/libosmocore/debian/libosmocore.dirs b/Src/osmoconbb/src/shared/libosmocore/debian/libosmocore.dirs
deleted file mode 100644
index 94090a3..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/debian/libosmocore.dirs
+++ /dev/null
@@ -1,8 +0,0 @@
-usr/lib
-usr/include
-usr/include/osmocom
-usr/include/osmocom/codec
-usr/include/osmocom/core
-usr/include/osmocom/crypt
-usr/include/osmocom/gsm
-usr/include/osmocom/vty
diff --git a/Src/osmoconbb/src/shared/libosmocore/debian/libosmocore.install b/Src/osmoconbb/src/shared/libosmocore/debian/libosmocore.install
deleted file mode 100644
index d0dbfd1..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/debian/libosmocore.install
+++ /dev/null
@@ -1 +0,0 @@
-usr/lib/lib*.so.*
diff --git a/Src/osmoconbb/src/shared/libosmocore/debian/patches/debian-changes-0.1.17-1 b/Src/osmoconbb/src/shared/libosmocore/debian/patches/debian-changes-0.1.17-1
deleted file mode 100644
index c0a54bd..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/debian/patches/debian-changes-0.1.17-1
+++ /dev/null
@@ -1,46 +0,0 @@
-Description: Upstream changes introduced in version 0.1.17-1
- This patch has been created by dpkg-source during the package build.
- Here's the last changelog entry, hopefully it gives details on why
- those changes were made:
- .
- libosmocore (0.1.17-1) unstable; urgency=low
- .
- * Initial release (Closes: #nnnn) <nnnn is the bug number of your ITP>
- .
- The person named in the Author field signed this changelog entry.
-Author: Harald Welte <laforge@gnumonks.org>
-
----
-The information above should follow the Patch Tagging Guidelines, please
-checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
-are templates for supplementary fields that you might want to add:
-
-Origin: <vendor|upstream|other>, <url of original patch>
-Bug: <url in upstream bugtracker>
-Bug-Debian: http://bugs.debian.org/<bugnumber>
-Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
-Forwarded: <no|not-needed|url proving that it has been forwarded>
-Reviewed-By: <name and email of someone who approved the patch>
-Last-Update: <YYYY-MM-DD>
-
---- /dev/null
-+++ libosmocore-0.1.17/.version
-@@ -0,0 +1 @@
-+0.1.17
---- /dev/null
-+++ libosmocore-0.1.17/copyright
-@@ -0,0 +1,14 @@
-+Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=135
-+Name: libosmocore
-+Maintainer: Harald Welte <laforge@gnumonks.org>
-+Source: git://git.osmocom.org/libosmocore.git
-+
-+Copyright: 2008-2010 Harald Welte <laforge@gnumonks.org>
-+License: GPL-2+
-+
-+Files: src/talloc.c include/osmocore/talloc.h
-+Copyright: 2004 Andrew Tridgell
-+License: LGPL-3+
-+
-+Files: include/osmocore/linuxlist.h
-+License: GPL-2
diff --git a/Src/osmoconbb/src/shared/libosmocore/debian/patches/series b/Src/osmoconbb/src/shared/libosmocore/debian/patches/series
deleted file mode 100644
index 0ca407b..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/debian/patches/series
+++ /dev/null
@@ -1 +0,0 @@
-debian-changes-0.1.17-1
diff --git a/Src/osmoconbb/src/shared/libosmocore/debian/rules b/Src/osmoconbb/src/shared/libosmocore/debian/rules
deleted file mode 100755
index 15f78f2..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/debian/rules
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/make -f
-# -*- makefile -*-
-# Sample debian/rules that uses debhelper.
-# This file was originally written by Joey Hess and Craig Small.
-# As a special exception, when this file is copied by dh-make into a
-# dh-make output file, you may use that output file without restriction.
-# This special exception was added by Craig Small in version 0.37 of dh-make.
-
-# Uncomment this to turn on verbose mode.
-#export DH_VERBOSE=1
-
-CFLAGS = -Wall -g
-
-%:
- dh --with autoreconf $@
-
-#override_dh_strip:
-# dh_strip --dbg-package=libosmocore-dbg
-
diff --git a/Src/osmoconbb/src/shared/libosmocore/debian/source/format b/Src/osmoconbb/src/shared/libosmocore/debian/source/format
deleted file mode 100644
index af745b3..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/debian/source/format
+++ /dev/null
@@ -1 +0,0 @@
-3.0 (git)
diff --git a/Src/osmoconbb/src/shared/libosmocore/git-version-gen b/Src/osmoconbb/src/shared/libosmocore/git-version-gen
deleted file mode 100755
index 42cf3d2..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/git-version-gen
+++ /dev/null
@@ -1,151 +0,0 @@
-#!/bin/sh
-# Print a version string.
-scriptversion=2010-01-28.01
-
-# Copyright (C) 2007-2010 Free Software Foundation, Inc.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 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, see <http://www.gnu.org/licenses/>.
-
-# This script is derived from GIT-VERSION-GEN from GIT: http://git.or.cz/.
-# It may be run two ways:
-# - from a git repository in which the "git describe" command below
-# produces useful output (thus requiring at least one signed tag)
-# - from a non-git-repo directory containing a .tarball-version file, which
-# presumes this script is invoked like "./git-version-gen .tarball-version".
-
-# In order to use intra-version strings in your project, you will need two
-# separate generated version string files:
-#
-# .tarball-version - present only in a distribution tarball, and not in
-# a checked-out repository. Created with contents that were learned at
-# the last time autoconf was run, and used by git-version-gen. Must not
-# be present in either $(srcdir) or $(builddir) for git-version-gen to
-# give accurate answers during normal development with a checked out tree,
-# but must be present in a tarball when there is no version control system.
-# Therefore, it cannot be used in any dependencies. GNUmakefile has
-# hooks to force a reconfigure at distribution time to get the value
-# correct, without penalizing normal development with extra reconfigures.
-#
-# .version - present in a checked-out repository and in a distribution
-# tarball. Usable in dependencies, particularly for files that don't
-# want to depend on config.h but do want to track version changes.
-# Delete this file prior to any autoconf run where you want to rebuild
-# files to pick up a version string change; and leave it stale to
-# minimize rebuild time after unrelated changes to configure sources.
-#
-# It is probably wise to add these two files to .gitignore, so that you
-# don't accidentally commit either generated file.
-#
-# Use the following line in your configure.ac, so that $(VERSION) will
-# automatically be up-to-date each time configure is run (and note that
-# since configure.ac no longer includes a version string, Makefile rules
-# should not depend on configure.ac for version updates).
-#
-# AC_INIT([GNU project],
-# m4_esyscmd([build-aux/git-version-gen .tarball-version]),
-# [bug-project@example])
-#
-# Then use the following lines in your Makefile.am, so that .version
-# will be present for dependencies, and so that .tarball-version will
-# exist in distribution tarballs.
-#
-# BUILT_SOURCES = $(top_srcdir)/.version
-# $(top_srcdir)/.version:
-# echo $(VERSION) > $@-t && mv $@-t $@
-# dist-hook:
-# echo $(VERSION) > $(distdir)/.tarball-version
-
-case $# in
- 1) ;;
- *) echo 1>&2 "Usage: $0 \$srcdir/.tarball-version"; exit 1;;
-esac
-
-tarball_version_file=$1
-nl='
-'
-
-# First see if there is a tarball-only version file.
-# then try "git describe", then default.
-if test -f $tarball_version_file
-then
- v=`cat $tarball_version_file` || exit 1
- case $v in
- *$nl*) v= ;; # reject multi-line output
- [0-9]*) ;;
- *) v= ;;
- esac
- test -z "$v" \
- && echo "$0: WARNING: $tarball_version_file seems to be damaged" 1>&2
-fi
-
-if test -n "$v"
-then
- : # use $v
-elif
- v=`git describe --abbrev=4 --match='v*' HEAD 2>/dev/null \
- || git describe --abbrev=4 HEAD 2>/dev/null` \
- && case $v in
- [0-9]*) ;;
- v[0-9]*) ;;
- *) (exit 1) ;;
- esac
-then
- # Is this a new git that lists number of commits since the last
- # tag or the previous older version that did not?
- # Newer: v6.10-77-g0f8faeb
- # Older: v6.10-g0f8faeb
- case $v in
- *-*-*) : git describe is okay three part flavor ;;
- *-*)
- : git describe is older two part flavor
- # Recreate the number of commits and rewrite such that the
- # result is the same as if we were using the newer version
- # of git describe.
- vtag=`echo "$v" | sed 's/-.*//'`
- numcommits=`git rev-list "$vtag"..HEAD | wc -l`
- v=`echo "$v" | sed "s/\(.*\)-\(.*\)/\1-$numcommits-\2/"`;
- ;;
- esac
-
- # Change the first '-' to a '.', so version-comparing tools work properly.
- # Remove the "g" in git describe's output string, to save a byte.
- v=`echo "$v" | sed 's/-/./;s/\(.*\)-g/\1-/'`;
-else
- v=UNKNOWN
-fi
-
-v=`echo "$v" |sed 's/^v//'`
-
-# Don't declare a version "dirty" merely because a time stamp has changed.
-git status > /dev/null 2>&1
-
-dirty=`sh -c 'git diff-index --name-only HEAD' 2>/dev/null` || dirty=
-case "$dirty" in
- '') ;;
- *) # Append the suffix only if there isn't one already.
- case $v in
- *-dirty) ;;
- *) v="$v-dirty" ;;
- esac ;;
-esac
-
-# Omit the trailing newline, so that m4_esyscmd can use the result directly.
-echo "$v" | tr -d '\012'
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
-# End:
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/Makefile.am b/Src/osmoconbb/src/shared/libosmocore/include/Makefile.am
deleted file mode 100644
index 3578a80..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-SUBDIRS = osmocom
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/Makefile.am b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/Makefile.am
deleted file mode 100644
index 21f4f2d..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/Makefile.am
+++ /dev/null
@@ -1,5 +0,0 @@
-if ENABLE_VTY
-SUBDIRS = vty codec crypt gsm core
-else
-SUBDIRS = codec crypt gsm core
-endif
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/codec/Makefile.am b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/codec/Makefile.am
deleted file mode 100644
index c213602..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/codec/Makefile.am
+++ /dev/null
@@ -1,3 +0,0 @@
-osmocodec_HEADERS = codec.h
-
-osmocodecdir = $(includedir)/osmocom/codec
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/codec/codec.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/codec/codec.h
deleted file mode 100644
index 6f9ffea..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/codec/codec.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef _OSMOCOM_CODEC_H
-#define _OSMOCOM_CODEC_H
-
-#include <stdint.h>
-
-extern uint16_t gsm610_bitorder[]; /* FR */
-extern uint16_t gsm620_unvoiced_bitorder[]; /* HR unvoiced */
-extern uint16_t gsm620_voiced_bitorder[]; /* HR voiced */
-extern uint16_t gsm660_bitorder[]; /* EFR */
-
-extern uint16_t gsm690_12_2_bitorder[]; /* AMR 12.2 kbits */
-extern uint16_t gsm690_10_2_bitorder[]; /* AMR 10.2 kbits */
-extern uint16_t gsm690_7_95_bitorder[]; /* AMR 7.95 kbits */
-extern uint16_t gsm690_7_4_bitorder[]; /* AMR 7.4 kbits */
-extern uint16_t gsm690_6_7_bitorder[]; /* AMR 6.7 kbits */
-extern uint16_t gsm690_5_9_bitorder[]; /* AMR 5.9 kbits */
-extern uint16_t gsm690_5_15_bitorder[]; /* AMR 5.15 kbits */
-extern uint16_t gsm690_4_75_bitorder[]; /* AMR 4.75 kbits */
-
-#endif /* _OSMOCOM_CODEC_H */
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/Makefile.am b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/Makefile.am
deleted file mode 100644
index 1ef3769..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/Makefile.am
+++ /dev/null
@@ -1,12 +0,0 @@
-osmocore_HEADERS = signal.h linuxlist.h timer.h select.h msgb.h bits.h \
- bitvec.h statistics.h utils.h socket.h \
- gsmtap.h write_queue.h prim.h \
- logging.h rate_ctr.h gsmtap_util.h \
- plugin.h crc16.h panic.h process.h msgfile.h \
- backtrace.h conv.h application.h
-
-if ENABLE_TALLOC
-osmocore_HEADERS += talloc.h
-endif
-
-osmocoredir = $(includedir)/osmocom/core
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/application.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/application.h
deleted file mode 100644
index 5d09896..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/application.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef OSMO_APPLICATION_H
-#define OSMO_APPLICATION_H
-
-/**
- * Routines for helping with the application setup.
- */
-
-struct log_info;
-struct log_target;
-
-extern struct log_target *osmo_stderr_target;
-
-void osmo_init_ignore_signals(void);
-int osmo_init_logging(const struct log_info *);
-
-int osmo_daemonize(void);
-
-#endif
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/backtrace.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/backtrace.h
deleted file mode 100644
index 1ed089a..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/backtrace.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef _OSMO_BACKTRACE_H_
-#define _OSMO_BACKTRACE_H_
-
-void osmo_generate_backtrace(void);
-
-#endif
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/bits.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/bits.h
deleted file mode 100644
index eb22d07..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/bits.h
+++ /dev/null
@@ -1,45 +0,0 @@
-#ifndef _OSMO_BITS_H
-#define _OSMO_BITS_H
-
-#include <stdint.h>
-
-typedef int8_t sbit_t; /* soft bit (-127...127) */
-typedef uint8_t ubit_t; /* unpacked bit (0 or 1) */
-typedef uint8_t pbit_t; /* packed bis (8 bits in a byte) */
-
-/*
- NOTE on the endianess of pbit_t:
- Bits in a pbit_t are ordered MSB first, i.e. 0x80 is the first bit.
- Bit i in a pbit_t array is array[i/8] & (1<<(7-i%8))
-*/
-
-/* determine how many bytes we would need for 'num_bits' packed bits */
-static inline unsigned int osmo_pbit_bytesize(unsigned int num_bits)
-{
- unsigned int pbit_bytesize = num_bits / 8;
-
- if (num_bits % 8)
- pbit_bytesize++;
-
- return pbit_bytesize;
-}
-
-/* convert unpacked bits to packed bits, return length in bytes */
-int osmo_ubit2pbit(pbit_t *out, const ubit_t *in, unsigned int num_bits);
-
-/* convert packed bits to unpacked bits, return length in bytes */
-int osmo_pbit2ubit(ubit_t *out, const pbit_t *in, unsigned int num_bits);
-
-/* convert unpacked bits to packed bits (extended options but slower),
- * return length in bytes (max written ofs of output buffer + 1) */
-int osmo_ubit2pbit_ext(pbit_t *out, unsigned int out_ofs,
- const ubit_t *in, unsigned int in_ofs,
- unsigned int num_bits, int lsb_mode);
-
-/* convert packed bits to unpacked bits (extended options but slower),
- * return length in bytes (max written ofs of output buffer + 1) */
-int osmo_pbit2ubit_ext(ubit_t *out, unsigned int out_ofs,
- const pbit_t *in, unsigned int in_ofs,
- unsigned int num_bits, int lsb_mode);
-
-#endif
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/bitvec.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/bitvec.h
deleted file mode 100644
index 7cb8a87..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/bitvec.h
+++ /dev/null
@@ -1,78 +0,0 @@
-#ifndef _BITVEC_H
-#define _BITVEC_H
-
-/* bit vector utility routines */
-
-/* (C) 2009 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-
-/* In GSM mac blocks, every bit can be 0 or 1, or L or H. L/H are
- * defined relative to the 0x2b padding pattern */
-enum bit_value {
- ZERO = 0,
- ONE = 1,
- L = 2,
- H = 3,
-};
-
-struct bitvec {
- unsigned int cur_bit; /* curser to the next unused bit */
- unsigned int data_len; /* length of data array in bytes */
- uint8_t *data; /* pointer to data array */
-};
-
-/* check if the bit is 0 or 1 for a given position inside a bitvec */
-enum bit_value bitvec_get_bit_pos(const struct bitvec *bv, unsigned int bitnr);
-
-/* check if the bit is L or H for a given position inside a bitvec */
-enum bit_value bitvec_get_bit_pos_high(const struct bitvec *bv,
- unsigned int bitnr);
-
-/* get the Nth set bit inside the bit vector */
-unsigned int bitvec_get_nth_set_bit(const struct bitvec *bv, unsigned int n);
-
-/* Set a bit at given position */
-int bitvec_set_bit_pos(struct bitvec *bv, unsigned int bitnum,
- enum bit_value bit);
-
-/* Set the next bit in the vector */
-int bitvec_set_bit(struct bitvec *bv, enum bit_value bit);
-
-/* get the next bit (low/high) inside a bitvec */
-int bitvec_get_bit_high(struct bitvec *bv);
-
-/* Set multiple bits at the current position */
-int bitvec_set_bits(struct bitvec *bv, enum bit_value *bits, int count);
-
-/* Add an unsigned integer (of length count bits) to current position */
-int bitvec_set_uint(struct bitvec *bv, unsigned int in, int count);
-
-/* get multiple bits (based on numeric value) from current pos */
-int bitvec_get_uint(struct bitvec *bv, int num_bits);
-
-/* find the first bit set in bit vector */
-int bitvec_find_bit_pos(const struct bitvec *bv, unsigned int n, enum bit_value val);
-
-/* Pad the bit vector up to a certain bit position */
-int bitvec_spare_padding(struct bitvec *bv, unsigned int up_to_bit);
-
-#endif /* _BITVEC_H */
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/conv.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/conv.h
deleted file mode 100644
index af676ee..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/conv.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * conv.h
- *
- * Copyright (C) 2011 Sylvain Munaut <tnt@246tNt.com>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#ifndef __OSMO_CONV_H__
-#define __OSMO_CONV_H__
-
-#include <stdint.h>
-
-#include <osmocom/core/bits.h>
-
-struct osmo_conv_code {
- int N;
- int K;
- int len;
-
- const uint8_t (*next_output)[2];
- const uint8_t (*next_state)[2];
-
- const uint8_t *next_term_output;
- const uint8_t *next_term_state;
-
- const int *puncture;
-};
-
-
-/* Encoding */
-
- /* Low level API */
-struct osmo_conv_encoder {
- const struct osmo_conv_code *code;
- int i_idx; /* Next input bit index */
- int p_idx; /* Current puncture index */
- uint8_t state; /* Current state */
-};
-
-void osmo_conv_encode_init(struct osmo_conv_encoder *encoder,
- const struct osmo_conv_code *code);
-int osmo_conv_encode_raw(struct osmo_conv_encoder *encoder,
- const ubit_t *input, ubit_t *output, int n);
-int osmo_conv_encode_finish(struct osmo_conv_encoder *encoder, ubit_t *output);
-
- /* All-in-one */
-int osmo_conv_encode(const struct osmo_conv_code *code,
- const ubit_t *input, ubit_t *output);
-
-
-/* Decoding */
-
- /* Low level API */
-struct osmo_conv_decoder {
- const struct osmo_conv_code *code;
-
- int n_states;
-
- int len; /* Max o_idx (excl. termination) */
-
- int o_idx; /* output index */
- int p_idx; /* puncture index */
-
- unsigned int *ae; /* accumulater error */
- unsigned int *ae_next; /* next accumulated error (tmp in scan) */
- uint8_t *state_history; /* state history [len][n_states] */
-};
-
-void osmo_conv_decode_init(struct osmo_conv_decoder *decoder,
- const struct osmo_conv_code *code, int len);
-void osmo_conv_decode_reset(struct osmo_conv_decoder *decoder);
-void osmo_conv_decode_deinit(struct osmo_conv_decoder *decoder);
-
-int osmo_conv_decode_scan(struct osmo_conv_decoder *decoder,
- const sbit_t *input, int n);
-int osmo_conv_decode_finish(struct osmo_conv_decoder *decoder,
- const sbit_t *input);
-int osmo_conv_decode_get_output(struct osmo_conv_decoder *decoder,
- ubit_t *output, int has_finish);
-
- /* All-in-one */
-int osmo_conv_decode(const struct osmo_conv_code *code,
- const sbit_t *input, ubit_t *output);
-
-
-#endif /* __OSMO_CONV_H__ */
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/crc16.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/crc16.h
deleted file mode 100644
index 0e52417..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/crc16.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * This was copied from the linux kernel and adjusted for our types.
- */
-/*
- * crc16.h - CRC-16 routine
- *
- * Implements the standard CRC-16:
- * Width 16
- * Poly 0x8005 (x^16 + x^15 + x^2 + 1)
- * Init 0
- *
- * Copyright (c) 2005 Ben Gardner <bgardner@wabtec.com>
- *
- * This source code is licensed under the GNU General Public License,
- * Version 2. See the file COPYING for more details.
- */
-
-#ifndef __CRC16_H
-#define __CRC16_H
-
-#include <stdint.h>
-
-#include <sys/types.h>
-
-extern uint16_t const osmo_crc16_table[256];
-
-extern uint16_t osmo_crc16(uint16_t crc, const uint8_t *buffer, size_t len);
-
-static inline uint16_t osmo_crc16_byte(uint16_t crc, const uint8_t data)
-{
- return (crc >> 8) ^ osmo_crc16_table[(crc ^ data) & 0xff];
-}
-
-#endif /* __CRC16_H */
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/gsmtap.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/gsmtap.h
deleted file mode 100644
index 236b25a..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/gsmtap.h
+++ /dev/null
@@ -1,89 +0,0 @@
-#ifndef _GSMTAP_H
-#define _GSMTAP_H
-
-/* gsmtap header, pseudo-header in front of the actua GSM payload */
-
-/* GSMTAP is a generic header format for GSM protocol captures,
- * it uses the IANA-assigned UDP port number 4729 and carries
- * payload in various formats of GSM interfaces such as Um MAC
- * blocks or Um bursts.
- *
- * Example programs generating GSMTAP data are airprobe
- * (http://airprobe.org/) or OsmocomBB (http://bb.osmocom.org/)
- */
-
-#include <stdint.h>
-
-#define GSMTAP_VERSION 0x02
-
-#define GSMTAP_TYPE_UM 0x01
-#define GSMTAP_TYPE_ABIS 0x02
-#define GSMTAP_TYPE_UM_BURST 0x03 /* raw burst bits */
-#define GSMTAP_TYPE_SIM 0x04
-#define GSMTAP_TYPE_TETRA_I1 0x05 /* tetra air interface */
-#define GSMTAP_TYPE_TETRA_I1_BURST 0x06 /* tetra air interface */
-
-/* sub-types for TYPE_UM_BURST */
-#define GSMTAP_BURST_UNKNOWN 0x00
-#define GSMTAP_BURST_FCCH 0x01
-#define GSMTAP_BURST_PARTIAL_SCH 0x02
-#define GSMTAP_BURST_SCH 0x03
-#define GSMTAP_BURST_CTS_SCH 0x04
-#define GSMTAP_BURST_COMPACT_SCH 0x05
-#define GSMTAP_BURST_NORMAL 0x06
-#define GSMTAP_BURST_DUMMY 0x07
-#define GSMTAP_BURST_ACCESS 0x08
-#define GSMTAP_BURST_NONE 0x09
-
-/* sub-types for TYPE_UM */
-#define GSMTAP_CHANNEL_UNKNOWN 0x00
-#define GSMTAP_CHANNEL_BCCH 0x01
-#define GSMTAP_CHANNEL_CCCH 0x02
-#define GSMTAP_CHANNEL_RACH 0x03
-#define GSMTAP_CHANNEL_AGCH 0x04
-#define GSMTAP_CHANNEL_PCH 0x05
-#define GSMTAP_CHANNEL_SDCCH 0x06
-#define GSMTAP_CHANNEL_SDCCH4 0x07
-#define GSMTAP_CHANNEL_SDCCH8 0x08
-#define GSMTAP_CHANNEL_TCH_F 0x09
-#define GSMTAP_CHANNEL_TCH_H 0x0a
-#define GSMTAP_CHANNEL_ACCH 0x80
-
-/* sub-types for TYPE_TETRA_AIR */
-#define GSMTAP_TETRA_BSCH 0x01
-#define GSMTAP_TETRA_AACH 0x02
-#define GSMTAP_TETRA_SCH_HU 0x03
-#define GSMTAP_TETRA_SCH_HD 0x04
-#define GSMTAP_TETRA_SCH_F 0x05
-#define GSMTAP_TETRA_BNCH 0x06
-#define GSMTAP_TETRA_STCH 0x07
-#define GSMTAP_TETRA_TCH_F 0x08
-
-/* flags for the ARFCN */
-#define GSMTAP_ARFCN_F_PCS 0x8000
-#define GSMTAP_ARFCN_F_UPLINK 0x4000
-#define GSMTAP_ARFCN_MASK 0x3fff
-
-/* IANA-assigned well-known UDP port for GSMTAP messages */
-#define GSMTAP_UDP_PORT 4729
-
-struct gsmtap_hdr {
- uint8_t version; /* version, set to 0x01 currently */
- uint8_t hdr_len; /* length in number of 32bit words */
- uint8_t type; /* see GSMTAP_TYPE_* */
- uint8_t timeslot; /* timeslot (0..7 on Um) */
-
- uint16_t arfcn; /* ARFCN (frequency) */
- int8_t signal_dbm; /* signal level in dBm */
- int8_t snr_db; /* signal/noise ratio in dB */
-
- uint32_t frame_number; /* GSM Frame Number (FN) */
-
- uint8_t sub_type; /* Type of burst/channel, see above */
- uint8_t antenna_nr; /* Antenna Number */
- uint8_t sub_slot; /* sub-slot within timeslot */
- uint8_t res; /* reserved for future use (RFU) */
-
-} __attribute__((packed));
-
-#endif /* _GSMTAP_H */
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/gsmtap_util.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/gsmtap_util.h
deleted file mode 100644
index f553c17..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/gsmtap_util.h
+++ /dev/null
@@ -1,53 +0,0 @@
-#ifndef _GSMTAP_UTIL_H
-#define _GSMTAP_UTIL_H
-
-#include <stdint.h>
-#include <osmocom/core/write_queue.h>
-#include <osmocom/core/select.h>
-
-/* convert RSL channel number to GSMTAP channel type */
-uint8_t chantype_rsl2gsmtap(uint8_t rsl_chantype, uint8_t rsl_link_id);
-
-/* generate msgb from data + metadata */
-struct msgb *gsmtap_makemsg(uint16_t arfcn, uint8_t ts, uint8_t chan_type,
- uint8_t ss, uint32_t fn, int8_t signal_dbm,
- uint8_t snr, const uint8_t *data, unsigned int len);
-
-/* one gsmtap instance */
-struct gsmtap_inst {
- int ofd_wq_mode;
- struct osmo_wqueue wq;
- struct osmo_fd sink_ofd;
-};
-
-static inline int gsmtap_inst_fd(struct gsmtap_inst *gti)
-{
- return gti->wq.bfd.fd;
-}
-
-/* Open a GSMTAP source (sending) socket, conncet it to host/port and
- * return resulting fd */
-int gsmtap_source_init_fd(const char *host, uint16_t port);
-
-/* Add a local sink to an existing GSMTAP source and return fd */
-int gsmtap_source_add_sink_fd(int gsmtap_fd);
-
-/* Open GSMTAP source (sending) socket, connect it to host/port,
- * allocate 'struct gsmtap_inst' and optionally osmo_fd/osmo_wqueue
- * registration */
-struct gsmtap_inst *gsmtap_source_init(const char *host, uint16_t port,
- int ofd_wq_mode);
-
-/* Add a local sink to an existing GSMTAP source instance */
-int gsmtap_source_add_sink(struct gsmtap_inst *gti);
-
-/* Send a msgb through a GSMTAP source */
-int gsmtap_sendmsg(struct gsmtap_inst *gti, struct msgb *msg);
-
-/* generate a message and send it via GSMTAP */
-int gsmtap_send(struct gsmtap_inst *gti, uint16_t arfcn, uint8_t ts,
- uint8_t chan_type, uint8_t ss, uint32_t fn,
- int8_t signal_dbm, uint8_t snr, const uint8_t *data,
- unsigned int len);
-
-#endif /* _GSMTAP_UTIL_H */
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/linuxlist.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/linuxlist.h
deleted file mode 100644
index ff2c491..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/linuxlist.h
+++ /dev/null
@@ -1,360 +0,0 @@
-#ifndef _LINUX_LLIST_H
-#define _LINUX_LLIST_H
-
-#include <stddef.h>
-
-#ifndef inline
-#define inline __inline__
-#endif
-
-static inline void prefetch(__attribute__((unused)) const void *x) {;}
-
-/**
- * container_of - cast a member of a structure out to the containing structure
- *
- * @ptr: the pointer to the member.
- * @type: the type of the container struct this is embedded in.
- * @member: the name of the member within the struct.
- *
- */
-#define container_of(ptr, type, member) ({ \
- const typeof( ((type *)0)->member ) *__mptr = (typeof( ((type *)0)->member ) *)(ptr); \
- (type *)( (char *)__mptr - offsetof(type, member) );})
-
-
-/*
- * These are non-NULL pointers that will result in page faults
- * under normal circumstances, used to verify that nobody uses
- * non-initialized llist entries.
- */
-#define LLIST_POISON1 ((void *) 0x00100100)
-#define LLIST_POISON2 ((void *) 0x00200200)
-
-/*
- * Simple doubly linked llist implementation.
- *
- * Some of the internal functions ("__xxx") are useful when
- * manipulating whole llists rather than single entries, as
- * sometimes we already know the next/prev entries and we can
- * generate better code by using them directly rather than
- * using the generic single-entry routines.
- */
-
-struct llist_head {
- struct llist_head *next, *prev;
-};
-
-#define LLIST_HEAD_INIT(name) { &(name), &(name) }
-
-#define LLIST_HEAD(name) \
- struct llist_head name = LLIST_HEAD_INIT(name)
-
-#define INIT_LLIST_HEAD(ptr) do { \
- (ptr)->next = (ptr); (ptr)->prev = (ptr); \
-} while (0)
-
-/*
- * Insert a new entry between two known consecutive entries.
- *
- * This is only for internal llist manipulation where we know
- * the prev/next entries already!
- */
-static inline void __llist_add(struct llist_head *_new,
- struct llist_head *prev,
- struct llist_head *next)
-{
- next->prev = _new;
- _new->next = next;
- _new->prev = prev;
- prev->next = _new;
-}
-
-/**
- * llist_add - add a new entry
- * @new: new entry to be added
- * @head: llist head to add it after
- *
- * Insert a new entry after the specified head.
- * This is good for implementing stacks.
- */
-static inline void llist_add(struct llist_head *_new, struct llist_head *head)
-{
- __llist_add(_new, head, head->next);
-}
-
-/**
- * llist_add_tail - add a new entry
- * @new: new entry to be added
- * @head: llist head to add it before
- *
- * Insert a new entry before the specified head.
- * This is useful for implementing queues.
- */
-static inline void llist_add_tail(struct llist_head *_new, struct llist_head *head)
-{
- __llist_add(_new, head->prev, head);
-}
-
-/*
- * Delete a llist entry by making the prev/next entries
- * point to each other.
- *
- * This is only for internal llist manipulation where we know
- * the prev/next entries already!
- */
-static inline void __llist_del(struct llist_head * prev, struct llist_head * next)
-{
- next->prev = prev;
- prev->next = next;
-}
-
-/**
- * llist_del - deletes entry from llist.
- * @entry: the element to delete from the llist.
- * Note: llist_empty on entry does not return true after this, the entry is
- * in an undefined state.
- */
-static inline void llist_del(struct llist_head *entry)
-{
- __llist_del(entry->prev, entry->next);
- entry->next = (struct llist_head *)LLIST_POISON1;
- entry->prev = (struct llist_head *)LLIST_POISON2;
-}
-
-/**
- * llist_del_init - deletes entry from llist and reinitialize it.
- * @entry: the element to delete from the llist.
- */
-static inline void llist_del_init(struct llist_head *entry)
-{
- __llist_del(entry->prev, entry->next);
- INIT_LLIST_HEAD(entry);
-}
-
-/**
- * llist_move - delete from one llist and add as another's head
- * @llist: the entry to move
- * @head: the head that will precede our entry
- */
-static inline void llist_move(struct llist_head *llist, struct llist_head *head)
-{
- __llist_del(llist->prev, llist->next);
- llist_add(llist, head);
-}
-
-/**
- * llist_move_tail - delete from one llist and add as another's tail
- * @llist: the entry to move
- * @head: the head that will follow our entry
- */
-static inline void llist_move_tail(struct llist_head *llist,
- struct llist_head *head)
-{
- __llist_del(llist->prev, llist->next);
- llist_add_tail(llist, head);
-}
-
-/**
- * llist_empty - tests whether a llist is empty
- * @head: the llist to test.
- */
-static inline int llist_empty(const struct llist_head *head)
-{
- return head->next == head;
-}
-
-static inline void __llist_splice(struct llist_head *llist,
- struct llist_head *head)
-{
- struct llist_head *first = llist->next;
- struct llist_head *last = llist->prev;
- struct llist_head *at = head->next;
-
- first->prev = head;
- head->next = first;
-
- last->next = at;
- at->prev = last;
-}
-
-/**
- * llist_splice - join two llists
- * @llist: the new llist to add.
- * @head: the place to add it in the first llist.
- */
-static inline void llist_splice(struct llist_head *llist, struct llist_head *head)
-{
- if (!llist_empty(llist))
- __llist_splice(llist, head);
-}
-
-/**
- * llist_splice_init - join two llists and reinitialise the emptied llist.
- * @llist: the new llist to add.
- * @head: the place to add it in the first llist.
- *
- * The llist at @llist is reinitialised
- */
-static inline void llist_splice_init(struct llist_head *llist,
- struct llist_head *head)
-{
- if (!llist_empty(llist)) {
- __llist_splice(llist, head);
- INIT_LLIST_HEAD(llist);
- }
-}
-
-/**
- * llist_entry - get the struct for this entry
- * @ptr: the &struct llist_head pointer.
- * @type: the type of the struct this is embedded in.
- * @member: the name of the llist_struct within the struct.
- */
-#define llist_entry(ptr, type, member) \
- container_of(ptr, type, member)
-
-/**
- * llist_for_each - iterate over a llist
- * @pos: the &struct llist_head to use as a loop counter.
- * @head: the head for your llist.
- */
-#define llist_for_each(pos, head) \
- for (pos = (head)->next, prefetch(pos->next); pos != (head); \
- pos = pos->next, prefetch(pos->next))
-
-/**
- * __llist_for_each - iterate over a llist
- * @pos: the &struct llist_head to use as a loop counter.
- * @head: the head for your llist.
- *
- * This variant differs from llist_for_each() in that it's the
- * simplest possible llist iteration code, no prefetching is done.
- * Use this for code that knows the llist to be very short (empty
- * or 1 entry) most of the time.
- */
-#define __llist_for_each(pos, head) \
- for (pos = (head)->next; pos != (head); pos = pos->next)
-
-/**
- * llist_for_each_prev - iterate over a llist backwards
- * @pos: the &struct llist_head to use as a loop counter.
- * @head: the head for your llist.
- */
-#define llist_for_each_prev(pos, head) \
- for (pos = (head)->prev, prefetch(pos->prev); pos != (head); \
- pos = pos->prev, prefetch(pos->prev))
-
-/**
- * llist_for_each_safe - iterate over a llist safe against removal of llist entry
- * @pos: the &struct llist_head to use as a loop counter.
- * @n: another &struct llist_head to use as temporary storage
- * @head: the head for your llist.
- */
-#define llist_for_each_safe(pos, n, head) \
- for (pos = (head)->next, n = pos->next; pos != (head); \
- pos = n, n = pos->next)
-
-/**
- * llist_for_each_entry - iterate over llist of given type
- * @pos: the type * to use as a loop counter.
- * @head: the head for your llist.
- * @member: the name of the llist_struct within the struct.
- */
-#define llist_for_each_entry(pos, head, member) \
- for (pos = llist_entry((head)->next, typeof(*pos), member), \
- prefetch(pos->member.next); \
- &pos->member != (head); \
- pos = llist_entry(pos->member.next, typeof(*pos), member), \
- prefetch(pos->member.next))
-
-/**
- * llist_for_each_entry_reverse - iterate backwards over llist of given type.
- * @pos: the type * to use as a loop counter.
- * @head: the head for your llist.
- * @member: the name of the llist_struct within the struct.
- */
-#define llist_for_each_entry_reverse(pos, head, member) \
- for (pos = llist_entry((head)->prev, typeof(*pos), member), \
- prefetch(pos->member.prev); \
- &pos->member != (head); \
- pos = llist_entry(pos->member.prev, typeof(*pos), member), \
- prefetch(pos->member.prev))
-
-/**
- * llist_for_each_entry_continue - iterate over llist of given type
- * continuing after existing point
- * @pos: the type * to use as a loop counter.
- * @head: the head for your llist.
- * @member: the name of the llist_struct within the struct.
- */
-#define llist_for_each_entry_continue(pos, head, member) \
- for (pos = llist_entry(pos->member.next, typeof(*pos), member), \
- prefetch(pos->member.next); \
- &pos->member != (head); \
- pos = llist_entry(pos->member.next, typeof(*pos), member), \
- prefetch(pos->member.next))
-
-/**
- * llist_for_each_entry_safe - iterate over llist of given type safe against removal of llist entry
- * @pos: the type * to use as a loop counter.
- * @n: another type * to use as temporary storage
- * @head: the head for your llist.
- * @member: the name of the llist_struct within the struct.
- */
-#define llist_for_each_entry_safe(pos, n, head, member) \
- for (pos = llist_entry((head)->next, typeof(*pos), member), \
- n = llist_entry(pos->member.next, typeof(*pos), member); \
- &pos->member != (head); \
- pos = n, n = llist_entry(n->member.next, typeof(*n), member))
-
-/**
- * llist_for_each_rcu - iterate over an rcu-protected llist
- * @pos: the &struct llist_head to use as a loop counter.
- * @head: the head for your llist.
- */
-#define llist_for_each_rcu(pos, head) \
- for (pos = (head)->next, prefetch(pos->next); pos != (head); \
- pos = pos->next, ({ smp_read_barrier_depends(); 0;}), prefetch(pos->next))
-
-#define __llist_for_each_rcu(pos, head) \
- for (pos = (head)->next; pos != (head); \
- pos = pos->next, ({ smp_read_barrier_depends(); 0;}))
-
-/**
- * llist_for_each_safe_rcu - iterate over an rcu-protected llist safe
- * against removal of llist entry
- * @pos: the &struct llist_head to use as a loop counter.
- * @n: another &struct llist_head to use as temporary storage
- * @head: the head for your llist.
- */
-#define llist_for_each_safe_rcu(pos, n, head) \
- for (pos = (head)->next, n = pos->next; pos != (head); \
- pos = n, ({ smp_read_barrier_depends(); 0;}), n = pos->next)
-
-/**
- * llist_for_each_entry_rcu - iterate over rcu llist of given type
- * @pos: the type * to use as a loop counter.
- * @head: the head for your llist.
- * @member: the name of the llist_struct within the struct.
- */
-#define llist_for_each_entry_rcu(pos, head, member) \
- for (pos = llist_entry((head)->next, typeof(*pos), member), \
- prefetch(pos->member.next); \
- &pos->member != (head); \
- pos = llist_entry(pos->member.next, typeof(*pos), member), \
- ({ smp_read_barrier_depends(); 0;}), \
- prefetch(pos->member.next))
-
-
-/**
- * llist_for_each_continue_rcu - iterate over an rcu-protected llist
- * continuing after existing point.
- * @pos: the &struct llist_head to use as a loop counter.
- * @head: the head for your llist.
- */
-#define llist_for_each_continue_rcu(pos, head) \
- for ((pos) = (pos)->next, prefetch((pos)->next); (pos) != (head); \
- (pos) = (pos)->next, ({ smp_read_barrier_depends(); 0;}), prefetch((pos)->next))
-
-
-#endif
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/logging.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/logging.h
deleted file mode 100644
index 154ee19..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/logging.h
+++ /dev/null
@@ -1,164 +0,0 @@
-#ifndef _OSMOCORE_LOGGING_H
-#define _OSMOCORE_LOGGING_H
-
-#include <stdio.h>
-#include <stdint.h>
-#include <osmocom/core/linuxlist.h>
-
-#define LOG_MAX_CTX 8
-#define LOG_MAX_FILTERS 8
-
-#define DEBUG
-
-#ifdef DEBUG
-#define DEBUGP(ss, fmt, args...) logp(ss, __FILE__, __LINE__, 0, fmt, ## args)
-#define DEBUGPC(ss, fmt, args...) logp(ss, __FILE__, __LINE__, 1, fmt, ## args)
-#else
-#define DEBUGP(xss, fmt, args...)
-#define DEBUGPC(ss, fmt, args...)
-#endif
-
-
-void logp(int subsys, char *file, int line, int cont, const char *format, ...) __attribute__ ((format (printf, 5, 6)));
-
-/* new logging interface */
-#define LOGP(ss, level, fmt, args...) \
- logp2(ss, level, __FILE__, __LINE__, 0, fmt, ##args)
-#define LOGPC(ss, level, fmt, args...) \
- logp2(ss, level, __FILE__, __LINE__, 1, fmt, ##args)
-
-/* different levels */
-#define LOGL_DEBUG 1 /* debugging information */
-#define LOGL_INFO 3
-#define LOGL_NOTICE 5 /* abnormal/unexpected condition */
-#define LOGL_ERROR 7 /* error condition, requires user action */
-#define LOGL_FATAL 8 /* fatal, program aborted */
-
-#define LOG_FILTER_ALL 0x0001
-
-/* logging levels defined by the library itself */
-#define DLGLOBAL -1
-#define DLLAPDM -2
-#define DLINP -3
-#define DLMUX -4
-#define DLMI -5
-#define DLMIB -6
-#define OSMO_NUM_DLIB 6
-
-struct log_category {
- uint8_t loglevel;
- uint8_t enabled;
-};
-
-struct log_info_cat {
- const char *name;
- const char *color;
- const char *description;
- uint8_t loglevel;
- uint8_t enabled;
-};
-
-/* log context information, passed to filter */
-struct log_context {
- void *ctx[LOG_MAX_CTX+1];
-};
-
-struct log_target;
-
-typedef int log_filter(const struct log_context *ctx,
- struct log_target *target);
-
-struct log_info {
- /* filter callback function */
- log_filter *filter_fn;
-
- /* per-category information */
- struct log_info_cat *cat;
- unsigned int num_cat;
- unsigned int num_cat_user;
-};
-
-enum log_target_type {
- LOG_TGT_TYPE_VTY,
- LOG_TGT_TYPE_SYSLOG,
- LOG_TGT_TYPE_FILE,
- LOG_TGT_TYPE_STDERR,
-};
-
-struct log_target {
- struct llist_head entry;
-
- int filter_map;
- void *filter_data[LOG_MAX_FILTERS+1];
-
- struct log_category *categories;
-
- uint8_t loglevel;
- unsigned int use_color:1;
- unsigned int print_timestamp:1;
-
- enum log_target_type type;
-
- union {
- struct {
- FILE *out;
- const char *fname;
- } tgt_file;
-
- struct {
- int priority;
- int facility;
- } tgt_syslog;
-
- struct {
- void *vty;
- } tgt_vty;
- };
-
- void (*output) (struct log_target *target, unsigned int level,
- const char *string);
-};
-
-/* use the above macros */
-void logp2(int subsys, unsigned int level, char *file,
- int line, int cont, const char *format, ...)
- __attribute__ ((format (printf, 6, 7)));
-int log_init(const struct log_info *inf, void *talloc_ctx);
-
-/* context management */
-void log_reset_context(void);
-int log_set_context(uint8_t ctx, void *value);
-
-/* filter on the targets */
-void log_set_all_filter(struct log_target *target, int);
-
-void log_set_use_color(struct log_target *target, int);
-void log_set_print_timestamp(struct log_target *target, int);
-void log_set_log_level(struct log_target *target, int log_level);
-void log_parse_category_mask(struct log_target *target, const char* mask);
-int log_parse_level(const char *lvl);
-const char *log_level_str(unsigned int lvl);
-int log_parse_category(const char *category);
-void log_set_category_filter(struct log_target *target, int category,
- int enable, int level);
-
-/* management of the targets */
-struct log_target *log_target_create(void);
-void log_target_destroy(struct log_target *target);
-struct log_target *log_target_create_stderr(void);
-struct log_target *log_target_create_file(const char *fname);
-struct log_target *log_target_create_syslog(const char *ident, int option,
- int facility);
-int log_target_file_reopen(struct log_target *tgt);
-
-void log_add_target(struct log_target *target);
-void log_del_target(struct log_target *target);
-
-/* Generate command string for VTY use */
-const char *log_vty_command_string(const struct log_info *info);
-const char *log_vty_command_description(const struct log_info *info);
-
-struct log_target *log_target_find(int type, const char *fname);
-extern struct llist_head osmo_log_target_list;
-
-#endif /* _OSMOCORE_LOGGING_H */
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/msgb.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/msgb.h
deleted file mode 100644
index 915c4a0..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/msgb.h
+++ /dev/null
@@ -1,203 +0,0 @@
-#ifndef _MSGB_H
-#define _MSGB_H
-
-/* (C) 2008 by Harald Welte <laforge@gnumonks.org>
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <osmocom/core/linuxlist.h>
-#include <osmocom/core/utils.h>
-
-#define MSGB_DEBUG
-
-struct msgb {
- struct llist_head list;
-
-
- /* Part of which TRX logical channel we were received / transmitted */
- /* FIXME: move them into the control buffer */
- union {
- void *dst;
- struct gsm_bts_trx *trx;
- };
- struct gsm_lchan *lchan;
-
- /* the Layer1 header (if any) */
- unsigned char *l1h;
- /* the A-bis layer 2 header: OML, RSL(RLL), NS */
- unsigned char *l2h;
- /* the layer 3 header. For OML: FOM; RSL: 04.08; GPRS: BSSGP */
- unsigned char *l3h;
- /* the layer 4 header */
- unsigned char *l4h;
-
- /* the 'control buffer', large enough to contain 5 pointers */
- unsigned long cb[5];
-
- uint16_t data_len;
- uint16_t len;
-
- unsigned char *head;
- unsigned char *tail;
- unsigned char *data;
- unsigned char _data[0];
-};
-
-extern struct msgb *msgb_alloc(uint16_t size, const char *name);
-extern void msgb_free(struct msgb *m);
-extern void msgb_enqueue(struct llist_head *queue, struct msgb *msg);
-extern struct msgb *msgb_dequeue(struct llist_head *queue);
-extern void msgb_reset(struct msgb *m);
-
-#ifdef MSGB_DEBUG
-#include <osmocom/core/panic.h>
-#define MSGB_ABORT(msg, fmt, args ...) do { \
- osmo_panic("msgb(%p): " fmt, msg, ## args); \
- } while(0)
-#else
-#define MSGB_ABORT(msg, fmt, args ...)
-#endif
-
-#define msgb_l1(m) ((void *)(m->l1h))
-#define msgb_l2(m) ((void *)(m->l2h))
-#define msgb_l3(m) ((void *)(m->l3h))
-#define msgb_sms(m) ((void *)(m->l4h))
-
-static inline unsigned int msgb_l1len(const struct msgb *msgb)
-{
- return msgb->tail - (uint8_t *)msgb_l1(msgb);
-}
-
-static inline unsigned int msgb_l2len(const struct msgb *msgb)
-{
- return msgb->tail - (uint8_t *)msgb_l2(msgb);
-}
-
-static inline unsigned int msgb_l3len(const struct msgb *msgb)
-{
- return msgb->tail - (uint8_t *)msgb_l3(msgb);
-}
-
-static inline unsigned int msgb_headlen(const struct msgb *msgb)
-{
- return msgb->len - msgb->data_len;
-}
-
-static inline int msgb_tailroom(const struct msgb *msgb)
-{
- return (msgb->head + msgb->data_len) - msgb->tail;
-}
-
-static inline int msgb_headroom(const struct msgb *msgb)
-{
- return (msgb->data - msgb->head);
-}
-
-static inline unsigned char *msgb_put(struct msgb *msgb, unsigned int len)
-{
- unsigned char *tmp = msgb->tail;
- if (msgb_tailroom(msgb) < (int) len)
- MSGB_ABORT(msgb, "Not enough tailroom msgb_push (%u < %u)\n",
- msgb_tailroom(msgb), len);
- msgb->tail += len;
- msgb->len += len;
- return tmp;
-}
-static inline void msgb_put_u8(struct msgb *msgb, uint8_t word)
-{
- uint8_t *space = msgb_put(msgb, 1);
- space[0] = word & 0xFF;
-}
-static inline void msgb_put_u16(struct msgb *msgb, uint16_t word)
-{
- uint8_t *space = msgb_put(msgb, 2);
- space[0] = word >> 8 & 0xFF;
- space[1] = word & 0xFF;
-}
-static inline void msgb_put_u32(struct msgb *msgb, uint32_t word)
-{
- uint8_t *space = msgb_put(msgb, 4);
- space[0] = word >> 24 & 0xFF;
- space[1] = word >> 16 & 0xFF;
- space[2] = word >> 8 & 0xFF;
- space[3] = word & 0xFF;
-}
-static inline unsigned char *msgb_get(struct msgb *msgb, unsigned int len)
-{
- unsigned char *tmp = msgb->data;
- msgb->data += len;
- msgb->len -= len;
- return tmp;
-}
-static inline uint8_t msgb_get_u8(struct msgb *msgb)
-{
- uint8_t *space = msgb_get(msgb, 1);
- return space[0];
-}
-static inline uint16_t msgb_get_u16(struct msgb *msgb)
-{
- uint8_t *space = msgb_get(msgb, 2);
- return space[0] << 8 | space[1];
-}
-static inline uint32_t msgb_get_u32(struct msgb *msgb)
-{
- uint8_t *space = msgb_get(msgb, 4);
- return space[0] << 24 | space[1] << 16 | space[2] << 8 | space[3];
-}
-static inline unsigned char *msgb_push(struct msgb *msgb, unsigned int len)
-{
- if (msgb_headroom(msgb) < (int) len)
- MSGB_ABORT(msgb, "Not enough headroom msgb_push (%u < %u)\n",
- msgb_headroom(msgb), len);
- msgb->data -= len;
- msgb->len += len;
- return msgb->data;
-}
-static inline unsigned char *msgb_pull(struct msgb *msgb, unsigned int len)
-{
- msgb->len -= len;
- return msgb->data += len;
-}
-
-/* increase the headroom of an empty msgb, reducing the tailroom */
-static inline void msgb_reserve(struct msgb *msg, int len)
-{
- msg->data += len;
- msg->tail += len;
-}
-
-static inline struct msgb *msgb_alloc_headroom(int size, int headroom,
- const char *name)
-{
- osmo_static_assert(size > headroom, headroom_bigger);
-
- struct msgb *msg = msgb_alloc(size, name);
- if (msg)
- msgb_reserve(msg, headroom);
- return msg;
-}
-
-/* non inline functions to ease binding */
-uint8_t *msgb_data(const struct msgb *msg);
-uint16_t msgb_length(const struct msgb *msg);
-
-/* set the talloc context for msgb_alloc[_headroom] */
-void msgb_set_talloc_ctx(void *ctx);
-
-#endif /* _MSGB_H */
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/msgfile.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/msgfile.h
deleted file mode 100644
index c5e67a4..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/msgfile.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * (C) 2010 by Holger Hans Peter Freyther
- * (C) 2010 by On-Waves
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#ifndef MSG_FILE_H
-#define MSG_FILE_H
-
-#include <osmocom/core/linuxlist.h>
-
-/**
- * One message in the list.
- */
-struct osmo_config_entry {
- struct llist_head list;
-
- /* number for everyone to use */
- int nr;
-
- /* data from the file */
- char *mcc;
- char *mnc;
- char *option;
- char *text;
-};
-
-struct osmo_config_list {
- struct llist_head entry;
-};
-
-struct osmo_config_list* osmo_config_list_parse(void *ctx, const char *filename);
-
-#endif
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/panic.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/panic.h
deleted file mode 100644
index c28a844..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/panic.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef OSMOCORE_PANIC_H
-#define OSMOCORE_PANIC_H
-
-#include <stdarg.h>
-
-typedef void (*osmo_panic_handler_t)(const char *fmt, va_list args);
-
-extern void osmo_panic(const char *fmt, ...);
-extern void osmo_set_panic_handler(osmo_panic_handler_t h);
-
-#endif
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/plugin.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/plugin.h
deleted file mode 100644
index 6c0eccc..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/plugin.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef _OSMO_PLUGIN_H
-#define _OSMO_PLUGIN_H
-
-int osmo_plugin_load_all(const char *directory);
-
-#endif
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/prim.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/prim.h
deleted file mode 100644
index e892c62..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/prim.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef OSMO_PRIMITIVE_H
-#define OSMO_PRIMITIVE_H
-
-#include <stdint.h>
-#include <osmocom/core/msgb.h>
-
-enum osmo_prim_operation {
- PRIM_OP_REQUEST,
- PRIM_OP_RESPONSE,
- PRIM_OP_INDICATION,
- PRIM_OP_CONFIRM,
-};
-
-#define _SAP_GSM_SHIFT 24
-
-#define _SAP_GSM_BASE (0x01 << _SAP_GSM_SHIFT)
-#define _SAP_TETRA_BASE (0x02 << _SAP_GSM_SHIFT)
-
-struct osmo_prim_hdr {
- unsigned int sap;
- unsigned int primitive;
- enum osmo_prim_operation operation;
- struct msgb *msg; /* message containing associated data */
-};
-
-static inline void
-osmo_prim_init(struct osmo_prim_hdr *oph, unsigned int sap,
- unsigned int primitive, enum osmo_prim_operation operation,
- struct msgb *msg)
-{
- oph->sap = sap;
- oph->primitive = primitive;
- oph->operation = operation;
- oph->msg = msg;
-}
-
-typedef int (*osmo_prim_cb)(struct osmo_prim_hdr *oph, void *ctx);
-#endif
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/process.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/process.h
deleted file mode 100644
index 1dde021..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/process.h
+++ /dev/null
@@ -1,2 +0,0 @@
-#warning "Update from osmocom/core/process.h to osmocom/core/application.h"
-#include <osmocom/core/application.h>
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/rate_ctr.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/rate_ctr.h
deleted file mode 100644
index ebb8646..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/rate_ctr.h
+++ /dev/null
@@ -1,80 +0,0 @@
-#ifndef _RATE_CTR_H
-#define _RATE_CTR_H
-
-#include <stdint.h>
-
-#include <osmocom/core/linuxlist.h>
-
-#define RATE_CTR_INTV_NUM 4
-
-enum rate_ctr_intv {
- RATE_CTR_INTV_SEC,
- RATE_CTR_INTV_MIN,
- RATE_CTR_INTV_HOUR,
- RATE_CTR_INTV_DAY,
-};
-
-/* for each of the intervals, we keep the following values */
-struct rate_ctr_per_intv {
- uint64_t last;
- uint64_t rate;
-};
-
-/* for each actual value, we keep the following data */
-struct rate_ctr {
- uint64_t current;
- struct rate_ctr_per_intv intv[RATE_CTR_INTV_NUM];
-};
-
-struct rate_ctr_desc {
- const char *name;
- const char *description;
-};
-
-/* Describe a counter group class */
-struct rate_ctr_group_desc {
- /* The prefix to the name of all counters in this group */
- const char *group_name_prefix;
- /* The human-readable description of the group */
- const char *group_description;
- /* The number of counters in this group */
- const unsigned int num_ctr;
- /* Pointer to array of counter names */
- const struct rate_ctr_desc *ctr_desc;
-};
-
-/* One instance of a counter group class */
-struct rate_ctr_group {
- /* Linked list of all counter groups in the system */
- struct llist_head list;
- /* Pointer to the counter group class */
- const struct rate_ctr_group_desc *desc;
- /* The index of this ctr_group within its class */
- unsigned int idx;
- /* Actual counter structures below */
- struct rate_ctr ctr[0];
-};
-
-/* Allocate a new group of counters according to description */
-struct rate_ctr_group *rate_ctr_group_alloc(void *ctx,
- const struct rate_ctr_group_desc *desc,
- unsigned int idx);
-
-/* Free the memory for the specified group of counters */
-void rate_ctr_group_free(struct rate_ctr_group *grp);
-
-/* Add a number to the counter */
-void rate_ctr_add(struct rate_ctr *ctr, int inc);
-
-/* Increment the counter by 1 */
-static inline void rate_ctr_inc(struct rate_ctr *ctr)
-{
- rate_ctr_add(ctr, 1);
-}
-
-/* Initialize the counter module */
-int rate_ctr_init(void *tall_ctx);
-
-struct rate_ctr_group *rate_ctr_get_group_by_name_idx(const char *name, const unsigned int idx);
-const struct rate_ctr *rate_ctr_get_by_name(const struct rate_ctr_group *ctrg, const char *name);
-#endif /* RATE_CTR_H */
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/select.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/select.h
deleted file mode 100644
index 476c564..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/select.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef _BSC_SELECT_H
-#define _BSC_SELECT_H
-
-#include <osmocom/core/linuxlist.h>
-
-#define BSC_FD_READ 0x0001
-#define BSC_FD_WRITE 0x0002
-#define BSC_FD_EXCEPT 0x0004
-
-struct osmo_fd {
- struct llist_head list;
- int fd;
- unsigned int when;
- int (*cb)(struct osmo_fd *fd, unsigned int what);
- void *data;
- unsigned int priv_nr;
-};
-
-int osmo_fd_register(struct osmo_fd *fd);
-void osmo_fd_unregister(struct osmo_fd *fd);
-int osmo_select_main(int polling);
-#endif /* _BSC_SELECT_H */
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/signal.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/signal.h
deleted file mode 100644
index 2442e51..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/signal.h
+++ /dev/null
@@ -1,37 +0,0 @@
-#ifndef OSMO_SIGNAL_H
-#define OSMO_SIGNAL_H
-
-#include <stdint.h>
-
-/* subsystem signaling numbers: we split the numberspace for applications and
- * libraries: from 0 to UINT_MAX/2 for applications, from UINT_MAX/2 to
- * UINT_MAX for libraries. */
-#define OSMO_SIGNAL_SS_APPS 0
-#define OSMO_SIGNAL_SS_RESERVED 2147483648
-
-/* signal subsystems. */
-enum {
- SS_L_GLOBAL = OSMO_SIGNAL_SS_RESERVED,
- SS_L_INPUT,
-};
-
-/* application-defined signal types. */
-#define OSMO_SIGNAL_T_APPS 0
-#define OSMO_SIGNAL_T_RESERVED 2147483648
-
-/* signal types. */
-enum {
- S_L_GLOBAL_SHUTDOWN = OSMO_SIGNAL_T_RESERVED,
-};
-
-typedef int osmo_signal_cbfn(unsigned int subsys, unsigned int signal, void *handler_data, void *signal_data);
-
-
-/* Management */
-int osmo_signal_register_handler(unsigned int subsys, osmo_signal_cbfn *cbfn, void *data);
-void osmo_signal_unregister_handler(unsigned int subsys, osmo_signal_cbfn *cbfn, void *data);
-
-/* Dispatch */
-void osmo_signal_dispatch(unsigned int subsys, unsigned int signal, void *signal_data);
-
-#endif /* OSMO_SIGNAL_H */
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/socket.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/socket.h
deleted file mode 100644
index 612b12c..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/socket.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef _OSMOCORE_SOCKET_H
-#define _OSMOCORE_SOCKET_H
-
-#include <stdint.h>
-
-struct sockaddr;
-
-/* flags for osmo_sock_init. */
-#define OSMO_SOCK_F_CONNECT (1 << 0)
-#define OSMO_SOCK_F_BIND (1 << 1)
-#define OSMO_SOCK_F_NONBLOCK (1 << 2)
-
-int osmo_sock_init(uint16_t family, uint16_t type, uint8_t proto,
- const char *host, uint16_t port, unsigned int flags);
-
-int osmo_sock_init_ofd(struct osmo_fd *ofd, int family, int type, int proto,
- const char *host, uint16_t port, unsigned int flags);
-
-int osmo_sock_init_sa(struct sockaddr *ss, uint16_t type,
- uint8_t proto, unsigned int flags);
-
-/* determine if the given address is a local address */
-int osmo_sockaddr_is_local(struct sockaddr *addr, unsigned int addrlen);
-
-#endif /* _OSMOCORE_SOCKET_H */
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/statistics.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/statistics.h
deleted file mode 100644
index 1849327..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/statistics.h
+++ /dev/null
@@ -1,33 +0,0 @@
-#ifndef _STATISTICS_H
-#define _STATISTICS_H
-
-struct osmo_counter {
- struct llist_head list;
- const char *name;
- const char *description;
- unsigned long value;
-};
-
-static inline void osmo_counter_inc(struct osmo_counter *ctr)
-{
- ctr->value++;
-}
-
-static inline unsigned long osmo_counter_get(struct osmo_counter *ctr)
-{
- return ctr->value;
-}
-
-static inline void osmo_counter_reset(struct osmo_counter *ctr)
-{
- ctr->value = 0;
-}
-
-struct osmo_counter *osmo_counter_alloc(const char *name);
-void osmo_counter_free(struct osmo_counter *ctr);
-
-int osmo_counters_for_each(int (*handle_counter)(struct osmo_counter *, void *), void *data);
-
-struct osmo_counter *osmo_counter_get_by_name(const char *name);
-
-#endif /* _STATISTICS_H */
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/talloc.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/talloc.h
deleted file mode 100644
index f7f7643..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/talloc.h
+++ /dev/null
@@ -1,192 +0,0 @@
-#ifndef _TALLOC_H_
-#define _TALLOC_H_
-/*
- Unix SMB/CIFS implementation.
- Samba temporary memory allocation functions
-
- Copyright (C) Andrew Tridgell 2004-2005
- Copyright (C) Stefan Metzmacher 2006
-
- ** NOTE! The following LGPL license applies to the talloc
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 3 of the License, or (at your option) any later version.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <stdarg.h>
-
-#define HAVE_VA_COPY
-
-/* this is only needed for compatibility with the old talloc */
-typedef void TALLOC_CTX;
-
-/*
- this uses a little trick to allow __LINE__ to be stringified
-*/
-#ifndef __location__
-#define __TALLOC_STRING_LINE1__(s) #s
-#define __TALLOC_STRING_LINE2__(s) __TALLOC_STRING_LINE1__(s)
-#define __TALLOC_STRING_LINE3__ __TALLOC_STRING_LINE2__(__LINE__)
-#define __location__ __FILE__ ":" __TALLOC_STRING_LINE3__
-#endif
-
-#ifndef TALLOC_DEPRECATED
-#define TALLOC_DEPRECATED 0
-#endif
-
-#ifndef PRINTF_ATTRIBUTE
-#if (__GNUC__ >= 3)
-/** Use gcc attribute to check printf fns. a1 is the 1-based index of
- * the parameter containing the format, and a2 the index of the first
- * argument. Note that some gcc 2.x versions don't handle this
- * properly **/
-#define PRINTF_ATTRIBUTE(a1, a2) __attribute__ ((format (__printf__, a1, a2)))
-#else
-#define PRINTF_ATTRIBUTE(a1, a2)
-#endif
-#endif
-
-/* try to make talloc_set_destructor() and talloc_steal() type safe,
- if we have a recent gcc */
-#if (__GNUC__ >= 3)
-#define _TALLOC_TYPEOF(ptr) __typeof__(ptr)
-#define talloc_set_destructor(ptr, function) \
- do { \
- int (*_talloc_destructor_fn)(_TALLOC_TYPEOF(ptr)) = (function); \
- _talloc_set_destructor((ptr), (int (*)(void *))_talloc_destructor_fn); \
- } while(0)
-/* this extremely strange macro is to avoid some braindamaged warning
- stupidity in gcc 4.1.x */
-#define talloc_steal(ctx, ptr) ({ _TALLOC_TYPEOF(ptr) __talloc_steal_ret = (_TALLOC_TYPEOF(ptr))_talloc_steal((ctx),(ptr)); __talloc_steal_ret; })
-#else
-#define talloc_set_destructor(ptr, function) \
- _talloc_set_destructor((ptr), (int (*)(void *))(function))
-#define _TALLOC_TYPEOF(ptr) void *
-#define talloc_steal(ctx, ptr) (_TALLOC_TYPEOF(ptr))_talloc_steal((ctx),(ptr))
-#endif
-
-#define talloc_reference(ctx, ptr) (_TALLOC_TYPEOF(ptr))_talloc_reference((ctx),(ptr))
-#define talloc_move(ctx, ptr) (_TALLOC_TYPEOF(*(ptr)))_talloc_move((ctx),(void *)(ptr))
-
-/* useful macros for creating type checked pointers */
-#define talloc(ctx, type) (type *)talloc_named_const(ctx, sizeof(type), #type)
-#define talloc_size(ctx, size) talloc_named_const(ctx, size, __location__)
-#define talloc_ptrtype(ctx, ptr) (_TALLOC_TYPEOF(ptr))talloc_size(ctx, sizeof(*(ptr)))
-
-#define talloc_new(ctx) talloc_named_const(ctx, 0, "talloc_new: " __location__)
-
-#define talloc_zero(ctx, type) (type *)_talloc_zero(ctx, sizeof(type), #type)
-#define talloc_zero_size(ctx, size) _talloc_zero(ctx, size, __location__)
-
-#define talloc_zero_array(ctx, type, count) (type *)_talloc_zero_array(ctx, sizeof(type), count, #type)
-#define talloc_array(ctx, type, count) (type *)_talloc_array(ctx, sizeof(type), count, #type)
-#define talloc_array_size(ctx, size, count) _talloc_array(ctx, size, count, __location__)
-#define talloc_array_ptrtype(ctx, ptr, count) (_TALLOC_TYPEOF(ptr))talloc_array_size(ctx, sizeof(*(ptr)), count)
-#define talloc_array_length(ctx) (talloc_get_size(ctx)/sizeof(*ctx))
-
-#define talloc_realloc(ctx, p, type, count) (type *)_talloc_realloc_array(ctx, p, sizeof(type), count, #type)
-#define talloc_realloc_size(ctx, ptr, size) _talloc_realloc(ctx, ptr, size, __location__)
-
-#define talloc_memdup(t, p, size) _talloc_memdup(t, p, size, __location__)
-
-#define talloc_set_type(ptr, type) talloc_set_name_const(ptr, #type)
-#define talloc_get_type(ptr, type) (type *)talloc_check_name(ptr, #type)
-#define talloc_get_type_abort(ptr, type) (type *)_talloc_get_type_abort(ptr, #type, __location__)
-
-#define talloc_find_parent_bytype(ptr, type) (type *)talloc_find_parent_byname(ptr, #type)
-
-#if TALLOC_DEPRECATED
-#define talloc_zero_p(ctx, type) talloc_zero(ctx, type)
-#define talloc_p(ctx, type) talloc(ctx, type)
-#define talloc_array_p(ctx, type, count) talloc_array(ctx, type, count)
-#define talloc_realloc_p(ctx, p, type, count) talloc_realloc(ctx, p, type, count)
-#define talloc_destroy(ctx) talloc_free(ctx)
-#define talloc_append_string(c, s, a) (s?talloc_strdup_append(s,a):talloc_strdup(c, a))
-#endif
-
-#define TALLOC_FREE(ctx) do { talloc_free(ctx); ctx=NULL; } while(0)
-
-/* The following definitions come from talloc.c */
-void *_talloc(const void *context, size_t size);
-void *talloc_pool(const void *context, size_t size);
-void _talloc_set_destructor(const void *ptr, int (*_destructor)(void *));
-int talloc_increase_ref_count(const void *ptr);
-size_t talloc_reference_count(const void *ptr);
-void *_talloc_reference(const void *context, const void *ptr);
-int talloc_unlink(const void *context, void *ptr);
-const char *talloc_set_name(const void *ptr, const char *fmt, ...) PRINTF_ATTRIBUTE(2,3);
-void talloc_set_name_const(const void *ptr, const char *name);
-void *talloc_named(const void *context, size_t size,
- const char *fmt, ...) PRINTF_ATTRIBUTE(3,4);
-void *talloc_named_const(const void *context, size_t size, const char *name);
-const char *talloc_get_name(const void *ptr);
-void *talloc_check_name(const void *ptr, const char *name);
-void *_talloc_get_type_abort(const void *ptr, const char *name, const char *location);
-void *talloc_parent(const void *ptr);
-const char *talloc_parent_name(const void *ptr);
-void *talloc_init(const char *fmt, ...) PRINTF_ATTRIBUTE(1,2);
-int talloc_free(void *ptr);
-void talloc_free_children(void *ptr);
-void *_talloc_realloc(const void *context, void *ptr, size_t size, const char *name);
-void *_talloc_steal(const void *new_ctx, const void *ptr);
-void *_talloc_move(const void *new_ctx, const void *pptr);
-size_t talloc_total_size(const void *ptr);
-size_t talloc_total_blocks(const void *ptr);
-void talloc_report_depth_cb(const void *ptr, int depth, int max_depth,
- void (*callback)(const void *ptr,
- int depth, int max_depth,
- int is_ref,
- void *private_data),
- void *private_data);
-void talloc_report_depth_file(const void *ptr, int depth, int max_depth, FILE *f);
-void talloc_report_full(const void *ptr, FILE *f);
-void talloc_report(const void *ptr, FILE *f);
-void talloc_enable_null_tracking(void);
-void talloc_disable_null_tracking(void);
-void talloc_enable_leak_report(void);
-void talloc_enable_leak_report_full(void);
-void *_talloc_zero(const void *ctx, size_t size, const char *name);
-void *_talloc_memdup(const void *t, const void *p, size_t size, const char *name);
-void *_talloc_array(const void *ctx, size_t el_size, unsigned count, const char *name);
-void *_talloc_zero_array(const void *ctx, size_t el_size, unsigned count, const char *name);
-void *_talloc_realloc_array(const void *ctx, void *ptr, size_t el_size, unsigned count, const char *name);
-void *talloc_realloc_fn(const void *context, void *ptr, size_t size);
-void *talloc_autofree_context(void);
-size_t talloc_get_size(const void *ctx);
-void *talloc_find_parent_byname(const void *ctx, const char *name);
-void talloc_show_parents(const void *context, FILE *file);
-int talloc_is_parent(const void *context, const void *ptr);
-
-char *talloc_strdup(const void *t, const char *p);
-char *talloc_strdup_append(char *s, const char *a);
-char *talloc_strdup_append_buffer(char *s, const char *a);
-
-char *talloc_strndup(const void *t, const char *p, size_t n);
-char *talloc_strndup_append(char *s, const char *a, size_t n);
-char *talloc_strndup_append_buffer(char *s, const char *a, size_t n);
-
-char *talloc_vasprintf(const void *t, const char *fmt, va_list ap) PRINTF_ATTRIBUTE(2,0);
-char *talloc_vasprintf_append(char *s, const char *fmt, va_list ap) PRINTF_ATTRIBUTE(2,0);
-char *talloc_vasprintf_append_buffer(char *s, const char *fmt, va_list ap) PRINTF_ATTRIBUTE(2,0);
-
-char *talloc_asprintf(const void *t, const char *fmt, ...) PRINTF_ATTRIBUTE(2,3);
-char *talloc_asprintf_append(char *s, const char *fmt, ...) PRINTF_ATTRIBUTE(2,3);
-char *talloc_asprintf_append_buffer(char *s, const char *fmt, ...) PRINTF_ATTRIBUTE(2,3);
-
-void talloc_set_abort_fn(void (*abort_fn)(const char *reason));
-
-#endif
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/timer.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/timer.h
deleted file mode 100644
index 6c2e8c5..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/timer.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * (C) 2008, 2009 by Holger Hans Peter Freyther <zecke@selfish.org>
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#ifndef TIMER_H
-#define TIMER_H
-
-#include <sys/time.h>
-
-#include <osmocom/core/linuxlist.h>
-
-/**
- * Timer management:
- * - Create a struct osmo_timer_list
- * - Fill out timeout and use add_timer or
- * use schedule_timer to schedule a timer in
- * x seconds and microseconds from now...
- * - Use del_timer to remove the timer
- *
- * Internally:
- * - We hook into select.c to give a timeval of the
- * nearest timer. On already passed timers we give
- * it a 0 to immediately fire after the select
- * - update_timers will call the callbacks and remove
- * the timers.
- *
- */
-struct osmo_timer_list {
- struct llist_head entry;
- struct timeval timeout;
- unsigned int active : 1;
- unsigned int handled : 1;
- unsigned int in_list : 1;
-
- void (*cb)(void*);
- void *data;
-};
-
-/**
- * timer management
- */
-void osmo_timer_add(struct osmo_timer_list *timer);
-void osmo_timer_schedule(struct osmo_timer_list *timer, int seconds, int microseconds);
-void osmo_timer_del(struct osmo_timer_list *timer);
-int osmo_timer_pending(struct osmo_timer_list *timer);
-
-
-/**
- * internal timer list management
- */
-struct timeval *osmo_timers_nearest(void);
-void osmo_timers_prepare(void);
-int osmo_timers_update(void);
-int osmo_timers_check(void);
-
-#endif
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/utils.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/utils.h
deleted file mode 100644
index a1a18e3..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/utils.h
+++ /dev/null
@@ -1,41 +0,0 @@
-#ifndef OSMOCORE_UTIL_H
-#define OSMOCORE_UTIL_H
-
-#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
-#define OSMO_MAX(a, b) (a) >= (b) ? (a) : (b)
-#define OSMO_MIN(a, b) (a) >= (b) ? (b) : (a)
-
-#include <stdint.h>
-
-struct value_string {
- unsigned int value;
- const char *str;
-};
-
-const char *get_value_string(const struct value_string *vs, uint32_t val);
-int get_string_value(const struct value_string *vs, const char *str);
-
-char osmo_bcd2char(uint8_t bcd);
-/* only works for numbers in ascci */
-uint8_t osmo_char2bcd(char c);
-
-int osmo_hexparse(const char *str, uint8_t *b, int max_len);
-char *osmo_hexdump(const unsigned char *buf, int len);
-char *osmo_osmo_hexdump_nospc(const unsigned char *buf, int len);
-char *osmo_ubit_dump(const uint8_t *bits, unsigned int len);
-
-#define osmo_static_assert(exp, name) typedef int dummy##name [(exp) ? 1 : -1];
-
-void osmo_str2lower(char *out, const char *in);
-void osmo_str2upper(char *out, const char *in);
-
-#define OSMO_SNPRINTF_RET(ret, rem, offset, len) \
-do { \
- len += ret; \
- if (ret > rem) \
- ret = rem; \
- offset += ret; \
- rem -= ret; \
-} while (0)
-
-#endif
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/write_queue.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/write_queue.h
deleted file mode 100644
index 41748d7..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/core/write_queue.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Generic write queue implementation */
-/*
- * (C) 2010 by Holger Hans Peter Freyther
- * (C) 2010 by On-Waves
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-#ifndef OSMO_WQUEUE_H
-#define OSMO_WQUEUE_H
-
-#include <osmocom/core/select.h>
-#include <osmocom/core/msgb.h>
-
-struct osmo_wqueue {
- struct osmo_fd bfd;
- unsigned int max_length;
- unsigned int current_length;
-
- struct llist_head msg_queue;
-
- int (*read_cb)(struct osmo_fd *fd);
- int (*write_cb)(struct osmo_fd *fd, struct msgb *msg);
- int (*except_cb)(struct osmo_fd *fd);
-};
-
-void osmo_wqueue_init(struct osmo_wqueue *queue, int max_length);
-void osmo_wqueue_clear(struct osmo_wqueue *queue);
-int osmo_wqueue_enqueue(struct osmo_wqueue *queue, struct msgb *data);
-int osmo_wqueue_bfd_cb(struct osmo_fd *fd, unsigned int what);
-
-#endif
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/crypt/Makefile.am b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/crypt/Makefile.am
deleted file mode 100644
index 7ce69fd..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/crypt/Makefile.am
+++ /dev/null
@@ -1,3 +0,0 @@
-osmocrypt_HEADERS = gprs_cipher.h
-
-osmocryptdir = $(includedir)/osmocom/crypt
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/crypt/gprs_cipher.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/crypt/gprs_cipher.h
deleted file mode 100644
index 3051071..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/crypt/gprs_cipher.h
+++ /dev/null
@@ -1,54 +0,0 @@
-#ifndef _GPRS_CIPHER_H
-#define _GPRS_CIPHER_H
-
-#include <osmocom/core/linuxlist.h>
-
-#define GSM0464_CIPH_MAX_BLOCK 1523
-
-enum gprs_ciph_algo {
- GPRS_ALGO_GEA0,
- GPRS_ALGO_GEA1,
- GPRS_ALGO_GEA2,
- GPRS_ALGO_GEA3,
- _GPRS_ALGO_NUM
-};
-
-enum gprs_cipher_direction {
- GPRS_CIPH_MS2SGSN,
- GPRS_CIPH_SGSN2MS,
-};
-
-/* An implementation of a GPRS cipher */
-struct gprs_cipher_impl {
- struct llist_head list;
- enum gprs_ciph_algo algo;
- const char *name;
- unsigned int priority;
-
- /* As specified in 04.64 Annex A. Uses Kc, IV and direction
- * to generate the 1523 bytes cipher stream that need to be
- * XORed wit the plaintext for encrypt / ciphertext for decrypt */
- int (*run)(uint8_t *out, uint16_t len, uint64_t kc, uint32_t iv,
- enum gprs_cipher_direction direction);
-};
-
-/* register a cipher with the core (from a plugin) */
-int gprs_cipher_register(struct gprs_cipher_impl *ciph);
-
-/* load all available GPRS cipher plugins */
-int gprs_cipher_load(const char *path);
-
-/* function to be called by core code */
-int gprs_cipher_run(uint8_t *out, uint16_t len, enum gprs_ciph_algo algo,
- uint64_t kc, uint32_t iv, enum gprs_cipher_direction dir);
-
-/* Do we have an implementation for this cipher? */
-int gprs_cipher_supported(enum gprs_ciph_algo algo);
-
-/* GSM TS 04.64 / Section A.2.1 : Generation of 'input' */
-uint32_t gprs_cipher_gen_input_ui(uint32_t iov_ui, uint8_t sapi, uint32_t lfn, uint32_t oc);
-
-/* GSM TS 04.64 / Section A.2.1 : Generation of 'input' */
-uint32_t gprs_cipher_gen_input_i(uint32_t iov_i, uint32_t lfn, uint32_t oc);
-
-#endif /* _GPRS_CIPHER_H */
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/Makefile.am b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/Makefile.am
deleted file mode 100644
index 90f19bc..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/Makefile.am
+++ /dev/null
@@ -1,7 +0,0 @@
-osmogsm_HEADERS = a5.h comp128.h gsm0808.h gsm48_ie.h mncc.h rxlev_stat.h \
- gsm0480.h gsm48.h gsm_utils.h rsl.h tlv.h abis_nm.h \
- sysinfo.h prim.h gsm0502.h lapdm.h
-
-SUBDIRS = protocol
-
-osmogsmdir = $(includedir)/osmocom/gsm
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/a5.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/a5.h
deleted file mode 100644
index 2c630e5..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/a5.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * a5.h
- *
- * Copyright (C) 2011 Sylvain Munaut <tnt@246tNt.com>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#ifndef __OSMO_A5_H__
-#define __OSMO_A5_H__
-
-#include <stdint.h>
-
-#include <osmocom/core/bits.h>
-
-static inline uint32_t
-osmo_a5_fn_count(uint32_t fn)
-{
- int t1 = fn / (26 * 51);
- int t2 = fn % 26;
- int t3 = fn % 51;
- return (t1 << 11) | (t3 << 5) | t2;
-}
-
- /* Notes:
- * - key must be 8 bytes long (or NULL for A5/0)
- * - the dl and ul pointer must be either NULL or 114 bits long
- * - fn is the _real_ GSM frame number.
- * (converted internally to fn_count)
- */
-void osmo_a5(int n, uint8_t *key, uint32_t fn, ubit_t *dl, ubit_t *ul);
-void osmo_a5_1(uint8_t *key, uint32_t fn, ubit_t *dl, ubit_t *ul);
-void osmo_a5_2(uint8_t *key, uint32_t fn, ubit_t *dl, ubit_t *ul);
-
-#endif /* __OSMO_A5_H__ */
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/abis_nm.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/abis_nm.h
deleted file mode 100644
index 3f5335e..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/abis_nm.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef _OSMO_GSM_ABIS_NM_H
-#define _OSMO_GSM_ABIS_NM_H
-
-#include <osmocom/gsm/tlv.h>
-#include <osmocom/gsm/gsm_utils.h>
-#include <osmocom/gsm/protocol/gsm_12_21.h>
-
-enum abis_nm_msgtype;
-enum gsm_phys_chan_config;
-
-const enum abis_nm_msgtype abis_nm_reports[4];
-const enum abis_nm_msgtype abis_nm_no_ack_nack[3];
-const enum abis_nm_msgtype abis_nm_sw_load_msgs[9];
-const enum abis_nm_msgtype abis_nm_nacks[33];
-
-extern const struct value_string abis_nm_obj_class_names[];
-extern const struct value_string abis_nm_adm_state_names[];
-
-const char *abis_nm_nack_cause_name(uint8_t cause);
-const char *abis_nm_nack_name(uint8_t nack);
-const char *abis_nm_event_type_name(uint8_t cause);
-const char *abis_nm_severity_name(uint8_t cause);
-const struct tlv_definition abis_nm_att_tlvdef;
-const char *abis_nm_opstate_name(uint8_t os);
-const char *abis_nm_avail_name(uint8_t avail);
-const char *abis_nm_test_name(uint8_t test);
-void abis_nm_debugp_foh(int ss, struct abis_om_fom_hdr *foh);
-
-int abis_nm_chcomb4pchan(enum gsm_phys_chan_config pchan);
-enum abis_nm_chan_comb abis_nm_pchan4chcomb(uint8_t chcomb);
-#endif /* _OSMO_GSM_ABIS_NM_H */
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/comp128.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/comp128.h
deleted file mode 100644
index c37808f..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/comp128.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * COMP128 header
- *
- * See comp128.c for details
- */
-
-#ifndef __COMP128_H__
-#define __COMP128_H__
-
-#include <stdint.h>
-
-/*
- * Performs the COMP128 algorithm (used as A3/A8)
- * ki : uint8_t [16]
- * srand : uint8_t [16]
- * sres : uint8_t [4]
- * kc : uint8_t [8]
- */
-void comp128(uint8_t *ki, uint8_t *srand, uint8_t *sres, uint8_t *kc);
-
-#endif /* __COMP128_H__ */
-
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/gsm0480.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/gsm0480.h
deleted file mode 100644
index f6c3734..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/gsm0480.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef gsm0480_h
-#define gsm0480_h
-
-#include <osmocom/core/msgb.h>
-#include <osmocom/gsm/protocol/gsm_04_08.h>
-#include <osmocom/gsm/protocol/gsm_04_80.h>
-
-#define MAX_LEN_USSD_STRING 31
-
-struct ussd_request {
- uint8_t text[MAX_LEN_USSD_STRING + 1];
- uint8_t transaction_id;
- uint8_t invoke_id;
-};
-
-int gsm0480_decode_ussd_request(const struct gsm48_hdr *hdr, uint16_t len,
- struct ussd_request *request);
-
-struct msgb *gsm0480_create_ussd_resp(uint8_t invoke_id, uint8_t trans_id, const char *text);
-struct msgb *gsm0480_create_unstructuredSS_Notify(int alertPattern, const char *text);
-struct msgb *gsm0480_create_notifySS(const char *text);
-
-int gsm0480_wrap_invoke(struct msgb *msg, int op, int link_id);
-int gsm0480_wrap_facility(struct msgb *msg);
-
-#endif
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/gsm0502.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/gsm0502.h
deleted file mode 100644
index 46b629e..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/gsm0502.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef OSMOCOM_GSM_0502_H
-#define OSMOCOM_GSM_0502_H
-
-#include <stdint.h>
-
-#include <osmocom/gsm/protocol/gsm_04_08.h>
-#include <osmocom/gsm/protocol/gsm_08_58.h>
-
-/* Table 5 Clause 7 TS 05.02 */
-static inline unsigned int
-gsm0502_get_n_pag_blocks(struct gsm48_control_channel_descr *chan_desc)
-{
- if (chan_desc->ccch_conf == RSL_BCCH_CCCH_CONF_1_C)
- return 3 - chan_desc->bs_ag_blks_res;
- else
- return 9 - chan_desc->bs_ag_blks_res;
-}
-
-/* Chapter 6.5.2 of TS 05.02 */
-static inline unsigned int
-gsm0502_get_ccch_group(uint64_t imsi, unsigned int bs_cc_chans,
- unsigned int n_pag_blocks)
-{
- return (imsi % 1000) % (bs_cc_chans * n_pag_blocks) / n_pag_blocks;
-}
-
-/* Chapter 6.5.2 of TS 05.02 */
-static inline unsigned int
-gsm0502_get_paging_group(uint64_t imsi, unsigned int bs_cc_chans,
- int n_pag_blocks)
-{
- return (imsi % 1000) % (bs_cc_chans * n_pag_blocks) % n_pag_blocks;
-}
-
-unsigned int
-gsm0502_calc_paging_group(struct gsm48_control_channel_descr *chan_desc, uint64_t imsi);
-
-#endif
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/gsm0808.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/gsm0808.h
deleted file mode 100644
index 38d88ef..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/gsm0808.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/* (C) 2009,2010 by Holger Hans Peter Freyther <zecke@selfish.org>
- * (C) 2009,2010 by On-Waves
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-#ifndef OSMOCORE_GSM0808_H
-#define OSMOCORE_GSM0808_H
-
-#include "tlv.h"
-
-struct msgb;
-
-struct msgb *gsm0808_create_layer3(struct msgb *msg, uint16_t netcode, uint16_t countrycode, int lac, uint16_t ci);
-struct msgb *gsm0808_create_reset(void);
-struct msgb *gsm0808_create_clear_command(uint8_t reason);
-struct msgb *gsm0808_create_clear_complete(void);
-struct msgb *gsm0808_create_cipher_complete(struct msgb *layer3, uint8_t alg_id);
-struct msgb *gsm0808_create_cipher_reject(uint8_t cause);
-struct msgb *gsm0808_create_classmark_update(const uint8_t *classmark, uint8_t length);
-struct msgb *gsm0808_create_sapi_reject(uint8_t link_id);
-struct msgb *gsm0808_create_assignment_completed(uint8_t rr_cause,
- uint8_t chosen_channel, uint8_t encr_alg_id,
- uint8_t speech_mode);
-struct msgb *gsm0808_create_assignment_failure(uint8_t cause, uint8_t *rr_cause);
-struct msgb *gsm0808_create_clear_rqst(uint8_t cause);
-
-struct msgb *gsm0808_create_dtap(struct msgb *msg, uint8_t link_id);
-void gsm0808_prepend_dtap_header(struct msgb *msg, uint8_t link_id);
-
-const struct tlv_definition *gsm0808_att_tlvdef(void);
-
-const char *gsm0808_bssmap_name(uint8_t msg_type);
-const char *gsm0808_bssap_name(uint8_t msg_type);
-
-#endif
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/gsm48.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/gsm48.h
deleted file mode 100644
index 16a625a..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/gsm48.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef _OSMOCORE_GSM48_H
-#define _OSMOCORE_GSM48_H
-
-#include <osmocom/gsm/tlv.h>
-#include <osmocom/gsm/protocol/gsm_04_08.h>
-#include <osmocom/gsm/gsm48_ie.h>
-
-/* A parsed GPRS routing area */
-struct gprs_ra_id {
- uint16_t mnc;
- uint16_t mcc;
- uint16_t lac;
- uint8_t rac;
-};
-
-extern const struct tlv_definition gsm48_att_tlvdef;
-extern const struct tlv_definition gsm48_rr_att_tlvdef;
-extern const struct tlv_definition gsm48_mm_att_tlvdef;
-const char *gsm48_cc_state_name(uint8_t state);
-const char *gsm48_cc_msg_name(uint8_t msgtype);
-const char *rr_cause_name(uint8_t cause);
-
-void gsm48_generate_lai(struct gsm48_loc_area_id *lai48, uint16_t mcc,
- uint16_t mnc, uint16_t lac);
-int gsm48_generate_mid_from_tmsi(uint8_t *buf, uint32_t tmsi);
-int gsm48_generate_mid_from_imsi(uint8_t *buf, const char *imsi);
-
-/* Convert Mobile Identity (10.5.1.4) to string */
-int gsm48_mi_to_string(char *string, const int str_len,
- const uint8_t *mi, const int mi_len);
-
-/* Parse Routeing Area Identifier */
-void gsm48_parse_ra(struct gprs_ra_id *raid, const uint8_t *buf);
-int gsm48_construct_ra(uint8_t *buf, const struct gprs_ra_id *raid);
-
-int gsm48_number_of_paging_subchannels(struct gsm48_control_channel_descr *chan_desc);
-
-#endif
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/gsm48_ie.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/gsm48_ie.h
deleted file mode 100644
index f4fce25..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/gsm48_ie.h
+++ /dev/null
@@ -1,117 +0,0 @@
-#ifndef _OSMOCORE_GSM48_IE_H
-#define _OSMOCORE_GSM48_IE_H
-
-#include <stdint.h>
-#include <string.h>
-#include <errno.h>
-
-#include <osmocom/core/msgb.h>
-#include <osmocom/gsm/tlv.h>
-#include <osmocom/gsm/mncc.h>
-#include <osmocom/gsm/protocol/gsm_04_08.h>
-
-/* decode a 'called/calling/connect party BCD number' as in 10.5.4.7 */
-int gsm48_decode_bcd_number(char *output, int output_len,
- const uint8_t *bcd_lv, int h_len);
-
-/* convert a ASCII phone number to 'called/calling/connect party BCD number' */
-int gsm48_encode_bcd_number(uint8_t *bcd_lv, uint8_t max_len,
- int h_len, const char *input);
-/* decode 'bearer capability' */
-int gsm48_decode_bearer_cap(struct gsm_mncc_bearer_cap *bcap,
- const uint8_t *lv);
-/* encode 'bearer capability' */
-int gsm48_encode_bearer_cap(struct msgb *msg, int lv_only,
- const struct gsm_mncc_bearer_cap *bcap);
-/* decode 'call control cap' */
-int gsm48_decode_cccap(struct gsm_mncc_cccap *ccap, const uint8_t *lv);
-/* encode 'call control cap' */
-int gsm48_encode_cccap(struct msgb *msg,
- const struct gsm_mncc_cccap *ccap);
-/* decode 'called party BCD number' */
-int gsm48_decode_called(struct gsm_mncc_number *called,
- const uint8_t *lv);
-/* encode 'called party BCD number' */
-int gsm48_encode_called(struct msgb *msg,
- const struct gsm_mncc_number *called);
-/* decode callerid of various IEs */
-int gsm48_decode_callerid(struct gsm_mncc_number *callerid,
- const uint8_t *lv);
-/* encode callerid of various IEs */
-int gsm48_encode_callerid(struct msgb *msg, int ie, int max_len,
- const struct gsm_mncc_number *callerid);
-/* decode 'cause' */
-int gsm48_decode_cause(struct gsm_mncc_cause *cause,
- const uint8_t *lv);
-/* encode 'cause' */
-int gsm48_encode_cause(struct msgb *msg, int lv_only,
- const struct gsm_mncc_cause *cause);
-/* decode 'calling number' */
-int gsm48_decode_calling(struct gsm_mncc_number *calling,
- const uint8_t *lv);
-/* encode 'calling number' */
-int gsm48_encode_calling(struct msgb *msg,
- const struct gsm_mncc_number *calling);
-/* decode 'connected number' */
-int gsm48_decode_connected(struct gsm_mncc_number *connected,
- const uint8_t *lv);
-/* encode 'connected number' */
-int gsm48_encode_connected(struct msgb *msg,
- const struct gsm_mncc_number *connected);
-/* decode 'redirecting number' */
-int gsm48_decode_redirecting(struct gsm_mncc_number *redirecting,
- const uint8_t *lv);
-/* encode 'redirecting number' */
-int gsm48_encode_redirecting(struct msgb *msg,
- const struct gsm_mncc_number *redirecting);
-/* decode 'facility' */
-int gsm48_decode_facility(struct gsm_mncc_facility *facility,
- const uint8_t *lv);
-/* encode 'facility' */
-int gsm48_encode_facility(struct msgb *msg, int lv_only,
- const struct gsm_mncc_facility *facility);
-/* decode 'notify' */
-int gsm48_decode_notify(int *notify, const uint8_t *v);
-/* encode 'notify' */
-int gsm48_encode_notify(struct msgb *msg, int notify);
-/* decode 'signal' */
-int gsm48_decode_signal(int *signal, const uint8_t *v);
-/* encode 'signal' */
-int gsm48_encode_signal(struct msgb *msg, int signal);
-/* decode 'keypad' */
-int gsm48_decode_keypad(int *keypad, const uint8_t *lv);
-/* encode 'keypad' */
-int gsm48_encode_keypad(struct msgb *msg, int keypad);
-/* decode 'progress' */
-int gsm48_decode_progress(struct gsm_mncc_progress *progress,
- const uint8_t *lv);
-/* encode 'progress' */
-int gsm48_encode_progress(struct msgb *msg, int lv_only,
- const struct gsm_mncc_progress *p);
-/* decode 'user-user' */
-int gsm48_decode_useruser(struct gsm_mncc_useruser *uu,
- const uint8_t *lv);
-/* encode 'useruser' */
-int gsm48_encode_useruser(struct msgb *msg, int lv_only,
- const struct gsm_mncc_useruser *uu);
-/* decode 'ss version' */
-int gsm48_decode_ssversion(struct gsm_mncc_ssversion *ssv,
- const uint8_t *lv);
-/* encode 'ss version' */
-int gsm48_encode_ssversion(struct msgb *msg,
- const struct gsm_mncc_ssversion *ssv);
-/* decode 'more data' does not require a function, because it has no value */
-/* encode 'more data' */
-int gsm48_encode_more(struct msgb *msg);
-
-/* structure of one frequency */
-struct gsm_sysinfo_freq {
- /* if the frequency included in the sysinfo */
- uint8_t mask;
-};
-
-/* decode "Cell Channel Description" (10.5.2.1b) and other frequency lists */
-int gsm48_decode_freq_list(struct gsm_sysinfo_freq *f, uint8_t *cd,
- uint8_t len, uint8_t mask, uint8_t frqt);
-
-#endif
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/gsm_utils.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/gsm_utils.h
deleted file mode 100644
index c9a3101..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/gsm_utils.h
+++ /dev/null
@@ -1,150 +0,0 @@
-/* GSM utility functions, e.g. coding and decoding */
-/*
- * (C) 2008 by Daniel Willmann <daniel@totalueberwachung.de>
- * (C) 2009 by Holger Hans Peter Freyther <zecke@selfish.org>
- * (C) 2009-2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#ifndef GSM_UTILS_H
-#define GSM_UTILS_H
-
-#include <stdint.h>
-
-#define ADD_MODULO(sum, delta, modulo) do { \
- if ((sum += delta) >= modulo) \
- sum -= modulo; \
- } while (0)
-
-#define GSM_MAX_FN (26*51*2048)
-
-struct gsm_time {
- uint32_t fn; /* FN count */
- uint16_t t1; /* FN div (26*51) */
- uint8_t t2; /* FN modulo 26 */
- uint8_t t3; /* FN modulo 51 */
- uint8_t tc;
-};
-
-enum gsm_band {
- GSM_BAND_850 = 1,
- GSM_BAND_900 = 2,
- GSM_BAND_1800 = 4,
- GSM_BAND_1900 = 8,
- GSM_BAND_450 = 0x10,
- GSM_BAND_480 = 0x20,
- GSM_BAND_750 = 0x40,
- GSM_BAND_810 = 0x80,
-};
-
-const char *gsm_band_name(enum gsm_band band);
-enum gsm_band gsm_band_parse(const char *mhz);
-
-int gsm_7bit_decode(char *decoded, const uint8_t *user_data, uint8_t length);
-int gsm_7bit_decode_hdr(char *decoded, const uint8_t *user_data, uint8_t length, uint8_t ud_hdr_ind);
-int gsm_7bit_encode(uint8_t *result, const char *data);
-
-int gsm_septets2octets(uint8_t *result, uint8_t *rdata, uint8_t septet_len, uint8_t padding);
-int gsm_septet_encode(uint8_t *result, const char *data);
-uint8_t gsm_get_octet_len(const uint8_t sept_len);
-
-unsigned int ms_class_gmsk_dbm(enum gsm_band band, int ms_class);
-
-int ms_pwr_ctl_lvl(enum gsm_band band, unsigned int dbm);
-int ms_pwr_dbm(enum gsm_band band, uint8_t lvl);
-
-/* According to TS 08.05 Chapter 8.1.4 */
-int rxlev2dbm(uint8_t rxlev);
-uint8_t dbm2rxlev(int dbm);
-
-/* According to GSM 04.08 Chapter 10.5.1.6 */
-static inline int ms_cm2_a5n_support(uint8_t *cm2, int n) {
- switch (n) {
- case 0: return 1;
- case 1: return (cm2[0] & (1<<3)) ? 0 : 1;
- case 2: return (cm2[2] & (1<<0)) ? 1 : 0;
- case 3: return (cm2[2] & (1<<1)) ? 1 : 0;
- default:
- return 0;
- }
-}
-
-/* According to GSM 04.08 Chapter 10.5.2.29 */
-static inline int rach_max_trans_val2raw(int val) { return (val >> 1) & 3; }
-static inline int rach_max_trans_raw2val(int raw) {
- const int tbl[4] = { 1, 2, 4, 7 };
- return tbl[raw & 3];
-}
-
-#define ARFCN_PCS 0x8000
-#define ARFCN_UPLINK 0x4000
-#define ARFCN_FLAG_MASK 0xf000 /* Reserve the upper 5 bits for flags */
-
-enum gsm_band gsm_arfcn2band(uint16_t arfcn);
-
-/* Convert an ARFCN to the frequency in MHz * 10 */
-uint16_t gsm_arfcn2freq10(uint16_t arfcn, int uplink);
-
-/* Convert from frame number to GSM time */
-void gsm_fn2gsmtime(struct gsm_time *time, uint32_t fn);
-
-/* Convert from GSM time to frame number */
-uint32_t gsm_gsmtime2fn(struct gsm_time *time);
-
-/* GSM TS 03.03 Chapter 2.6 */
-enum gprs_tlli_type {
- TLLI_LOCAL,
- TLLI_FOREIGN,
- TLLI_RANDOM,
- TLLI_AUXILIARY,
- TLLI_RESERVED,
-};
-
-/* TS 03.03 Chapter 2.6 */
-int gprs_tlli_type(uint32_t tlli);
-
-uint32_t gprs_tmsi2tlli(uint32_t p_tmsi, enum gprs_tlli_type type);
-
-/* Osmocom internal, not part of any gsm spec */
-enum gsm_phys_chan_config {
- GSM_PCHAN_NONE,
- GSM_PCHAN_CCCH,
- GSM_PCHAN_CCCH_SDCCH4,
- GSM_PCHAN_TCH_F,
- GSM_PCHAN_TCH_H,
- GSM_PCHAN_SDCCH8_SACCH8C,
- GSM_PCHAN_PDCH, /* GPRS PDCH */
- GSM_PCHAN_TCH_F_PDCH, /* TCH/F if used, PDCH otherwise */
- GSM_PCHAN_UNKNOWN,
- _GSM_PCHAN_MAX
-};
-
-/* Osmocom internal, not part of any gsm spec */
-enum gsm_chan_t {
- GSM_LCHAN_NONE,
- GSM_LCHAN_SDCCH,
- GSM_LCHAN_TCH_F,
- GSM_LCHAN_TCH_H,
- GSM_LCHAN_UNKNOWN,
- GSM_LCHAN_CCCH,
- _GSM_LCHAN_MAX
-};
-
-
-#endif
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/lapdm.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/lapdm.h
deleted file mode 100644
index 2e78aee..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/lapdm.h
+++ /dev/null
@@ -1,186 +0,0 @@
-#ifndef _OSMOCOM_LAPDM_H
-#define _OSMOCOM_LAPDM_H
-
-#include <stdint.h>
-
-#include <osmocom/core/timer.h>
-#include <osmocom/core/msgb.h>
-#include <osmocom/gsm/prim.h>
-
-/* primitive related sutff */
-
-enum osmo_ph_prim {
- PRIM_PH_DATA, /* PH-DATA */
- PRIM_PH_RACH, /* PH-RANDOM_ACCESS */
- PRIM_PH_CONN, /* PH-CONNECT */
- PRIM_PH_EMPTY_FRAME, /* PH-EMPTY_FRAME */
- PRIM_PH_RTS, /* PH-RTS */
-};
-
-/* for PH-RANDOM_ACCESS.req */
-struct ph_rach_req_param {
- uint8_t ra;
- uint8_t ta;
- uint8_t tx_power;
- uint8_t is_combined_ccch;
- uint16_t offset;
-};
-
-/* for PH-RANDOM_ACCESS.ind */
-struct ph_rach_ind_param {
- uint8_t ra;
- uint8_t acc_delay;
- uint32_t fn;
-};
-
-/* for PH-[UNIT]DATA.{req,ind} */
-struct ph_data_param {
- uint8_t link_id;
- uint8_t chan_nr;
-};
-
-struct ph_conn_ind_param {
- uint32_t fn;
-};
-
-struct osmo_phsap_prim {
- struct osmo_prim_hdr oph;
- union {
- struct ph_data_param data;
- struct ph_rach_req_param rach_req;
- struct ph_rach_ind_param rach_ind;
- struct ph_conn_ind_param conn_ind;
- } u;
-};
-
-enum lapdm_mode {
- LAPDM_MODE_MS,
- LAPDM_MODE_BTS,
-};
-
-enum lapdm_state {
- LAPDm_STATE_NULL = 0,
- LAPDm_STATE_IDLE,
- LAPDm_STATE_SABM_SENT,
- LAPDm_STATE_MF_EST,
- LAPDm_STATE_TIMER_RECOV,
- LAPDm_STATE_DISC_SENT,
-};
-
-struct lapdm_entity;
-
-struct lapdm_msg_ctx {
- struct lapdm_datalink *dl;
- int lapdm_fmt;
- uint8_t n201;
- uint8_t chan_nr;
- uint8_t link_id;
- uint8_t addr;
- uint8_t ctrl;
- uint8_t ta_ind;
- uint8_t tx_power_ind;
-};
-
-/* TS 04.06 / Section 3.5.2 */
-struct lapdm_datalink {
- uint8_t V_send; /* seq nr of next I frame to be transmitted */
- uint8_t V_ack; /* last frame ACKed by peer */
- uint8_t N_send; /* ? set to V_send at Tx time*/
- uint8_t V_recv; /* seq nr of next I frame expected to be received */
- uint8_t N_recv; /* expected send seq nr of the next received I frame */
- uint32_t state;
- int seq_err_cond; /* condition of sequence error */
- uint8_t own_busy, peer_busy;
- struct osmo_timer_list t200;
- uint8_t retrans_ctr;
- struct llist_head send_queue; /* frames from L3 */
- struct msgb *send_buffer; /* current frame transmitting */
- int send_out; /* how much was sent from send_buffer */
- uint8_t tx_hist[8][200]; /* tx history buffer */
- int tx_length[8]; /* length in history buffer */
- struct llist_head tx_queue; /* frames to L1 */
- struct lapdm_msg_ctx mctx; /* context of established connection */
- struct msgb *rcv_buffer; /* buffer to assemble the received message */
-
- struct lapdm_entity *entity;
-};
-
-enum lapdm_dl_sapi {
- DL_SAPI0 = 0,
- DL_SAPI3 = 1,
- _NR_DL_SAPI
-};
-
-typedef int (*lapdm_cb_t)(struct msgb *msg, struct lapdm_entity *le, void *ctx);
-
-struct lapdm_cr_ent {
- uint8_t cmd;
- uint8_t resp;
-};
-
-#define LAPDM_ENT_F_EMPTY_FRAME 0x0001
-#define LAPDM_ENT_F_POLLING_ONLY 0x0002
-
-/* register message handler for messages that are sent from L2->L3 */
-struct lapdm_entity {
- struct lapdm_datalink datalink[_NR_DL_SAPI];
- int last_tx_dequeue; /* last entity that was dequeued */
- int tx_pending; /* currently a pending frame not confirmed by L1 */
- enum lapdm_mode mode; /* are we in BTS mode or MS mode */
- unsigned int flags;
-
- struct {
- /* filled-in once we set the lapdm_mode above */
- struct lapdm_cr_ent loc2rem;
- struct lapdm_cr_ent rem2loc;
- } cr;
-
- void *l1_ctx; /* context for layer1 instance */
- void *l3_ctx; /* context for layer3 instance */
-
- osmo_prim_cb l1_prim_cb;
- lapdm_cb_t l3_cb; /* callback for sending stuff to L3 */
-
- struct lapdm_channel *lapdm_ch;
-};
-
-/* the two lapdm_entities that form a GSM logical channel (ACCH + DCCH) */
-struct lapdm_channel {
- struct llist_head list;
- char *name;
- struct lapdm_entity lapdm_acch;
- struct lapdm_entity lapdm_dcch;
-};
-
-const char *get_rsl_name(int value);
-extern const char *lapdm_state_names[];
-
-/* initialize a LAPDm entity */
-void lapdm_entity_init(struct lapdm_entity *le, enum lapdm_mode mode);
-void lapdm_channel_init(struct lapdm_channel *lc, enum lapdm_mode mode);
-
-/* deinitialize a LAPDm entity */
-void lapdm_entity_exit(struct lapdm_entity *le);
-void lapdm_channel_exit(struct lapdm_channel *lc);
-
-/* input into layer2 (from layer 1) */
-int lapdm_phsap_up(struct osmo_prim_hdr *oph, struct lapdm_entity *le);
-
-/* input into layer2 (from layer 3) */
-int lapdm_rslms_recvmsg(struct msgb *msg, struct lapdm_channel *lc);
-
-void lapdm_channel_set_l3(struct lapdm_channel *lc, lapdm_cb_t cb, void *ctx);
-void lapdm_channel_set_l1(struct lapdm_channel *lc, osmo_prim_cb cb, void *ctx);
-
-int lapdm_entity_set_mode(struct lapdm_entity *le, enum lapdm_mode mode);
-int lapdm_channel_set_mode(struct lapdm_channel *lc, enum lapdm_mode mode);
-
-void lapdm_entity_reset(struct lapdm_entity *le);
-void lapdm_channel_reset(struct lapdm_channel *lc);
-
-void lapdm_entity_set_flags(struct lapdm_entity *le, unsigned int flags);
-void lapdm_channel_set_flags(struct lapdm_channel *lc, unsigned int flags);
-
-int lapdm_phsap_dequeue_prim(struct lapdm_entity *le, struct osmo_phsap_prim *pp);
-
-#endif /* _OSMOCOM_LAPDM_H */
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/mncc.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/mncc.h
deleted file mode 100644
index a094bb9..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/mncc.h
+++ /dev/null
@@ -1,71 +0,0 @@
-#ifndef _OSMOCORE_MNCC_H
-#define _OSMOCORE_MNCC_H
-
-#define GSM_MAX_FACILITY 128
-#define GSM_MAX_SSVERSION 128
-#define GSM_MAX_USERUSER 128
-
-/* Expanded fields from GSM TS 04.08, Table 10.5.102 */
-struct gsm_mncc_bearer_cap {
- int transfer; /* Information Transfer Capability */
- int mode; /* Transfer Mode */
- int coding; /* Coding Standard */
- int radio; /* Radio Channel Requirement */
- int speech_ctm; /* CTM text telephony indication */
- int speech_ver[8]; /* Speech version indication */
-};
-
-struct gsm_mncc_number {
- int type;
- int plan;
- int present;
- int screen;
- char number[33];
-};
-
-struct gsm_mncc_cause {
- int location;
- int coding;
- int rec;
- int rec_val;
- int value;
- int diag_len;
- char diag[32];
-};
-
-struct gsm_mncc_useruser {
- int proto;
- char info[GSM_MAX_USERUSER + 1]; /* + termination char */
-};
-
-struct gsm_mncc_progress {
- int coding;
- int location;
- int descr;
-};
-
-struct gsm_mncc_facility {
- int len;
- char info[GSM_MAX_FACILITY];
-};
-
-struct gsm_mncc_ssversion {
- int len;
- char info[GSM_MAX_SSVERSION];
-};
-
-struct gsm_mncc_cccap {
- int dtmf;
- int pcp;
-};
-
-enum {
- GSM_MNCC_BCAP_SPEECH = 0,
- GSM_MNCC_BCAP_UNR_DIG = 1,
- GSM_MNCC_BCAP_AUDIO = 2,
- GSM_MNCC_BCAP_FAX_G3 = 3,
- GSM_MNCC_BCAP_OTHER_ITC = 5,
- GSM_MNCC_BCAP_RESERVED = 7,
-};
-
-#endif
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/prim.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/prim.h
deleted file mode 100644
index 95cbb12..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/prim.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#ifndef OSMO_GSM_PRIM_H
-#define OSMO_GSM_PRIM_H
-
-#include <osmocom/core/prim.h>
-
-/* enumeration of GSM related SAPs */
-enum osmo_gsm_sap {
- SAP_GSM_PH = _SAP_GSM_BASE,
- SAP_GSM_DL,
- SAP_GSM_MDL,
-};
-
-#endif
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/Makefile.am b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/Makefile.am
deleted file mode 100644
index 7f6de63..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/Makefile.am
+++ /dev/null
@@ -1,6 +0,0 @@
-osmogsm_proto_HEADERS = gsm_03_41.h \
- gsm_04_08.h gsm_04_11.h gsm_04_12.h gsm_04_80.h \
- gsm_08_08.h gsm_08_58.h \
- gsm_12_21.h ipaccess.h
-
-osmogsm_protodir = $(includedir)/osmocom/gsm/protocol
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/gsm_03_41.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/gsm_03_41.h
deleted file mode 100644
index 54365cb..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/gsm_03_41.h
+++ /dev/null
@@ -1,51 +0,0 @@
-#ifndef PROTO_GSM_03_41_H
-#define PROTO_GSM_03_41_H
-
-#include <stdint.h>
-
-/* GSM TS 03.41 definitions also TS 23.041*/
-
-/* Chapter 9.3.2 */
-struct gsm341_ms_message {
- struct {
- uint8_t code_hi:6;
- uint8_t gs:2;
- uint8_t update:4;
- uint8_t code_lo:4;
- } serial;
- uint16_t msg_id;
- struct {
- uint8_t language:4;
- uint8_t group:4;
- } dcs;
- struct {
- uint8_t total:4;
- uint8_t current:4;
- } page;
- uint8_t data[0];
-} __attribute__((packed));
-
-/* Chapter 9.4.1.3 */
-struct gsm341_etws_message {
- struct {
- uint8_t code_hi:4;
- uint8_t popup:1;
- uint8_t alert:1;
- uint8_t gs:2;
- uint8_t update:4;
- uint8_t code_lo:4;
- } serial;
- uint16_t msg_id;
- uint16_t warning_type;
- uint8_t data[0];
-} __attribute__((packed));
-
-#define GSM341_MSG_CODE(ms) ((ms)->serial.code_lo | ((ms)->serial.code_hi << 4))
-
-/* Section 9.3.2.1 - Geographical Scope */
-#define GSM341_GS_CELL_WIDE_IMMED 0
-#define GSM341_GS_PLMN_WIDE 1
-#define GSM341_GS_LA_WIDE 2
-#define GSM341_GS_CELL_WIDE 3
-
-#endif /* PROTO_GSM_03_41_H */
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/gsm_04_08.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/gsm_04_08.h
deleted file mode 100644
index 39470e7..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/gsm_04_08.h
+++ /dev/null
@@ -1,1265 +0,0 @@
-#ifndef PROTO_GSM_04_08_H
-#define PROTO_GSM_04_08_H
-
-#include <stdint.h>
-
-/* GSM TS 04.08 definitions */
-struct gsm_lchan;
-
-/* Chapter 10.5.1.5 */
-struct gsm48_classmark1 {
- uint8_t pwr_lev:3,
- a5_1:1,
- es_ind:1,
- rev_lev:2,
- spare:1;
-} __attribute__ ((packed));
-
-/* Chapter 10.5.1.6 */
-struct gsm48_classmark2 {
- uint8_t pwr_lev:3,
- a5_1:1,
- es_ind:1,
- rev_lev:2,
- spare:1;
- uint8_t fc:1,
- vgcs:1,
- vbs:1,
- sm_cap:1,
- ss_scr:2,
- ps_cap:1,
- spare2:1;
- uint8_t a5_2:1,
- a5_3:1,
- cmsp:1,
- solsa:1,
- spare3:1,
- lcsva_cap:1,
- spare4:1,
- cm3:1;
-} __attribute__ ((packed));
-
-/* Chapter 10.5.2.1b.3 */
-struct gsm48_range_1024 {
- uint8_t w1_hi:2,
- f0:1,
- form_id:5;
- uint8_t w1_lo;
- uint8_t w2_hi;
- uint8_t w3_hi:7,
- w2_lo:1;
- uint8_t w4_hi:6,
- w3_lo:2;
- uint8_t w5_hi:6,
- w4_lo:2;
- uint8_t w6_hi:6,
- w5_lo:2;
- uint8_t w7_hi:6,
- w6_lo:2;
- uint8_t w8_hi:6,
- w7_lo:2;
- uint8_t w9:7,
- w8_lo:1;
- uint8_t w11_hi:1,
- w10:7;
- uint8_t w12_hi:2,
- w11_lo:6;
- uint8_t w13_hi:3,
- w12_lo:5;
- uint8_t w14_hi:4,
- w13_lo:4;
- uint8_t w15_hi:5,
- w14_lo:3;
- uint8_t w16:6,
- w15_lo:2;
-} __attribute__ ((packed));
-
-/* Chapter 10.5.2.1b.4 */
-struct gsm48_range_512 {
- uint8_t orig_arfcn_hi:1,
- form_id:7;
- uint8_t orig_arfcn_mid;
- uint8_t w1_hi:7,
- orig_arfcn_lo:1;
- uint8_t w2_hi:6,
- w1_lo:2;
- uint8_t w3_hi:6,
- w2_lo:2;
- uint8_t w4_hi:6,
- w3_lo:2;
- uint8_t w5:7,
- w4_lo:1;
- uint8_t w7_hi:1,
- w6:7;
- uint8_t w8_hi:2,
- w7_lo:6;
- uint8_t w9_hi:4,
- w8_lo:4;
- uint8_t w10:6,
- w9_lo:2;
- uint8_t w12_hi:2,
- w11:6;
- uint8_t w13_hi:4,
- w12_lo:4;
- uint8_t w14:6,
- w13_lo:2;
- uint8_t w16_hi:2,
- w15:6;
- uint8_t w17:5,
- w16_lo:3;
-} __attribute__ ((packed));
-
-/* Chapter 10.5.2.1b.5 */
-struct gsm48_range_256 {
- uint8_t orig_arfcn_hi:1,
- form_id:7;
- uint8_t orig_arfcn_mid;
- uint8_t w1_hi:7,
- orig_arfcn_lo:1;
- uint8_t w2:7,
- w1_lo:1;
- uint8_t w4_hi:1,
- w3:7;
- uint8_t w5_hi:3,
- w4_lo:5;
- uint8_t w6_hi:5,
- w5_lo:3;
- uint8_t w8_hi:1,
- w7:6,
- w6_lo:1;
- uint8_t w9_hi:4,
- w8_lo:4;
- uint8_t w11_hi:2,
- w10:5,
- w9_lo:1;
- uint8_t w12:5,
- w11_lo:3;
- uint8_t w14_hi:3,
- w13:5;
- uint8_t w16_hi:1,
- w15:5,
- w14_lo:2;
- uint8_t w18_hi:1,
- w17:4,
- w16_lo:3;
- uint8_t w20_hi:1,
- w19:4,
- w18_lo:3;
- uint8_t spare:1,
- w21:4,
- w20_lo:3;
-} __attribute__ ((packed));
-
-/* Chapter 10.5.2.1b.6 */
-struct gsm48_range_128 {
- uint8_t orig_arfcn_hi:1,
- form_id:7;
- uint8_t orig_arfcn_mid;
- uint8_t w1:7,
- orig_arfcn_lo:1;
- uint8_t w3_hi:2,
- w2:6;
- uint8_t w4_hi:4,
- w3_lo:4;
- uint8_t w6_hi:2,
- w5:5,
- w4_lo:1;
- uint8_t w7:5,
- w6_lo:3;
- uint8_t w9:4,
- w8:4;
- uint8_t w11:4,
- w10:4;
- uint8_t w13:4,
- w12:4;
- uint8_t w15:4,
- w14:4;
- uint8_t w18_hi:2,
- w17:3,
- w16:3;
- uint8_t w21_hi:1,
- w20:3,
- w19:3,
- w18_lo:1;
- uint8_t w23:3,
- w22:3,
- w21_lo:2;
- uint8_t w26_hi:2,
- w25:3,
- w24:3;
- uint8_t spare:1,
- w28:3,
- w27:3,
- w26_lo:1;
-} __attribute__ ((packed));
-
-/* Chapter 10.5.2.1b.7 */
-struct gsm48_var_bit {
- uint8_t orig_arfcn_hi:1,
- form_id:7;
- uint8_t orig_arfcn_mid;
- uint8_t rrfcn1_7:7,
- orig_arfcn_lo:1;
- uint8_t rrfcn8_111[13];
-} __attribute__ ((packed));
-
-/* Chapter 10.5.2.5 */
-struct gsm48_chan_desc {
- uint8_t chan_nr;
- union {
- struct {
- uint8_t maio_high:4,
- h:1,
- tsc:3;
- uint8_t hsn:6,
- maio_low:2;
- } h1;
- struct {
- uint8_t arfcn_high:2,
- spare:2,
- h:1,
- tsc:3;
- uint8_t arfcn_low;
- } h0;
- };
-} __attribute__ ((packed));
-
-/* Chapter 10.5.2.20 */
-struct gsm48_meas_res {
- uint8_t rxlev_full:6,
- dtx_used:1,
- ba_used:1;
- uint8_t rxlev_sub:6,
- meas_valid:1,
- spare:1;
- uint8_t no_nc_n_hi:1,
- rxqual_sub:3,
- rxqual_full:3,
- spare2:1;
- uint8_t rxlev_nc1:6,
- no_nc_n_lo:2;
- uint8_t bsic_nc1_hi:3,
- bcch_f_nc1:5;
- uint8_t rxlev_nc2_hi:5,
- bsic_nc1_lo:3;
- uint8_t bsic_nc2_hi:2,
- bcch_f_nc2:5,
- rxlev_nc2_lo:1;
- uint8_t rxlev_nc3_hi:4,
- bsic_nc2_lo:4;
- uint8_t bsic_nc3_hi:1,
- bcch_f_nc3:5,
- rxlev_nc3_lo:2;
- uint8_t rxlev_nc4_hi:3,
- bsic_nc3_lo:5;
- uint8_t bcch_f_nc4:5,
- rxlev_nc4_lo:3;
- uint8_t rxlev_nc5_hi:2,
- bsic_nc4:6;
- uint8_t bcch_f_nc5_hi:4,
- rxlev_nc5_lo:4;
- uint8_t rxlev_nc6_hi:1,
- bsic_nc5:6,
- bcch_f_nc5_lo:1;
- uint8_t bcch_f_nc6_hi:3,
- rxlev_nc6_lo:5;
- uint8_t bsic_nc6:6,
- bcch_f_nc6_lo:2;
-} __attribute__ ((packed));
-
-/* Chapter 10.5.2.21aa */
-struct gsm48_multi_rate_conf {
- uint8_t smod : 2,
- spare: 1,
- icmi : 1,
- nscb : 1,
- ver : 3;
- uint8_t m4_75 : 1,
- m5_15 : 1,
- m5_90 : 1,
- m6_70 : 1,
- m7_40 : 1,
- m7_95 : 1,
- m10_2 : 1,
- m12_2 : 1;
-} __attribute__((packed));
-
-/* Chapter 10.5.2.28(a) */
-struct gsm48_power_cmd {
- uint8_t power_level:5,
- spare:2,
- atc:1;
-} __attribute__((packed));
-
-/* Chapter 10.5.2.29 */
-struct gsm48_rach_control {
- uint8_t re :1,
- cell_bar :1,
- tx_integer :4,
- max_trans :2;
- uint8_t t2;
- uint8_t t3;
-} __attribute__ ((packed));
-
-
-/* Chapter 10.5.2.30 */
-struct gsm48_req_ref {
- uint8_t ra;
- uint8_t t3_high:3,
- t1:5;
- uint8_t t2:5,
- t3_low:3;
-} __attribute__ ((packed));
-
-/* Chapter 10.5.2.38 */
-struct gsm48_start_time {
- uint8_t t3_high:3,
- t1:5;
- uint8_t t2:5,
- t3_low:3;
-} __attribute__ ((packed));
-
-/* Chapter 10.5.2.39 */
-struct gsm48_sync_ind {
- uint8_t si:2,
- rot:1,
- nci:1,
- sync_ie:4;
-} __attribute__((packed));
-
-/*
- * Chapter 9.1.5/9.1.6
- *
- * For 9.1.6 the chan_desc has the meaning of 10.5.2.5a
- */
-struct gsm48_chan_mode_modify {
- struct gsm48_chan_desc chan_desc;
- uint8_t mode;
-} __attribute__ ((packed));
-
-enum gsm48_chan_mode {
- GSM48_CMODE_SIGN = 0x00,
- GSM48_CMODE_SPEECH_V1 = 0x01,
- GSM48_CMODE_SPEECH_EFR = 0x21,
- GSM48_CMODE_SPEECH_AMR = 0x41,
- GSM48_CMODE_DATA_14k5 = 0x0f,
- GSM48_CMODE_DATA_12k0 = 0x03,
- GSM48_CMODE_DATA_6k0 = 0x0b,
- GSM48_CMODE_DATA_3k6 = 0x23,
-};
-
-/* Chapter 9.1.2 */
-struct gsm48_ass_cmd {
- /* Semantic is from 10.5.2.5a */
- struct gsm48_chan_desc chan_desc;
- uint8_t power_command;
- uint8_t data[0];
-} __attribute__((packed));
-
-/* Chapter 9.1.13 */
-struct gsm48_frq_redef {
- /* Semantic is from 10.5.2.5a */
- struct gsm48_chan_desc chan_desc;
- uint8_t mob_alloc_len;
- uint8_t mob_alloc[0];
-} __attribute__((packed));
-
-/* Chapter 10.5.2.2 */
-struct gsm48_cell_desc {
- uint8_t bcc:3,
- ncc:3,
- arfcn_hi:2;
- uint8_t arfcn_lo;
-} __attribute__((packed));
-
-/* Chapter 9.1.15 */
-struct gsm48_ho_cmd {
- struct gsm48_cell_desc cell_desc;
- struct gsm48_chan_desc chan_desc;
- uint8_t ho_ref;
- uint8_t power_command;
- uint8_t data[0];
-} __attribute__((packed));
-
-/* Chapter 9.1.18 */
-struct gsm48_imm_ass {
- uint8_t l2_plen;
- uint8_t proto_discr;
- uint8_t msg_type;
- uint8_t page_mode;
- struct gsm48_chan_desc chan_desc;
- struct gsm48_req_ref req_ref;
- uint8_t timing_advance;
- uint8_t mob_alloc_len;
- uint8_t mob_alloc[0];
-} __attribute__ ((packed));
-
-/* Chapter 9.1.25 */
-struct gsm48_pag_resp {
- uint8_t spare:4,
- key_seq:4;
- uint32_t classmark2;
- uint8_t mi_len;
- uint8_t mi[0];
-} __attribute__ ((packed));
-
-/* Chapter 10.5.1.3 */
-struct gsm48_loc_area_id {
- uint8_t digits[3]; /* BCD! */
- uint16_t lac;
-} __attribute__ ((packed));
-
-/* Section 9.2.2 */
-struct gsm48_auth_req {
- uint8_t key_seq:4,
- spare:4;
- uint8_t rand[16];
-} __attribute__ ((packed));
-
-/* Section 9.2.3 */
-struct gsm48_auth_resp {
- uint8_t sres[4];
-} __attribute__ ((packed));
-
-/* Section 9.2.15 */
-struct gsm48_loc_upd_req {
- uint8_t type:4,
- key_seq:4;
- struct gsm48_loc_area_id lai;
- struct gsm48_classmark1 classmark1;
- uint8_t mi_len;
- uint8_t mi[0];
-} __attribute__ ((packed));
-
-/* Section 10.1 */
-struct gsm48_hdr {
- uint8_t proto_discr;
- uint8_t msg_type;
- uint8_t data[0];
-} __attribute__ ((packed));
-
-/* Section 9.1.3x System information Type header */
-struct gsm48_system_information_type_header {
- uint8_t l2_plen;
- uint8_t rr_protocol_discriminator :4,
- skip_indicator:4;
- uint8_t system_information;
-} __attribute__ ((packed));
-
-/* Section 10.5.2.4 Cell Selection Parameters */
-struct gsm48_cell_sel_par {
- uint8_t ms_txpwr_max_ccch:5, /* GSM 05.08 MS-TXPWR-MAX-CCCH */
- cell_resel_hyst:3; /* GSM 05.08 CELL-RESELECT-HYSTERESIS */
- uint8_t rxlev_acc_min:6, /* GSM 05.08 RXLEV-ACCESS-MIN */
- neci:1,
- acs:1;
-} __attribute__ ((packed));
-
-/* Section 10.5.2.11 Control Channel Description , Figure 10.5.33 */
-struct gsm48_control_channel_descr {
- uint8_t ccch_conf :3,
- bs_ag_blks_res :3,
- att :1,
- spare1 :1;
- uint8_t bs_pa_mfrms : 3,
- spare2 :5;
- uint8_t t3212;
-} __attribute__ ((packed));
-
-struct gsm48_cell_options {
- uint8_t radio_link_timeout:4,
- dtx:2,
- pwrc:1,
- spare:1;
-} __attribute__ ((packed));
-
-/* Section 9.2.9 CM service request */
-struct gsm48_service_request {
- uint8_t cm_service_type : 4,
- cipher_key_seq : 4;
- /* length + 3 bytes */
- uint32_t classmark;
- uint8_t mi_len;
- uint8_t mi[0];
- /* optional priority level */
-} __attribute__ ((packed));
-
-/* Section 9.1.31 System information Type 1 */
-struct gsm48_system_information_type_1 {
- struct gsm48_system_information_type_header header;
- uint8_t cell_channel_description[16];
- struct gsm48_rach_control rach_control;
- uint8_t rest_octets[0]; /* NCH position on the CCCH */
-} __attribute__ ((packed));
-
-/* Section 9.1.32 System information Type 2 */
-struct gsm48_system_information_type_2 {
- struct gsm48_system_information_type_header header;
- uint8_t bcch_frequency_list[16];
- uint8_t ncc_permitted;
- struct gsm48_rach_control rach_control;
-} __attribute__ ((packed));
-
-/* Section 9.1.33 System information Type 2bis */
-struct gsm48_system_information_type_2bis {
- struct gsm48_system_information_type_header header;
- uint8_t bcch_frequency_list[16];
- struct gsm48_rach_control rach_control;
- uint8_t rest_octets[0];
-} __attribute__ ((packed));
-
-/* Section 9.1.34 System information Type 2ter */
-struct gsm48_system_information_type_2ter {
- struct gsm48_system_information_type_header header;
- uint8_t ext_bcch_frequency_list[16];
- uint8_t rest_octets[0];
-} __attribute__ ((packed));
-
-/* Section 9.1.35 System information Type 3 */
-struct gsm48_system_information_type_3 {
- struct gsm48_system_information_type_header header;
- uint16_t cell_identity;
- struct gsm48_loc_area_id lai;
- struct gsm48_control_channel_descr control_channel_desc;
- struct gsm48_cell_options cell_options;
- struct gsm48_cell_sel_par cell_sel_par;
- struct gsm48_rach_control rach_control;
- uint8_t rest_octets[0];
-} __attribute__ ((packed));
-
-/* Section 9.1.36 System information Type 4 */
-struct gsm48_system_information_type_4 {
- struct gsm48_system_information_type_header header;
- struct gsm48_loc_area_id lai;
- struct gsm48_cell_sel_par cell_sel_par;
- struct gsm48_rach_control rach_control;
- /* optional CBCH conditional CBCH... followed by
- mandantory SI 4 Reset Octets
- */
- uint8_t data[0];
-} __attribute__ ((packed));
-
-/* Section 9.1.37 System information Type 5 */
-struct gsm48_system_information_type_5 {
- uint8_t rr_protocol_discriminator :4,
- skip_indicator:4;
- uint8_t system_information;
- uint8_t bcch_frequency_list[16];
-} __attribute__ ((packed));
-
-/* Section 9.1.38 System information Type 5bis */
-struct gsm48_system_information_type_5bis {
- uint8_t rr_protocol_discriminator :4,
- skip_indicator:4;
- uint8_t system_information;
- uint8_t bcch_frequency_list[16];
-} __attribute__ ((packed));
-
-/* Section 9.1.39 System information Type 5ter */
-struct gsm48_system_information_type_5ter {
- uint8_t rr_protocol_discriminator :4,
- skip_indicator:4;
- uint8_t system_information;
- uint8_t bcch_frequency_list[16];
-} __attribute__ ((packed));
-
-/* Section 9.1.40 System information Type 6 */
-struct gsm48_system_information_type_6 {
- uint8_t rr_protocol_discriminator :4,
- skip_indicator:4;
- uint8_t system_information;
- uint16_t cell_identity;
- struct gsm48_loc_area_id lai;
- struct gsm48_cell_options cell_options;
- uint8_t ncc_permitted;
- uint8_t rest_octets[0];
-} __attribute__ ((packed));
-
-/* Section 9.1.43a System Information type 13 */
-struct gsm48_system_information_type_13 {
- struct gsm48_system_information_type_header header;
- uint8_t rest_octets[0];
-} __attribute__ ((packed));
-
-/* Section 9.2.12 IMSI Detach Indication */
-struct gsm48_imsi_detach_ind {
- struct gsm48_classmark1 classmark1;
- uint8_t mi_len;
- uint8_t mi[0];
-} __attribute__ ((packed));
-
-/* Section 9.1.1 */
-struct gsm48_add_ass {
- /* Semantic is from 10.5.2.5 */
- struct gsm48_chan_desc chan_desc;
- uint8_t data[0];
-} __attribute__((packed));
-
-/* Section 9.1.3 */
-struct gsm48_ass_cpl {
- uint8_t rr_cause;
-} __attribute__((packed));
-
-/* Section 9.1.4 */
-struct gsm48_ass_fail {
- uint8_t rr_cause;
-} __attribute__((packed));
-
-/* Section 9.1.3 */
-struct gsm48_ho_cpl {
- uint8_t rr_cause;
- uint8_t data[0];
-} __attribute__((packed));
-
-/* Section 9.1.4 */
-struct gsm48_ho_fail {
- uint8_t rr_cause;
-} __attribute__((packed));
-
-/* Section 9.1.7 */
-struct gsm48_chan_rel {
- uint8_t rr_cause;
- uint8_t data[0];
-} __attribute__((packed));
-
-/* Section 9.1.9 */
-struct gsm48_cip_mode_cmd {
- uint8_t sc:1,
- alg_id:3,
- cr:1,
- spare:3;
-} __attribute__((packed));
-
-/* Section 9.1.11 */
-struct gsm48_cm_change {
- uint8_t cm2_len;
- struct gsm48_classmark2 cm2;
- uint8_t data[0];
-} __attribute__((packed));
-
-/* Section 9.1.19 */
-struct gsm48_imm_ass_ext {
- uint8_t l2_plen;
- uint8_t proto_discr;
- uint8_t msg_type;
- uint8_t page_mode;
- struct gsm48_chan_desc chan_desc1;
- struct gsm48_req_ref req_ref1;
- uint8_t timing_advance1;
- struct gsm48_chan_desc chan_desc2;
- struct gsm48_req_ref req_ref2;
- uint8_t timing_advance2;
- uint8_t mob_alloc_len;
- uint8_t mob_alloc[0];
-} __attribute__ ((packed));
-
-/* Section 9.1.20 */
-struct gsm48_imm_ass_rej {
- uint8_t l2_plen;
- uint8_t proto_discr;
- uint8_t msg_type;
- uint8_t page_mode;
- struct gsm48_req_ref req_ref1;
- uint8_t wait_ind1;
- struct gsm48_req_ref req_ref2;
- uint8_t wait_ind2;
- struct gsm48_req_ref req_ref3;
- uint8_t wait_ind3;
- struct gsm48_req_ref req_ref4;
- uint8_t wait_ind4;
- uint8_t rest[0];
-} __attribute__ ((packed));
-
-/* Section 9.1.22 */
-struct gsm48_paging1 {
- uint8_t l2_plen;
- uint8_t proto_discr;
- uint8_t msg_type;
- uint8_t pag_mode:2,
- spare:2,
- cneed1:2,
- cneed2:2;
- uint8_t data[0];
-} __attribute__((packed));
-
-/* Section 9.1.23 */
-struct gsm48_paging2 {
- uint8_t l2_plen;
- uint8_t proto_discr;
- uint8_t msg_type;
- uint8_t pag_mode:2,
- spare:2,
- cneed1:2,
- cneed2:2;
- uint32_t tmsi1;
- uint32_t tmsi2;
- uint8_t data[0];
-} __attribute__((packed));
-
-/* Section 9.1.24 */
-struct gsm48_paging3 {
- uint8_t l2_plen;
- uint8_t proto_discr;
- uint8_t msg_type;
- uint8_t pag_mode:2,
- spare:2,
- cneed1:2,
- cneed2:2;
- uint32_t tmsi1;
- uint32_t tmsi2;
- uint32_t tmsi3;
- uint32_t tmsi4;
- uint8_t cneed3:2,
- cneed4:2,
- spare2:4;
- uint8_t rest[0];
-} __attribute__((packed));
-
-/* Section 9.1.25 */
-struct gsm48_pag_rsp {
- uint8_t key_seq:3,
- spare:5;
- uint8_t cm2_len;
- struct gsm48_classmark2 cm2;
- uint8_t data[0];
-} __attribute__((packed));
-
-/* Section 9.1.29 */
-struct gsm48_rr_status {
- uint8_t rr_cause;
-} __attribute__((packed));
-
-/* Section 10.2 + GSM 04.07 12.2.3.1.1 */
-#define GSM48_PDISC_GROUP_CC 0x00
-#define GSM48_PDISC_BCAST_CC 0x01
-#define GSM48_PDISC_PDSS1 0x02
-#define GSM48_PDISC_CC 0x03
-#define GSM48_PDISC_PDSS2 0x04
-#define GSM48_PDISC_MM 0x05
-#define GSM48_PDISC_RR 0x06
-#define GSM48_PDISC_MM_GPRS 0x08
-#define GSM48_PDISC_SMS 0x09
-#define GSM48_PDISC_SM_GPRS 0x0a
-#define GSM48_PDISC_NC_SS 0x0b
-#define GSM48_PDISC_LOC 0x0c
-#define GSM48_PDISC_MASK 0x0f
-#define GSM48_PDISC_USSD 0x11
-
-/* Section 10.4 */
-#define GSM48_MT_RR_INIT_REQ 0x3c
-#define GSM48_MT_RR_ADD_ASS 0x3b
-#define GSM48_MT_RR_IMM_ASS 0x3f
-#define GSM48_MT_RR_IMM_ASS_EXT 0x39
-#define GSM48_MT_RR_IMM_ASS_REJ 0x3a
-
-#define GSM48_MT_RR_CIPH_M_CMD 0x35
-#define GSM48_MT_RR_CIPH_M_COMPL 0x32
-
-#define GSM48_MT_RR_CFG_CHG_CMD 0x30
-#define GSM48_MT_RR_CFG_CHG_ACK 0x31
-#define GSM48_MT_RR_CFG_CHG_REJ 0x33
-
-#define GSM48_MT_RR_ASS_CMD 0x2e
-#define GSM48_MT_RR_ASS_COMPL 0x29
-#define GSM48_MT_RR_ASS_FAIL 0x2f
-#define GSM48_MT_RR_HANDO_CMD 0x2b
-#define GSM48_MT_RR_HANDO_COMPL 0x2c
-#define GSM48_MT_RR_HANDO_FAIL 0x28
-#define GSM48_MT_RR_HANDO_INFO 0x2d
-
-#define GSM48_MT_RR_CELL_CHG_ORDER 0x08
-#define GSM48_MT_RR_PDCH_ASS_CMD 0x23
-
-#define GSM48_MT_RR_CHAN_REL 0x0d
-#define GSM48_MT_RR_PART_REL 0x0a
-#define GSM48_MT_RR_PART_REL_COMP 0x0f
-
-#define GSM48_MT_RR_PAG_REQ_1 0x21
-#define GSM48_MT_RR_PAG_REQ_2 0x22
-#define GSM48_MT_RR_PAG_REQ_3 0x24
-#define GSM48_MT_RR_PAG_RESP 0x27
-#define GSM48_MT_RR_NOTIF_NCH 0x20
-#define GSM48_MT_RR_NOTIF_FACCH 0x25
-#define GSM48_MT_RR_NOTIF_RESP 0x26
-
-#define GSM48_MT_RR_SYSINFO_8 0x18
-#define GSM48_MT_RR_SYSINFO_1 0x19
-#define GSM48_MT_RR_SYSINFO_2 0x1a
-#define GSM48_MT_RR_SYSINFO_3 0x1b
-#define GSM48_MT_RR_SYSINFO_4 0x1c
-#define GSM48_MT_RR_SYSINFO_5 0x1d
-#define GSM48_MT_RR_SYSINFO_6 0x1e
-#define GSM48_MT_RR_SYSINFO_7 0x1f
-
-#define GSM48_MT_RR_SYSINFO_2bis 0x02
-#define GSM48_MT_RR_SYSINFO_2ter 0x03
-#define GSM48_MT_RR_SYSINFO_5bis 0x05
-#define GSM48_MT_RR_SYSINFO_5ter 0x06
-#define GSM48_MT_RR_SYSINFO_9 0x04
-#define GSM48_MT_RR_SYSINFO_13 0x00
-
-#define GSM48_MT_RR_SYSINFO_16 0x3d
-#define GSM48_MT_RR_SYSINFO_17 0x3e
-
-#define GSM48_MT_RR_CHAN_MODE_MODIF 0x10
-#define GSM48_MT_RR_STATUS 0x12
-#define GSM48_MT_RR_CHAN_MODE_MODIF_ACK 0x17
-#define GSM48_MT_RR_FREQ_REDEF 0x14
-#define GSM48_MT_RR_MEAS_REP 0x15
-#define GSM48_MT_RR_CLSM_CHG 0x16
-#define GSM48_MT_RR_CLSM_ENQ 0x13
-#define GSM48_MT_RR_EXT_MEAS_REP 0x36
-#define GSM48_MT_RR_EXT_MEAS_REP_ORD 0x37
-#define GSM48_MT_RR_GPRS_SUSP_REQ 0x34
-
-#define GSM48_MT_RR_VGCS_UPL_GRANT 0x08
-#define GSM48_MT_RR_UPLINK_RELEASE 0x0e
-#define GSM48_MT_RR_UPLINK_FREE 0x0c
-#define GSM48_MT_RR_UPLINK_BUSY 0x2a
-#define GSM48_MT_RR_TALKER_IND 0x11
-
-#define GSM48_MT_RR_APP_INFO 0x38
-
-/* Table 10.2/3GPP TS 04.08 */
-#define GSM48_MT_MM_IMSI_DETACH_IND 0x01
-#define GSM48_MT_MM_LOC_UPD_ACCEPT 0x02
-#define GSM48_MT_MM_LOC_UPD_REJECT 0x04
-#define GSM48_MT_MM_LOC_UPD_REQUEST 0x08
-
-#define GSM48_MT_MM_AUTH_REJ 0x11
-#define GSM48_MT_MM_AUTH_REQ 0x12
-#define GSM48_MT_MM_AUTH_RESP 0x14
-#define GSM48_MT_MM_ID_REQ 0x18
-#define GSM48_MT_MM_ID_RESP 0x19
-#define GSM48_MT_MM_TMSI_REALL_CMD 0x1a
-#define GSM48_MT_MM_TMSI_REALL_COMPL 0x1b
-
-#define GSM48_MT_MM_CM_SERV_ACC 0x21
-#define GSM48_MT_MM_CM_SERV_REJ 0x22
-#define GSM48_MT_MM_CM_SERV_ABORT 0x23
-#define GSM48_MT_MM_CM_SERV_REQ 0x24
-#define GSM48_MT_MM_CM_SERV_PROMPT 0x25
-#define GSM48_MT_MM_CM_REEST_REQ 0x28
-#define GSM48_MT_MM_ABORT 0x29
-
-#define GSM48_MT_MM_NULL 0x30
-#define GSM48_MT_MM_STATUS 0x31
-#define GSM48_MT_MM_INFO 0x32
-
-/* Table 10.3/3GPP TS 04.08 */
-#define GSM48_MT_CC_ALERTING 0x01
-#define GSM48_MT_CC_CALL_CONF 0x08
-#define GSM48_MT_CC_CALL_PROC 0x02
-#define GSM48_MT_CC_CONNECT 0x07
-#define GSM48_MT_CC_CONNECT_ACK 0x0f
-#define GSM48_MT_CC_EMERG_SETUP 0x0e
-#define GSM48_MT_CC_PROGRESS 0x03
-#define GSM48_MT_CC_ESTAB 0x04
-#define GSM48_MT_CC_ESTAB_CONF 0x06
-#define GSM48_MT_CC_RECALL 0x0b
-#define GSM48_MT_CC_START_CC 0x09
-#define GSM48_MT_CC_SETUP 0x05
-
-#define GSM48_MT_CC_MODIFY 0x17
-#define GSM48_MT_CC_MODIFY_COMPL 0x1f
-#define GSM48_MT_CC_MODIFY_REJECT 0x13
-#define GSM48_MT_CC_USER_INFO 0x10
-#define GSM48_MT_CC_HOLD 0x18
-#define GSM48_MT_CC_HOLD_ACK 0x19
-#define GSM48_MT_CC_HOLD_REJ 0x1a
-#define GSM48_MT_CC_RETR 0x1c
-#define GSM48_MT_CC_RETR_ACK 0x1d
-#define GSM48_MT_CC_RETR_REJ 0x1e
-
-#define GSM48_MT_CC_DISCONNECT 0x25
-#define GSM48_MT_CC_RELEASE 0x2d
-#define GSM48_MT_CC_RELEASE_COMPL 0x2a
-
-#define GSM48_MT_CC_CONG_CTRL 0x39
-#define GSM48_MT_CC_NOTIFY 0x3e
-#define GSM48_MT_CC_STATUS 0x3d
-#define GSM48_MT_CC_STATUS_ENQ 0x34
-#define GSM48_MT_CC_START_DTMF 0x35
-#define GSM48_MT_CC_STOP_DTMF 0x31
-#define GSM48_MT_CC_STOP_DTMF_ACK 0x32
-#define GSM48_MT_CC_START_DTMF_ACK 0x36
-#define GSM48_MT_CC_START_DTMF_REJ 0x37
-#define GSM48_MT_CC_FACILITY 0x3a
-
-/* FIXME: Table 10.4 / 10.4a (GPRS) */
-
-/* Section 10.5.3.3 CM service type */
-#define GSM48_CMSERV_MO_CALL_PACKET 1
-#define GSM48_CMSERV_EMERGENCY 2
-#define GSM48_CMSERV_SMS 4
-#define GSM48_CMSERV_SUP_SERV 8
-#define GSM48_CMSERV_VGCS 9
-#define GSM48_CMSERV_VBS 10
-#define GSM48_CMSERV_LOC_SERV 11
-
-/* Section 10.5.2.26, Table 10.5.64 */
-#define GSM48_PM_MASK 0x03
-#define GSM48_PM_NORMAL 0x00
-#define GSM48_PM_EXTENDED 0x01
-#define GSM48_PM_REORG 0x02
-#define GSM48_PM_SAME 0x03
-
-/* Chapter 10.5.3.5 / Table 10.5.93 */
-#define GSM48_LUPD_NORMAL 0x0
-#define GSM48_LUPD_PERIODIC 0x1
-#define GSM48_LUPD_IMSI_ATT 0x2
-#define GSM48_LUPD_RESERVED 0x3
-
-/* Table 10.5.4 */
-#define GSM_MI_TYPE_MASK 0x07
-#define GSM_MI_TYPE_NONE 0x00
-#define GSM_MI_TYPE_IMSI 0x01
-#define GSM_MI_TYPE_IMEI 0x02
-#define GSM_MI_TYPE_IMEISV 0x03
-#define GSM_MI_TYPE_TMSI 0x04
-#define GSM_MI_ODD 0x08
-
-#define GSM48_IE_MOBILE_ID 0x17 /* 10.5.1.4 */
-#define GSM48_IE_NAME_LONG 0x43 /* 10.5.3.5a */
-#define GSM48_IE_NAME_SHORT 0x45 /* 10.5.3.5a */
-#define GSM48_IE_UTC 0x46 /* 10.5.3.8 */
-#define GSM48_IE_NET_TIME_TZ 0x47 /* 10.5.3.9 */
-#define GSM48_IE_LSA_IDENT 0x48 /* 10.5.3.11 */
-
-#define GSM48_IE_BEARER_CAP 0x04 /* 10.5.4.5 */
-#define GSM48_IE_CAUSE 0x08 /* 10.5.4.11 */
-#define GSM48_IE_CC_CAP 0x15 /* 10.5.4.5a */
-#define GSM48_IE_ALERT 0x19 /* 10.5.4.26 */
-#define GSM48_IE_FACILITY 0x1c /* 10.5.4.15 */
-#define GSM48_IE_PROGR_IND 0x1e /* 10.5.4.21 */
-#define GSM48_IE_AUX_STATUS 0x24 /* 10.5.4.4 */
-#define GSM48_IE_NOTIFY 0x27 /* 10.5.4.20 */
-#define GSM48_IE_KPD_FACILITY 0x2c /* 10.5.4.17 */
-#define GSM48_IE_SIGNAL 0x34 /* 10.5.4.23 */
-#define GSM48_IE_CONN_BCD 0x4c /* 10.5.4.13 */
-#define GSM48_IE_CONN_SUB 0x4d /* 10.5.4.14 */
-#define GSM48_IE_CALLING_BCD 0x5c /* 10.5.4.9 */
-#define GSM48_IE_CALLING_SUB 0x5d /* 10.5.4.10 */
-#define GSM48_IE_CALLED_BCD 0x5e /* 10.5.4.7 */
-#define GSM48_IE_CALLED_SUB 0x6d /* 10.5.4.8 */
-#define GSM48_IE_REDIR_BCD 0x74 /* 10.5.4.21a */
-#define GSM48_IE_REDIR_SUB 0x75 /* 10.5.4.21b */
-#define GSM48_IE_LOWL_COMPAT 0x7c /* 10.5.4.18 */
-#define GSM48_IE_HIGHL_COMPAT 0x7d /* 10.5.4.16 */
-#define GSM48_IE_USER_USER 0x7e /* 10.5.4.25 */
-#define GSM48_IE_SS_VERS 0x7f /* 10.5.4.24 */
-#define GSM48_IE_MORE_DATA 0xa0 /* 10.5.4.19 */
-#define GSM48_IE_CLIR_SUPP 0xa1 /* 10.5.4.11a */
-#define GSM48_IE_CLIR_INVOC 0xa2 /* 10.5.4.11b */
-#define GSM48_IE_REV_C_SETUP 0xa3 /* 10.5.4.22a */
-#define GSM48_IE_REPEAT_CIR 0xd1 /* 10.5.4.22 */
-#define GSM48_IE_REPEAT_SEQ 0xd3 /* 10.5.4.22 */
-
-/* Section 10.5.4.11 / Table 10.5.122 */
-#define GSM48_CAUSE_CS_GSM 0x60
-
-/* Section 9.1.2 / Table 9.3 */
-/* RR elements */
-#define GSM48_IE_VGCS_TARGET 0x01
-//#define GSM48_IE_VGCS_T_MODE_I 0x01
-#define GSM48_IE_FRQSHORT_AFTER 0x02
-#define GSM48_IE_MUL_RATE_CFG 0x03 /* 10.5.2.21aa */
-#define GSM48_IE_FREQ_L_AFTER 0x05
-#define GSM48_IE_MSLOT_DESC 0x10
-#define GSM48_IE_CHANMODE_2 0x11
-#define GSM48_IE_FRQSHORT_BEFORE 0x12
-//#define GSM48_IE_FRQSHORT_BEFOR 0x12
-#define GSM48_IE_CHANMODE_3 0x13
-#define GSM48_IE_CHANMODE_4 0x14
-#define GSM48_IE_CHANMODE_5 0x15
-#define GSM48_IE_CHANMODE_6 0x16
-#define GSM48_IE_CHANMODE_7 0x17
-#define GSM48_IE_CHANMODE_8 0x18
-#define GSM48_IE_CHANDESC_2 0x64
-#define GSM48_IE_MA_AFTER 0x72
-#define GSM48_IE_START_TIME 0x7c
-#define GSM48_IE_FREQ_L_BEFORE 0x19
-//#define GSM48_IE_FRQLIST_BEFORE 0x19
-#define GSM48_IE_CH_DESC_1_BEFORE 0x1c
-//#define GSM48_IE_CHDES_1_BEFORE 0x1c
-#define GSM48_IE_CH_DESC_2_BEFORE 0x1d
-//#define GSM48_IE_CHDES_2_BEFORE 0x1d
-#define GSM48_IE_F_CH_SEQ_BEFORE 0x1e
-//#define GSM48_IE_FRQSEQ_BEFORE 0x1e
-#define GSM48_IE_CLASSMARK3 0x20
-#define GSM48_IE_MA_BEFORE 0x21
-#define GSM48_IE_RR_PACKET_UL 0x22
-#define GSM48_IE_RR_PACKET_DL 0x23
-#define GSM48_IE_CELL_CH_DESC 0x62
-#define GSM48_IE_CHANMODE_1 0x63
-#define GSM48_IE_CHDES_2_AFTER 0x64
-#define GSM48_IE_MODE_SEC_CH 0x66
-#define GSM48_IE_F_CH_SEQ_AFTER 0x69
-#define GSM48_IE_MA_AFTER 0x72
-#define GSM48_IE_BA_RANGE 0x73
-#define GSM48_IE_GROUP_CHDES 0x74
-#define GSM48_IE_BA_LIST_PREF 0x75
-#define GSM48_IE_MOB_OVSERV_DIF 0x77
-#define GSM48_IE_REALTIME_DIFF 0x7b
-#define GSM48_IE_START_TIME 0x7c
-#define GSM48_IE_TIMING_ADVANCE 0x7d
-#define GSM48_IE_GROUP_CIP_SEQ 0x80
-#define GSM48_IE_CIP_MODE_SET 0x90
-#define GSM48_IE_GPRS_RESUMPT 0xc0
-#define GSM48_IE_SYNC_IND 0xd0
-/* System Information 4 (types are equal IEs above) */
-#define GSM48_IE_CBCH_CHAN_DESC 0x64
-#define GSM48_IE_CBCH_MOB_AL 0x72
-
-/* Additional MM elements */
-#define GSM48_IE_LOCATION_AREA 0x13
-#define GSM48_IE_PRIORITY_LEV 0x80
-#define GSM48_IE_FOLLOW_ON_PROC 0xa1
-#define GSM48_IE_CTS_PERMISSION 0xa2
-
-/* Section 10.5.4.23 / Table 10.5.130 */
-enum gsm48_signal_val {
- GSM48_SIGNAL_DIALTONE = 0x00,
- GSM48_SIGNAL_RINGBACK = 0x01,
- GSM48_SIGNAL_INTERCEPT = 0x02,
- GSM48_SIGNAL_NET_CONG = 0x03,
- GSM48_SIGNAL_BUSY = 0x04,
- GSM48_SIGNAL_CONFIRM = 0x05,
- GSM48_SIGNAL_ANSWER = 0x06,
- GSM48_SIGNAL_CALL_WAIT = 0x07,
- GSM48_SIGNAL_OFF_HOOK = 0x08,
- GSM48_SIGNAL_OFF = 0x3f,
- GSM48_SIGNAL_ALERT_OFF = 0x4f,
-};
-
-enum gsm48_cause_loc {
- GSM48_CAUSE_LOC_USER = 0x00,
- GSM48_CAUSE_LOC_PRN_S_LU = 0x01,
- GSM48_CAUSE_LOC_PUN_S_LU = 0x02,
- GSM48_CAUSE_LOC_TRANS_NET = 0x03,
- GSM48_CAUSE_LOC_PUN_S_RU = 0x04,
- GSM48_CAUSE_LOC_PRN_S_RU = 0x05,
- /* not defined */
- GSM48_CAUSE_LOC_INN_NET = 0x07,
- GSM48_CAUSE_LOC_NET_BEYOND = 0x0a,
-};
-
-/* Section 10.5.2.31 RR Cause / Table 10.5.70 */
-enum gsm48_rr_cause {
- GSM48_RR_CAUSE_NORMAL = 0x00,
- GSM48_RR_CAUSE_ABNORMAL_UNSPEC = 0x01,
- GSM48_RR_CAUSE_ABNORMAL_UNACCT = 0x02,
- GSM48_RR_CAUSE_ABNORMAL_TIMER = 0x03,
- GSM48_RR_CAUSE_ABNORMAL_NOACT = 0x04,
- GSM48_RR_CAUSE_PREMPTIVE_REL = 0x05,
- GSM48_RR_CAUSE_HNDOVER_IMP = 0x06,
- GSM48_RR_CAUSE_CHAN_MODE_UNACCT = 0x07,
- GSM48_RR_CAUSE_FREQ_NOT_IMPL = 0x08,
- GSM48_RR_CAUSE_CALL_CLEARED = 0x41,
- GSM48_RR_CAUSE_SEMANT_INCORR = 0x5f,
- GSM48_RR_CAUSE_INVALID_MAND_INF = 0x60,
- GSM48_RR_CAUSE_MSG_TYPE_N = 0x61,
- GSM48_RR_CAUSE_MSG_TYPE_N_COMPAT= 0x62,
- GSM48_RR_CAUSE_COND_IE_ERROR = 0x64,
- GSM48_RR_CAUSE_NO_CELL_ALLOC_A = 0x65,
- GSM48_RR_CAUSE_PROT_ERROR_UNSPC = 0x6f,
-};
-
-/* Section 10.5.4.11 CC Cause / Table 10.5.123 */
-enum gsm48_cc_cause {
- GSM48_CC_CAUSE_UNASSIGNED_NR = 1,
- GSM48_CC_CAUSE_NO_ROUTE = 3,
- GSM48_CC_CAUSE_CHAN_UNACCEPT = 6,
- GSM48_CC_CAUSE_OP_DET_BARRING = 8,
- GSM48_CC_CAUSE_NORM_CALL_CLEAR = 16,
- GSM48_CC_CAUSE_USER_BUSY = 17,
- GSM48_CC_CAUSE_USER_NOTRESPOND = 18,
- GSM48_CC_CAUSE_USER_ALERTING_NA = 19,
- GSM48_CC_CAUSE_CALL_REJECTED = 21,
- GSM48_CC_CAUSE_NUMBER_CHANGED = 22,
- GSM48_CC_CAUSE_PRE_EMPTION = 25,
- GSM48_CC_CAUSE_NONSE_USER_CLR = 26,
- GSM48_CC_CAUSE_DEST_OOO = 27,
- GSM48_CC_CAUSE_INV_NR_FORMAT = 28,
- GSM48_CC_CAUSE_FACILITY_REJ = 29,
- GSM48_CC_CAUSE_RESP_STATUS_INQ = 30,
- GSM48_CC_CAUSE_NORMAL_UNSPEC = 31,
- GSM48_CC_CAUSE_NO_CIRCUIT_CHAN = 34,
- GSM48_CC_CAUSE_NETWORK_OOO = 38,
- GSM48_CC_CAUSE_TEMP_FAILURE = 41,
- GSM48_CC_CAUSE_SWITCH_CONG = 42,
- GSM48_CC_CAUSE_ACC_INF_DISCARD = 43,
- GSM48_CC_CAUSE_REQ_CHAN_UNAVAIL = 44,
- GSM48_CC_CAUSE_RESOURCE_UNAVAIL = 47,
- GSM48_CC_CAUSE_QOS_UNAVAIL = 49,
- GSM48_CC_CAUSE_REQ_FAC_NOT_SUBSC= 50,
- GSM48_CC_CAUSE_INC_BARRED_CUG = 55,
- GSM48_CC_CAUSE_BEARER_CAP_UNAUTH= 57,
- GSM48_CC_CAUSE_BEARER_CA_UNAVAIL= 58,
- GSM48_CC_CAUSE_SERV_OPT_UNAVAIL = 63,
- GSM48_CC_CAUSE_BEARERSERV_UNIMPL= 65,
- GSM48_CC_CAUSE_ACM_GE_ACM_MAX = 68,
- GSM48_CC_CAUSE_REQ_FAC_NOTIMPL = 69,
- GSM48_CC_CAUSE_RESTR_BCAP_AVAIL = 70,
- GSM48_CC_CAUSE_SERV_OPT_UNIMPL = 79,
- GSM48_CC_CAUSE_INVAL_TRANS_ID = 81,
- GSM48_CC_CAUSE_USER_NOT_IN_CUG = 87,
- GSM48_CC_CAUSE_INCOMPAT_DEST = 88,
- GSM48_CC_CAUSE_INVAL_TRANS_NET = 91,
- GSM48_CC_CAUSE_SEMANTIC_INCORR = 95,
- GSM48_CC_CAUSE_INVAL_MAND_INF = 96,
- GSM48_CC_CAUSE_MSGTYPE_NOTEXIST = 97,
- GSM48_CC_CAUSE_MSGTYPE_INCOMPAT = 98,
- GSM48_CC_CAUSE_IE_NOTEXIST = 99,
- GSM48_CC_CAUSE_COND_IE_ERR = 100,
- GSM48_CC_CAUSE_MSG_INCOMP_STATE = 101,
- GSM48_CC_CAUSE_RECOVERY_TIMER = 102,
- GSM48_CC_CAUSE_PROTO_ERR = 111,
- GSM48_CC_CAUSE_INTERWORKING = 127,
-};
-
-/* Annex G, GSM specific cause values for mobility management */
-enum gsm48_reject_value {
- GSM48_REJECT_IMSI_UNKNOWN_IN_HLR = 2,
- GSM48_REJECT_ILLEGAL_MS = 3,
- GSM48_REJECT_IMSI_UNKNOWN_IN_VLR = 4,
- GSM48_REJECT_IMEI_NOT_ACCEPTED = 5,
- GSM48_REJECT_ILLEGAL_ME = 6,
- GSM48_REJECT_PLMN_NOT_ALLOWED = 11,
- GSM48_REJECT_LOC_NOT_ALLOWED = 12,
- GSM48_REJECT_ROAMING_NOT_ALLOWED = 13,
- GSM48_REJECT_NETWORK_FAILURE = 17,
- GSM48_REJECT_CONGESTION = 22,
- GSM48_REJECT_SRV_OPT_NOT_SUPPORTED = 32,
- GSM48_REJECT_RQD_SRV_OPT_NOT_SUPPORTED = 33,
- GSM48_REJECT_SRV_OPT_TMP_OUT_OF_ORDER = 34,
- GSM48_REJECT_CALL_CAN_NOT_BE_IDENTIFIED = 38,
- GSM48_REJECT_INCORRECT_MESSAGE = 95,
- GSM48_REJECT_INVALID_MANDANTORY_INF = 96,
- GSM48_REJECT_MSG_TYPE_NOT_IMPLEMENTED = 97,
- GSM48_REJECT_MSG_TYPE_NOT_COMPATIBLE = 98,
- GSM48_REJECT_INF_ELEME_NOT_IMPLEMENTED = 99,
- GSM48_REJECT_CONDTIONAL_IE_ERROR = 100,
- GSM48_REJECT_MSG_NOT_COMPATIBLE = 101,
- GSM48_REJECT_PROTOCOL_ERROR = 111,
-
- /* according to G.6 Additional cause codes for GMM */
- GSM48_REJECT_GPRS_NOT_ALLOWED = 7,
- GSM48_REJECT_SERVICES_NOT_ALLOWED = 8,
- GSM48_REJECT_MS_IDENTITY_NOT_DERVIVABLE = 9,
- GSM48_REJECT_IMPLICITLY_DETACHED = 10,
- GSM48_REJECT_GPRS_NOT_ALLOWED_IN_PLMN = 14,
- GSM48_REJECT_MSC_TMP_NOT_REACHABLE = 16,
-};
-
-enum chreq_type {
- CHREQ_T_EMERG_CALL,
- CHREQ_T_CALL_REEST_TCH_F,
- CHREQ_T_CALL_REEST_TCH_H,
- CHREQ_T_CALL_REEST_TCH_H_DBL,
- CHREQ_T_SDCCH,
- CHREQ_T_TCH_F,
- CHREQ_T_VOICE_CALL_TCH_H,
- CHREQ_T_DATA_CALL_TCH_H,
- CHREQ_T_LOCATION_UPD,
- CHREQ_T_PAG_R_ANY_NECI0,
- CHREQ_T_PAG_R_ANY_NECI1,
- CHREQ_T_PAG_R_TCH_F,
- CHREQ_T_PAG_R_TCH_FH,
- CHREQ_T_LMU,
- CHREQ_T_RESERVED_SDCCH,
- CHREQ_T_RESERVED_IGNORE,
-};
-
-/* Chapter 11.3 */
-#define GSM48_T301 180, 0
-#define GSM48_T303 30, 0
-#define GSM48_T305 30, 0
-#define GSM48_T306 30, 0
-#define GSM48_T308 10, 0
-#define GSM48_T310 180, 0
-#define GSM48_T313 30, 0
-#define GSM48_T323 30, 0
-#define GSM48_T331 30, 0
-#define GSM48_T333 30, 0
-#define GSM48_T334 25, 0 /* min 15 */
-#define GSM48_T338 30, 0
-#define GSM48_T303_MS 30, 0
-#define GSM48_T305_MS 30, 0
-#define GSM48_T308_MS 30, 0
-#define GSM48_T310_MS 30, 0
-#define GSM48_T313_MS 30, 0
-#define GSM48_T323_MS 30, 0
-#define GSM48_T332_MS 30, 0
-#define GSM48_T335_MS 30, 0
-
-/* Chapter 5.1.2.2 */
-#define GSM_CSTATE_NULL 0
-#define GSM_CSTATE_INITIATED 1
-#define GSM_CSTATE_MM_CONNECTION_PEND 2 /* see 10.5.4.6 */
-#define GSM_CSTATE_MO_CALL_PROC 3
-#define GSM_CSTATE_CALL_DELIVERED 4
-#define GSM_CSTATE_CALL_PRESENT 6
-#define GSM_CSTATE_CALL_RECEIVED 7
-#define GSM_CSTATE_CONNECT_REQUEST 8
-#define GSM_CSTATE_MO_TERM_CALL_CONF 9
-#define GSM_CSTATE_ACTIVE 10
-#define GSM_CSTATE_DISCONNECT_REQ 12
-#define GSM_CSTATE_DISCONNECT_IND 12
-#define GSM_CSTATE_RELEASE_REQ 19
-#define GSM_CSTATE_MO_ORIG_MODIFY 26
-#define GSM_CSTATE_MO_TERM_MODIFY 27
-#define GSM_CSTATE_CONNECT_IND 28
-
-#define SBIT(a) (1 << a)
-#define ALL_STATES 0xffffffff
-
-/* Table 10.5.3/3GPP TS 04.08: Location Area Identification information element */
-#define GSM_LAC_RESERVED_DETACHED 0x0
-#define GSM_LAC_RESERVED_ALL_BTS 0xfffe
-
-/* GSM 04.08 Bearer Capability: Information Transfer Capability */
-enum gsm48_bcap_itcap {
- GSM48_BCAP_ITCAP_SPEECH = 0,
- GSM48_BCAP_ITCAP_UNR_DIG_INF = 1,
- GSM48_BCAP_ITCAP_3k1_AUDIO = 2,
- GSM48_BCAP_ITCAP_FAX_G3 = 3,
- GSM48_BCAP_ITCAP_OTHER = 5,
- GSM48_BCAP_ITCAP_RESERVED = 7,
-};
-
-/* GSM 04.08 Bearer Capability: Transfer Mode */
-enum gsm48_bcap_tmod {
- GSM48_BCAP_TMOD_CIRCUIT = 0,
- GSM48_BCAP_TMOD_PACKET = 1,
-};
-
-/* GSM 04.08 Bearer Capability: Coding Standard */
-enum gsm48_bcap_coding {
- GSM48_BCAP_CODING_GSM_STD = 0,
-};
-
-/* GSM 04.08 Bearer Capability: Radio Channel Requirements */
-enum gsm48_bcap_rrq {
- GSM48_BCAP_RRQ_FR_ONLY = 1,
- GSM48_BCAP_RRQ_DUAL_HR = 2,
- GSM48_BCAP_RRQ_DUAL_FR = 3,
-};
-
-#define GSM48_TMSI_LEN 5
-#define GSM48_MID_TMSI_LEN (GSM48_TMSI_LEN + 2)
-#define GSM48_MI_SIZE 32
-
-/* Chapter 10.4.4.15 */
-struct gsm48_ra_id {
- uint8_t digits[3]; /* MCC + MNC BCD digits */
- uint16_t lac; /* Location Area Code */
- uint8_t rac; /* Routing Area Code */
-} __attribute__ ((packed));
-
-#define GSM48_CELL_CHAN_DESC_SIZE 16
-
-#define GSM_MACBLOCK_LEN 23
-#define GSM_MACBLOCK_PADDING 0x2b
-
-#endif /* PROTO_GSM_04_08_H */
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/gsm_04_11.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/gsm_04_11.h
deleted file mode 100644
index c6a2b19..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/gsm_04_11.h
+++ /dev/null
@@ -1,188 +0,0 @@
-#ifndef PROTO_GSM_04_11_H
-#define PROTO_GSM_04_11_H
-
-#include <stdint.h>
-
-/* GSM TS 04.11 definitions */
-
-/* Chapter 5.2.3: SMC-CS states at the network side */
-enum gsm411_cp_state {
- GSM411_CPS_IDLE = 0,
- GSM411_CPS_MM_CONN_PENDING = 1, /* only MT ! */
- GSM411_CPS_WAIT_CP_ACK = 2,
- GSM411_CPS_MM_ESTABLISHED = 3,
-};
-
-/* Chapter 6.2.2: SMR states at the network side */
-enum gsm411_rp_state {
- GSM411_RPS_IDLE = 0,
- GSM411_RPS_WAIT_FOR_RP_ACK = 1,
- GSM411_RPS_WAIT_TO_TX_RP_ACK = 3,
-};
-
-/* Chapter 8.1.2 (refers to GSM 04.07 Chapter 11.2.3.1.1 */
-#define GSM411_PDISC_SMS 0x09
-
-/* Chapter 8.1.3 */
-#define GSM411_MT_CP_DATA 0x01
-#define GSM411_MT_CP_ACK 0x04
-#define GSM411_MT_CP_ERROR 0x10
-
-enum gsm411_cp_ie {
- GSM411_CP_IE_USER_DATA = 0x01, /* 8.1.4.1 */
- GSM411_CP_IE_CAUSE = 0x02, /* 8.1.4.2. */
-};
-
-/* Section 8.1.4.2 / Table 8.2 */
-enum gsm411_cp_cause {
- GSM411_CP_CAUSE_NET_FAIL = 17,
- GSM411_CP_CAUSE_CONGESTION = 22,
- GSM411_CP_CAUSE_INV_TRANS_ID = 81,
- GSM411_CP_CAUSE_SEMANT_INC_MSG = 95,
- GSM411_CP_CAUSE_INV_MAND_INF = 96,
- GSM411_CP_CAUSE_MSGTYPE_NOTEXIST= 97,
- GSM411_CP_CAUSE_MSG_INCOMP_STATE= 98,
- GSM411_CP_CAUSE_IE_NOTEXIST = 99,
- GSM411_CP_CAUSE_PROTOCOL_ERR = 111,
-};
-
-/* Chapter 8.2.2 */
-#define GSM411_MT_RP_DATA_MO 0x00
-#define GSM411_MT_RP_DATA_MT 0x01
-#define GSM411_MT_RP_ACK_MO 0x02
-#define GSM411_MT_RP_ACK_MT 0x03
-#define GSM411_MT_RP_ERROR_MO 0x04
-#define GSM411_MT_RP_ERROR_MT 0x05
-#define GSM411_MT_RP_SMMA_MO 0x06
-
-enum gsm411_rp_ie {
- GSM411_IE_RP_USER_DATA = 0x41, /* 8.2.5.3 */
- GSM411_IE_RP_CAUSE = 0x42, /* 8.2.5.4 */
-};
-
-/* Chapter 8.2.5.4 Table 8.4 */
-enum gsm411_rp_cause {
- /* valid only for MO */
- GSM411_RP_CAUSE_MO_NUM_UNASSIGNED = 1,
- GSM411_RP_CAUSE_MO_OP_DET_BARR = 8,
- GSM411_RP_CAUSE_MO_CALL_BARRED = 10,
- GSM411_RP_CAUSE_MO_SMS_REJECTED = 21,
- GSM411_RP_CAUSE_MO_DEST_OUT_OF_ORDER = 27,
- GSM411_RP_CAUSE_MO_UNIDENTIFIED_SUBSCR = 28,
- GSM411_RP_CAUSE_MO_FACILITY_REJ = 29,
- GSM411_RP_CAUSE_MO_UNKNOWN_SUBSCR = 30,
- GSM411_RP_CAUSE_MO_NET_OUT_OF_ORDER = 38,
- GSM411_RP_CAUSE_MO_TEMP_FAIL = 41,
- GSM411_RP_CAUSE_MO_CONGESTION = 42,
- GSM411_RP_CAUSE_MO_RES_UNAVAIL = 47,
- GSM411_RP_CAUSE_MO_REQ_FAC_NOTSUBSCR = 50,
- GSM411_RP_CAUSE_MO_REQ_FAC_NOTIMPL = 69,
- GSM411_RP_CAUSE_MO_INTERWORKING = 127,
- /* valid only for MT */
- GSM411_RP_CAUSE_MT_MEM_EXCEEDED = 22,
- /* valid for both directions */
- GSM411_RP_CAUSE_INV_TRANS_REF = 81,
- GSM411_RP_CAUSE_SEMANT_INC_MSG = 95,
- GSM411_RP_CAUSE_INV_MAND_INF = 96,
- GSM411_RP_CAUSE_MSGTYPE_NOTEXIST = 97,
- GSM411_RP_CAUSE_MSG_INCOMP_STATE = 98,
- GSM411_RP_CAUSE_IE_NOTEXIST = 99,
- GSM411_RP_CAUSE_PROTOCOL_ERR = 111,
-};
-
-/* Chapter 10: Timers */
-#define GSM411_TMR_TR1M 40, 0 /* 35 < x < 45 seconds */
-#define GSM411_TMR_TRAM 30, 0 /* 25 < x < 35 seconds */
-#define GSM411_TMR_TR2M 15, 0 /* 12 < x < 20 seconds */
-
-#define GSM411_TMR_TC1A 30, 0
-
-/* Chapter 8.2.1 */
-struct gsm411_rp_hdr {
- uint8_t len;
- uint8_t msg_type;
- uint8_t msg_ref;
- uint8_t data[0];
-} __attribute__ ((packed));
-
-/* our own enum, not related to on-air protocol */
-enum sms_alphabet {
- DCS_NONE,
- DCS_7BIT_DEFAULT,
- DCS_UCS2,
- DCS_8BIT_DATA,
-};
-
-/* GSM 03.40 / Chapter 9.2.3.1: TP-Message-Type-Indicator */
-#define GSM340_SMS_DELIVER_SC2MS 0x00
-#define GSM340_SMS_DELIVER_REP_MS2SC 0x00
-#define GSM340_SMS_STATUS_REP_SC2MS 0x02
-#define GSM340_SMS_COMMAND_MS2SC 0x02
-#define GSM340_SMS_SUBMIT_MS2SC 0x01
-#define GSM340_SMS_SUBMIT_REP_SC2MS 0x01
-#define GSM340_SMS_RESSERVED 0x03
-
-/* GSM 03.40 / Chapter 9.2.3.2: TP-More-Messages-to-Send */
-#define GSM340_TP_MMS_MORE 0
-#define GSM340_TP_MMS_NO_MORE 1
-
-/* GSM 03.40 / Chapter 9.2.3.3: TP-Validity-Period-Format */
-#define GSM340_TP_VPF_NONE 0
-#define GSM340_TP_VPF_RELATIVE 2
-#define GSM340_TP_VPF_ENHANCED 1
-#define GSM340_TP_VPF_ABSOLUTE 3
-
-/* GSM 03.40 / Chapter 9.2.3.4: TP-Status-Report-Indication */
-#define GSM340_TP_SRI_NONE 0
-#define GSM340_TP_SRI_PRESENT 1
-
-/* GSM 03.40 / Chapter 9.2.3.5: TP-Status-Report-Request */
-#define GSM340_TP_SRR_NONE 0
-#define GSM340_TP_SRR_REQUESTED 1
-
-/* GSM 03.40 / Chapter 9.2.3.9: TP-Protocol-Identifier */
-/* telematic interworking (001 or 111 in bits 7-5) */
-#define GSM340_TP_PID_IMPLICIT 0x00
-#define GSM340_TP_PID_TELEX 0x01
-#define GSM340_TP_PID_FAX_G3 0x02
-#define GSM340_TP_PID_FAX_G4 0x03
-#define GSM340_TP_PID_VOICE 0x04
-#define GSM430_TP_PID_ERMES 0x05
-#define GSM430_TP_PID_NATIONAL_PAGING 0x06
-#define GSM430_TP_PID_VIDEOTEX 0x07
-#define GSM430_TP_PID_TELETEX_UNSPEC 0x08
-#define GSM430_TP_PID_TELETEX_PSPDN 0x09
-#define GSM430_TP_PID_TELETEX_CSPDN 0x0a
-#define GSM430_TP_PID_TELETEX_PSTN 0x0b
-#define GSM430_TP_PID_TELETEX_ISDN 0x0c
-#define GSM430_TP_PID_TELETEX_UCI 0x0d
-#define GSM430_TP_PID_MSG_HANDLING 0x10
-#define GSM430_TP_PID_MSG_X400 0x11
-#define GSM430_TP_PID_EMAIL 0x12
-#define GSM430_TP_PID_GSM_MS 0x1f
-/* if bit 7 = 0 and bit 6 = 1 */
-#define GSM430_TP_PID_SMS_TYPE_0 0
-#define GSM430_TP_PID_SMS_TYPE_1 1
-#define GSM430_TP_PID_SMS_TYPE_2 2
-#define GSM430_TP_PID_SMS_TYPE_3 3
-#define GSM430_TP_PID_SMS_TYPE_4 4
-#define GSM430_TP_PID_SMS_TYPE_5 5
-#define GSM430_TP_PID_SMS_TYPE_6 6
-#define GSM430_TP_PID_SMS_TYPE_7 7
-#define GSM430_TP_PID_RETURN_CALL_MSG 0x1f
-#define GSM430_TP_PID_ME_DATA_DNLOAD 0x3d
-#define GSM430_TP_PID_ME_DE_PERSONAL 0x3e
-#define GSM430_TP_PID_ME_SIM_DNLOAD 0x3f
-
-/* GSM 03.38 Chapter 4: SMS Data Coding Scheme */
-#define GSM338_DCS_00_
-
-#define GSM338_DCS_1110_7BIT (0 << 2)
-#define GSM338_DCS_1111_7BIT (0 << 2)
-#define GSM338_DCS_1111_8BIT_DATA (1 << 2)
-#define GSM338_DCS_1111_CLASS0 0
-#define GSM338_DCS_1111_CLASS1_ME 1
-#define GSM338_DCS_1111_CLASS2_SIM 2
-#define GSM338_DCS_1111_CLASS3_TE 3 /* See TS 07.05 */
-
-#endif /* PROTO_GSM_04_11_H */
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/gsm_04_12.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/gsm_04_12.h
deleted file mode 100644
index 9b1538a..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/gsm_04_12.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef PROTO_GSM_04_12_H
-#define PROTO_GSM_04_12_H
-
-#include <stdint.h>
-
-/* GSM TS 04.12 definitions for Short Message Service Cell Broadcast */
-
-#define GSM412_SEQ_FST_BLOCK 0x0
-#define GSM412_SEQ_SND_BLOCK 0x1
-#define GSM412_SEQ_TRD_BLOCK 0x2
-#define GSM412_SEQ_FTH_BLOCK 0x3
-#define GSM412_SEQ_FST_SCHED_BLOCK 0x8
-#define GSM412_SEQ_NULL_MSG 0xf
-
-struct gsm412_block_type {
- uint8_t seq_nr : 4,
- lb : 1,
- lpd : 2,
- spare : 1;
-} __attribute__((packed));
-
-struct gsm412_sched_msg {
- uint8_t beg_slot_nr : 6,
- type : 2;
- uint8_t end_slot_nr : 6,
- spare1 : 1, spare2: 1;
- uint8_t cbsms_msg_map[6];
- uint8_t data[0];
-} __attribute__((packed));
-
-#endif
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/gsm_04_80.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/gsm_04_80.h
deleted file mode 100644
index fa5c945..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/gsm_04_80.h
+++ /dev/null
@@ -1,126 +0,0 @@
-#ifndef PROTO_GSM_04_80_H
-#define PROTO_GSM_04_80_H
-
-/* GSM TS 04.80 definitions (Supplementary Services Specification, Formats and Coding) */
-
-/* Section 3.4 */
-#define GSM0480_MTYPE_RELEASE_COMPLETE 0x2A
-#define GSM0480_MTYPE_FACILITY 0x3A
-#define GSM0480_MTYPE_REGISTER 0x3B
-
-/* Section 3.5 */
-#define GSM0480_IE_FACILITY 0x1C
-#define GSM0480_IE_SS_VERSION 0x7F
-
-/* Section 3.6.2 */
-#define GSM0480_CTYPE_INVOKE 0xA1
-#define GSM0480_CTYPE_RETURN_RESULT 0xA2
-#define GSM0480_CTYPE_RETURN_ERROR 0xA3
-#define GSM0480_CTYPE_REJECT 0xA4
-
-/* Section 3.6.3 */
-#define GSM0480_COMPIDTAG_INVOKE_ID 0x02
-#define GSM0480_COMPIDTAG_LINKED_ID 0x80
-
-/* Section 3.6.4 */
-#define GSM0480_OPERATION_CODE 0x02
-
-/* Section 3.6.5 */
-#define GSM_0480_SEQUENCE_TAG 0x30
-#define GSM_0480_SET_TAG 0x31
-
-/* Section 3.6.6 */
-#define GSM_0480_ERROR_CODE_TAG 0x02
-
-/* Section 3.6.7 */
-/* Table 3.13 */
-#define GSM_0480_PROBLEM_CODE_TAG_GENERAL 0x80
-#define GSM_0480_PROBLEM_CODE_TAG_INVOKE 0x81
-#define GSM_0480_PROBLEM_CODE_TAG_RETURN_RESULT 0x82
-#define GSM_0480_PROBLEM_CODE_TAG_RETURN_ERROR 0x83
-
-/* Table 3.14 */
-#define GSM_0480_GEN_PROB_CODE_UNRECOGNISED 0x00
-#define GSM_0480_GEN_PROB_CODE_MISTYPED 0x01
-#define GSM_0480_GEN_PROB_CODE_BAD_STRUCTURE 0x02
-
-/* Table 3.15 */
-#define GSM_0480_INVOKE_PROB_CODE_DUPLICATE_INVOKE_ID 0x00
-#define GSM_0480_INVOKE_PROB_CODE_UNRECOGNISED_OPERATION 0x01
-#define GSM_0480_INVOKE_PROB_CODE_MISTYPED_PARAMETER 0x02
-#define GSM_0480_INVOKE_PROB_CODE_RESOURCE_LIMITATION 0x03
-#define GSM_0480_INVOKE_PROB_CODE_INITIATING_RELEASE 0x04
-#define GSM_0480_INVOKE_PROB_CODE_UNRECOGNISED_LINKED_ID 0x05
-#define GSM_0480_INVOKE_PROB_CODE_UNEXPECTED_LINKED_RESPONSE 0x06
-#define GSM_0480_INVOKE_PROB_CODE_UNEXPECTED_LINKED_OPERATION 0x07
-
-/* Table 3.16 */
-#define GSM_0480_RESULT_PROB_CODE_UNRECOGNISED_INVOKE_ID 0x00
-#define GSM_0480_RESULT_PROB_CODE_RETURN_RESULT_UNEXPECTED 0x01
-#define GSM_0480_RESULT_PROB_CODE_MISTYPED_PARAMETER 0x02
-
-/* Table 3.17 */
-#define GSM_0480_ERROR_PROB_CODE_UNRECOGNISED_INVOKE_ID 0x00
-#define GSM_0480_ERROR_PROB_CODE_RETURN_ERROR_UNEXPECTED 0x01
-#define GSM_0480_ERROR_PROB_CODE_UNRECOGNISED_ERROR 0x02
-#define GSM_0480_ERROR_PROB_CODE_UNEXPECTED_ERROR 0x03
-#define GSM_0480_ERROR_PROB_CODE_MISTYPED_PARAMETER 0x04
-
-/* Section 4.5 */
-#define GSM0480_OP_CODE_REGISTER_SS 0x0A
-#define GSM0480_OP_CODE_ERASE_SS 0x0B
-#define GSM0480_OP_CODE_ACTIVATE_SS 0x0C
-#define GSM0480_OP_CODE_DEACTIVATE_SS 0x0D
-#define GSM0480_OP_CODE_INTERROGATE_SS 0x0E
-#define GSM0480_OP_CODE_NOTIFY_SS 0x10
-#define GSM0480_OP_CODE_REGISTER_PASSWORD 0x11
-#define GSM0480_OP_CODE_GET_PASSWORD 0x12
-#define GSM0480_OP_CODE_PROCESS_USS_DATA 0x13
-#define GSM0480_OP_CODE_FORWARD_CHECK_SS_IND 0x26
-#define GSM0480_OP_CODE_PROCESS_USS_REQ 0x3B
-#define GSM0480_OP_CODE_USS_REQUEST 0x3C
-#define GSM0480_OP_CODE_USS_NOTIFY 0x3D
-#define GSM0480_OP_CODE_FORWARD_CUG_INFO 0x78
-#define GSM0480_OP_CODE_SPLIT_MPTY 0x79
-#define GSM0480_OP_CODE_RETRIEVE_MPTY 0x7A
-#define GSM0480_OP_CODE_HOLD_MPTY 0x7B
-#define GSM0480_OP_CODE_BUILD_MPTY 0x7C
-#define GSM0480_OP_CODE_FORWARD_CHARGE_ADVICE 0x7D
-
-#define GSM0480_ERR_CODE_UNKNOWN_SUBSCRIBER 0x01
-#define GSM0480_ERR_CODE_ILLEGAL_SUBSCRIBER 0x09
-#define GSM0480_ERR_CODE_BEARER_SERVICE_NOT_PROVISIONED 0x0A
-#define GSM0480_ERR_CODE_TELESERVICE_NOT_PROVISIONED 0x0B
-#define GSM0480_ERR_CODE_ILLEGAL_EQUIPMENT 0x0C
-#define GSM0480_ERR_CODE_CALL_BARRED 0x0D
-#define GSM0480_ERR_CODE_ILLEGAL_SS_OPERATION 0x10
-#define GSM0480_ERR_CODE_SS_ERROR_STATUS 0x11
-#define GSM0480_ERR_CODE_SS_NOT_AVAILABLE 0x12
-#define GSM0480_ERR_CODE_SS_SUBSCRIPTION_VIOLATION 0x13
-#define GSM0480_ERR_CODE_SS_INCOMPATIBILITY 0x14
-#define GSM0480_ERR_CODE_FACILITY_NOT_SUPPORTED 0x15
-#define GSM0480_ERR_CODE_ABSENT_SUBSCRIBER 0x1B
-#define GSM0480_ERR_CODE_SYSTEM_FAILURE 0x22
-#define GSM0480_ERR_CODE_DATA_MISSING 0x23
-#define GSM0480_ERR_CODE_UNEXPECTED_DATA_VALUE 0x24
-#define GSM0480_ERR_CODE_PW_REGISTRATION_FAILURE 0x25
-#define GSM0480_ERR_CODE_NEGATIVE_PW_CHECK 0x26
-#define GSM0480_ERR_CODE_NUM_PW_ATTEMPTS_VIOLATION 0x2B
-#define GSM0480_ERR_CODE_UNKNOWN_ALPHABET 0x47
-#define GSM0480_ERR_CODE_USSD_BUSY 0x48
-#define GSM0480_ERR_CODE_MAX_MPTY_PARTICIPANTS 0x7E
-#define GSM0480_ERR_CODE_RESOURCES_NOT_AVAILABLE 0x7F
-
-/* ASN.1 type-tags */
-#define ASN1_BOOLEAN_TAG 0x01
-#define ASN1_INTEGER_TAG 0x02
-#define ASN1_BIT_STRING_TAG 0x03
-#define ASN1_OCTET_STRING_TAG 0x04
-#define ASN1_NULL_TYPE_TAG 0x05
-#define ASN1_OBJECT_ID_TAG 0x06
-#define ASN1_UTF8_STRING_TAG 0x0C
-#define ASN1_PRINTABLE_STRING_TAG 0x13
-#define ASN1_IA5_STRING_TAG 0x16
-#define ASN1_UNICODE_STRING_TAG 0x1E
-
-#endif /* PROTO_GSM_04_80_H */
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/gsm_08_08.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/gsm_08_08.h
deleted file mode 100644
index 6b8f935..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/gsm_08_08.h
+++ /dev/null
@@ -1,303 +0,0 @@
-/* From GSM08.08 */
-
-#ifndef GSM_0808_H
-#define GSM_0808_H
-
-#include <stdlib.h>
-
-/*
- * this is from GSM 03.03 CGI but is copied in GSM 08.08
- * in § 3.2.2.27 for Cell Identifier List
- */
-enum CELL_IDENT {
- CELL_IDENT_WHOLE_GLOBAL = 0,
- CELL_IDENT_LAC_AND_CI = 1,
- CELL_IDENT_CI = 2,
- CELL_IDENT_NO_CELL = 3,
- CELL_IDENT_LAI_AND_LAC = 4,
- CELL_IDENT_LAC = 5,
- CELL_IDENT_BSS = 6,
- CELL_IDENT_UTRAN_PLMN_LAC_RNC = 8,
- CELL_IDENT_UTRAN_RNC = 9,
- CELL_IDENT_UTRAN_LAC_RNC = 10,
-};
-
-
-/* GSM 08.06 § 6.3 */
-enum BSSAP_MSG_TYPE {
- BSSAP_MSG_BSS_MANAGEMENT = 0x0,
- BSSAP_MSG_DTAP = 0x1,
-};
-
-struct bssmap_header {
- uint8_t type;
- uint8_t length;
-} __attribute__((packed));
-
-struct dtap_header {
- uint8_t type;
- uint8_t link_id;
- uint8_t length;
-} __attribute__((packed));
-
-
-enum BSS_MAP_MSG_TYPE {
- BSS_MAP_MSG_RESERVED_0 = 0,
-
- /* ASSIGNMENT MESSAGES */
- BSS_MAP_MSG_ASSIGMENT_RQST = 1,
- BSS_MAP_MSG_ASSIGMENT_COMPLETE = 2,
- BSS_MAP_MSG_ASSIGMENT_FAILURE = 3,
-
- /* HANDOVER MESSAGES */
- BSS_MAP_MSG_HANDOVER_RQST = 16,
- BSS_MAP_MSG_HANDOVER_REQUIRED = 17,
- BSS_MAP_MSG_HANDOVER_RQST_ACKNOWLEDGE= 18,
- BSS_MAP_MSG_HANDOVER_CMD = 19,
- BSS_MAP_MSG_HANDOVER_COMPLETE = 20,
- BSS_MAP_MSG_HANDOVER_SUCCEEDED = 21,
- BSS_MAP_MSG_HANDOVER_FAILURE = 22,
- BSS_MAP_MSG_HANDOVER_PERFORMED = 23,
- BSS_MAP_MSG_HANDOVER_CANDIDATE_ENQUIRE = 24,
- BSS_MAP_MSG_HANDOVER_CANDIDATE_RESPONSE = 25,
- BSS_MAP_MSG_HANDOVER_REQUIRED_REJECT = 26,
- BSS_MAP_MSG_HANDOVER_DETECT = 27,
-
- /* RELEASE MESSAGES */
- BSS_MAP_MSG_CLEAR_CMD = 32,
- BSS_MAP_MSG_CLEAR_COMPLETE = 33,
- BSS_MAP_MSG_CLEAR_RQST = 34,
- BSS_MAP_MSG_RESERVED_1 = 35,
- BSS_MAP_MSG_RESERVED_2 = 36,
- BSS_MAP_MSG_SAPI_N_REJECT = 37,
- BSS_MAP_MSG_CONFUSION = 38,
-
- /* OTHER CONNECTION RELATED MESSAGES */
- BSS_MAP_MSG_SUSPEND = 40,
- BSS_MAP_MSG_RESUME = 41,
- BSS_MAP_MSG_CONNECTION_ORIENTED_INFORMATION = 42,
- BSS_MAP_MSG_PERFORM_LOCATION_RQST = 43,
- BSS_MAP_MSG_LSA_INFORMATION = 44,
- BSS_MAP_MSG_PERFORM_LOCATION_RESPONSE = 45,
- BSS_MAP_MSG_PERFORM_LOCATION_ABORT = 46,
- BSS_MAP_MSG_COMMON_ID = 47,
-
- /* GENERAL MESSAGES */
- BSS_MAP_MSG_RESET = 48,
- BSS_MAP_MSG_RESET_ACKNOWLEDGE = 49,
- BSS_MAP_MSG_OVERLOAD = 50,
- BSS_MAP_MSG_RESERVED_3 = 51,
- BSS_MAP_MSG_RESET_CIRCUIT = 52,
- BSS_MAP_MSG_RESET_CIRCUIT_ACKNOWLEDGE = 53,
- BSS_MAP_MSG_MSC_INVOKE_TRACE = 54,
- BSS_MAP_MSG_BSS_INVOKE_TRACE = 55,
- BSS_MAP_MSG_CONNECTIONLESS_INFORMATION = 58,
-
- /* TERRESTRIAL RESOURCE MESSAGES */
- BSS_MAP_MSG_BLOCK = 64,
- BSS_MAP_MSG_BLOCKING_ACKNOWLEDGE = 65,
- BSS_MAP_MSG_UNBLOCK = 66,
- BSS_MAP_MSG_UNBLOCKING_ACKNOWLEDGE = 67,
- BSS_MAP_MSG_CIRCUIT_GROUP_BLOCK = 68,
- BSS_MAP_MSG_CIRCUIT_GROUP_BLOCKING_ACKNOWLEDGE = 69,
- BSS_MAP_MSG_CIRCUIT_GROUP_UNBLOCK = 70,
- BSS_MAP_MSG_CIRCUIT_GROUP_UNBLOCKING_ACKNOWLEDGE = 71,
- BSS_MAP_MSG_UNEQUIPPED_CIRCUIT = 72,
- BSS_MAP_MSG_CHANGE_CIRCUIT = 78,
- BSS_MAP_MSG_CHANGE_CIRCUIT_ACKNOWLEDGE = 79,
-
- /* RADIO RESOURCE MESSAGES */
- BSS_MAP_MSG_RESOURCE_RQST = 80,
- BSS_MAP_MSG_RESOURCE_INDICATION = 81,
- BSS_MAP_MSG_PAGING = 82,
- BSS_MAP_MSG_CIPHER_MODE_CMD = 83,
- BSS_MAP_MSG_CLASSMARK_UPDATE = 84,
- BSS_MAP_MSG_CIPHER_MODE_COMPLETE = 85,
- BSS_MAP_MSG_QUEUING_INDICATION = 86,
- BSS_MAP_MSG_COMPLETE_LAYER_3 = 87,
- BSS_MAP_MSG_CLASSMARK_RQST = 88,
- BSS_MAP_MSG_CIPHER_MODE_REJECT = 89,
- BSS_MAP_MSG_LOAD_INDICATION = 90,
-
- /* VGCS/VBS */
- BSS_MAP_MSG_VGCS_VBS_SETUP = 4,
- BSS_MAP_MSG_VGCS_VBS_SETUP_ACK = 5,
- BSS_MAP_MSG_VGCS_VBS_SETUP_REFUSE = 6,
- BSS_MAP_MSG_VGCS_VBS_ASSIGNMENT_RQST = 7,
- BSS_MAP_MSG_VGCS_VBS_ASSIGNMENT_RESULT = 28,
- BSS_MAP_MSG_VGCS_VBS_ASSIGNMENT_FAILURE = 29,
- BSS_MAP_MSG_VGCS_VBS_QUEUING_INDICATION = 30,
- BSS_MAP_MSG_UPLINK_RQST = 31,
- BSS_MAP_MSG_UPLINK_RQST_ACKNOWLEDGE = 39,
- BSS_MAP_MSG_UPLINK_RQST_CONFIRMATION = 73,
- BSS_MAP_MSG_UPLINK_RELEASE_INDICATION = 74,
- BSS_MAP_MSG_UPLINK_REJECT_CMD = 75,
- BSS_MAP_MSG_UPLINK_RELEASE_CMD = 76,
- BSS_MAP_MSG_UPLINK_SEIZED_CMD = 77,
-};
-
-enum GSM0808_IE_CODING {
- GSM0808_IE_CIRCUIT_IDENTITY_CODE = 1,
- GSM0808_IE_RESERVED_0 = 2,
- GSM0808_IE_RESOURCE_AVAILABLE = 3,
- GSM0808_IE_CAUSE = 4,
- GSM0808_IE_CELL_IDENTIFIER = 5,
- GSM0808_IE_PRIORITY = 6,
- GSM0808_IE_LAYER_3_HEADER_INFORMATION = 7,
- GSM0808_IE_IMSI = 8,
- GSM0808_IE_TMSI = 9,
- GSM0808_IE_ENCRYPTION_INFORMATION = 10,
- GSM0808_IE_CHANNEL_TYPE = 11,
- GSM0808_IE_PERIODICITY = 12,
- GSM0808_IE_EXTENDED_RESOURCE_INDICATOR = 13,
- GSM0808_IE_NUMBER_OF_MSS = 14,
- GSM0808_IE_RESERVED_1 = 15,
- GSM0808_IE_RESERVED_2 = 16,
- GSM0808_IE_RESERVED_3 = 17,
- GSM0808_IE_CLASSMARK_INFORMATION_T2 = 18,
- GSM0808_IE_CLASSMARK_INFORMATION_T3 = 19,
- GSM0808_IE_INTERFERENCE_BAND_TO_USE = 20,
- GSM0808_IE_RR_CAUSE = 21,
- GSM0808_IE_RESERVED_4 = 22,
- GSM0808_IE_LAYER_3_INFORMATION = 23,
- GSM0808_IE_DLCI = 24,
- GSM0808_IE_DOWNLINK_DTX_FLAG = 25,
- GSM0808_IE_CELL_IDENTIFIER_LIST = 26,
- GSM0808_IE_RESPONSE_RQST = 27,
- GSM0808_IE_RESOURCE_INDICATION_METHOD = 28,
- GSM0808_IE_CLASSMARK_INFORMATION_TYPE_1 = 29,
- GSM0808_IE_CIRCUIT_IDENTITY_CODE_LIST = 30,
- GSM0808_IE_DIAGNOSTIC = 31,
- GSM0808_IE_LAYER_3_MESSAGE_CONTENTS = 32,
- GSM0808_IE_CHOSEN_CHANNEL = 33,
- GSM0808_IE_TOTAL_RESOURCE_ACCESSIBLE = 34,
- GSM0808_IE_CIPHER_RESPONSE_MODE = 35,
- GSM0808_IE_CHANNEL_NEEDED = 36,
- GSM0808_IE_TRACE_TYPE = 37,
- GSM0808_IE_TRIGGERID = 38,
- GSM0808_IE_TRACE_REFERENCE = 39,
- GSM0808_IE_TRANSACTIONID = 40,
- GSM0808_IE_MOBILE_IDENTITY = 41,
- GSM0808_IE_OMCID = 42,
- GSM0808_IE_FORWARD_INDICATOR = 43,
- GSM0808_IE_CHOSEN_ENCR_ALG = 44,
- GSM0808_IE_CIRCUIT_POOL = 45,
- GSM0808_IE_CIRCUIT_POOL_LIST = 46,
- GSM0808_IE_TIME_INDICATION = 47,
- GSM0808_IE_RESOURCE_SITUATION = 48,
- GSM0808_IE_CURRENT_CHANNEL_TYPE_1 = 49,
- GSM0808_IE_QUEUEING_INDICATOR = 50,
- GSM0808_IE_SPEECH_VERSION = 64,
- GSM0808_IE_ASSIGNMENT_REQUIREMENT = 51,
- GSM0808_IE_TALKER_FLAG = 53,
- GSM0808_IE_CONNECTION_RELEASE_RQSTED = 54,
- GSM0808_IE_GROUP_CALL_REFERENCE = 55,
- GSM0808_IE_EMLPP_PRIORITY = 56,
- GSM0808_IE_CONFIG_EVO_INDI = 57,
- GSM0808_IE_OLD_BSS_TO_NEW_BSS_INFORMATION = 58,
- GSM0808_IE_LSA_IDENTIFIER = 59,
- GSM0808_IE_LSA_IDENTIFIER_LIST = 60,
- GSM0808_IE_LSA_INFORMATION = 61,
- GSM0808_IE_LCS_QOS = 62,
- GSM0808_IE_LSA_ACCESS_CTRL_SUPPR = 63,
- GSM0808_IE_LCS_PRIORITY = 67,
- GSM0808_IE_LOCATION_TYPE = 68,
- GSM0808_IE_LOCATION_ESTIMATE = 69,
- GSM0808_IE_POSITIONING_DATA = 70,
- GSM0808_IE_LCS_CAUSE = 71,
- GSM0808_IE_LCS_CLIENT_TYPE = 72,
- GSM0808_IE_APDU = 73,
- GSM0808_IE_NETWORK_ELEMENT_IDENTITY = 74,
- GSM0808_IE_GPS_ASSISTANCE_DATA = 75,
- GSM0808_IE_DECIPHERING_KEYS = 76,
- GSM0808_IE_RETURN_ERROR_RQST = 77,
- GSM0808_IE_RETURN_ERROR_CAUSE = 78,
- GSM0808_IE_SEGMENTATION = 79,
- GSM0808_IE_SERVICE_HANDOVER = 80,
- GSM0808_IE_SOURCE_RNC_TO_TARGET_RNC_TRANSPARENT_UMTS = 81,
- GSM0808_IE_SOURCE_RNC_TO_TARGET_RNC_TRANSPARENT_CDMA2000= 82,
- GSM0808_IE_RESERVED_5 = 65,
- GSM0808_IE_RESERVED_6 = 66,
-};
-
-enum gsm0808_cause {
- GSM0808_CAUSE_RADIO_INTERFACE_MESSAGE_FAILURE = 0,
- GSM0808_CAUSE_RADIO_INTERFACE_FAILURE = 1,
- GSM0808_CAUSE_UPLINK_QUALITY = 2,
- GSM0808_CAUSE_UPLINK_STRENGTH = 3,
- GSM0808_CAUSE_DOWNLINK_QUALITY = 4,
- GSM0808_CAUSE_DOWNLINK_STRENGTH = 5,
- GSM0808_CAUSE_DISTANCE = 6,
- GSM0808_CAUSE_O_AND_M_INTERVENTION = 7,
- GSM0808_CAUSE_RESPONSE_TO_MSC_INVOCATION = 8,
- GSM0808_CAUSE_CALL_CONTROL = 9,
- GSM0808_CAUSE_RADIO_INTERFACE_FAILURE_REVERSION = 10,
- GSM0808_CAUSE_HANDOVER_SUCCESSFUL = 11,
- GSM0808_CAUSE_BETTER_CELL = 12,
- GSM0808_CAUSE_DIRECTED_RETRY = 13,
- GSM0808_CAUSE_JOINED_GROUP_CALL_CHANNEL = 14,
- GSM0808_CAUSE_TRAFFIC = 15,
- GSM0808_CAUSE_EQUIPMENT_FAILURE = 32,
- GSM0808_CAUSE_NO_RADIO_RESOURCE_AVAILABLE = 33,
- GSM0808_CAUSE_RQSTED_TERRESTRIAL_RESOURCE_UNAVAILABLE = 34,
- GSM0808_CAUSE_CCCH_OVERLOAD = 35,
- GSM0808_CAUSE_PROCESSOR_OVERLOAD = 36,
- GSM0808_CAUSE_BSS_NOT_EQUIPPED = 37,
- GSM0808_CAUSE_MS_NOT_EQUIPPED = 38,
- GSM0808_CAUSE_INVALID_CELL = 39,
- GSM0808_CAUSE_TRAFFIC_LOAD = 40,
- GSM0808_CAUSE_PREEMPTION = 41,
- GSM0808_CAUSE_RQSTED_TRANSCODING_RATE_ADAPTION_UNAVAILABLE = 48,
- GSM0808_CAUSE_CIRCUIT_POOL_MISMATCH = 49,
- GSM0808_CAUSE_SWITCH_CIRCUIT_POOL = 50,
- GSM0808_CAUSE_RQSTED_SPEECH_VERSION_UNAVAILABLE = 51,
- GSM0808_CAUSE_LSA_NOT_ALLOWED = 52,
- GSM0808_CAUSE_CIPHERING_ALGORITHM_NOT_SUPPORTED = 64,
- GSM0808_CAUSE_TERRESTRIAL_CIRCUIT_ALREADY_ALLOCATED = 80,
- GSM0808_CAUSE_INVALID_MESSAGE_CONTENTS = 81,
- GSM0808_CAUSE_INFORMATION_ELEMENT_OR_FIELD_MISSING = 82,
- GSM0808_CAUSE_INCORRECT_VALUE = 83,
- GSM0808_CAUSE_UNKNOWN_MESSAGE_TYPE = 84,
- GSM0808_CAUSE_UNKNOWN_INFORMATION_ELEMENT = 85,
- GSM0808_CAUSE_PROTOCOL_ERROR_BETWEEN_BSS_AND_MSC = 96,
-};
-
-/* GSM 08.08 3.2.2.11 Channel Type */
-enum gsm0808_chan_indicator {
- GSM0808_CHAN_SPEECH = 1,
- GSM0808_CHAN_DATA = 2,
- GSM0808_CHAN_SIGN = 3,
-};
-
-enum gsm0808_chan_rate_type_data {
- GSM0808_DATA_FULL_BM = 0x8,
- GSM0808_DATA_HALF_LM = 0x9,
- GSM0808_DATA_FULL_RPREF = 0xa,
- GSM0808_DATA_HALF_PREF = 0xb,
- GSM0808_DATA_FULL_PREF_NO_CHANGE = 0x1a,
- GSM0808_DATA_HALF_PREF_NO_CHANGE = 0x1b,
- GSM0808_DATA_MULTI_MASK = 0x20,
- GSM0808_DATA_MULTI_MASK_NO_CHANGE = 0x30,
-};
-
-enum gsm0808_chan_rate_type_speech {
- GSM0808_SPEECH_FULL_BM = 0x8,
- GSM0808_SPEECH_HALF_LM = 0x9,
- GSM0808_SPEECH_FULL_PREF= 0xa,
- GSM0808_SPEECH_HALF_PREF= 0xb,
- GSM0808_SPEECH_FULL_PREF_NO_CHANGE = 0x1a,
- GSM0808_SPEECH_HALF_PREF_NO_CHANGE = 0x1b,
- GSM0808_SPEECH_PERM = 0xf,
- GSM0808_SPEECH_PERM_NO_CHANGE = 0x1f,
-};
-
-enum gsm0808_permitted_speech {
- GSM0808_PERM_FR1 = 0x01,
- GSM0808_PERM_FR2 = 0x11,
- GSM0808_PERM_FR3 = 0x21,
- GSM0808_PERM_HR1 = GSM0808_PERM_FR1 | 0x4,
- GSM0808_PERM_HR2 = GSM0808_PERM_FR2 | 0x4,
- GSM0808_PERM_HR3 = GSM0808_PERM_FR3 | 0x4,
-};
-
-#endif
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/gsm_08_58.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/gsm_08_58.h
deleted file mode 100644
index 9b641b3..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/gsm_08_58.h
+++ /dev/null
@@ -1,546 +0,0 @@
-#ifndef PROTO_GSM_08_58_H
-#define PROTO_GSM_08_58_H
-
-/* GSM Radio Signalling Link messages on the A-bis interface
- * 3GPP TS 08.58 version 8.6.0 Release 1999 / ETSI TS 100 596 V8.6.0 */
-
-/* (C) 2008 by Harald Welte <laforge@gnumonks.org>
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-
-struct abis_rsl_common_hdr {
- uint8_t msg_discr;
- uint8_t msg_type;
- uint8_t data[0];
-} __attribute__ ((packed));
-
-/* Chapter 8.3 */
-struct abis_rsl_rll_hdr {
- struct abis_rsl_common_hdr c;
- uint8_t ie_chan;
- uint8_t chan_nr;
- uint8_t ie_link_id;
- uint8_t link_id;
- uint8_t data[0];
-} __attribute__ ((packed));
-
-/* Chapter 8.3 and 8.4 */
-struct abis_rsl_dchan_hdr {
- struct abis_rsl_common_hdr c;
- uint8_t ie_chan;
- uint8_t chan_nr;
- uint8_t data[0];
-} __attribute__ ((packed));
-
-/* Chapter 8.5 */
-struct abis_rsl_cchan_hdr {
- struct abis_rsl_common_hdr c;
- uint8_t ie_chan;
- uint8_t chan_nr;
- uint8_t data[0];
-} __attribute__ ((packed));
-
-
-/* Chapter 9.1 */
-#define ABIS_RSL_MDISC_RLL 0x02
-#define ABIS_RSL_MDISC_DED_CHAN 0x08
-#define ABIS_RSL_MDISC_COM_CHAN 0x0c
-#define ABIS_RSL_MDISC_TRX 0x10
-#define ABIS_RSL_MDISC_LOC 0x20
-#define ABIS_RSL_MDISC_IPACCESS 0x7e
-#define ABIS_RSL_MDISC_TRANSP 0x01
-
-#define ABIS_RSL_MDISC_IS_TRANSP(x) (x & 0x01)
-
-/* Chapter 9.1 */
-enum abis_rsl_msgtype {
- /* Radio Link Layer Management */
- RSL_MT_DATA_REQ = 0x01,
- RSL_MT_DATA_IND,
- RSL_MT_ERROR_IND,
- RSL_MT_EST_REQ,
- RSL_MT_EST_CONF,
- RSL_MT_EST_IND,
- RSL_MT_REL_REQ,
- RSL_MT_REL_CONF,
- RSL_MT_REL_IND,
- RSL_MT_UNIT_DATA_REQ,
- RSL_MT_UNIT_DATA_IND, /* 0x0b */
- RSL_MT_SUSP_REQ, /* non-standard elements */
- RSL_MT_SUSP_CONF,
- RSL_MT_RES_REQ,
- RSL_MT_RECON_REQ, /* 0x0f */
-
- /* Common Channel Management / TRX Management */
- RSL_MT_BCCH_INFO = 0x11,
- RSL_MT_CCCH_LOAD_IND,
- RSL_MT_CHAN_RQD,
- RSL_MT_DELETE_IND,
- RSL_MT_PAGING_CMD,
- RSL_MT_IMMEDIATE_ASSIGN_CMD,
- RSL_MT_SMS_BC_REQ,
- RSL_MT_CHAN_CONF, /* non-standard element */
- /* empty */
- RSL_MT_RF_RES_IND = 0x19,
- RSL_MT_SACCH_FILL,
- RSL_MT_OVERLOAD,
- RSL_MT_ERROR_REPORT,
- RSL_MT_SMS_BC_CMD,
- RSL_MT_CBCH_LOAD_IND,
- RSL_MT_NOT_CMD, /* 0x1f */
-
- /* Dedicate Channel Management */
- RSL_MT_CHAN_ACTIV = 0x21,
- RSL_MT_CHAN_ACTIV_ACK,
- RSL_MT_CHAN_ACTIV_NACK,
- RSL_MT_CONN_FAIL,
- RSL_MT_DEACTIVATE_SACCH,
- RSL_MT_ENCR_CMD,
- RSL_MT_HANDO_DET,
- RSL_MT_MEAS_RES,
- RSL_MT_MODE_MODIFY_REQ,
- RSL_MT_MODE_MODIFY_ACK,
- RSL_MT_MODE_MODIFY_NACK,
- RSL_MT_PHY_CONTEXT_REQ,
- RSL_MT_PHY_CONTEXT_CONF,
- RSL_MT_RF_CHAN_REL,
- RSL_MT_MS_POWER_CONTROL,
- RSL_MT_BS_POWER_CONTROL, /* 0x30 */
- RSL_MT_PREPROC_CONFIG,
- RSL_MT_PREPROC_MEAS_RES,
- RSL_MT_RF_CHAN_REL_ACK,
- RSL_MT_SACCH_INFO_MODIFY,
- RSL_MT_TALKER_DET,
- RSL_MT_LISTENER_DET,
- RSL_MT_REMOTE_CODEC_CONF_REP,
- RSL_MT_RTD_REP,
- RSL_MT_PRE_HANDO_NOTIF,
- RSL_MT_MR_CODEC_MOD_REQ,
- RSL_MT_MR_CODEC_MOD_ACK,
- RSL_MT_MR_CODEC_MOD_NACK,
- RSL_MT_MR_CODEC_MOD_PER,
- RSL_MT_TFO_REP,
- RSL_MT_TFO_MOD_REQ, /* 0x3f */
- RSL_MT_LOCATION_INFO = 0x41,
-
- /* ip.access specific RSL message types */
- RSL_MT_IPAC_DIR_RETR_ENQ = 0x40,
- RSL_MT_IPAC_PDCH_ACT = 0x48,
- RSL_MT_IPAC_PDCH_ACT_ACK,
- RSL_MT_IPAC_PDCH_ACT_NACK,
- RSL_MT_IPAC_PDCH_DEACT = 0x4b,
- RSL_MT_IPAC_PDCH_DEACT_ACK,
- RSL_MT_IPAC_PDCH_DEACT_NACK,
- RSL_MT_IPAC_CONNECT_MUX = 0x50,
- RSL_MT_IPAC_CONNECT_MUX_ACK,
- RSL_MT_IPAC_CONNECT_MUX_NACK,
- RSL_MT_IPAC_BIND_MUX = 0x53,
- RSL_MT_IPAC_BIND_MUX_ACK,
- RSL_MT_IPAC_BIND_MUX_NACK,
- RSL_MT_IPAC_DISC_MUX = 0x56,
- RSL_MT_IPAC_DISC_MUX_ACK,
- RSL_MT_IPAC_DISC_MUX_NACK,
- RSL_MT_IPAC_CRCX = 0x70, /* Bind to local BTS RTP port */
- RSL_MT_IPAC_CRCX_ACK,
- RSL_MT_IPAC_CRCX_NACK,
- RSL_MT_IPAC_MDCX = 0x73,
- RSL_MT_IPAC_MDCX_ACK,
- RSL_MT_IPAC_MDCX_NACK,
- RSL_MT_IPAC_DLCX_IND = 0x76,
- RSL_MT_IPAC_DLCX = 0x77,
- RSL_MT_IPAC_DLCX_ACK,
- RSL_MT_IPAC_DLCX_NACK,
-};
-
-/* Siemens vendor-specific */
-enum abis_rsl_msgtype_siemens {
- RSL_MT_SIEMENS_MRPCI = 0x41,
- RSL_MT_SIEMENS_INTRAC_HO_COND_IND = 0x42,
- RSL_MT_SIEMENS_INTERC_HO_COND_IND = 0x43,
- RSL_MT_SIEMENS_FORCED_HO_REQ = 0x44,
- RSL_MT_SIEMENS_PREF_AREA_REQ = 0x45,
- RSL_MT_SIEMENS_PREF_AREA = 0x46,
- RSL_MT_SIEMENS_START_TRACE = 0x47,
- RSL_MT_SIEMENS_START_TRACE_ACK = 0x48,
- RSL_MT_SIEMENS_STOP_TRACE = 0x49,
- RSL_MT_SIEMENS_TRMR = 0x4a,
- RSL_MT_SIEMENS_HO_FAIL_IND = 0x4b,
- RSL_MT_SIEMENS_STOP_TRACE_ACK = 0x4c,
- RSL_MT_SIEMENS_UPLF = 0x4d,
- RSL_MT_SIEMENS_UPLB = 0x4e,
- RSL_MT_SIEMENS_SET_SYS_INFO_10 = 0x4f,
- RSL_MT_SIEMENS_MODIF_COND_IND = 0x50,
-};
-
-/* Chapter 9.3 */
-enum abis_rsl_ie {
- RSL_IE_CHAN_NR = 0x01,
- RSL_IE_LINK_IDENT,
- RSL_IE_ACT_TYPE,
- RSL_IE_BS_POWER,
- RSL_IE_CHAN_IDENT,
- RSL_IE_CHAN_MODE,
- RSL_IE_ENCR_INFO,
- RSL_IE_FRAME_NUMBER,
- RSL_IE_HANDO_REF,
- RSL_IE_L1_INFO,
- RSL_IE_L3_INFO,
- RSL_IE_MS_IDENTITY,
- RSL_IE_MS_POWER,
- RSL_IE_PAGING_GROUP,
- RSL_IE_PAGING_LOAD,
- RSL_IE_PYHS_CONTEXT = 0x10,
- RSL_IE_ACCESS_DELAY,
- RSL_IE_RACH_LOAD,
- RSL_IE_REQ_REFERENCE,
- RSL_IE_RELEASE_MODE,
- RSL_IE_RESOURCE_INFO,
- RSL_IE_RLM_CAUSE,
- RSL_IE_STARTNG_TIME,
- RSL_IE_TIMING_ADVANCE,
- RSL_IE_UPLINK_MEAS,
- RSL_IE_CAUSE,
- RSL_IE_MEAS_RES_NR,
- RSL_IE_MSG_ID,
- /* reserved */
- RSL_IE_SYSINFO_TYPE = 0x1e,
- RSL_IE_MS_POWER_PARAM,
- RSL_IE_BS_POWER_PARAM,
- RSL_IE_PREPROC_PARAM,
- RSL_IE_PREPROC_MEAS,
- RSL_IE_IMM_ASS_INFO, /* Phase 1 (3.6.0), later Full below */
- RSL_IE_SMSCB_INFO = 0x24,
- RSL_IE_MS_TIMING_OFFSET,
- RSL_IE_ERR_MSG,
- RSL_IE_FULL_BCCH_INFO,
- RSL_IE_CHAN_NEEDED,
- RSL_IE_CB_CMD_TYPE,
- RSL_IE_SMSCB_MSG,
- RSL_IE_FULL_IMM_ASS_INFO,
- RSL_IE_SACCH_INFO,
- RSL_IE_CBCH_LOAD_INFO,
- RSL_IE_SMSCB_CHAN_INDICATOR,
- RSL_IE_GROUP_CALL_REF,
- RSL_IE_CHAN_DESC = 0x30,
- RSL_IE_NCH_DRX_INFO,
- RSL_IE_CMD_INDICATOR,
- RSL_IE_EMLPP_PRIO,
- RSL_IE_UIC,
- RSL_IE_MAIN_CHAN_REF,
- RSL_IE_MR_CONFIG,
- RSL_IE_MR_CONTROL,
- RSL_IE_SUP_CODEC_TYPES,
- RSL_IE_CODEC_CONFIG,
- RSL_IE_RTD,
- RSL_IE_TFO_STATUS,
- RSL_IE_LLP_APDU,
- /* Siemens vendor-specific */
- RSL_IE_SIEMENS_MRPCI = 0x40,
- RSL_IE_SIEMENS_PREF_AREA_TYPE = 0x43,
- RSL_IE_SIEMENS_ININ_CELL_HO_PAR = 0x45,
- RSL_IE_SIEMENS_TRACE_REF_NR = 0x46,
- RSL_IE_SIEMENS_INT_TRACE_IDX = 0x47,
- RSL_IE_SIEMENS_L2_HDR_INFO = 0x48,
- RSL_IE_SIEMENS_HIGHEST_RATE = 0x4e,
- RSL_IE_SIEMENS_SUGGESTED_RATE = 0x4f,
-
- /* ip.access */
- RSL_IE_IPAC_SRTP_CONFIG = 0xe0,
- RSL_IE_IPAC_PROXY_UDP = 0xe1,
- RSL_IE_IPAC_BSCMPL_TOUT = 0xe2,
- RSL_IE_IPAC_REMOTE_IP = 0xf0,
- RSL_IE_IPAC_REMOTE_PORT = 0xf1,
- RSL_IE_IPAC_RTP_PAYLOAD = 0xf2,
- RSL_IE_IPAC_LOCAL_PORT = 0xf3,
- RSL_IE_IPAC_SPEECH_MODE = 0xf4,
- RSL_IE_IPAC_LOCAL_IP = 0xf5,
- RSL_IE_IPAC_CONN_STAT = 0xf6,
- RSL_IE_IPAC_HO_C_PARMS = 0xf7,
- RSL_IE_IPAC_CONN_ID = 0xf8,
- RSL_IE_IPAC_RTP_CSD_FMT = 0xf9,
- RSL_IE_IPAC_RTP_JIT_BUF = 0xfa,
- RSL_IE_IPAC_RTP_COMPR = 0xfb,
- RSL_IE_IPAC_RTP_PAYLOAD2= 0xfc,
- RSL_IE_IPAC_RTP_MPLEX = 0xfd,
- RSL_IE_IPAC_RTP_MPLEX_ID= 0xfe,
-};
-
-/* Chapter 9.3.1 */
-#define RSL_CHAN_NR_MASK 0xf8
-#define RSL_CHAN_Bm_ACCHs 0x08
-#define RSL_CHAN_Lm_ACCHs 0x10 /* .. 0x18 */
-#define RSL_CHAN_SDCCH4_ACCH 0x20 /* .. 0x38 */
-#define RSL_CHAN_SDCCH8_ACCH 0x40 /* ...0x78 */
-#define RSL_CHAN_BCCH 0x80
-#define RSL_CHAN_RACH 0x88
-#define RSL_CHAN_PCH_AGCH 0x90
-
-/* Chapter 9.3.3 */
-#define RSL_ACT_TYPE_INITIAL 0x00
-#define RSL_ACT_TYPE_REACT 0x80
-#define RSL_ACT_INTRA_IMM_ASS 0x00
-#define RSL_ACT_INTRA_NORM_ASS 0x01
-#define RSL_ACT_INTER_ASYNC 0x02
-#define RSL_ACT_INTER_SYNC 0x03
-#define RSL_ACT_SECOND_ADD 0x04
-#define RSL_ACT_SECOND_MULTI 0x05
-
-/* Chapter 9.3.6 */
-struct rsl_ie_chan_mode {
- uint8_t dtx_dtu;
- uint8_t spd_ind;
- uint8_t chan_rt;
- uint8_t chan_rate;
-} __attribute__ ((packed));
-#define RSL_CMOD_DTXu 0x01 /* uplink */
-#define RSL_CMOD_DTXd 0x02 /* downlink */
-enum rsl_cmod_spd {
- RSL_CMOD_SPD_SPEECH = 0x01,
- RSL_CMOD_SPD_DATA = 0x02,
- RSL_CMOD_SPD_SIGN = 0x03,
-};
-#define RSL_CMOD_CRT_SDCCH 0x01
-#define RSL_CMOD_CRT_TCH_Bm 0x08 /* full-rate */
-#define RSL_CMOD_CRT_TCH_Lm 0x09 /* half-rate */
-/* FIXME: More CRT types */
-/* Speech */
-#define RSL_CMOD_SP_GSM1 0x01
-#define RSL_CMOD_SP_GSM2 0x11
-#define RSL_CMOD_SP_GSM3 0x21
-/* Data */
-#define RSL_CMOD_SP_NT_14k5 0x58
-#define RSL_CMOD_SP_NT_12k0 0x50
-#define RSL_CMOD_SP_NT_6k0 0x51
-
-/* Chapter 9.3.5 */
-struct rsl_ie_chan_ident {
- /* GSM 04.08 10.5.2.5 */
- struct {
- uint8_t iei;
- uint8_t chan_nr; /* enc_chan_nr */
- uint8_t oct3;
- uint8_t oct4;
- } chan_desc;
-#if 0 /* spec says we need this but Abissim doesn't use it */
- struct {
- uint8_t tag;
- uint8_t len;
- } mobile_alloc;
-#endif
-} __attribute__ ((packed));
-
-/* Chapter 9.3.22 */
-#define RLL_CAUSE_T200_EXPIRED 0x01
-#define RLL_CAUSE_REEST_REQ 0x02
-#define RLL_CAUSE_UNSOL_UA_RESP 0x03
-#define RLL_CAUSE_UNSOL_DM_RESP 0x04
-#define RLL_CAUSE_UNSOL_DM_RESP_MF 0x05
-#define RLL_CAUSE_UNSOL_SPRV_RESP 0x06
-#define RLL_CAUSE_SEQ_ERR 0x07
-#define RLL_CAUSE_UFRM_INC_PARAM 0x08
-#define RLL_CAUSE_SFRM_INC_PARAM 0x09
-#define RLL_CAUSE_IFRM_INC_MBITS 0x0a
-#define RLL_CAUSE_IFRM_INC_LEN 0x0b
-#define RLL_CAUSE_FRM_UNIMPL 0x0c
-#define RLL_CAUSE_SABM_MF 0x0d
-#define RLL_CAUSE_SABM_INFO_NOTALL 0x0e
-
-/* Chapter 9.3.26 */
-#define RSL_ERRCLS_NORMAL 0x00
-#define RSL_ERRCLS_RESOURCE_UNAVAIL 0x20
-#define RSL_ERRCLS_SERVICE_UNAVAIL 0x30
-#define RSL_ERRCLS_SERVICE_UNIMPL 0x40
-#define RSL_ERRCLS_INVAL_MSG 0x50
-#define RSL_ERRCLS_PROTO_ERROR 0x60
-#define RSL_ERRCLS_INTERWORKING 0x70
-
-/* normal event */
-#define RSL_ERR_RADIO_IF_FAIL 0x00
-#define RSL_ERR_RADIO_LINK_FAIL 0x01
-#define RSL_ERR_HANDOVER_ACC_FAIL 0x02
-#define RSL_ERR_TALKER_ACC_FAIL 0x03
-#define RSL_ERR_OM_INTERVENTION 0x07
-#define RSL_ERR_NORMAL_UNSPEC 0x0f
-#define RSL_ERR_T_MSRFPCI_EXP 0x18
-/* resource unavailable */
-#define RSL_ERR_EQUIPMENT_FAIL 0x20
-#define RSL_ERR_RR_UNAVAIL 0x21
-#define RSL_ERR_TERR_CH_FAIL 0x22
-#define RSL_ERR_CCCH_OVERLOAD 0x23
-#define RSL_ERR_ACCH_OVERLOAD 0x24
-#define RSL_ERR_PROCESSOR_OVERLOAD 0x25
-#define RSL_ERR_RES_UNAVAIL 0x2f
-/* service or option not available */
-#define RSL_ERR_TRANSC_UNAVAIL 0x30
-#define RSL_ERR_SERV_OPT_UNAVAIL 0x3f
-/* service or option not implemented */
-#define RSL_ERR_ENCR_UNIMPL 0x40
-#define RSL_ERR_SERV_OPT_UNIMPL 0x4f
-/* invalid message */
-#define RSL_ERR_RCH_ALR_ACTV_ALLOC 0x50
-#define RSL_ERR_INVALID_MESSAGE 0x5f
-/* protocol error */
-#define RSL_ERR_MSG_DISCR 0x60
-#define RSL_ERR_MSG_TYPE 0x61
-#define RSL_ERR_MSG_SEQ 0x62
-#define RSL_ERR_IE_ERROR 0x63
-#define RSL_ERR_MAND_IE_ERROR 0x64
-#define RSL_ERR_OPT_IE_ERROR 0x65
-#define RSL_ERR_IE_NONEXIST 0x66
-#define RSL_ERR_IE_LENGTH 0x67
-#define RSL_ERR_IE_CONTENT 0x68
-#define RSL_ERR_PROTO 0x6f
-/* interworking */
-#define RSL_ERR_INTERWORKING 0x7f
-
-/* Chapter 9.3.30 */
-#define RSL_SYSTEM_INFO_8 0x00
-#define RSL_SYSTEM_INFO_1 0x01
-#define RSL_SYSTEM_INFO_2 0x02
-#define RSL_SYSTEM_INFO_3 0x03
-#define RSL_SYSTEM_INFO_4 0x04
-#define RSL_SYSTEM_INFO_5 0x05
-#define RSL_SYSTEM_INFO_6 0x06
-#define RSL_SYSTEM_INFO_7 0x07
-#define RSL_SYSTEM_INFO_16 0x08
-#define RSL_SYSTEM_INFO_17 0x09
-#define RSL_SYSTEM_INFO_2bis 0x0a
-#define RSL_SYSTEM_INFO_2ter 0x0b
-#define RSL_SYSTEM_INFO_5bis 0x0d
-#define RSL_SYSTEM_INFO_5ter 0x0e
-#define RSL_SYSTEM_INFO_10 0x0f
-#define RSL_EXT_MEAS_ORDER 0x47
-#define RSL_MEAS_INFO 0x48
-#define RSL_SYSTEM_INFO_13 0x28
-#define RSL_SYSTEM_INFO_2quater 0x29
-#define RSL_SYSTEM_INFO_9 0x2a
-#define RSL_SYSTEM_INFO_18 0x2b
-#define RSL_SYSTEM_INFO_19 0x2c
-#define RSL_SYSTEM_INFO_20 0x2d
-
-/* Chapter 9.3.40 */
-#define RSL_CHANNEED_ANY 0x00
-#define RSL_CHANNEED_SDCCH 0x01
-#define RSL_CHANNEED_TCH_F 0x02
-#define RSL_CHANNEED_TCH_ForH 0x03
-
-/* Chapter 9.3.45 */
-struct rsl_ie_cb_cmd_type {
- uint8_t last_block:2;
- uint8_t spare:1;
- uint8_t def_bcast:1;
- uint8_t command:4;
-} __attribute__ ((packed));
-/* ->command */
-#define RSL_CB_CMD_TYPE_NORMAL 0x00
-#define RSL_CB_CMD_TYPE_SCHEDULE 0x08
-#define RSL_CB_CMD_TYPE_DEFAULT 0x0e
-#define RSL_CB_CMD_TYPE_NULL 0x0f
-/* ->def_bcast */
-#define RSL_CB_CMD_DEFBCAST_NORMAL 0
-#define RSL_CB_CMD_DEFBCAST_NULL 1
-/* ->last_block */
-#define RSL_CB_CMD_LASTBLOCK_4 0
-#define RSL_CB_CMD_LASTBLOCK_1 1
-#define RSL_CB_CMD_LASTBLOCK_2 2
-#define RSL_CB_CMD_LASTBLOCK_3 3
-
-/* Chapter 3.3.2.3 Brocast control channel */
-/* CCCH-CONF, NC is not combined */
-#define RSL_BCCH_CCCH_CONF_1_NC 0x00
-#define RSL_BCCH_CCCH_CONF_1_C 0x01
-#define RSL_BCCH_CCCH_CONF_2_NC 0x02
-#define RSL_BCCH_CCCH_CONF_3_NC 0x04
-#define RSL_BCCH_CCCH_CONF_4_NC 0x06
-
-/* BS-PA-MFRMS */
-#define RSL_BS_PA_MFRMS_2 0x00
-#define RSL_BS_PA_MFRMS_3 0x01
-#define RSL_BS_PA_MFRMS_4 0x02
-#define RSL_BS_PA_MFRMS_5 0x03
-#define RSL_BS_PA_MFRMS_6 0x04
-#define RSL_BS_PA_MFRMS_7 0x05
-#define RSL_BS_PA_MFRMS_8 0x06
-#define RSL_BS_PA_MFRMS_9 0x07
-
-/* RSL_IE_IPAC_RTP_PAYLOAD[2] */
-enum rsl_ipac_rtp_payload {
- RSL_IPAC_RTP_GSM = 1,
- RSL_IPAC_RTP_EFR,
- RSL_IPAC_RTP_AMR,
- RSL_IPAC_RTP_CSD,
- RSL_IPAC_RTP_MUX,
-};
-
-/* RSL_IE_IPAC_SPEECH_MODE, lower four bits */
-enum rsl_ipac_speech_mode_s {
- RSL_IPAC_SPEECH_GSM_FR = 0, /* GSM FR (Type 1, FS) */
- RSL_IPAC_SPEECH_GSM_EFR = 1, /* GSM EFR (Type 2, FS) */
- RSL_IPAC_SPEECH_GSM_AMR_FR = 2, /* GSM AMR/FR (Type 3, FS) */
- RSL_IPAC_SPEECH_GSM_HR = 3, /* GSM HR (Type 1, HS) */
- RSL_IPAC_SPEECH_GSM_AMR_HR = 5, /* GSM AMR/hr (Type 3, HS) */
- RSL_IPAC_SPEECH_AS_RTP = 0xf, /* As specified by RTP Payload IE */
-};
-/* RSL_IE_IPAC_SPEECH_MODE, upper four bits */
-enum rsl_ipac_speech_mode_m {
- RSL_IPAC_SPEECH_M_RXTX = 0, /* Send and Receive */
- RSL_IPAC_SPEECH_M_RX = 1, /* Receive only */
- RSL_IPAC_SPEECH_M_TX = 2, /* Send only */
-};
-
-/* RSL_IE_IPAC_RTP_CSD_FMT, lower four bits */
-enum rsl_ipac_rtp_csd_format_d {
- RSL_IPAC_RTP_CSD_EXT_TRAU = 0,
- RSL_IPAC_RTP_CSD_NON_TRAU = 1,
- RSL_IPAC_RTP_CSD_TRAU_BTS = 2,
- RSL_IPAC_RTP_CSD_IWF_FREE = 3,
-};
-/* RSL_IE_IPAC_RTP_CSD_FMT, upper four bits */
-enum rsl_ipac_rtp_csd_format_ir {
- RSL_IPAC_RTP_CSD_IR_8k = 0,
- RSL_IPAC_RTP_CSD_IR_16k = 1,
- RSL_IPAC_RTP_CSD_IR_32k = 2,
- RSL_IPAC_RTP_CSD_IR_64k = 3,
-};
-
-/* Siemens vendor-specific RSL extensions */
-struct rsl_mrpci {
- uint8_t power_class:3,
- vgcs_capable:1,
- vbs_capable:1,
- gsm_phase:2;
-} __attribute__ ((packed));
-
-enum rsl_mrpci_pwrclass {
- RSL_MRPCI_PWRC_1 = 0,
- RSL_MRPCI_PWRC_2 = 1,
- RSL_MRPCI_PWRC_3 = 2,
- RSL_MRPCI_PWRC_4 = 3,
- RSL_MRPCI_PWRC_5 = 4,
-};
-enum rsl_mrpci_phase {
- RSL_MRPCI_PHASE_1 = 0,
- /* reserved */
- RSL_MRPCI_PHASE_2 = 2,
- RSL_MRPCI_PHASE_2PLUS = 3,
-};
-
-
-#endif /* PROTO_GSM_08_58_H */
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/gsm_12_21.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/gsm_12_21.h
deleted file mode 100644
index b8b00f3..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/gsm_12_21.h
+++ /dev/null
@@ -1,713 +0,0 @@
-#ifndef PROTO_GSM_12_21_H
-#define PROTO_GSM_12_21_H
-
-/* GSM Network Management messages on the A-bis interface
- * 3GPP TS 12.21 version 8.0.0 Release 1999 / ETSI TS 100 623 V8.0.0 */
-
-/* (C) 2008-2009 by Harald Welte <laforge@gnumonks.org>
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <osmocom/gsm/tlv.h>
-
-/* generic header in front of every OML message according to TS 08.59 */
-struct abis_om_hdr {
- uint8_t mdisc;
- uint8_t placement;
- uint8_t sequence;
- uint8_t length;
- uint8_t data[0];
-} __attribute__ ((packed));
-
-#define ABIS_OM_MDISC_FOM 0x80
-#define ABIS_OM_MDISC_MMI 0x40
-#define ABIS_OM_MDISC_TRAU 0x20
-#define ABIS_OM_MDISC_MANUF 0x10
-#define ABIS_OM_PLACEMENT_ONLY 0x80
-#define ABIS_OM_PLACEMENT_FIRST 0x40
-#define ABIS_OM_PLACEMENT_MIDDLE 0x20
-#define ABIS_OM_PLACEMENT_LAST 0x10
-
-struct abis_om_obj_inst {
- uint8_t bts_nr;
- uint8_t trx_nr;
- uint8_t ts_nr;
-} __attribute__ ((packed));
-
-struct abis_om_fom_hdr {
- uint8_t msg_type;
- uint8_t obj_class;
- struct abis_om_obj_inst obj_inst;
- uint8_t data[0];
-} __attribute__ ((packed));
-
-#define ABIS_OM_FOM_HDR_SIZE (sizeof(struct abis_om_hdr) + sizeof(struct abis_om_fom_hdr))
-
-/* Section 9.1: Message Types */
-enum abis_nm_msgtype {
- /* SW Download Management Messages */
- NM_MT_LOAD_INIT = 0x01,
- NM_MT_LOAD_INIT_ACK,
- NM_MT_LOAD_INIT_NACK,
- NM_MT_LOAD_SEG,
- NM_MT_LOAD_SEG_ACK,
- NM_MT_LOAD_ABORT,
- NM_MT_LOAD_END,
- NM_MT_LOAD_END_ACK,
- NM_MT_LOAD_END_NACK,
- NM_MT_SW_ACT_REQ, /* BTS->BSC */
- NM_MT_SW_ACT_REQ_ACK,
- NM_MT_SW_ACT_REQ_NACK,
- NM_MT_ACTIVATE_SW, /* BSC->BTS */
- NM_MT_ACTIVATE_SW_ACK,
- NM_MT_ACTIVATE_SW_NACK,
- NM_MT_SW_ACTIVATED_REP, /* 0x10 */
- /* A-bis Interface Management Messages */
- NM_MT_ESTABLISH_TEI = 0x21,
- NM_MT_ESTABLISH_TEI_ACK,
- NM_MT_ESTABLISH_TEI_NACK,
- NM_MT_CONN_TERR_SIGN,
- NM_MT_CONN_TERR_SIGN_ACK,
- NM_MT_CONN_TERR_SIGN_NACK,
- NM_MT_DISC_TERR_SIGN,
- NM_MT_DISC_TERR_SIGN_ACK,
- NM_MT_DISC_TERR_SIGN_NACK,
- NM_MT_CONN_TERR_TRAF,
- NM_MT_CONN_TERR_TRAF_ACK,
- NM_MT_CONN_TERR_TRAF_NACK,
- NM_MT_DISC_TERR_TRAF,
- NM_MT_DISC_TERR_TRAF_ACK,
- NM_MT_DISC_TERR_TRAF_NACK,
- /* Transmission Management Messages */
- NM_MT_CONN_MDROP_LINK = 0x31,
- NM_MT_CONN_MDROP_LINK_ACK,
- NM_MT_CONN_MDROP_LINK_NACK,
- NM_MT_DISC_MDROP_LINK,
- NM_MT_DISC_MDROP_LINK_ACK,
- NM_MT_DISC_MDROP_LINK_NACK,
- /* Air Interface Management Messages */
- NM_MT_SET_BTS_ATTR = 0x41,
- NM_MT_SET_BTS_ATTR_ACK,
- NM_MT_SET_BTS_ATTR_NACK,
- NM_MT_SET_RADIO_ATTR,
- NM_MT_SET_RADIO_ATTR_ACK,
- NM_MT_SET_RADIO_ATTR_NACK,
- NM_MT_SET_CHAN_ATTR,
- NM_MT_SET_CHAN_ATTR_ACK,
- NM_MT_SET_CHAN_ATTR_NACK,
- /* Test Management Messages */
- NM_MT_PERF_TEST = 0x51,
- NM_MT_PERF_TEST_ACK,
- NM_MT_PERF_TEST_NACK,
- NM_MT_TEST_REP,
- NM_MT_SEND_TEST_REP,
- NM_MT_SEND_TEST_REP_ACK,
- NM_MT_SEND_TEST_REP_NACK,
- NM_MT_STOP_TEST,
- NM_MT_STOP_TEST_ACK,
- NM_MT_STOP_TEST_NACK,
- /* State Management and Event Report Messages */
- NM_MT_STATECHG_EVENT_REP = 0x61,
- NM_MT_FAILURE_EVENT_REP,
- NM_MT_STOP_EVENT_REP,
- NM_MT_STOP_EVENT_REP_ACK,
- NM_MT_STOP_EVENT_REP_NACK,
- NM_MT_REST_EVENT_REP,
- NM_MT_REST_EVENT_REP_ACK,
- NM_MT_REST_EVENT_REP_NACK,
- NM_MT_CHG_ADM_STATE,
- NM_MT_CHG_ADM_STATE_ACK,
- NM_MT_CHG_ADM_STATE_NACK,
- NM_MT_CHG_ADM_STATE_REQ,
- NM_MT_CHG_ADM_STATE_REQ_ACK,
- NM_MT_CHG_ADM_STATE_REQ_NACK,
- NM_MT_REP_OUTST_ALARMS = 0x93,
- NM_MT_REP_OUTST_ALARMS_ACK,
- NM_MT_REP_OUTST_ALARMS_NACK,
- /* Equipment Management Messages */
- NM_MT_CHANGEOVER = 0x71,
- NM_MT_CHANGEOVER_ACK,
- NM_MT_CHANGEOVER_NACK,
- NM_MT_OPSTART,
- NM_MT_OPSTART_ACK,
- NM_MT_OPSTART_NACK,
- NM_MT_REINIT,
- NM_MT_REINIT_ACK,
- NM_MT_REINIT_NACK,
- NM_MT_SET_SITE_OUT, /* BS11: get alarm ?!? */
- NM_MT_SET_SITE_OUT_ACK,
- NM_MT_SET_SITE_OUT_NACK,
- NM_MT_CHG_HW_CONF = 0x90,
- NM_MT_CHG_HW_CONF_ACK,
- NM_MT_CHG_HW_CONF_NACK,
- /* Measurement Management Messages */
- NM_MT_MEAS_RES_REQ = 0x8a,
- NM_MT_MEAS_RES_RESP,
- NM_MT_STOP_MEAS,
- NM_MT_START_MEAS,
- /* Other Messages */
- NM_MT_GET_ATTR = 0x81,
- NM_MT_GET_ATTR_RESP,
- NM_MT_GET_ATTR_NACK,
- NM_MT_SET_ALARM_THRES,
- NM_MT_SET_ALARM_THRES_ACK,
- NM_MT_SET_ALARM_THRES_NACK,
-};
-
-enum abis_nm_msgtype_bs11 {
- NM_MT_BS11_RESET_RESOURCE = 0x74,
-
- NM_MT_BS11_BEGIN_DB_TX = 0xa3,
- NM_MT_BS11_BEGIN_DB_TX_ACK,
- NM_MT_BS11_BEGIN_DB_TX_NACK,
- NM_MT_BS11_END_DB_TX = 0xa6,
- NM_MT_BS11_END_DB_TX_ACK,
- NM_MT_BS11_END_DB_TX_NACK,
- NM_MT_BS11_CREATE_OBJ = 0xa9,
- NM_MT_BS11_CREATE_OBJ_ACK,
- NM_MT_BS11_CREATE_OBJ_NACK,
- NM_MT_BS11_DELETE_OBJ = 0xac,
- NM_MT_BS11_DELETE_OBJ_ACK,
- NM_MT_BS11_DELETE_OBJ_NACK,
-
- NM_MT_BS11_SET_ATTR = 0xd0,
- NM_MT_BS11_SET_ATTR_ACK,
- NM_MT_BS11_SET_ATTR_NACK,
- NM_MT_BS11_LMT_SESSION = 0xdc,
-
- NM_MT_BS11_GET_STATE = 0xe3,
- NM_MT_BS11_GET_STATE_ACK,
- NM_MT_BS11_LMT_LOGON = 0xe5,
- NM_MT_BS11_LMT_LOGON_ACK,
- NM_MT_BS11_RESTART = 0xe7,
- NM_MT_BS11_RESTART_ACK,
- NM_MT_BS11_DISCONNECT = 0xe9,
- NM_MT_BS11_DISCONNECT_ACK,
- NM_MT_BS11_LMT_LOGOFF = 0xec,
- NM_MT_BS11_LMT_LOGOFF_ACK,
- NM_MT_BS11_RECONNECT = 0xf1,
- NM_MT_BS11_RECONNECT_ACK,
-};
-
-enum abis_nm_msgtype_ipacc {
- NM_MT_IPACC_RESTART = 0x87,
- NM_MT_IPACC_RESTART_ACK,
- NM_MT_IPACC_RESTART_NACK,
- NM_MT_IPACC_RSL_CONNECT = 0xe0,
- NM_MT_IPACC_RSL_CONNECT_ACK,
- NM_MT_IPACC_RSL_CONNECT_NACK,
- NM_MT_IPACC_RSL_DISCONNECT = 0xe3,
- NM_MT_IPACC_RSL_DISCONNECT_ACK,
- NM_MT_IPACC_RSL_DISCONNECT_NACK,
- NM_MT_IPACC_CONN_TRAF = 0xe6,
- NM_MT_IPACC_CONN_TRAF_ACK,
- NM_MT_IPACC_CONN_TRAF_NACK,
- NM_MT_IPACC_DEF_BOOT_SW = 0xec,
- NM_MT_IPACC_DEF_BOOT_SW_ACK,
- MN_MT_IPACC_DEF_BOOT_SW_NACK,
- NM_MT_IPACC_SET_NVATTR = 0xef,
- NM_MT_IPACC_SET_NVATTR_ACK,
- NM_MT_IPACC_SET_NVATTR_NACK,
- NM_MT_IPACC_GET_NVATTR = 0xf2,
- NM_MT_IPACC_GET_NVATTR_ACK,
- NM_MT_IPACC_GET_NVATTR_NACK,
- NM_MT_IPACC_SET_ATTR = 0xf5,
- NM_MT_IPACC_SET_ATTR_ACK,
- NM_MT_IPACC_SET_ATTR_NACK,
-};
-
-enum abis_nm_bs11_cell_alloc {
- NM_BS11_CANR_GSM = 0x00,
- NM_BS11_CANR_DCS1800 = 0x01,
-};
-
-/* Section 9.2: Object Class */
-enum abis_nm_obj_class {
- NM_OC_SITE_MANAGER = 0x00,
- NM_OC_BTS,
- NM_OC_RADIO_CARRIER,
- NM_OC_CHANNEL,
- NM_OC_BASEB_TRANSC,
- /* RFU: 05-FE */
-
- NM_OC_IPAC_E1_TRUNK = 0x0e,
- NM_OC_IPAC_E1_PORT = 0x0f,
- NM_OC_IPAC_E1_CHAN = 0x10,
- NM_OC_IPAC_CLK_MODULE = 0x22,
-
- NM_OC_BS11_ADJC = 0xa0,
- NM_OC_BS11_HANDOVER = 0xa1,
- NM_OC_BS11_PWR_CTRL = 0xa2,
- NM_OC_BS11_BTSE = 0xa3, /* LMT? */
- NM_OC_BS11_RACK = 0xa4,
- NM_OC_BS11 = 0xa5, /* 01: ALCO */
- NM_OC_BS11_TEST = 0xa6,
- NM_OC_BS11_ENVABTSE = 0xa8,
- NM_OC_BS11_BPORT = 0xa9,
-
- NM_OC_GPRS_NSE = 0xf0,
- NM_OC_GPRS_CELL = 0xf1,
- NM_OC_GPRS_NSVC = 0xf2,
-
- NM_OC_NULL = 0xff,
-};
-
-/* Section 9.4: Attributes */
-enum abis_nm_attr {
- NM_ATT_ABIS_CHANNEL = 0x01,
- NM_ATT_ADD_INFO,
- NM_ATT_ADD_TEXT,
- NM_ATT_ADM_STATE,
- NM_ATT_ARFCN_LIST,
- NM_ATT_AUTON_REPORT,
- NM_ATT_AVAIL_STATUS,
- NM_ATT_BCCH_ARFCN,
- NM_ATT_BSIC,
- NM_ATT_BTS_AIR_TIMER,
- NM_ATT_CCCH_L_I_P,
- NM_ATT_CCCH_L_T,
- NM_ATT_CHAN_COMB,
- NM_ATT_CONN_FAIL_CRIT,
- NM_ATT_DEST,
- /* res */
- NM_ATT_EVENT_TYPE = 0x11, /* BS11: file data ?!? */
- NM_ATT_FILE_ID,
- NM_ATT_FILE_VERSION,
- NM_ATT_GSM_TIME,
- NM_ATT_HSN,
- NM_ATT_HW_CONFIG,
- NM_ATT_HW_DESC,
- NM_ATT_INTAVE_PARAM,
- NM_ATT_INTERF_BOUND,
- NM_ATT_LIST_REQ_ATTR,
- NM_ATT_MAIO,
- NM_ATT_MANUF_STATE,
- NM_ATT_MANUF_THRESH,
- NM_ATT_MANUF_ID,
- NM_ATT_MAX_TA,
- NM_ATT_MDROP_LINK, /* 0x20 */
- NM_ATT_MDROP_NEXT,
- NM_ATT_NACK_CAUSES,
- NM_ATT_NY1,
- NM_ATT_OPER_STATE,
- NM_ATT_OVERL_PERIOD,
- NM_ATT_PHYS_CONF,
- NM_ATT_POWER_CLASS,
- NM_ATT_POWER_THRESH,
- NM_ATT_PROB_CAUSE,
- NM_ATT_RACH_B_THRESH,
- NM_ATT_LDAVG_SLOTS,
- NM_ATT_RAD_SUBC,
- NM_ATT_RF_MAXPOWR_R,
- NM_ATT_SITE_INPUTS,
- NM_ATT_SITE_OUTPUTS,
- NM_ATT_SOURCE, /* 0x30 */
- NM_ATT_SPEC_PROB,
- NM_ATT_START_TIME,
- NM_ATT_T200,
- NM_ATT_TEI,
- NM_ATT_TEST_DUR,
- NM_ATT_TEST_NO,
- NM_ATT_TEST_REPORT,
- NM_ATT_VSWR_THRESH,
- NM_ATT_WINDOW_SIZE,
- /* Res */
- NM_ATT_BS11_RSSI_OFFS = 0x3d,
- NM_ATT_BS11_TXPWR = 0x3e,
- NM_ATT_BS11_DIVERSITY = 0x3f,
- /* Res */
- NM_ATT_TSC = 0x40,
- NM_ATT_SW_CONFIG,
- NM_ATT_SW_DESCR,
- NM_ATT_SEVERITY,
- NM_ATT_GET_ARI,
- NM_ATT_HW_CONF_CHG,
- NM_ATT_OUTST_ALARM,
- NM_ATT_FILE_DATA,
- NM_ATT_MEAS_RES,
- NM_ATT_MEAS_TYPE,
-
- NM_ATT_BS11_ESN_FW_CODE_NO = 0x4c,
- NM_ATT_BS11_ESN_HW_CODE_NO = 0x4f,
-
- NM_ATT_BS11_ESN_PCB_SERIAL = 0x55,
- NM_ATT_BS11_EXCESSIVE_DISTANCE = 0x58,
-
- NM_ATT_BS11_ALL_TEST_CATG = 0x60,
- NM_ATT_BS11_BTSLS_HOPPING,
- NM_ATT_BS11_CELL_ALLOC_NR,
- NM_ATT_BS11_CELL_GLOBAL_ID,
- NM_ATT_BS11_ENA_INTERF_CLASS = 0x66,
- NM_ATT_BS11_ENA_INT_INTEC_HANDO = 0x67,
- NM_ATT_BS11_ENA_INT_INTRC_HANDO = 0x68,
- NM_ATT_BS11_ENA_MS_PWR_CTRL = 0x69,
- NM_ATT_BS11_ENA_PWR_BDGT_HO = 0x6a,
- NM_ATT_BS11_ENA_PWR_CTRL_RLFW = 0x6b,
- NM_ATT_BS11_ENA_RXLEV_HO = 0x6c,
- NM_ATT_BS11_ENA_RXQUAL_HO = 0x6d,
- NM_ATT_BS11_FACCH_QUAL = 0x6e,
-
- NM_ATT_IPACC_DST_IP = 0x80,
- NM_ATT_IPACC_DST_IP_PORT = 0x81,
- NM_ATT_IPACC_SSRC = 0x82,
- NM_ATT_IPACC_RTP_PAYLD_TYPE = 0x83,
- NM_ATT_IPACC_BASEB_ID = 0x84,
- NM_ATT_IPACC_STREAM_ID = 0x85,
- NM_ATT_IPACC_NV_FLAGS = 0x86,
- NM_ATT_IPACC_FREQ_CTRL = 0x87,
- NM_ATT_IPACC_PRIM_OML_CFG = 0x88,
- NM_ATT_IPACC_SEC_OML_CFG = 0x89,
- NM_ATT_IPACC_IP_IF_CFG = 0x8a, /* IP interface */
- NM_ATT_IPACC_IP_GW_CFG = 0x8b, /* IP gateway */
- NM_ATT_IPACC_IN_SERV_TIME = 0x8c,
- NM_ATT_IPACC_TRX_BTS_ASS = 0x8d,
- NM_ATT_IPACC_LOCATION = 0x8e, /* string describing location */
- NM_ATT_IPACC_PAGING_CFG = 0x8f,
- NM_ATT_IPACC_FILE_DATA = 0x90,
- NM_ATT_IPACC_UNIT_ID = 0x91, /* Site/BTS/TRX */
- NM_ATT_IPACC_PARENT_UNIT_ID = 0x92,
- NM_ATT_IPACC_UNIT_NAME = 0x93, /* default: nbts-<mac-as-string> */
- NM_ATT_IPACC_SNMP_CFG = 0x94,
- NM_ATT_IPACC_PRIM_OML_CFG_LIST = 0x95,
- NM_ATT_IPACC_PRIM_OML_FB_TOUT = 0x96,
- NM_ATT_IPACC_CUR_SW_CFG = 0x97,
- NM_ATT_IPACC_TIMING_BUS = 0x98,
- NM_ATT_IPACC_CGI = 0x99,
- NM_ATT_IPACC_RAC = 0x9a,
- NM_ATT_IPACC_OBJ_VERSION = 0x9b,
- NM_ATT_IPACC_GPRS_PAGING_CFG = 0x9c,
- NM_ATT_IPACC_NSEI = 0x9d,
- NM_ATT_IPACC_BVCI = 0x9e,
- NM_ATT_IPACC_NSVCI = 0x9f,
- NM_ATT_IPACC_NS_CFG = 0xa0,
- NM_ATT_IPACC_BSSGP_CFG = 0xa1,
- NM_ATT_IPACC_NS_LINK_CFG = 0xa2,
- NM_ATT_IPACC_RLC_CFG = 0xa3,
- NM_ATT_IPACC_ALM_THRESH_LIST = 0xa4,
- NM_ATT_IPACC_MONIT_VAL_LIST = 0xa5,
- NM_ATT_IPACC_TIB_CONTROL = 0xa6,
- NM_ATT_IPACC_SUPP_FEATURES = 0xa7,
- NM_ATT_IPACC_CODING_SCHEMES = 0xa8,
- NM_ATT_IPACC_RLC_CFG_2 = 0xa9,
- NM_ATT_IPACC_HEARTB_TOUT = 0xaa,
- NM_ATT_IPACC_UPTIME = 0xab,
- NM_ATT_IPACC_RLC_CFG_3 = 0xac,
- NM_ATT_IPACC_SSL_CFG = 0xad,
- NM_ATT_IPACC_SEC_POSSIBLE = 0xae,
- NM_ATT_IPACC_IML_SSL_STATE = 0xaf,
- NM_ATT_IPACC_REVOC_DATE = 0xb0,
-
-
- NM_ATT_BS11_RF_RES_IND_PER = 0x8f,
-
- NM_ATT_BS11_RX_LEV_MIN_CELL = 0x90,
- NM_ATT_BS11_ABIS_EXT_TIME = 0x91,
- NM_ATT_BS11_TIMER_HO_REQUEST = 0x92,
- NM_ATT_BS11_TIMER_NCELL = 0x93,
- NM_ATT_BS11_TSYNC = 0x94,
- NM_ATT_BS11_TTRAU = 0x95,
- NM_ATT_BS11_EMRG_CFG_MEMBER = 0x9b,
- NM_ATT_BS11_TRX_AREA = 0x9f,
-
- NM_ATT_BS11_BCCH_RECONF = 0xd7,
- NM_ATT_BS11_BIT_ERR_THESH = 0xa0,
- NM_ATT_BS11_BOOT_SW_VERS = 0xa1,
- NM_ATT_BS11_CCLK_ACCURACY = 0xa3,
- NM_ATT_BS11_CCLK_TYPE = 0xa4,
- NM_ATT_BS11_INP_IMPEDANCE = 0xaa,
- NM_ATT_BS11_L1_PROT_TYPE = 0xab,
- NM_ATT_BS11_LINE_CFG = 0xac,
- NM_ATT_BS11_LI_PORT_1 = 0xad,
- NM_ATT_BS11_LI_PORT_2 = 0xae,
-
- NM_ATT_BS11_L1_REM_ALM_TYPE = 0xb0,
- NM_ATT_BS11_SW_LOAD_INTENDED = 0xbb,
- NM_ATT_BS11_SW_LOAD_SAFETY = 0xbc,
- NM_ATT_BS11_SW_LOAD_STORED = 0xbd,
-
- NM_ATT_BS11_VENDOR_NAME = 0xc1,
- NM_ATT_BS11_HOPPING_MODE = 0xc5,
- NM_ATT_BS11_LMT_LOGON_SESSION = 0xc6,
- NM_ATT_BS11_LMT_LOGIN_TIME = 0xc7,
- NM_ATT_BS11_LMT_USER_ACC_LEV = 0xc8,
- NM_ATT_BS11_LMT_USER_NAME = 0xc9,
-
- NM_ATT_BS11_L1_CONTROL_TS = 0xd8,
- NM_ATT_BS11_RADIO_MEAS_GRAN = 0xdc, /* in SACCH multiframes */
- NM_ATT_BS11_RADIO_MEAS_REP = 0xdd,
-
- NM_ATT_BS11_SH_LAPD_INT_TIMER = 0xe8,
-
- NM_ATT_BS11_BTS_STATE = 0xf0,
- NM_ATT_BS11_E1_STATE = 0xf1,
- NM_ATT_BS11_PLL = 0xf2,
- NM_ATT_BS11_RX_OFFSET = 0xf3,
- NM_ATT_BS11_ANT_TYPE = 0xf4,
- NM_ATT_BS11_PLL_MODE = 0xfc,
- NM_ATT_BS11_PASSWORD = 0xfd,
-};
-#define NM_ATT_BS11_FILE_DATA NM_ATT_EVENT_TYPE
-
-/* Section 9.4.4: Administrative State */
-enum abis_nm_adm_state {
- NM_STATE_LOCKED = 0x01,
- NM_STATE_UNLOCKED = 0x02,
- NM_STATE_SHUTDOWN = 0x03,
- NM_STATE_NULL = 0xff,
-};
-
-/* Section 9.4.7: Administrative State */
-enum abis_nm_avail_state {
- NM_AVSTATE_IN_TEST = 1,
- NM_AVSTATE_POWER_OFF = 2,
- NM_AVSTATE_OFF_LINE = 3,
- NM_AVSTATE_DEPENDENCY = 5,
- NM_AVSTATE_DEGRADED = 6,
- NM_AVSTATE_NOT_INSTALLED= 7,
- NM_AVSTATE_OK = 0xff,
-};
-
-enum abis_nm_op_state {
- NM_OPSTATE_DISABLED = 1,
- NM_OPSTATE_ENABLED = 2,
- NM_OPSTATE_NULL = 0xff,
-};
-
-/* Section 9.4.13: Channel Combination */
-enum abis_nm_chan_comb {
- NM_CHANC_TCHFull = 0x00, /* TCH/F + TCH/H + SACCH/TF */
- NM_CHANC_TCHHalf = 0x01, /* TCH/H(0,1) + FACCH/H(0,1) +
- SACCH/TH(0,1) */
- NM_CHANC_TCHHalf2 = 0x02, /* TCH/H(0) + FACCH/H(0) + SACCH/TH(0) +
- TCH/H(1) */
- NM_CHANC_SDCCH = 0x03, /* SDCCH/8 + SACCH/8 */
- NM_CHANC_mainBCCH = 0x04, /* FCCH + SCH + BCCH + CCCH */
- NM_CHANC_BCCHComb = 0x05, /* FCCH + SCH + BCCH + CCCH + SDCCH/4 +
- SACCH/C4 */
- NM_CHANC_BCCH = 0x06, /* BCCH + CCCH */
- NM_CHANC_BCCH_CBCH = 0x07, /* CHANC_BCCHComb + CBCH */
- NM_CHANC_SDCCH_CBCH = 0x08, /* CHANC_SDCCH8 + CBCH */
- /* ip.access */
- NM_CHANC_IPAC_bPDCH = 0x0b, /* PBCCH + PCCCH + PDTCH/F + PACCH/F +
- PTCCH/F */
- NM_CHANC_IPAC_cPDCH = 0x0c, /* PBCCH + PDTCH/F + PACCH/F + PTCCH/F */
- NM_CHANC_IPAC_PDCH = 0x0d, /* PDTCH/F + PACCH/F + PTCCH/F */
- NM_CHANC_IPAC_TCHFull_PDCH = 0x80,
- NM_CHANC_IPAC_TCHFull_TCHHalf = 0x81,
-};
-
-/* Section 9.4.16: Event Type */
-enum abis_nm_event_type {
- NM_EVT_COMM_FAIL = 0x00,
- NM_EVT_QOS_FAIL = 0x01,
- NM_EVT_PROC_FAIL = 0x02,
- NM_EVT_EQUIP_FAIL = 0x03,
- NM_EVT_ENV_FAIL = 0x04,
-};
-
-/* Section: 9.4.63: Perceived Severity */
-enum abis_nm_severity {
- NM_SEVER_CEASED = 0x00,
- NM_SEVER_CRITICAL = 0x01,
- NM_SEVER_MAJOR = 0x02,
- NM_SEVER_MINOR = 0x03,
- NM_SEVER_WARNING = 0x04,
- NM_SEVER_INDETERMINATE = 0x05,
-};
-
-/* Section 9.4.43: Probable Cause Type */
-enum abis_nm_pcause_type {
- NM_PCAUSE_T_X721 = 0x01,
- NM_PCAUSE_T_GSM = 0x02,
- NM_PCAUSE_T_MANUF = 0x03,
-};
-
-/* Section 9.4.36: NACK Causes */
-enum abis_nm_nack_cause {
- /* General Nack Causes */
- NM_NACK_INCORR_STRUCT = 0x01,
- NM_NACK_MSGTYPE_INVAL = 0x02,
- NM_NACK_OBJCLASS_INVAL = 0x05,
- NM_NACK_OBJCLASS_NOTSUPP = 0x06,
- NM_NACK_BTSNR_UNKN = 0x07,
- NM_NACK_TRXNR_UNKN = 0x08,
- NM_NACK_OBJINST_UNKN = 0x09,
- NM_NACK_ATTRID_INVAL = 0x0c,
- NM_NACK_ATTRID_NOTSUPP = 0x0d,
- NM_NACK_PARAM_RANGE = 0x0e,
- NM_NACK_ATTRLIST_INCONSISTENT = 0x0f,
- NM_NACK_SPEC_IMPL_NOTSUPP = 0x10,
- NM_NACK_CANT_PERFORM = 0x11,
- /* Specific Nack Causes */
- NM_NACK_RES_NOTIMPL = 0x19,
- NM_NACK_RES_NOTAVAIL = 0x1a,
- NM_NACK_FREQ_NOTAVAIL = 0x1b,
- NM_NACK_TEST_NOTSUPP = 0x1c,
- NM_NACK_CAPACITY_RESTR = 0x1d,
- NM_NACK_PHYSCFG_NOTPERFORM = 0x1e,
- NM_NACK_TEST_NOTINIT = 0x1f,
- NM_NACK_PHYSCFG_NOTRESTORE = 0x20,
- NM_NACK_TEST_NOSUCH = 0x21,
- NM_NACK_TEST_NOSTOP = 0x22,
- NM_NACK_MSGINCONSIST_PHYSCFG = 0x23,
- NM_NACK_FILE_INCOMPLETE = 0x25,
- NM_NACK_FILE_NOTAVAIL = 0x26,
- NM_NACK_FILE_NOTACTIVATE = 0x27,
- NM_NACK_REQ_NOT_GRANT = 0x28,
- NM_NACK_WAIT = 0x29,
- NM_NACK_NOTH_REPORT_EXIST = 0x2a,
- NM_NACK_MEAS_NOTSUPP = 0x2b,
- NM_NACK_MEAS_NOTSTART = 0x2c,
-};
-
-/* Section 9.4.1 */
-struct abis_nm_channel {
- uint8_t attrib;
- uint8_t bts_port;
- uint8_t timeslot;
- uint8_t subslot;
-} __attribute__ ((packed));
-
-/* Siemens BS-11 specific objects in the SienemsHW (0xA5) object class */
-enum abis_bs11_objtype {
- BS11_OBJ_ALCO = 0x01,
- BS11_OBJ_BBSIG = 0x02, /* obj_class: 0,1 */
- BS11_OBJ_TRX1 = 0x03, /* only DEACTIVATE TRX1 */
- BS11_OBJ_CCLK = 0x04,
- BS11_OBJ_GPSU = 0x06,
- BS11_OBJ_LI = 0x07,
- BS11_OBJ_PA = 0x09, /* obj_class: 0, 1*/
-};
-
-enum abis_bs11_trx_power {
- BS11_TRX_POWER_GSM_2W = 0x06,
- BS11_TRX_POWER_GSM_250mW= 0x07,
- BS11_TRX_POWER_GSM_80mW = 0x08,
- BS11_TRX_POWER_GSM_30mW = 0x09,
- BS11_TRX_POWER_DCS_3W = 0x0a,
- BS11_TRX_POWER_DCS_1W6 = 0x0b,
- BS11_TRX_POWER_DCS_500mW= 0x0c,
- BS11_TRX_POWER_DCS_160mW= 0x0d,
-};
-
-enum abis_bs11_li_pll_mode {
- BS11_LI_PLL_LOCKED = 2,
- BS11_LI_PLL_STANDALONE = 3,
-};
-
-enum abis_bs11_line_cfg {
- BS11_LINE_CFG_STAR = 0x00,
- BS11_LINE_CFG_MULTIDROP = 0x01,
- BS11_LINE_CFG_LOOP = 0x02,
-};
-
-enum abis_bs11_phase {
- BS11_STATE_SOFTWARE_RQD = 0x01,
- BS11_STATE_LOAD_SMU_INTENDED = 0x11,
- BS11_STATE_LOAD_SMU_SAFETY = 0x21,
- BS11_STATE_LOAD_FAILED = 0x31,
- BS11_STATE_LOAD_DIAGNOSTIC = 0x41,
- BS11_STATE_WARM_UP = 0x51,
- BS11_STATE_WARM_UP_2 = 0x52,
- BS11_STATE_WAIT_MIN_CFG = 0x62,
- BS11_STATE_MAINTENANCE = 0x72,
- BS11_STATE_LOAD_MBCCU = 0x92,
- BS11_STATE_WAIT_MIN_CFG_2 = 0xA2,
- BS11_STATE_NORMAL = 0x03,
- BS11_STATE_ABIS_LOAD = 0x13,
-};
-
-enum abis_nm_ipacc_test_no {
- NM_IPACC_TESTNO_RLOOP_ANT = 0x01,
- NM_IPACC_TESTNO_RLOOP_XCVR = 0x02,
- NM_IPACC_TESTNO_FUNC_OBJ = 0x03,
- NM_IPACC_TESTNO_CHAN_USAGE = 0x40,
- NM_IPACC_TESTNO_BCCH_CHAN_USAGE = 0x41,
- NM_IPACC_TESTNO_FREQ_SYNC = 0x42,
- NM_IPACC_TESTNO_BCCH_INFO = 0x43,
- NM_IPACC_TESTNO_TX_BEACON = 0x44,
- NM_IPACC_TESTNO_SYSINFO_MONITOR = 0x45,
- NM_IPACC_TESTNO_BCCCH_MONITOR = 0x46,
-};
-
-/* first byte after length inside NM_ATT_TEST_REPORT */
-enum abis_nm_ipacc_test_res {
- NM_IPACC_TESTRES_SUCCESS = 0,
- NM_IPACC_TESTRES_TIMEOUT = 1,
- NM_IPACC_TESTRES_NO_CHANS = 2,
- NM_IPACC_TESTRES_PARTIAL = 3,
- NM_IPACC_TESTRES_STOPPED = 4,
-};
-
-/* internal IE inside NM_ATT_TEST_REPORT */
-enum abis_nm_ipacc_testres_ie {
- NM_IPACC_TR_IE_FREQ_ERR_LIST = 3,
- NM_IPACC_TR_IE_CHAN_USAGE = 4,
- NM_IPACC_TR_IE_BCCH_INFO = 6,
- NM_IPACC_TR_IE_RESULT_DETAILS = 8,
- NM_IPACC_TR_IE_FREQ_ERR = 18,
-};
-
-enum ipac_eie {
- NM_IPAC_EIE_ARFCN_WHITE = 0x01,
- NM_IPAC_EIE_ARFCH_BLACK = 0x02,
- NM_IPAC_EIE_FREQ_ERR_LIST = 0x03,
- NM_IPAC_EIE_CHAN_USE_LIST = 0x04,
- NM_IPAC_EIE_BCCH_INFO_TYPE = 0x05,
- NM_IPAC_EIE_BCCH_INFO = 0x06,
- NM_IPAC_EIE_CONFIG = 0x07,
- NM_IPAC_EIE_RES_DETAILS = 0x08,
- NM_IPAC_EIE_RXLEV_THRESH = 0x09,
- NM_IPAC_EIE_FREQ_SYNC_OPTS = 0x0a,
- NM_IPAC_EIE_MAC_ADDR = 0x0b,
- NM_IPAC_EIE_HW_SW_COMPAT_NR = 0x0c,
- NM_IPAC_EIE_MANUF_SER_NR = 0x0d,
- NM_IPAC_EIE_OEM_ID = 0x0e,
- NM_IPAC_EIE_DATE_TIME_MANUF = 0x0f,
- NM_IPAC_EIE_DATE_TIME_CALIB = 0x10,
- NM_IPAC_EIE_BEACON_INFO = 0x11,
- NM_IPAC_EIE_FREQ_ERR = 0x12,
- /* FIXME */
- NM_IPAC_EIE_FREQ_BANDS = 0x1c,
- NM_IPAC_EIE_MAX_TA = 0x1d,
- NM_IPAC_EIE_CIPH_ALGOS = 0x1e,
- NM_IPAC_EIE_CHAN_TYPES = 0x1f,
- NM_IPAC_EIE_CHAN_MODES = 0x20,
- NM_IPAC_EIE_GPRS_CODING = 0x21,
- NM_IPAC_EIE_RTP_FEATURES = 0x22,
- NM_IPAC_EIE_RSL_FEATURES = 0x23,
- NM_IPAC_EIE_BTS_HW_CLASS = 0x24,
- NM_IPAC_EIE_BTS_ID = 0x25,
-};
-
-enum ipac_bcch_info_type {
- IPAC_BINF_RXLEV = (1 << 8),
- IPAC_BINF_RXQUAL = (1 << 9),
- IPAC_BINF_FREQ_ERR_QUAL = (1 << 10),
- IPAC_BINF_FRAME_OFFSET = (1 << 11),
- IPAC_BINF_FRAME_NR_OFFSET = (1 << 12),
- IPAC_BINF_BSIC = (1 << 13),
- IPAC_BINF_CGI = (1 << 14),
- IPAC_BINF_NEIGH_BA_SI2 = (1 << 15),
- IPAC_BINF_NEIGH_BA_SI2bis = (1 << 0),
- IPAC_BINF_NEIGH_BA_SI2ter = (1 << 1),
- IPAC_BINF_CELL_ALLOC = (1 << 2),
-};
-
-#endif /* PROTO_GSM_12_21_H */
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/ipaccess.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/ipaccess.h
deleted file mode 100644
index 5d98a21..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/protocol/ipaccess.h
+++ /dev/null
@@ -1,94 +0,0 @@
-#ifndef _OSMO_PROTO_IPACCESS_H
-#define _OSMO_PROTO_IPACCESS_H
-
-#include <stdint.h>
-
-#define IPA_TCP_PORT_OML 3002
-#define IPA_TCP_PORT_RSL 3003
-
-struct ipaccess_head {
- uint16_t len; /* network byte order */
- uint8_t proto;
- uint8_t data[0];
-} __attribute__ ((packed));
-
-struct ipaccess_head_ext {
- uint8_t proto;
- uint8_t data[0];
-} __attribute__ ((packed));
-
-enum ipaccess_proto {
- IPAC_PROTO_RSL = 0x00,
- IPAC_PROTO_IPACCESS = 0xfe,
- IPAC_PROTO_SCCP = 0xfd,
- IPAC_PROTO_OML = 0xff,
-
-
- /* OpenBSC extensions */
- IPAC_PROTO_OSMO = 0xee,
- IPAC_PROTO_MGCP_OLD = 0xfc,
-};
-
-enum ipaccess_proto_ext {
- IPAC_PROTO_EXT_CTRL = 0x00,
- IPAC_PROTO_EXT_MGCP = 0x01,
- IPAC_PROTO_EXT_LAC = 0x02,
- IPAC_PROTO_EXT_SMSC = 0x03,
-};
-
-enum ipaccess_msgtype {
- IPAC_MSGT_PING = 0x00,
- IPAC_MSGT_PONG = 0x01,
- IPAC_MSGT_ID_GET = 0x04,
- IPAC_MSGT_ID_RESP = 0x05,
- IPAC_MSGT_ID_ACK = 0x06,
-
- /* OpenBSC extension */
- IPAC_MSGT_SCCP_OLD = 0xff,
-};
-
-enum ipaccess_id_tags {
- IPAC_IDTAG_SERNR = 0x00,
- IPAC_IDTAG_UNITNAME = 0x01,
- IPAC_IDTAG_LOCATION1 = 0x02,
- IPAC_IDTAG_LOCATION2 = 0x03,
- IPAC_IDTAG_EQUIPVERS = 0x04,
- IPAC_IDTAG_SWVERSION = 0x05,
- IPAC_IDTAG_IPADDR = 0x06,
- IPAC_IDTAG_MACADDR = 0x07,
- IPAC_IDTAG_UNIT = 0x08,
-};
-
-/*
- * Firmware specific header
- */
-struct sdp_firmware {
- char magic[4];
- char more_magic[2];
- uint16_t more_more_magic;
- uint32_t header_length;
- uint32_t file_length;
- char sw_part[20];
- char text1[64];
- char time[12];
- char date[14];
- char text2[10];
- char version[20];
- uint16_t table_offset;
- /* stuff i don't know */
-} __attribute__((packed));
-
-struct sdp_header_entry {
- uint16_t something1;
- char text1[64];
- char time[12];
- char date[14];
- char text2[10];
- char version[20];
- uint32_t length;
- uint32_t addr1;
- uint32_t addr2;
- uint32_t start;
-} __attribute__((packed));
-
-#endif /* _OSMO_PROTO_IPACCESS_H */
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/rsl.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/rsl.h
deleted file mode 100644
index 44ded1b..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/rsl.h
+++ /dev/null
@@ -1,43 +0,0 @@
-#ifndef _OSMOCORE_RSL_H
-#define _OSMOCORE_RSL_H
-
-#include <stdint.h>
-#include <osmocom/core/utils.h>
-#include <osmocom/core/msgb.h>
-#include <osmocom/gsm/protocol/gsm_08_58.h>
-
-void rsl_init_rll_hdr(struct abis_rsl_rll_hdr *dh, uint8_t msg_type);
-
-void rsl_init_cchan_hdr(struct abis_rsl_cchan_hdr *ch, uint8_t msg_type);
-
-extern const struct tlv_definition rsl_att_tlvdef;
-#define rsl_tlv_parse(dec, buf, len) \
- tlv_parse(dec, &rsl_att_tlvdef, buf, len, 0, 0)
-
-/* encode channel number as per Section 9.3.1 */
-uint8_t rsl_enc_chan_nr(uint8_t type, uint8_t subch, uint8_t timeslot);
-/* decode channel number as per Section 9.3.1 */
-int rsl_dec_chan_nr(uint8_t chan_nr, uint8_t *type, uint8_t *subch, uint8_t *timeslot);
-/* Turns channel number into a string */
-const char *rsl_chan_nr_str(uint8_t chan_nr);
-
-
-const char *rsl_err_name(uint8_t err);
-const char *rsl_rlm_cause_name(uint8_t err);
-const char *rsl_msg_name(uint8_t err);
-
-/* Section 3.3.2.3 TS 05.02. I think this looks like a table */
-int rsl_ccch_conf_to_bs_cc_chans(int ccch_conf);
-
-/* Push a RSL RLL header */
-void rsl_rll_push_hdr(struct msgb *msg, uint8_t msg_type, uint8_t chan_nr,
- uint8_t link_id, int transparent);
-
-/* Push a RSL RLL header with L3_INFO IE */
-void rsl_rll_push_l3(struct msgb *msg, uint8_t msg_type, uint8_t chan_nr,
- uint8_t link_id, int transparent);
-
-/* Allocate msgb and fill with simple RSL RLL header */
-struct msgb *rsl_rll_simple(uint8_t msg_type, uint8_t chan_nr,
- uint8_t link_id, int transparent);
-#endif /* _OSMOCORE_RSL_H */
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/rxlev_stat.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/rxlev_stat.h
deleted file mode 100644
index 415509d..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/rxlev_stat.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef _OSMOCORE_RXLEV_STATS_H
-#define _OSMOCORE_RXLEV_STATS_H
-
-#define NUM_RXLEVS 32
-#define NUM_ARFCNS 1024
-
-struct rxlev_stats {
- /* the maximum number of ARFCN's is 1024, and there are 32 RxLevels,
- * so in we keep one 1024bit-bitvec for each RxLev */
- uint8_t rxlev_buckets[NUM_RXLEVS][NUM_ARFCNS/8];
-};
-
-void rxlev_stat_input(struct rxlev_stats *st, uint16_t arfcn, uint8_t rxlev);
-
-/* get the next ARFCN that has the specified Rxlev */
-int16_t rxlev_stat_get_next(const struct rxlev_stats *st, uint8_t rxlev, int16_t arfcn);
-
-void rxlev_stat_reset(struct rxlev_stats *st);
-
-void rxlev_stat_dump(const struct rxlev_stats *st);
-
-#endif /* _OSMOCORE_RXLEV_STATS_H */
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/sysinfo.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/sysinfo.h
deleted file mode 100644
index b808d6f..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/sysinfo.h
+++ /dev/null
@@ -1,43 +0,0 @@
-#ifndef _OSMO_GSM_SYSINFO_H
-#define _OSMO_GSM_SYSINFO_H
-
-#include <osmocom/core/utils.h>
-#include <osmocom/gsm/protocol/gsm_04_08.h>
-
-enum osmo_sysinfo_type {
- SYSINFO_TYPE_NONE,
- SYSINFO_TYPE_1,
- SYSINFO_TYPE_2,
- SYSINFO_TYPE_3,
- SYSINFO_TYPE_4,
- SYSINFO_TYPE_5,
- SYSINFO_TYPE_6,
- SYSINFO_TYPE_7,
- SYSINFO_TYPE_8,
- SYSINFO_TYPE_9,
- SYSINFO_TYPE_10,
- SYSINFO_TYPE_13,
- SYSINFO_TYPE_16,
- SYSINFO_TYPE_17,
- SYSINFO_TYPE_18,
- SYSINFO_TYPE_19,
- SYSINFO_TYPE_20,
- SYSINFO_TYPE_2bis,
- SYSINFO_TYPE_2ter,
- SYSINFO_TYPE_2quater,
- SYSINFO_TYPE_5bis,
- SYSINFO_TYPE_5ter,
- SYSINFO_TYPE_EMO,
- SYSINFO_TYPE_MEAS_INFO,
- /* FIXME all the various bis and ter */
- _MAX_SYSINFO_TYPE
-};
-
-typedef uint8_t sysinfo_buf_t[GSM_MACBLOCK_LEN];
-
-extern const struct value_string osmo_sitype_strs[_MAX_SYSINFO_TYPE];
-
-uint8_t gsm_sitype2rsl(enum osmo_sysinfo_type si_type);
-enum osmo_sysinfo_type osmo_rsl2sitype(uint8_t rsl_si);
-
-#endif /* _OSMO_GSM_SYSINFO_H */
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/tlv.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/tlv.h
deleted file mode 100644
index f659411..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/gsm/tlv.h
+++ /dev/null
@@ -1,260 +0,0 @@
-#ifndef _TLV_H
-#define _TLV_H
-
-#include <stdint.h>
-#include <string.h>
-
-#include <osmocom/core/msgb.h>
-
-/* Terminology / wording
- tag length value (in bits)
-
- V - - 8
- LV - 8 N * 8
- TLV 8 8 N * 8
- TL16V 8 16 N * 8
- TLV16 8 8 N * 16
- TvLV 8 8/16 N * 8
-
-*/
-
-#define LV_GROSS_LEN(x) (x+1)
-#define TLV_GROSS_LEN(x) (x+2)
-#define TLV16_GROSS_LEN(x) ((2*x)+2)
-#define TL16V_GROSS_LEN(x) (x+3)
-#define L16TV_GROSS_LEN(x) (x+3)
-
-#define TVLV_MAX_ONEBYTE 0x7f
-
-static inline uint16_t TVLV_GROSS_LEN(uint16_t len)
-{
- if (len <= TVLV_MAX_ONEBYTE)
- return TLV_GROSS_LEN(len);
- else
- return TL16V_GROSS_LEN(len);
-}
-
-/* TLV generation */
-
-static inline uint8_t *lv_put(uint8_t *buf, uint8_t len,
- const uint8_t *val)
-{
- *buf++ = len;
- memcpy(buf, val, len);
- return buf + len;
-}
-
-static inline uint8_t *tlv_put(uint8_t *buf, uint8_t tag, uint8_t len,
- const uint8_t *val)
-{
- *buf++ = tag;
- *buf++ = len;
- memcpy(buf, val, len);
- return buf + len;
-}
-
-static inline uint8_t *tlv16_put(uint8_t *buf, uint8_t tag, uint8_t len,
- const uint16_t *val)
-{
- *buf++ = tag;
- *buf++ = len;
- memcpy(buf, val, len*2);
- return buf + len*2;
-}
-
-static inline uint8_t *tl16v_put(uint8_t *buf, uint8_t tag, uint16_t len,
- const uint8_t *val)
-{
- *buf++ = tag;
- *buf++ = len >> 8;
- *buf++ = len & 0xff;
- memcpy(buf, val, len);
- return buf + len*2;
-}
-
-static inline uint8_t *tvlv_put(uint8_t *buf, uint8_t tag, uint16_t len,
- const uint8_t *val)
-{
- uint8_t *ret;
-
- if (len <= TVLV_MAX_ONEBYTE) {
- ret = tlv_put(buf, tag, len, val);
- buf[1] |= 0x80;
- } else
- ret = tl16v_put(buf, tag, len, val);
-
- return ret;
-}
-
-static inline uint8_t *msgb_tlv16_put(struct msgb *msg, uint8_t tag, uint8_t len, const uint16_t *val)
-{
- uint8_t *buf = msgb_put(msg, TLV16_GROSS_LEN(len));
- return tlv16_put(buf, tag, len, val);
-}
-
-static inline uint8_t *msgb_tl16v_put(struct msgb *msg, uint8_t tag, uint16_t len,
- const uint8_t *val)
-{
- uint8_t *buf = msgb_put(msg, TL16V_GROSS_LEN(len));
- return tl16v_put(buf, tag, len, val);
-}
-
-static inline uint8_t *msgb_tvlv_put(struct msgb *msg, uint8_t tag, uint16_t len,
- const uint8_t *val)
-{
- uint8_t *buf = msgb_put(msg, TVLV_GROSS_LEN(len));
- return tvlv_put(buf, tag, len, val);
-}
-
-static inline uint8_t *msgb_l16tv_put(struct msgb *msg, uint16_t len, uint8_t tag,
- const uint8_t *val)
-{
- uint8_t *buf = msgb_put(msg, L16TV_GROSS_LEN(len));
-
- *buf++ = len >> 8;
- *buf++ = len & 0xff;
- *buf++ = tag;
- memcpy(buf, val, len);
- return buf + len;
-}
-
-static inline uint8_t *v_put(uint8_t *buf, uint8_t val)
-{
- *buf++ = val;
- return buf;
-}
-
-static inline uint8_t *tv_put(uint8_t *buf, uint8_t tag,
- uint8_t val)
-{
- *buf++ = tag;
- *buf++ = val;
- return buf;
-}
-
-static inline uint8_t *tv_fixed_put(uint8_t *buf, uint8_t tag,
- unsigned int len, const uint8_t *val)
-{
- *buf++ = tag;
- memcpy(buf, val, len);
- return buf + len;
-}
-
-/* 'val' is still in host byte order! */
-static inline uint8_t *tv16_put(uint8_t *buf, uint8_t tag,
- uint16_t val)
-{
- *buf++ = tag;
- *buf++ = val >> 8;
- *buf++ = val & 0xff;
- return buf;
-}
-
-static inline uint8_t *msgb_lv_put(struct msgb *msg, uint8_t len, const uint8_t *val)
-{
- uint8_t *buf = msgb_put(msg, LV_GROSS_LEN(len));
- return lv_put(buf, len, val);
-}
-
-static inline uint8_t *msgb_tlv_put(struct msgb *msg, uint8_t tag, uint8_t len, const uint8_t *val)
-{
- uint8_t *buf = msgb_put(msg, TLV_GROSS_LEN(len));
- return tlv_put(buf, tag, len, val);
-}
-
-static inline uint8_t *msgb_tv_put(struct msgb *msg, uint8_t tag, uint8_t val)
-{
- uint8_t *buf = msgb_put(msg, 2);
- return tv_put(buf, tag, val);
-}
-
-static inline uint8_t *msgb_tv_fixed_put(struct msgb *msg, uint8_t tag,
- unsigned int len, const uint8_t *val)
-{
- uint8_t *buf = msgb_put(msg, 1+len);
- return tv_fixed_put(buf, tag, len, val);
-}
-
-static inline uint8_t *msgb_v_put(struct msgb *msg, uint8_t val)
-{
- uint8_t *buf = msgb_put(msg, 1);
- return v_put(buf, val);
-}
-
-static inline uint8_t *msgb_tv16_put(struct msgb *msg, uint8_t tag, uint16_t val)
-{
- uint8_t *buf = msgb_put(msg, 3);
- return tv16_put(buf, tag, val);
-}
-
-static inline uint8_t *msgb_tlv_push(struct msgb *msg, uint8_t tag, uint8_t len, const uint8_t *val)
-{
- uint8_t *buf = msgb_push(msg, TLV_GROSS_LEN(len));
- return tlv_put(buf, tag, len, val);
-}
-
-static inline uint8_t *msgb_tv_push(struct msgb *msg, uint8_t tag, uint8_t val)
-{
- uint8_t *buf = msgb_push(msg, 2);
- return tv_put(buf, tag, val);
-}
-
-static inline uint8_t *msgb_tv16_push(struct msgb *msg, uint8_t tag, uint16_t val)
-{
- uint8_t *buf = msgb_push(msg, 3);
- return tv16_put(buf, tag, val);
-}
-
-static inline uint8_t *msgb_tvlv_push(struct msgb *msg, uint8_t tag, uint16_t len,
- const uint8_t *val)
-{
- uint8_t *buf = msgb_push(msg, TVLV_GROSS_LEN(len));
- return tvlv_put(buf, tag, len, val);
-}
-
-/* TLV parsing */
-
-struct tlv_p_entry {
- uint16_t len;
- const uint8_t *val;
-};
-
-enum tlv_type {
- TLV_TYPE_NONE,
- TLV_TYPE_FIXED,
- TLV_TYPE_T,
- TLV_TYPE_TV,
- TLV_TYPE_TLV,
- TLV_TYPE_TL16V,
- TLV_TYPE_TvLV,
- TLV_TYPE_SINGLE_TV
-};
-
-struct tlv_def {
- enum tlv_type type;
- uint8_t fixed_len;
-};
-
-struct tlv_definition {
- struct tlv_def def[256];
-};
-
-struct tlv_parsed {
- struct tlv_p_entry lv[256];
-};
-
-extern struct tlv_definition tvlv_att_def;
-
-int tlv_parse_one(uint8_t *o_tag, uint16_t *o_len, const uint8_t **o_val,
- const struct tlv_definition *def,
- const uint8_t *buf, int buf_len);
-int tlv_parse(struct tlv_parsed *dec, const struct tlv_definition *def,
- const uint8_t *buf, int buf_len, uint8_t lv_tag, uint8_t lv_tag2);
-/* take a master (src) tlvdev and fill up all empty slots in 'dst' */
-void tlv_def_patch(struct tlv_definition *dst, const struct tlv_definition *src);
-
-#define TLVP_PRESENT(x, y) ((x)->lv[y].val)
-#define TLVP_LEN(x, y) (x)->lv[y].len
-#define TLVP_VAL(x, y) (x)->lv[y].val
-
-#endif /* _TLV_H */
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/vty/Makefile.am b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/vty/Makefile.am
deleted file mode 100644
index 83d0010..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/vty/Makefile.am
+++ /dev/null
@@ -1,4 +0,0 @@
-osmovty_HEADERS = buffer.h command.h vector.h vty.h \
- telnet_interface.h logging.h misc.h
-
-osmovtydir = $(includedir)/osmocom/vty
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/vty/buffer.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/vty/buffer.h
deleted file mode 100644
index c9467a9..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/vty/buffer.h
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Buffering to output and input.
- * Copyright (C) 1998 Kunihiro Ishiguro
- *
- * This file is part of GNU Zebra.
- *
- * GNU Zebra is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published
- * by the Free Software Foundation; either version 2, or (at your
- * option) any later version.
- *
- * GNU Zebra 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 GNU Zebra; see the file COPYING. If not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef _ZEBRA_BUFFER_H
-#define _ZEBRA_BUFFER_H
-
-#include <sys/types.h>
-
-/* Create a new buffer. Memory will be allocated in chunks of the given
- size. If the argument is 0, the library will supply a reasonable
- default size suitable for buffering socket I/O. */
-struct buffer *buffer_new(void *ctx, size_t);
-
-/* Free all data in the buffer. */
-void buffer_reset(struct buffer *);
-
-/* This function first calls buffer_reset to release all buffered data.
- Then it frees the struct buffer itself. */
-void buffer_free(struct buffer *);
-
-/* Add the given data to the end of the buffer. */
-extern void buffer_put(struct buffer *, const void *, size_t);
-/* Add a single character to the end of the buffer. */
-extern void buffer_putc(struct buffer *, u_char);
-/* Add a NUL-terminated string to the end of the buffer. */
-extern void buffer_putstr(struct buffer *, const char *);
-
-/* Combine all accumulated (and unflushed) data inside the buffer into a
- single NUL-terminated string allocated using XMALLOC(MTYPE_TMP). Note
- that this function does not alter the state of the buffer, so the data
- is still inside waiting to be flushed. */
-char *buffer_getstr(struct buffer *);
-
-/* Returns 1 if there is no pending data in the buffer. Otherwise returns 0. */
-int buffer_empty(struct buffer *);
-
-typedef enum {
- /* An I/O error occurred. The buffer should be destroyed and the
- file descriptor should be closed. */
- BUFFER_ERROR = -1,
-
- /* The data was written successfully, and the buffer is now empty
- (there is no pending data waiting to be flushed). */
- BUFFER_EMPTY = 0,
-
- /* There is pending data in the buffer waiting to be flushed. Please
- try flushing the buffer when select indicates that the file descriptor
- is writeable. */
- BUFFER_PENDING = 1
-} buffer_status_t;
-
-/* Try to write this data to the file descriptor. Any data that cannot
- be written immediately is added to the buffer queue. */
-extern buffer_status_t buffer_write(struct buffer *, int fd,
- const void *, size_t);
-
-/* This function attempts to flush some (but perhaps not all) of
- the queued data to the given file descriptor. */
-extern buffer_status_t buffer_flush_available(struct buffer *, int fd);
-
-/* The following 2 functions (buffer_flush_all and buffer_flush_window)
- are for use in lib/vty.c only. They should not be used elsewhere. */
-
-/* Call buffer_flush_available repeatedly until either all data has been
- flushed, or an I/O error has been encountered, or the operation would
- block. */
-extern buffer_status_t buffer_flush_all(struct buffer *, int fd);
-
-/* Attempt to write enough data to the given fd to fill a window of the
- given width and height (and remove the data written from the buffer).
-
- If !no_more, then a message saying " --More-- " is appended.
- If erase is true, then first overwrite the previous " --More-- " message
- with spaces.
-
- Any write error (including EAGAIN or EINTR) will cause this function
- to return -1 (because the logic for handling the erase and more features
- is too complicated to retry the write later).
-*/
-extern buffer_status_t buffer_flush_window(struct buffer *, int fd, int width,
- int height, int erase, int no_more);
-
-#endif /* _ZEBRA_BUFFER_H */
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/vty/command.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/vty/command.h
deleted file mode 100644
index 783a7a2..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/vty/command.h
+++ /dev/null
@@ -1,353 +0,0 @@
-/*
- * Zebra configuration command interface routine
- * Copyright (C) 1997, 98 Kunihiro Ishiguro
- *
- * This file is part of GNU Zebra.
- *
- * GNU Zebra is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published
- * by the Free Software Foundation; either version 2, or (at your
- * option) any later version.
- *
- * GNU Zebra 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 GNU Zebra; see the file COPYING. If not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef _ZEBRA_COMMAND_H
-#define _ZEBRA_COMMAND_H
-
-#include <stdio.h>
-#include <sys/types.h>
-#include "vector.h"
-#include "vty.h"
-
-/* Host configuration variable */
-struct host {
- /* Host name of this router. */
- char *name;
-
- /* Password for vty interface. */
- char *password;
- char *password_encrypt;
-
- /* Enable password */
- char *enable;
- char *enable_encrypt;
-
- /* System wide terminal lines. */
- int lines;
-
- /* Log filename. */
- char *logfile;
-
- /* config file name of this host */
- char *config;
-
- /* Flags for services */
- int advanced;
- int encrypt;
-
- /* Banner configuration. */
- const char *motd;
- char *motdfile;
-
- const struct vty_app_info *app_info;
-};
-
-/* There are some command levels which called from command node. */
-enum node_type {
- AUTH_NODE, /* Authentication mode of vty interface. */
- VIEW_NODE, /* View node. Default mode of vty interface. */
- AUTH_ENABLE_NODE, /* Authentication mode for change enable. */
- ENABLE_NODE, /* Enable node. */
- CONFIG_NODE, /* Config node. Default mode of config file. */
- SERVICE_NODE, /* Service node. */
- DEBUG_NODE, /* Debug node. */
- CFG_LOG_NODE, /* Configure the logging */
-
- VTY_NODE, /* Vty node. */
-
- L_E1INP_NODE, /* E1 line in libosmo-abis. */
- L_IPA_NODE, /* IPA proxying commands in libosmo-abis. */
-
- _LAST_OSMOVTY_NODE
-};
-
-/* Node which has some commands and prompt string and configuration
- function pointer . */
-struct cmd_node {
- /* Node index. */
- enum node_type node;
-
- /* Prompt character at vty interface. */
- const char *prompt;
-
- /* Is this node's configuration goes to vtysh ? */
- int vtysh;
-
- /* Node's configuration write function */
- int (*func) (struct vty *);
-
- /* Vector of this node's command list. */
- vector cmd_vector;
-};
-
-enum {
- CMD_ATTR_DEPRECATED = 1,
- CMD_ATTR_HIDDEN,
-};
-
-/* Structure of command element. */
-struct cmd_element {
- const char *string; /* Command specification by string. */
- int (*func) (struct cmd_element *, struct vty *, int, const char *[]);
- const char *doc; /* Documentation of this command. */
- int daemon; /* Daemon to which this command belong. */
- vector strvec; /* Pointing out each description vector. */
- unsigned int cmdsize; /* Command index count. */
- char *config; /* Configuration string */
- vector subconfig; /* Sub configuration string */
- u_char attr; /* Command attributes */
-};
-
-/* Command description structure. */
-struct desc {
- const char *cmd; /* Command string. */
- const char *str; /* Command's description. */
-};
-
-/* Return value of the commands. */
-#define CMD_SUCCESS 0
-#define CMD_WARNING 1
-#define CMD_ERR_NO_MATCH 2
-#define CMD_ERR_AMBIGUOUS 3
-#define CMD_ERR_INCOMPLETE 4
-#define CMD_ERR_EXEED_ARGC_MAX 5
-#define CMD_ERR_NOTHING_TODO 6
-#define CMD_COMPLETE_FULL_MATCH 7
-#define CMD_COMPLETE_MATCH 8
-#define CMD_COMPLETE_LIST_MATCH 9
-#define CMD_SUCCESS_DAEMON 10
-
-/* Argc max counts. */
-#define CMD_ARGC_MAX 256
-
-/* Turn off these macros when uisng cpp with extract.pl */
-#ifndef VTYSH_EXTRACT_PL
-
-/* helper defines for end-user DEFUN* macros */
-#define DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, attrs, dnum) \
- static struct cmd_element cmdname = \
- { \
- .string = cmdstr, \
- .func = funcname, \
- .doc = helpstr, \
- .attr = attrs, \
- .daemon = dnum, \
- };
-
-/* global (non static) cmd_element */
-#define gDEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, attrs, dnum) \
- struct cmd_element cmdname = \
- { \
- .string = cmdstr, \
- .func = funcname, \
- .doc = helpstr, \
- .attr = attrs, \
- .daemon = dnum, \
- };
-
-#define DEFUN_CMD_FUNC_DECL(funcname) \
- static int funcname (struct cmd_element *, struct vty *, int, const char *[]); \
-
-#define DEFUN_CMD_FUNC_TEXT(funcname) \
- static int funcname \
- (struct cmd_element *self, struct vty *vty, int argc, const char *argv[])
-
-/* DEFUN for vty command interafce. Little bit hacky ;-). */
-#define DEFUN(funcname, cmdname, cmdstr, helpstr) \
- DEFUN_CMD_FUNC_DECL(funcname) \
- DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, 0, 0) \
- DEFUN_CMD_FUNC_TEXT(funcname)
-
-/* global (non static) cmd_element */
-#define gDEFUN(funcname, cmdname, cmdstr, helpstr) \
- DEFUN_CMD_FUNC_DECL(funcname) \
- gDEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, 0, 0) \
- DEFUN_CMD_FUNC_TEXT(funcname)
-
-#define DEFUN_ATTR(funcname, cmdname, cmdstr, helpstr, attr) \
- DEFUN_CMD_FUNC_DECL(funcname) \
- DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, attr, 0) \
- DEFUN_CMD_FUNC_TEXT(funcname)
-
-#define DEFUN_HIDDEN(funcname, cmdname, cmdstr, helpstr) \
- DEFUN_ATTR (funcname, cmdname, cmdstr, helpstr, CMD_ATTR_HIDDEN)
-
-#define DEFUN_DEPRECATED(funcname, cmdname, cmdstr, helpstr) \
- DEFUN_ATTR (funcname, cmdname, cmdstr, helpstr, CMD_ATTR_DEPRECATED) \
-
-/* DEFUN_NOSH for commands that vtysh should ignore */
-#define DEFUN_NOSH(funcname, cmdname, cmdstr, helpstr) \
- DEFUN(funcname, cmdname, cmdstr, helpstr)
-
-/* DEFSH for vtysh. */
-#define DEFSH(daemon, cmdname, cmdstr, helpstr) \
- DEFUN_CMD_ELEMENT(NULL, cmdname, cmdstr, helpstr, 0, daemon) \
-
-/* DEFUN + DEFSH */
-#define DEFUNSH(daemon, funcname, cmdname, cmdstr, helpstr) \
- DEFUN_CMD_FUNC_DECL(funcname) \
- DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, 0, daemon) \
- DEFUN_CMD_FUNC_TEXT(funcname)
-
-/* DEFUN + DEFSH with attributes */
-#define DEFUNSH_ATTR(daemon, funcname, cmdname, cmdstr, helpstr, attr) \
- DEFUN_CMD_FUNC_DECL(funcname) \
- DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, attr, daemon) \
- DEFUN_CMD_FUNC_TEXT(funcname)
-
-#define DEFUNSH_HIDDEN(daemon, funcname, cmdname, cmdstr, helpstr) \
- DEFUNSH_ATTR (daemon, funcname, cmdname, cmdstr, helpstr, CMD_ATTR_HIDDEN)
-
-#define DEFUNSH_DEPRECATED(daemon, funcname, cmdname, cmdstr, helpstr) \
- DEFUNSH_ATTR (daemon, funcname, cmdname, cmdstr, helpstr, CMD_ATTR_DEPRECATED)
-
-/* ALIAS macro which define existing command's alias. */
-#define ALIAS(funcname, cmdname, cmdstr, helpstr) \
- DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, 0, 0)
-
-/* global (non static) cmd_element */
-#define gALIAS(funcname, cmdname, cmdstr, helpstr) \
- gDEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, 0, 0)
-
-#define ALIAS_ATTR(funcname, cmdname, cmdstr, helpstr, attr) \
- DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, attr, 0)
-
-#define ALIAS_HIDDEN(funcname, cmdname, cmdstr, helpstr) \
- DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, CMD_ATTR_HIDDEN, 0)
-
-#define ALIAS_DEPRECATED(funcname, cmdname, cmdstr, helpstr) \
- DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, CMD_ATTR_DEPRECATED, 0)
-
-#define ALIAS_SH(daemon, funcname, cmdname, cmdstr, helpstr) \
- DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, 0, daemon)
-
-#define ALIAS_SH_HIDDEN(daemon, funcname, cmdname, cmdstr, helpstr) \
- DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, CMD_ATTR_HIDDEN, daemon)
-
-#define ALIAS_SH_DEPRECATED(daemon, funcname, cmdname, cmdstr, helpstr) \
- DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, CMD_ATTR_DEPRECATED, daemon)
-
-#endif /* VTYSH_EXTRACT_PL */
-
-/* Some macroes */
-#define CMD_OPTION(S) ((S[0]) == '[')
-#define CMD_VARIABLE(S) (((S[0]) >= 'A' && (S[0]) <= 'Z') || ((S[0]) == '<'))
-#define CMD_VARARG(S) ((S[0]) == '.')
-#define CMD_RANGE(S) ((S[0] == '<'))
-
-#define CMD_IPV4(S) ((strcmp ((S), "A.B.C.D") == 0))
-#define CMD_IPV4_PREFIX(S) ((strcmp ((S), "A.B.C.D/M") == 0))
-#define CMD_IPV6(S) ((strcmp ((S), "X:X::X:X") == 0))
-#define CMD_IPV6_PREFIX(S) ((strcmp ((S), "X:X::X:X/M") == 0))
-
-/* Common descriptions. */
-#define SHOW_STR "Show running system information\n"
-#define IP_STR "IP information\n"
-#define IPV6_STR "IPv6 information\n"
-#define NO_STR "Negate a command or set its defaults\n"
-#define CLEAR_STR "Reset functions\n"
-#define RIP_STR "RIP information\n"
-#define BGP_STR "BGP information\n"
-#define OSPF_STR "OSPF information\n"
-#define NEIGHBOR_STR "Specify neighbor router\n"
-#define DEBUG_STR "Debugging functions (see also 'undebug')\n"
-#define UNDEBUG_STR "Disable debugging functions (see also 'debug')\n"
-#define ROUTER_STR "Enable a routing process\n"
-#define AS_STR "AS number\n"
-#define MBGP_STR "MBGP information\n"
-#define MATCH_STR "Match values from routing table\n"
-#define SET_STR "Set values in destination routing protocol\n"
-#define OUT_STR "Filter outgoing routing updates\n"
-#define IN_STR "Filter incoming routing updates\n"
-#define V4NOTATION_STR "specify by IPv4 address notation(e.g. 0.0.0.0)\n"
-#define OSPF6_NUMBER_STR "Specify by number\n"
-#define INTERFACE_STR "Interface infomation\n"
-#define IFNAME_STR "Interface name(e.g. ep0)\n"
-#define IP6_STR "IPv6 Information\n"
-#define OSPF6_STR "Open Shortest Path First (OSPF) for IPv6\n"
-#define OSPF6_ROUTER_STR "Enable a routing process\n"
-#define OSPF6_INSTANCE_STR "<1-65535> Instance ID\n"
-#define SECONDS_STR "<1-65535> Seconds\n"
-#define ROUTE_STR "Routing Table\n"
-#define PREFIX_LIST_STR "Build a prefix list\n"
-#define OSPF6_DUMP_TYPE_LIST \
-"(neighbor|interface|area|lsa|zebra|config|dbex|spf|route|lsdb|redistribute|hook|asbr|prefix|abr)"
-#define ISIS_STR "IS-IS information\n"
-#define AREA_TAG_STR "[area tag]\n"
-
-#define CONF_BACKUP_EXT ".sav"
-
-/* IPv4 only machine should not accept IPv6 address for peer's IP
- address. So we replace VTY command string like below. */
-#ifdef HAVE_IPV6
-#define NEIGHBOR_CMD "neighbor (A.B.C.D|X:X::X:X) "
-#define NO_NEIGHBOR_CMD "no neighbor (A.B.C.D|X:X::X:X) "
-#define NEIGHBOR_ADDR_STR "Neighbor address\nIPv6 address\n"
-#define NEIGHBOR_CMD2 "neighbor (A.B.C.D|X:X::X:X|WORD) "
-#define NO_NEIGHBOR_CMD2 "no neighbor (A.B.C.D|X:X::X:X|WORD) "
-#define NEIGHBOR_ADDR_STR2 "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n"
-#else
-#define NEIGHBOR_CMD "neighbor A.B.C.D "
-#define NO_NEIGHBOR_CMD "no neighbor A.B.C.D "
-#define NEIGHBOR_ADDR_STR "Neighbor address\n"
-#define NEIGHBOR_CMD2 "neighbor (A.B.C.D|WORD) "
-#define NO_NEIGHBOR_CMD2 "no neighbor (A.B.C.D|WORD) "
-#define NEIGHBOR_ADDR_STR2 "Neighbor address\nNeighbor tag\n"
-#endif /* HAVE_IPV6 */
-
-/* Prototypes. */
-void install_node(struct cmd_node *, int (*)(struct vty *));
-void install_default(enum node_type);
-void install_element(enum node_type, struct cmd_element *);
-void install_element_ve(struct cmd_element *cmd);
-void sort_node(void);
-
-/* Concatenates argv[shift] through argv[argc-1] into a single NUL-terminated
- string with a space between each element (allocated using
- XMALLOC(MTYPE_TMP)). Returns NULL if shift >= argc. */
-char *argv_concat(const char **argv, int argc, int shift);
-
-vector cmd_make_strvec(const char *);
-void cmd_free_strvec(vector);
-vector cmd_describe_command();
-char **cmd_complete_command();
-const char *cmd_prompt(enum node_type);
-int config_from_file(struct vty *, FILE *);
-enum node_type node_parent(enum node_type);
-int cmd_execute_command(vector, struct vty *, struct cmd_element **, int);
-int cmd_execute_command_strict(vector, struct vty *, struct cmd_element **);
-void config_replace_string(struct cmd_element *, char *, ...);
-void cmd_init(int);
-
-/* Export typical functions. */
-extern struct cmd_element config_exit_cmd;
-extern struct cmd_element config_help_cmd;
-extern struct cmd_element config_list_cmd;
-char *host_config_file();
-void host_config_set(const char *);
-
-/* This is called from main when a daemon is invoked with -v or --version. */
-void print_version(int print_copyright);
-
-extern void *tall_vty_cmd_ctx;
-
-#endif /* _ZEBRA_COMMAND_H */
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/vty/logging.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/vty/logging.h
deleted file mode 100644
index e0011bf..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/vty/logging.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef _VTY_LOGGING_H
-#define _VTY_LOGGING_H
-
-#define LOGGING_STR "Configure log message to this terminal\n"
-#define FILTER_STR "Filter log messages\n"
-
-struct log_info;
-void logging_vty_add_cmds(const struct log_info *cat);
-struct vty;
-struct log_target *osmo_log_vty2tgt(struct vty *vty);
-
-#endif /* _VTY_LOGGING_H */
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/vty/misc.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/vty/misc.h
deleted file mode 100644
index 707f82f..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/vty/misc.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifndef OSMO_VTY_MISC_H
-#define OSMO_VTY_MISC_H
-
-#include <osmocom/vty/vty.h>
-#include <osmocom/core/rate_ctr.h>
-
-void vty_out_rate_ctr_group(struct vty *vty, const char *prefix,
- struct rate_ctr_group *ctrg);
-
-#endif
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/vty/telnet_interface.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/vty/telnet_interface.h
deleted file mode 100644
index 1d8055e..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/vty/telnet_interface.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* minimalistic telnet/network interface it might turn into a wire interface */
-/* (C) 2009 by Holger Hans Peter Freyther <zecke@selfish.org>
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#ifndef TELNET_INTERFACE_H
-#define TELNET_INTERFACE_H
-
-#include <osmocom/core/logging.h>
-#include <osmocom/core/select.h>
-
-#include <osmocom/vty/vty.h>
-
-struct telnet_connection {
- struct llist_head entry;
- void *priv;
- struct osmo_fd fd;
- struct vty *vty;
- struct log_target *dbg;
-};
-
-
-int telnet_init(void *tall_ctx, void *priv, int port);
-
-#endif
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/vty/vector.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/vty/vector.h
deleted file mode 100644
index 22a184d..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/vty/vector.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Generic vector interface header.
- * Copyright (C) 1997, 98 Kunihiro Ishiguro
- *
- * This file is part of GNU Zebra.
- *
- * GNU Zebra is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2, or (at your option) any
- * later version.
- *
- * GNU Zebra 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 GNU Zebra; see the file COPYING. If not, write to the Free
- * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
- * 02111-1307, USA.
- */
-
-#ifndef _ZEBRA_VECTOR_H
-#define _ZEBRA_VECTOR_H
-
-/* struct for vector */
-struct _vector {
- unsigned int active; /* number of active slots */
- unsigned int alloced; /* number of allocated slot */
- void **index; /* index to data */
-};
-typedef struct _vector *vector;
-
-#define VECTOR_MIN_SIZE 1
-
-/* (Sometimes) usefull macros. This macro convert index expression to
- array expression. */
-/* Reference slot at given index, caller must ensure slot is active */
-#define vector_slot(V,I) ((V)->index[(I)])
-/* Number of active slots.
- * Note that this differs from vector_count() as it the count returned
- * will include any empty slots
- */
-#define vector_active(V) ((V)->active)
-
-/* Prototypes. */
-vector vector_init(unsigned int size);
-void vector_ensure(vector v, unsigned int num);
-int vector_empty_slot(vector v);
-int vector_set(vector v, void *val);
-int vector_set_index(vector v, unsigned int i, void *val);
-void vector_unset(vector v, unsigned int i);
-unsigned int vector_count(vector v);
-void vector_only_wrapper_free(vector v);
-void vector_only_index_free(void *index);
-void vector_free(vector v);
-vector vector_copy(vector v);
-
-void *vector_lookup(vector, unsigned int);
-void *vector_lookup_ensure(vector, unsigned int);
-
-extern void *tall_vty_vec_ctx;
-
-#endif /* _ZEBRA_VECTOR_H */
diff --git a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/vty/vty.h b/Src/osmoconbb/src/shared/libosmocore/include/osmocom/vty/vty.h
deleted file mode 100644
index 8035585..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/include/osmocom/vty/vty.h
+++ /dev/null
@@ -1,162 +0,0 @@
-#ifndef _VTY_H
-#define _VTY_H
-
-#include <stdio.h>
-#include <stdarg.h>
-
-/* GCC have printf type attribute check. */
-#ifdef __GNUC__
-#define VTY_PRINTF_ATTRIBUTE(a,b) __attribute__ ((__format__ (__printf__, a, b)))
-#else
-#define VTY_PRINTF_ATTRIBUTE(a,b)
-#endif /* __GNUC__ */
-
-/* Does the I/O error indicate that the operation should be retried later? */
-#define ERRNO_IO_RETRY(EN) \
- (((EN) == EAGAIN) || ((EN) == EWOULDBLOCK) || ((EN) == EINTR))
-
-/* Vty read buffer size. */
-#define VTY_READ_BUFSIZ 512
-
-#define VTY_BUFSIZ 512
-#define VTY_MAXHIST 20
-
-/* Vty events */
-enum event {
- VTY_SERV,
- VTY_READ,
- VTY_WRITE,
- VTY_CLOSED,
- VTY_TIMEOUT_RESET,
-#ifdef VTYSH
- VTYSH_SERV,
- VTYSH_READ,
- VTYSH_WRITE
-#endif /* VTYSH */
-};
-
-struct vty {
- FILE *file;
-
- /* private data, specified by creator */
- void *priv;
-
- /* File descripter of this vty. */
- int fd;
-
- /* Is this vty connect to file or not */
- enum { VTY_TERM, VTY_FILE, VTY_SHELL, VTY_SHELL_SERV } type;
-
- /* Node status of this vty */
- int node;
-
- /* Failure count */
- int fail;
-
- /* Output buffer. */
- struct buffer *obuf;
-
- /* Command input buffer */
- char *buf;
-
- /* Command cursor point */
- int cp;
-
- /* Command length */
- int length;
-
- /* Command max length. */
- int max;
-
- /* Histry of command */
- char *hist[VTY_MAXHIST];
-
- /* History lookup current point */
- int hp;
-
- /* History insert end point */
- int hindex;
-
- /* For current referencing point of interface, route-map,
- access-list etc... */
- void *index;
-
- /* For multiple level index treatment such as key chain and key. */
- void *index_sub;
-
- /* For escape character. */
- unsigned char escape;
-
- /* Current vty status. */
- enum { VTY_NORMAL, VTY_CLOSE, VTY_MORE, VTY_MORELINE } status;
-
- /* IAC handling: was the last character received the IAC
- * (interpret-as-command) escape character (and therefore the next
- * character will be the command code)? Refer to Telnet RFC 854. */
- unsigned char iac;
-
- /* IAC SB (option subnegotiation) handling */
- unsigned char iac_sb_in_progress;
- /* At the moment, we care only about the NAWS (window size) negotiation,
- * and that requires just a 5-character buffer (RFC 1073):
- * <NAWS char> <16-bit width> <16-bit height> */
-#define TELNET_NAWS_SB_LEN 5
- unsigned char sb_buf[TELNET_NAWS_SB_LEN];
- /* How many subnegotiation characters have we received? We just drop
- * those that do not fit in the buffer. */
- size_t sb_len;
-
- /* Window width/height. */
- int width;
- int height;
-
- /* Configure lines. */
- int lines;
-
- int monitor;
-
- /* In configure mode. */
- int config;
-};
-
-/* Small macro to determine newline is newline only or linefeed needed. */
-#define VTY_NEWLINE ((vty->type == VTY_TERM) ? "\r\n" : "\n")
-
-static inline char *vty_newline(struct vty *vty)
-{
- return VTY_NEWLINE;
-}
-
-struct vty_app_info {
- const char *name;
- const char *version;
- const char *copyright;
- void *tall_ctx;
- enum node_type (*go_parent_cb)(struct vty *vty);
- int (*is_config_node)(struct vty *vty, int node);
-};
-
-/* Prototypes. */
-void vty_init(struct vty_app_info *app_info);
-int vty_read_config_file(const char *file_name, void *priv);
-void vty_init_vtysh (void);
-void vty_reset (void);
-struct vty *vty_new (void);
-struct vty *vty_create (int vty_sock, void *priv);
-int vty_out (struct vty *, const char *, ...) VTY_PRINTF_ATTRIBUTE(2, 3);
-int vty_out_newline(struct vty *);
-int vty_read(struct vty *vty);
-//void vty_time_print (struct vty *, int);
-void vty_close (struct vty *);
-char *vty_get_cwd (void);
-void vty_log (const char *level, const char *proto, const char *fmt, va_list);
-int vty_config_lock (struct vty *);
-int vty_config_unlock (struct vty *);
-int vty_shell (struct vty *);
-int vty_shell_serv (struct vty *);
-void vty_hello (struct vty *);
-void *vty_current_index(struct vty *);
-int vty_current_node(struct vty *vty);
-
-extern void *tall_vty_ctx;
-#endif
diff --git a/Src/osmoconbb/src/shared/libosmocore/libosmocodec.pc.in b/Src/osmoconbb/src/shared/libosmocore/libosmocodec.pc.in
deleted file mode 100644
index 3030230..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/libosmocodec.pc.in
+++ /dev/null
@@ -1,11 +0,0 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: Osmocom Codec related utilities Library
-Description: C Utility Library
-Version: @VERSION@
-Libs: -L${libdir} -losmocodec
-Cflags: -I${includedir}/
-
diff --git a/Src/osmoconbb/src/shared/libosmocore/libosmocore.pc.in b/Src/osmoconbb/src/shared/libosmocore/libosmocore.pc.in
deleted file mode 100644
index 7c29869..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/libosmocore.pc.in
+++ /dev/null
@@ -1,11 +0,0 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: Osmocom Core Library
-Description: C Utility Library
-Version: @VERSION@
-Libs: -L${libdir} -losmocore
-Cflags: -I${includedir}/
-
diff --git a/Src/osmoconbb/src/shared/libosmocore/libosmogsm.pc.in b/Src/osmoconbb/src/shared/libosmocore/libosmogsm.pc.in
deleted file mode 100644
index 753bb3a..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/libosmogsm.pc.in
+++ /dev/null
@@ -1,11 +0,0 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: Osmocom GSM Core Library
-Description: GSM Core Library
-Version: @VERSION@
-Libs: -L${libdir} -losmogsm
-Cflags: -I${includedir}/
-
diff --git a/Src/osmoconbb/src/shared/libosmocore/libosmovty.pc.in b/Src/osmoconbb/src/shared/libosmocore/libosmovty.pc.in
deleted file mode 100644
index 2cc0b5f..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/libosmovty.pc.in
+++ /dev/null
@@ -1,11 +0,0 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: Osmocom VTY Interface Library
-Description: C Utility Library
-Version: @VERSION@
-Libs: -L${libdir} -losmovty
-Cflags: -I${includedir}/
-
diff --git a/Src/osmoconbb/src/shared/libosmocore/m4/DUMMY b/Src/osmoconbb/src/shared/libosmocore/m4/DUMMY
deleted file mode 100644
index fda557a..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/m4/DUMMY
+++ /dev/null
@@ -1 +0,0 @@
-Dummply placeholder.
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/Makefile.am b/Src/osmoconbb/src/shared/libosmocore/src/Makefile.am
deleted file mode 100644
index bbe6286..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/Makefile.am
+++ /dev/null
@@ -1,32 +0,0 @@
-SUBDIRS=. vty codec gsm
-
-# This is _NOT_ the library release version, it's an API version.
-# Please read Chapter 6 "Library interface versions" of the libtool documentation before making any modification
-LIBVERSION=2:0:0
-
-INCLUDES = $(all_includes) -I$(top_srcdir)/include
-AM_CFLAGS = -fPIC -Wall
-
-lib_LTLIBRARIES = libosmocore.la
-
-libosmocore_la_SOURCES = timer.c select.c signal.c msgb.c bits.c \
- bitvec.c statistics.c \
- write_queue.c utils.c socket.c \
- logging.c logging_syslog.c rate_ctr.c \
- gsmtap_util.c crc16.c panic.c backtrace.c \
- conv.c application.c
-
-if ENABLE_PLUGIN
-libosmocore_la_SOURCES += plugin.c
-libosmocore_la_LDFLAGS = -version-info $(LIBVERSION) -ldl
-else
-libosmocore_la_LDFLAGS = -version-info $(LIBVERSION)
-endif
-
-if ENABLE_TALLOC
-libosmocore_la_SOURCES += talloc.c
-endif
-
-if ENABLE_MSGFILE
-libosmocore_la_SOURCES += msgfile.c
-endif
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/application.c b/Src/osmoconbb/src/shared/libosmocore/src/application.c
deleted file mode 100644
index b7e943d..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/application.c
+++ /dev/null
@@ -1,102 +0,0 @@
-/* Utility functions to setup applications */
-/*
- * (C) 2010 by Harald Welte <laforge@gnumonks.org>
- * (C) 2011 by Holger Hans Peter Freyther
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <osmocom/core/application.h>
-#include <osmocom/core/logging.h>
-
-#include <signal.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <errno.h>
-#include <sys/stat.h>
-
-struct log_target *osmo_stderr_target;
-
-void osmo_init_ignore_signals(void)
-{
- /* Signals that by default would terminate */
- signal(SIGPIPE, SIG_IGN);
- signal(SIGALRM, SIG_IGN);
- signal(SIGHUP, SIG_IGN);
- signal(SIGIO, SIG_IGN);
-}
-
-int osmo_init_logging(const struct log_info *log_info)
-{
- log_init(log_info, NULL);
- osmo_stderr_target = log_target_create_stderr();
- if (!osmo_stderr_target)
- return -1;
-
- log_add_target(osmo_stderr_target);
- log_set_all_filter(osmo_stderr_target, 1);
- return 0;
-}
-
-int osmo_daemonize(void)
-{
- int rc;
- pid_t pid, sid;
-
- /* Check if parent PID == init, in which case we are already a daemon */
- if (getppid() == 1)
- return -EEXIST;
-
- /* Fork from the parent process */
- pid = fork();
- if (pid < 0) {
- /* some error happened */
- return pid;
- }
-
- if (pid > 0) {
- /* if we have received a positive PID, then we are the parent
- * and can exit */
- exit(0);
- }
-
- /* FIXME: do we really want this? */
- umask(0);
-
- /* Create a new session and set process group ID */
- sid = setsid();
- if (sid < 0)
- return sid;
-
- /* Change to the /tmp directory, which prevents the CWD from being locked
- * and unable to remove it */
- rc = chdir("/tmp");
- if (rc < 0)
- return rc;
-
- /* Redirect stdio to /dev/null */
-/* since C89/C99 says stderr is a macro, we can safely do this! */
-#ifdef stderr
- freopen("/dev/null", "r", stdin);
- freopen("/dev/null", "w", stdout);
- freopen("/dev/null", "w", stderr);
-#endif
-
- return 0;
-}
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/backtrace.c b/Src/osmoconbb/src/shared/libosmocore/src/backtrace.c
deleted file mode 100644
index dfe0305..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/backtrace.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * (C) 2008 by Daniel Willmann <daniel@totalueberwachung.de>
- * (C) 2009 by Holger Hans Peter Freyther <zecke@selfish.org>
- * (C) 2009-2010 by Harald Welte <laforge@gnumonks.org>
- * (C) 2010 by Nico Golde <nico@ngolde.de>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <osmocom/core/utils.h>
-#include "config.h"
-
-#ifdef HAVE_EXECINFO_H
-#include <execinfo.h>
-void osmo_generate_backtrace(void)
-{
- int i, nptrs;
- void *buffer[100];
- char **strings;
-
- nptrs = backtrace(buffer, ARRAY_SIZE(buffer));
- printf("backtrace() returned %d addresses\n", nptrs);
-
- strings = backtrace_symbols(buffer, nptrs);
- if (!strings)
- return;
-
- for (i = 1; i < nptrs; i++)
- printf("%s\n", strings[i]);
-
- free(strings);
-}
-#endif
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/bits.c b/Src/osmoconbb/src/shared/libosmocore/src/bits.c
deleted file mode 100644
index ff5d176..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/bits.c
+++ /dev/null
@@ -1,98 +0,0 @@
-
-#include <stdint.h>
-
-#include <osmocom/core/bits.h>
-
-/* convert unpacked bits to packed bits, return length in bytes */
-int osmo_ubit2pbit(pbit_t *out, const ubit_t *in, unsigned int num_bits)
-{
- unsigned int i;
- uint8_t curbyte = 0;
- pbit_t *outptr = out;
-
- for (i = 0; i < num_bits; i++) {
- uint8_t bitnum = 7 - (i % 8);
-
- curbyte |= (in[i] << bitnum);
-
- if(i % 8 == 7){
- *outptr++ = curbyte;
- curbyte = 0;
- }
- }
- /* we have a non-modulo-8 bitcount */
- if (i % 8)
- *outptr++ = curbyte;
-
- return outptr - out;
-}
-
-/* convert packed bits to unpacked bits, return length in bytes */
-int osmo_pbit2ubit(ubit_t *out, const pbit_t *in, unsigned int num_bits)
-{
- unsigned int i;
- ubit_t *cur = out;
- ubit_t *limit = out + num_bits;
-
- for (i = 0; i < (num_bits/8)+1; i++) {
- pbit_t byte = in[i];
- *cur++ = (byte >> 7) & 1;
- if (cur >= limit)
- break;
- *cur++ = (byte >> 6) & 1;
- if (cur >= limit)
- break;
- *cur++ = (byte >> 5) & 1;
- if (cur >= limit)
- break;
- *cur++ = (byte >> 4) & 1;
- if (cur >= limit)
- break;
- *cur++ = (byte >> 3) & 1;
- if (cur >= limit)
- break;
- *cur++ = (byte >> 2) & 1;
- if (cur >= limit)
- break;
- *cur++ = (byte >> 1) & 1;
- if (cur >= limit)
- break;
- *cur++ = (byte >> 0) & 1;
- if (cur >= limit)
- break;
- }
- return cur - out;
-}
-
-/* convert unpacked bits to packed bits (extended options but slower),
- * return length in bytes (max written ofs of output buffer + 1) */
-int osmo_ubit2pbit_ext(pbit_t *out, unsigned int out_ofs,
- const ubit_t *in, unsigned int in_ofs,
- unsigned int num_bits, int lsb_mode)
-{
- int i, op, bn;
- for (i=0; i<num_bits; i++) {
- op = out_ofs + i;
- bn = lsb_mode ? (op&7) : (7-(op&7));
- if (in[in_ofs+i])
- out[op>>3] |= 1 << bn;
- else
- out[op>>3] &= ~(1 << bn);
- }
- return ((out_ofs + num_bits - 1) >> 3) + 1;
-}
-
-/* convert packed bits to unpacked bits (extended options but slower),
- * return length in bytes (max written ofs of output buffer + 1) */
-int osmo_pbit2ubit_ext(ubit_t *out, unsigned int out_ofs,
- const pbit_t *in, unsigned int in_ofs,
- unsigned int num_bits, int lsb_mode)
-{
- int i, ip, bn;
- for (i=0; i<num_bits; i++) {
- ip = in_ofs + i;
- bn = lsb_mode ? (ip&7) : (7-(ip&7));
- out[out_ofs+i] = !!(in[ip>>3] & (1<<bn));
- }
- return out_ofs + num_bits;
-}
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/bitvec.c b/Src/osmoconbb/src/shared/libosmocore/src/bitvec.c
deleted file mode 100644
index 4fd3834..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/bitvec.c
+++ /dev/null
@@ -1,233 +0,0 @@
-/* bit vector utility routines */
-
-/* (C) 2009 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-
-#include <errno.h>
-#include <stdint.h>
-
-#include <osmocom/core/bitvec.h>
-
-#define BITNUM_FROM_COMP(byte, bit) ((byte*8)+bit)
-
-static inline unsigned int bytenum_from_bitnum(unsigned int bitnum)
-{
- unsigned int bytenum = bitnum / 8;
-
- return bytenum;
-}
-
-/* convert ZERO/ONE/L/H to a bitmask at given pos in a byte */
-static uint8_t bitval2mask(enum bit_value bit, uint8_t bitnum)
-{
- int bitval;
-
- switch (bit) {
- case ZERO:
- bitval = (0 << bitnum);
- break;
- case ONE:
- bitval = (1 << bitnum);
- break;
- case L:
- bitval = ((0x2b ^ (0 << bitnum)) & (1 << bitnum));
- break;
- case H:
- bitval = ((0x2b ^ (1 << bitnum)) & (1 << bitnum));
- break;
- default:
- return 0;
- }
- return bitval;
-}
-
-/* check if the bit is 0 or 1 for a given position inside a bitvec */
-enum bit_value bitvec_get_bit_pos(const struct bitvec *bv, unsigned int bitnr)
-{
- unsigned int bytenum = bytenum_from_bitnum(bitnr);
- unsigned int bitnum = 7 - (bitnr % 8);
- uint8_t bitval;
-
- if (bytenum >= bv->data_len)
- return -EINVAL;
-
- bitval = bitval2mask(ONE, bitnum);
-
- if (bv->data[bytenum] & bitval)
- return ONE;
-
- return ZERO;
-}
-
-/* check if the bit is L or H for a given position inside a bitvec */
-enum bit_value bitvec_get_bit_pos_high(const struct bitvec *bv,
- unsigned int bitnr)
-{
- unsigned int bytenum = bytenum_from_bitnum(bitnr);
- unsigned int bitnum = 7 - (bitnr % 8);
- uint8_t bitval;
-
- if (bytenum >= bv->data_len)
- return -EINVAL;
-
- bitval = bitval2mask(H, bitnum);
-
- if ((bv->data[bytenum] & (1 << bitnum)) == bitval)
- return H;
-
- return L;
-}
-
-/* get the Nth set bit inside the bit vector */
-unsigned int bitvec_get_nth_set_bit(const struct bitvec *bv, unsigned int n)
-{
- unsigned int i, k = 0;
-
- for (i = 0; i < bv->data_len*8; i++) {
- if (bitvec_get_bit_pos(bv, i) == ONE) {
- k++;
- if (k == n)
- return i;
- }
- }
-
- return 0;
-}
-
-/* set the bit at a given position inside a bitvec */
-int bitvec_set_bit_pos(struct bitvec *bv, unsigned int bitnr,
- enum bit_value bit)
-{
- unsigned int bytenum = bytenum_from_bitnum(bitnr);
- unsigned int bitnum = 7 - (bitnr % 8);
- uint8_t bitval;
-
- if (bytenum >= bv->data_len)
- return -EINVAL;
-
- /* first clear the bit */
- bitval = bitval2mask(ONE, bitnum);
- bv->data[bytenum] &= ~bitval;
-
- /* then set it to desired value */
- bitval = bitval2mask(bit, bitnum);
- bv->data[bytenum] |= bitval;
-
- return 0;
-}
-
-/* set the next bit inside a bitvec */
-int bitvec_set_bit(struct bitvec *bv, enum bit_value bit)
-{
- int rc;
-
- rc = bitvec_set_bit_pos(bv, bv->cur_bit, bit);
- if (!rc)
- bv->cur_bit++;
-
- return rc;
-}
-
-/* get the next bit (low/high) inside a bitvec */
-int bitvec_get_bit_high(struct bitvec *bv)
-{
- int rc;
-
- rc = bitvec_get_bit_pos_high(bv, bv->cur_bit);
- if (rc >= 0)
- bv->cur_bit++;
-
- return rc;
-}
-
-/* set multiple bits (based on array of bitvals) at current pos */
-int bitvec_set_bits(struct bitvec *bv, enum bit_value *bits, int count)
-{
- int i, rc;
-
- for (i = 0; i < count; i++) {
- rc = bitvec_set_bit(bv, bits[i]);
- if (rc)
- return rc;
- }
-
- return 0;
-}
-
-/* set multiple bits (based on numeric value) at current pos */
-int bitvec_set_uint(struct bitvec *bv, unsigned int ui, int num_bits)
-{
- int i, rc;
-
- for (i = 0; i < num_bits; i++) {
- int bit = 0;
- if (ui & (1 << (num_bits - i - 1)))
- bit = 1;
- rc = bitvec_set_bit(bv, bit);
- if (rc)
- return rc;
- }
-
- return 0;
-}
-
-/* get multiple bits (based on numeric value) from current pos */
-int bitvec_get_uint(struct bitvec *bv, int num_bits)
-{
- int i;
- unsigned int ui = 0;
-
- for (i = 0; i < num_bits; i++) {
- int bit = bitvec_get_bit_pos(bv, bv->cur_bit);
- if (bit < 0)
- return bit;
- if (bit)
- ui |= (1 << (num_bits - i - 1));
- bv->cur_bit++;
- }
-
- return ui;
-}
-
-/* pad all remaining bits up to num_bits */
-int bitvec_spare_padding(struct bitvec *bv, unsigned int up_to_bit)
-{
- unsigned int i;
-
- for (i = bv->cur_bit; i <= up_to_bit; i++)
- bitvec_set_bit(bv, L);
-
- return 0;
-}
-
-/* find first bit set in bit vector */
-int bitvec_find_bit_pos(const struct bitvec *bv, unsigned int n,
- enum bit_value val)
-{
- unsigned int i;
-
- for (i = n; i < bv->data_len*8; i++) {
- if (bitvec_get_bit_pos(bv, i) == val)
- return i;
- }
-
- return -1;
-}
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/codec/Makefile.am b/Src/osmoconbb/src/shared/libosmocore/src/codec/Makefile.am
deleted file mode 100644
index 5a54c42..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/codec/Makefile.am
+++ /dev/null
@@ -1,11 +0,0 @@
-# This is _NOT_ the library release version, it's an API version.
-# Please read Chapter 6 "Library interface versions" of the libtool documentation before making any modification
-LIBVERSION=0:0:0
-
-INCLUDES = $(all_includes) -I$(top_srcdir)/include
-AM_CFLAGS = -fPIC -Wall
-
-lib_LTLIBRARIES = libosmocodec.la
-
-libosmocodec_la_SOURCES = gsm610.c gsm620.c gsm660.c gsm690.c
-libosmocodec_la_LDFALGS = -version-info $(LIBVERSION)
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/codec/gsm610.c b/Src/osmoconbb/src/shared/libosmocore/src/codec/gsm610.c
deleted file mode 100644
index 09fbeb5..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/codec/gsm610.c
+++ /dev/null
@@ -1,294 +0,0 @@
-/* GSM 06.10 - GSM FR codec */
-
-/*
- * (C) 2010 Sylvain Munaut <tnt@246tNt.com>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-
-/* GSM FR - subjective importance bit ordering */
- /* This array encodes GSM 05.03 Table 2.
- * It's also GSM 06.10 Table A.2.1a
- *
- * It converts between serial parameter output by the encoder and the
- * order needed before channel encoding.
- */
-uint16_t gsm610_bitorder[260] = {
- 0, /* LARc0:5 */
- 47, /* Xmaxc0:5 */
- 103, /* Xmaxc1:5 */
- 159, /* Xmaxc2:5 */
- 215, /* Xmaxc3:5 */
- 1, /* LARc0:4 */
- 6, /* LARc1:5 */
- 12, /* LARc2:4 */
- 2, /* LARc0:3 */
- 7, /* LARc1:4 */
- 13, /* LARc2:3 */
- 17, /* LARc3:4 */
- 36, /* Nc0:6 */
- 92, /* Nc1:6 */
- 148, /* Nc2:6 */
- 204, /* Nc3:6 */
- 48, /* Xmaxc0:4 */
- 104, /* Xmaxc1:4 */
- 160, /* Xmaxc2:4 */
- 216, /* Xmaxc3:4 */
- 8, /* LARc1:3 */
- 22, /* LARc4:3 */
- 26, /* LARc5:3 */
- 37, /* Nc0:5 */
- 93, /* Nc1:5 */
- 149, /* Nc2:5 */
- 205, /* Nc3:5 */
- 38, /* Nc0:4 */
- 94, /* Nc1:4 */
- 150, /* Nc2:4 */
- 206, /* Nc3:4 */
- 39, /* Nc0:3 */
- 95, /* Nc1:3 */
- 151, /* Nc2:3 */
- 207, /* Nc3:3 */
- 40, /* Nc0:2 */
- 96, /* Nc1:2 */
- 152, /* Nc2:2 */
- 208, /* Nc3:2 */
- 49, /* Xmaxc0:3 */
- 105, /* Xmaxc1:3 */
- 161, /* Xmaxc2:3 */
- 217, /* Xmaxc3:3 */
- 3, /* LARc0:2 */
- 18, /* LARc3:3 */
- 30, /* LARc6:2 */
- 41, /* Nc0:1 */
- 97, /* Nc1:1 */
- 153, /* Nc2:1 */
- 209, /* Nc3:1 */
- 23, /* LARc4:2 */
- 27, /* LARc5:2 */
- 43, /* bc0:1 */
- 99, /* bc1:1 */
- 155, /* bc2:1 */
- 211, /* bc3:1 */
- 42, /* Nc0:0 */
- 98, /* Nc1:0 */
- 154, /* Nc2:0 */
- 210, /* Nc3:0 */
- 45, /* Mc0:1 */
- 101, /* Mc1:1 */
- 157, /* Mc2:1 */
- 213, /* Mc3:1 */
- 4, /* LARc0:1 */
- 9, /* LARc1:2 */
- 14, /* LARc2:2 */
- 33, /* LARc7:2 */
- 19, /* LARc3:2 */
- 24, /* LARc4:1 */
- 31, /* LARc6:1 */
- 44, /* bc0:0 */
- 100, /* bc1:0 */
- 156, /* bc2:0 */
- 212, /* bc3:0 */
- 50, /* Xmaxc0:2 */
- 106, /* Xmaxc1:2 */
- 162, /* Xmaxc2:2 */
- 218, /* Xmaxc3:2 */
- 53, /* xmc0_0:2 */
- 56, /* xmc0_1:2 */
- 59, /* xmc0_2:2 */
- 62, /* xmc0_3:2 */
- 65, /* xmc0_4:2 */
- 68, /* xmc0_5:2 */
- 71, /* xmc0_6:2 */
- 74, /* xmc0_7:2 */
- 77, /* xmc0_8:2 */
- 80, /* xmc0_9:2 */
- 83, /* xmc0_10:2 */
- 86, /* xmc0_11:2 */
- 89, /* xmc0_12:2 */
- 109, /* xmc1_0:2 */
- 112, /* xmc1_1:2 */
- 115, /* xmc1_2:2 */
- 118, /* xmc1_3:2 */
- 121, /* xmc1_4:2 */
- 124, /* xmc1_5:2 */
- 127, /* xmc1_6:2 */
- 130, /* xmc1_7:2 */
- 133, /* xmc1_8:2 */
- 136, /* xmc1_9:2 */
- 139, /* xmc1_10:2 */
- 142, /* xmc1_11:2 */
- 145, /* xmc1_12:2 */
- 165, /* xmc2_0:2 */
- 168, /* xmc2_1:2 */
- 171, /* xmc2_2:2 */
- 174, /* xmc2_3:2 */
- 177, /* xmc2_4:2 */
- 180, /* xmc2_5:2 */
- 183, /* xmc2_6:2 */
- 186, /* xmc2_7:2 */
- 189, /* xmc2_8:2 */
- 192, /* xmc2_9:2 */
- 195, /* xmc2_10:2 */
- 198, /* xmc2_11:2 */
- 201, /* xmc2_12:2 */
- 221, /* xmc3_0:2 */
- 224, /* xmc3_1:2 */
- 227, /* xmc3_2:2 */
- 230, /* xmc3_3:2 */
- 233, /* xmc3_4:2 */
- 236, /* xmc3_5:2 */
- 239, /* xmc3_6:2 */
- 242, /* xmc3_7:2 */
- 245, /* xmc3_8:2 */
- 248, /* xmc3_9:2 */
- 251, /* xmc3_10:2 */
- 254, /* xmc3_11:2 */
- 257, /* xmc3_12:2 */
- 46, /* Mc0:0 */
- 102, /* Mc1:0 */
- 158, /* Mc2:0 */
- 214, /* Mc3:0 */
- 51, /* Xmaxc0:1 */
- 107, /* Xmaxc1:1 */
- 163, /* Xmaxc2:1 */
- 219, /* Xmaxc3:1 */
- 54, /* xmc0_0:1 */
- 57, /* xmc0_1:1 */
- 60, /* xmc0_2:1 */
- 63, /* xmc0_3:1 */
- 66, /* xmc0_4:1 */
- 69, /* xmc0_5:1 */
- 72, /* xmc0_6:1 */
- 75, /* xmc0_7:1 */
- 78, /* xmc0_8:1 */
- 81, /* xmc0_9:1 */
- 84, /* xmc0_10:1 */
- 87, /* xmc0_11:1 */
- 90, /* xmc0_12:1 */
- 110, /* xmc1_0:1 */
- 113, /* xmc1_1:1 */
- 116, /* xmc1_2:1 */
- 119, /* xmc1_3:1 */
- 122, /* xmc1_4:1 */
- 125, /* xmc1_5:1 */
- 128, /* xmc1_6:1 */
- 131, /* xmc1_7:1 */
- 134, /* xmc1_8:1 */
- 137, /* xmc1_9:1 */
- 140, /* xmc1_10:1 */
- 143, /* xmc1_11:1 */
- 146, /* xmc1_12:1 */
- 166, /* xmc2_0:1 */
- 169, /* xmc2_1:1 */
- 172, /* xmc2_2:1 */
- 175, /* xmc2_3:1 */
- 178, /* xmc2_4:1 */
- 181, /* xmc2_5:1 */
- 184, /* xmc2_6:1 */
- 187, /* xmc2_7:1 */
- 190, /* xmc2_8:1 */
- 193, /* xmc2_9:1 */
- 196, /* xmc2_10:1 */
- 199, /* xmc2_11:1 */
- 202, /* xmc2_12:1 */
- 222, /* xmc3_0:1 */
- 225, /* xmc3_1:1 */
- 228, /* xmc3_2:1 */
- 231, /* xmc3_3:1 */
- 234, /* xmc3_4:1 */
- 237, /* xmc3_5:1 */
- 240, /* xmc3_6:1 */
- 243, /* xmc3_7:1 */
- 246, /* xmc3_8:1 */
- 249, /* xmc3_9:1 */
- 252, /* xmc3_10:1 */
- 255, /* xmc3_11:1 */
- 258, /* xmc3_12:1 */
- 5, /* LARc0:0 */
- 10, /* LARc1:1 */
- 15, /* LARc2:1 */
- 28, /* LARc5:1 */
- 32, /* LARc6:0 */
- 34, /* LARc7:1 */
- 35, /* LARc7:0 */
- 16, /* LARc2:0 */
- 20, /* LARc3:1 */
- 21, /* LARc3:0 */
- 25, /* LARc4:0 */
- 52, /* Xmaxc0:0 */
- 108, /* Xmaxc1:0 */
- 164, /* Xmaxc2:0 */
- 220, /* Xmaxc3:0 */
- 55, /* xmc0_0:0 */
- 58, /* xmc0_1:0 */
- 61, /* xmc0_2:0 */
- 64, /* xmc0_3:0 */
- 67, /* xmc0_4:0 */
- 70, /* xmc0_5:0 */
- 73, /* xmc0_6:0 */
- 76, /* xmc0_7:0 */
- 79, /* xmc0_8:0 */
- 82, /* xmc0_9:0 */
- 85, /* xmc0_10:0 */
- 88, /* xmc0_11:0 */
- 91, /* xmc0_12:0 */
- 111, /* xmc1_0:0 */
- 114, /* xmc1_1:0 */
- 117, /* xmc1_2:0 */
- 120, /* xmc1_3:0 */
- 123, /* xmc1_4:0 */
- 126, /* xmc1_5:0 */
- 129, /* xmc1_6:0 */
- 132, /* xmc1_7:0 */
- 135, /* xmc1_8:0 */
- 138, /* xmc1_9:0 */
- 141, /* xmc1_10:0 */
- 144, /* xmc1_11:0 */
- 147, /* xmc1_12:0 */
- 167, /* xmc2_0:0 */
- 170, /* xmc2_1:0 */
- 173, /* xmc2_2:0 */
- 176, /* xmc2_3:0 */
- 179, /* xmc2_4:0 */
- 182, /* xmc2_5:0 */
- 185, /* xmc2_6:0 */
- 188, /* xmc2_7:0 */
- 191, /* xmc2_8:0 */
- 194, /* xmc2_9:0 */
- 197, /* xmc2_10:0 */
- 200, /* xmc2_11:0 */
- 203, /* xmc2_12:0 */
- 223, /* xmc3_0:0 */
- 226, /* xmc3_1:0 */
- 229, /* xmc3_2:0 */
- 232, /* xmc3_3:0 */
- 235, /* xmc3_4:0 */
- 238, /* xmc3_5:0 */
- 241, /* xmc3_6:0 */
- 244, /* xmc3_7:0 */
- 247, /* xmc3_8:0 */
- 250, /* xmc3_9:0 */
- 253, /* xmc3_10:0 */
- 256, /* xmc3_11:0 */
- 259, /* xmc3_12:0 */
- 11, /* LARc1:0 */
- 29, /* LARc5:0 */
-};
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/codec/gsm620.c b/Src/osmoconbb/src/shared/libosmocore/src/codec/gsm620.c
deleted file mode 100644
index 09aca50..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/codec/gsm620.c
+++ /dev/null
@@ -1,262 +0,0 @@
-/* GSM 06.20 - GSM HR codec */
-
-/*
- * (C) 2010 Sylvain Munaut <tnt@246tNt.com>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-
-/* GSM HR unvoiced (mode=0) frames - subjective importance bit ordering */
- /* This array encode mapping between GSM 05.03 Table 3a (bits
- * ordering before channel coding on TCH) and GSM 06.20 Table B.1
- * (bit ordering on A-bis */
-uint16_t gsm620_unvoiced_bitorder[112] = {
- 3, /* R0:1 */
- 25, /* LPC 3:7 */
- 52, /* GSP 0-1:2 */
- 71, /* GSP 0-2:2 */
- 90, /* GSP 0-3:2 */
- 109, /* GSP 0-4:2 */
- 15, /* LPC 1:0 */
- 23, /* LPC 2:1 */
- 22, /* LPC 2:2 */
- 21, /* LPC 2:3 */
- 20, /* LPC 2:4 */
- 19, /* LPC 2:5 */
- 31, /* LPC 3:1 */
- 30, /* LPC 3:2 */
- 29, /* LPC 3:3 */
- 28, /* LPC 3:4 */
- 27, /* LPC 3:5 */
- 26, /* LPC 3:6 */
- 61, /* Code 1-2:0 */
- 68, /* Code 2-2:0 */
- 67, /* Code 2-2:1 */
- 66, /* Code 2-2:2 */
- 65, /* Code 2-2:3 */
- 64, /* Code 2-2:4 */
- 63, /* Code 2-2:5 */
- 62, /* Code 2-2:6 */
- 80, /* Code 1-3:0 */
- 79, /* Code 1-3:1 */
- 78, /* Code 1-3:2 */
- 77, /* Code 1-3:3 */
- 76, /* Code 1-3:4 */
- 75, /* Code 1-3:5 */
- 74, /* Code 1-3:6 */
- 84, /* Code 2-3:3 */
- 83, /* Code 2-3:4 */
- 82, /* Code 2-3:5 */
- 81, /* Code 2-3:6 */
- 32, /* LPC 3:0 */
- 4, /* R0:0 */
- 33, /* INT-LPC:0 */
- 60, /* Code 1-2:1 */
- 59, /* Code 1-2:2 */
- 58, /* Code 1-2:3 */
- 57, /* Code 1-2:4 */
- 56, /* Code 1-2:5 */
- 55, /* Code 1-2:6 */
- 49, /* Code 2-1:0 */
- 48, /* Code 2-1:1 */
- 47, /* Code 2-1:2 */
- 46, /* Code 2-1:3 */
- 45, /* Code 2-1:4 */
- 44, /* Code 2-1:5 */
- 43, /* Code 2-1:6 */
- 42, /* Code 1-1:0 */
- 41, /* Code 1-1:1 */
- 40, /* Code 1-1:2 */
- 39, /* Code 1-1:3 */
- 38, /* Code 1-1:4 */
- 37, /* Code 1-1:5 */
- 36, /* Code 1-1:6 */
- 111, /* GSP 0-4:0 */
- 92, /* GSP 0-3:0 */
- 73, /* GSP 0-2:0 */
- 54, /* GSP 0-1:0 */
- 24, /* LPC 2:0 */
- 110, /* GSP 0-4:1 */
- 91, /* GSP 0-3:1 */
- 72, /* GSP 0-2:1 */
- 53, /* GSP 0-1:1 */
- 14, /* LPC 1:1 */
- 13, /* LPC 1:2 */
- 12, /* LPC 1:3 */
- 11, /* LPC 1:4 */
- 10, /* LPC 1:5 */
- 108, /* GSP 0-4:3 */
- 89, /* GSP 0-3:3 */
- 70, /* GSP 0-2:3 */
- 51, /* GSP 0-1:3 */
- 18, /* LPC 2:6 */
- 17, /* LPC 2:7 */
- 16, /* LPC 2:8 */
- 107, /* GSP 0-4:4 */
- 88, /* GSP 0-3:4 */
- 69, /* GSP 0-2:4 */
- 50, /* GSP 0-1:4 */
- 9, /* LPC 1:6 */
- 8, /* LPC 1:7 */
- 7, /* LPC 1:8 */
- 6, /* LPC 1:9 */
- 2, /* R0:2 */
- 5, /* LPC 1:10 */
- 1, /* R0:3 */
- 0, /* R0:4 */
- 35, /* Mode:0 */
- 34, /* Mode:1 */
- 106, /* Code 2-4:0 */
- 105, /* Code 2-4:1 */
- 104, /* Code 2-4:2 */
- 103, /* Code 2-4:3 */
- 102, /* Code 2-4:4 */
- 101, /* Code 2-4:5 */
- 100, /* Code 2-4:6 */
- 99, /* Code 1-4:0 */
- 98, /* Code 1-4:1 */
- 97, /* Code 1-4:2 */
- 96, /* Code 1-4:3 */
- 95, /* Code 1-4:4 */
- 94, /* Code 1-4:5 */
- 93, /* Code 1-4:6 */
- 87, /* Code 2-3:0 */
- 86, /* Code 2-3:1 */
- 85, /* Code 2-3:2 */
-};
-
-/* GSM HR voiced (mode=1,2,3) frames - subjective importance bit ordering */
- /* This array encode mapping between GSM 05.03 Table 3b (bits
- * ordering before channel coding on TCH) and GSM 06.20 Table B.2
- * (bit ordering on A-bis */
-uint16_t gsm620_voiced_bitorder[112] = {
- 13, /* LPC 1:2 */
- 14, /* LPC 1:1 */
- 20, /* LPC 2:4 */
- 19, /* LPC 2:5 */
- 18, /* LPC 2:6 */
- 53, /* GSP 0-1:4 */
- 71, /* GSP 0-2:4 */
- 89, /* GSP 0-3:4 */
- 107, /* GSP 0-4:4 */
- 54, /* GSP 0-1:3 */
- 72, /* GSP 0-2:3 */
- 90, /* GSP 0-3:3 */
- 108, /* GSP 0-4:3 */
- 55, /* GSP 0-1:2 */
- 73, /* GSP 0-2:2 */
- 91, /* GSP 0-3:2 */
- 109, /* GSP 0-4:2 */
- 52, /* Code 1:0 */
- 51, /* Code 1:1 */
- 50, /* Code 1:2 */
- 49, /* Code 1:3 */
- 48, /* Code 1:4 */
- 47, /* Code 1:5 */
- 46, /* Code 1:6 */
- 45, /* Code 1:7 */
- 44, /* Code 1:8 */
- 65, /* Code 2:5 */
- 64, /* Code 2:6 */
- 63, /* Code 2:7 */
- 62, /* Code 2:8 */
- 70, /* Code 2:0 */
- 69, /* Code 2:1 */
- 68, /* Code 2:2 */
- 80, /* Code 3:8 */
- 66, /* Code 2:4 */
- 67, /* Code 2:3 */
- 56, /* GSP 0-1:1 */
- 74, /* GSP 0-2:1 */
- 92, /* GSP 0-3:1 */
- 110, /* GSP 0-4:1 */
- 57, /* GSP 0-1:0 */
- 75, /* GSP 0-2:0 */
- 93, /* GSP 0-3:0 */
- 111, /* GSP 0-4:0 */
- 33, /* INT-LPC:0 */
- 24, /* LPC 2:0 */
- 32, /* LPC 3:0 */
- 97, /* LAG 4:0 */
- 31, /* LPC 3:1 */
- 23, /* LPC 2:1 */
- 96, /* LAG 4:1 */
- 79, /* LAG 3:0 */
- 61, /* LAG 2:0 */
- 43, /* LAG 1:0 */
- 95, /* LAG 4:2 */
- 78, /* LAG 3:1 */
- 60, /* LAG 2:1 */
- 42, /* LAG 1:1 */
- 30, /* LPC 3:2 */
- 29, /* LPC 3:3 */
- 28, /* LPC 3:4 */
- 22, /* LPC 2:2 */
- 27, /* LPC 3:5 */
- 26, /* LPC 3:6 */
- 21, /* LPC 2:3 */
- 4, /* R0:0 */
- 25, /* LPC 3:7 */
- 15, /* LPC 1:0 */
- 94, /* LAG 4:3 */
- 77, /* LAG 3:2 */
- 59, /* LAG 2:2 */
- 41, /* LAG 1:2 */
- 3, /* R0:1 */
- 76, /* LAG 3:3 */
- 58, /* LAG 2:3 */
- 40, /* LAG 1:3 */
- 39, /* LAG 1:4 */
- 17, /* LPC 2:7 */
- 16, /* LPC 2:8 */
- 12, /* LPC 1:3 */
- 11, /* LPC 1:4 */
- 10, /* LPC 1:5 */
- 9, /* LPC 1:6 */
- 2, /* R0:2 */
- 38, /* LAG 1:5 */
- 37, /* LAG 1:6 */
- 36, /* LAG 1:7 */
- 8, /* LPC 1:7 */
- 7, /* LPC 1:8 */
- 6, /* LPC 1:9 */
- 5, /* LPC 1:10 */
- 1, /* R0:3 */
- 0, /* R0:4 */
- 35, /* Mode:0 */
- 34, /* Mode:1 */
- 106, /* Code 4:0 */
- 105, /* Code 4:1 */
- 104, /* Code 4:2 */
- 103, /* Code 4:3 */
- 102, /* Code 4:4 */
- 101, /* Code 4:5 */
- 100, /* Code 4:6 */
- 99, /* Code 4:7 */
- 98, /* Code 4:8 */
- 88, /* Code 3:0 */
- 87, /* Code 3:1 */
- 86, /* Code 3:2 */
- 85, /* Code 3:3 */
- 84, /* Code 3:4 */
- 83, /* Code 3:5 */
- 82, /* Code 3:6 */
- 81, /* Code 3:7 */
-};
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/codec/gsm660.c b/Src/osmoconbb/src/shared/libosmocore/src/codec/gsm660.c
deleted file mode 100644
index 4fff5ff..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/codec/gsm660.c
+++ /dev/null
@@ -1,256 +0,0 @@
-/* GSM 06.60 - GSM EFR Codec */
-
-/*
- * (C) 2010 Sylvain Munaut <tnt@246tNt.com>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-
-/* GSM EFR - subjective importance bit ordering */
- /* This array encodes GSM 05.03 Table 6.
- *
- * It converts between serial parameter output (as described in
- * GSM 06.60 Table 6 and GSM 05.03 Table 5) and the order needed
- * before channel encoding. CRC poly and bit repetition must be
- * applied prior to this table, as in GSM 05.03 3.1.1, to get 260
- * bits from a 244 bits raw EFR frame.
- */
-uint16_t gsm660_bitorder[260] = {
- 38, 39, 40, 41, 42, 43, /* 0 -> LTP-LAG 1: b8..b3 */
- 145, 146, 147, 148, 149, 150, /* 6 -> LTP-LAG 3: b8..b3 */
- 93, 94, /* 12 -> LTP-LAG 2: b5..b4 */
- 200, 201, /* 14 -> LTP-LAG 4: b5..b4 */
- 47, /* 16 -> LTP-GAIN 1: b3 */
- 88, /* 17 -> FCB-GAIN 1: b4 */
- 99, /* 18 -> LTP-GAIN 2: b3 */
- 140, /* 19 -> FCB-GAIN 2: b4 */
- 44, /* 20 -> LTP-LAG 1: b2 */
- 151, /* 21 -> LTP-LAG 3: b2 */
- 95, /* 22 -> LTP-LAG 2: b3 */
- 202, /* 23 -> LTP-LAG 4: b3 */
- 1, 2, /* 24 -> LPC 1: b5..b4 */
- 7, /* 26 -> LPC 2: b7 */
- 9, /* 27 -> LPC 2: b5 */
- 17, 18, /* 28 -> LPC 3: b6..b5 */
- 23, /* 30 -> LPC 3: b0 */
- 45, 46, /* 31 -> LTP-LAG 1: b1..b0 */
- 152, 153, /* 33 -> LTP-LAG 3: b1..b0 */
- 96, /* 35 -> LTP-LAG 2: b2 */
- 203, /* 36 -> LTP-LAG 4: b2 */
- 3, 4, /* 37 -> LPC 1: b3..b2 */
- 10, 11, /* 39 -> LPC 2: b4..b3 */
- 15, /* 41 -> LPC 3: b8 */
- 8, /* 42 -> LPC 2: b6 */
- 5, 6, /* 43 -> LPC 1: b1..b0 */
- 12, /* 45 -> LPC 2: b2 */
- 16, /* 46 -> LPC 3: b7 */
- 19, /* 47 -> LPC 3: b4 */
- 97, /* 48 -> LTP-LAG 2: b1 */
- 204, /* 49 -> LTP-LAG 4: b1 */
- 0, /* 50 -> LPC 1: b6 */
- 13, 14, /* 51 -> LPC 2: b1..b0 */
- 20, /* 53 -> LPC 3: b3 */
- 24, 25, /* 54 -> LPC 4: b7..b6 */
- 27, /* 56 -> LPC 4: b4 */
- 154, /* 57 -> LTP-GAIN 3: b3 */
- 206, /* 58 -> LTP-GAIN 4: b3 */
- 195, /* 59 -> FCB-GAIN 3: b4 */
- 247, /* 60 -> FCB-GAIN 4: b4 */
- 89, /* 61 -> FCB-GAIN 1: b3 */
- 141, /* 62 -> FCB-GAIN 2: b3 */
- 196, /* 63 -> FCB-GAIN 3: b3 */
- 248, /* 64 -> FCB-GAIN 4: b3 */
- 252, 253, 254, 255, 256, 257, 258, 259, /* 65 -> CRC-POLY: b7..b0 */
- 48, /* 73 -> LTP-GAIN 1: b2 */
- 100, /* 74 -> LTP-GAIN 2: b2 */
- 155, /* 75 -> LTP-GAIN 3: b2 */
- 207, /* 76 -> LTP-GAIN 4: b2 */
- 21, 22, /* 77 -> LPC 3: b2..b1 */
- 26, /* 79 -> LPC 4: b5 */
- 28, /* 80 -> LPC 4: b3 */
- 51, /* 81 -> PULSE 1_1: b3 */
- 55, /* 82 -> PULSE 1_2: b3 */
- 59, /* 83 -> PULSE 1_3: b3 */
- 63, /* 84 -> PULSE 1_4: b3 */
- 67, /* 85 -> PULSE 1_5: b3 */
- 103, /* 86 -> PULSE 2_1: b3 */
- 107, /* 87 -> PULSE 2_2: b3 */
- 111, /* 88 -> PULSE 2_3: b3 */
- 115, /* 89 -> PULSE 2_4: b3 */
- 119, /* 90 -> PULSE 2_5: b3 */
- 158, /* 91 -> PULSE 3_1: b3 */
- 162, /* 92 -> PULSE 3_2: b3 */
- 166, /* 93 -> PULSE 3_3: b3 */
- 170, /* 94 -> PULSE 3_4: b3 */
- 174, /* 95 -> PULSE 3_5: b3 */
- 210, /* 96 -> PULSE 4_1: b3 */
- 214, /* 97 -> PULSE 4_2: b3 */
- 218, /* 98 -> PULSE 4_3: b3 */
- 222, /* 99 -> PULSE 4_4: b3 */
- 226, /* 100 -> PULSE 4_5: b3 */
- 90, /* 101 -> FCB-GAIN 1: b2 */
- 142, /* 102 -> FCB-GAIN 2: b2 */
- 197, /* 103 -> FCB-GAIN 3: b2 */
- 249, /* 104 -> FCB-GAIN 4: b2 */
- 49, /* 105 -> LTP-GAIN 1: b1 */
- 101, /* 106 -> LTP-GAIN 2: b1 */
- 156, /* 107 -> LTP-GAIN 3: b1 */
- 208, /* 108 -> LTP-GAIN 4: b1 */
- 29, 30, 31, /* 109 -> LPC 4: b2..b0 */
- 32, 33, 34, 35, /* 112 -> LPC 5: b5..b2 */
- 98, /* 116 -> LTP-LAG 2: b0 */
- 205, /* 117 -> LTP-LAG 4: b0 */
- 52, /* 118 -> PULSE 1_1: b2 */
- 56, /* 119 -> PULSE 1_2: b2 */
- 60, /* 120 -> PULSE 1_3: b2 */
- 64, /* 121 -> PULSE 1_4: b2 */
- 68, /* 122 -> PULSE 1_5: b2 */
- 104, /* 123 -> PULSE 2_1: b2 */
- 108, /* 124 -> PULSE 2_2: b2 */
- 112, /* 125 -> PULSE 2_3: b2 */
- 116, /* 126 -> PULSE 2_4: b2 */
- 120, /* 127 -> PULSE 2_5: b2 */
- 159, /* 128 -> PULSE 3_1: b2 */
- 163, /* 129 -> PULSE 3_2: b2 */
- 167, /* 130 -> PULSE 3_3: b2 */
- 171, /* 131 -> PULSE 3_4: b2 */
- 175, /* 132 -> PULSE 3_5: b2 */
- 211, /* 133 -> PULSE 4_1: b2 */
- 215, /* 134 -> PULSE 4_2: b2 */
- 219, /* 135 -> PULSE 4_3: b2 */
- 223, /* 136 -> PULSE 4_4: b2 */
- 227, /* 137 -> PULSE 4_5: b2 */
- 53, /* 138 -> PULSE 1_1: b1 */
- 57, /* 139 -> PULSE 1_2: b1 */
- 61, /* 140 -> PULSE 1_3: b1 */
- 65, /* 141 -> PULSE 1_4: b1 */
- 105, /* 142 -> PULSE 2_1: b1 */
- 109, /* 143 -> PULSE 2_2: b1 */
- 113, /* 144 -> PULSE 2_3: b1 */
- 117, /* 145 -> PULSE 2_4: b1 */
- 160, /* 146 -> PULSE 3_1: b1 */
- 164, /* 147 -> PULSE 3_2: b1 */
- 168, /* 148 -> PULSE 3_3: b1 */
- 172, /* 149 -> PULSE 3_4: b1 */
- 212, /* 150 -> PULSE 4_1: b1 */
- 220, /* 151 -> PULSE 4_3: b1 */
- 224, /* 152 -> PULSE 4_4: b1 */
- 91, /* 153 -> FCB-GAIN 1: b1 */
- 143, /* 154 -> FCB-GAIN 2: b1 */
- 198, /* 155 -> FCB-GAIN 3: b1 */
- 250, /* 156 -> FCB-GAIN 4: b1 */
- 50, /* 157 -> LTP-GAIN 1: b0 */
- 102, /* 158 -> LTP-GAIN 2: b0 */
- 157, /* 159 -> LTP-GAIN 3: b0 */
- 209, /* 160 -> LTP-GAIN 4: b0 */
- 92, /* 161 -> FCB-GAIN 1: b0 */
- 144, /* 162 -> FCB-GAIN 2: b0 */
- 199, /* 163 -> FCB-GAIN 3: b0 */
- 251, /* 164 -> FCB-GAIN 4: b0 */
- 54, /* 165 -> PULSE 1_1: b0 */
- 58, /* 166 -> PULSE 1_2: b0 */
- 62, /* 167 -> PULSE 1_3: b0 */
- 66, /* 168 -> PULSE 1_4: b0 */
- 106, /* 169 -> PULSE 2_1: b0 */
- 110, /* 170 -> PULSE 2_2: b0 */
- 114, /* 171 -> PULSE 2_3: b0 */
- 118, /* 172 -> PULSE 2_4: b0 */
- 161, /* 173 -> PULSE 3_1: b0 */
- 165, /* 174 -> PULSE 3_2: b0 */
- 169, /* 175 -> PULSE 3_3: b0 */
- 173, /* 176 -> PULSE 3_4: b0 */
- 213, /* 177 -> PULSE 4_1: b0 */
- 221, /* 178 -> PULSE 4_3: b0 */
- 225, /* 179 -> PULSE 4_4: b0 */
- 36, 37, /* 180 -> LPC 5: b1..b0 */
- 69, /* 182 -> PULSE 1_5: b1 */
- 71, 72, /* 183 -> PULSE 1_5: b1..b1 */
- 121, /* 185 -> PULSE 2_5: b1 */
- 123, 124, /* 186 -> PULSE 2_5: b1..b1 */
- 176, /* 188 -> PULSE 3_5: b1 */
- 178, 179, /* 189 -> PULSE 3_5: b1..b1 */
- 228, /* 191 -> PULSE 4_5: b1 */
- 230, 231, /* 192 -> PULSE 4_5: b1..b1 */
- 216, 217, /* 194 -> PULSE 4_2: b1..b0 */
- 70, /* 196 -> PULSE 1_5: b0 */
- 122, /* 197 -> PULSE 2_5: b0 */
- 177, /* 198 -> PULSE 3_5: b0 */
- 229, /* 199 -> PULSE 4_5: b0 */
- 73, /* 200 -> PULSE 1_6: b2 */
- 76, /* 201 -> PULSE 1_7: b2 */
- 79, /* 202 -> PULSE 1_8: b2 */
- 82, /* 203 -> PULSE 1_9: b2 */
- 85, /* 204 -> PULSE 1_10: b2 */
- 125, /* 205 -> PULSE 2_6: b2 */
- 128, /* 206 -> PULSE 2_7: b2 */
- 131, /* 207 -> PULSE 2_8: b2 */
- 134, /* 208 -> PULSE 2_9: b2 */
- 137, /* 209 -> PULSE 2_10: b2 */
- 180, /* 210 -> PULSE 3_6: b2 */
- 183, /* 211 -> PULSE 3_7: b2 */
- 186, /* 212 -> PULSE 3_8: b2 */
- 189, /* 213 -> PULSE 3_9: b2 */
- 192, /* 214 -> PULSE 3_10: b2 */
- 232, /* 215 -> PULSE 4_6: b2 */
- 235, /* 216 -> PULSE 4_7: b2 */
- 238, /* 217 -> PULSE 4_8: b2 */
- 241, /* 218 -> PULSE 4_9: b2 */
- 244, /* 219 -> PULSE 4_10: b2 */
- 74, /* 220 -> PULSE 1_6: b1 */
- 77, /* 221 -> PULSE 1_7: b1 */
- 80, /* 222 -> PULSE 1_8: b1 */
- 83, /* 223 -> PULSE 1_9: b1 */
- 86, /* 224 -> PULSE 1_10: b1 */
- 126, /* 225 -> PULSE 2_6: b1 */
- 129, /* 226 -> PULSE 2_7: b1 */
- 132, /* 227 -> PULSE 2_8: b1 */
- 135, /* 228 -> PULSE 2_9: b1 */
- 138, /* 229 -> PULSE 2_10: b1 */
- 181, /* 230 -> PULSE 3_6: b1 */
- 184, /* 231 -> PULSE 3_7: b1 */
- 187, /* 232 -> PULSE 3_8: b1 */
- 190, /* 233 -> PULSE 3_9: b1 */
- 193, /* 234 -> PULSE 3_10: b1 */
- 233, /* 235 -> PULSE 4_6: b1 */
- 236, /* 236 -> PULSE 4_7: b1 */
- 239, /* 237 -> PULSE 4_8: b1 */
- 242, /* 238 -> PULSE 4_9: b1 */
- 245, /* 239 -> PULSE 4_10: b1 */
- 75, /* 240 -> PULSE 1_6: b0 */
- 78, /* 241 -> PULSE 1_7: b0 */
- 81, /* 242 -> PULSE 1_8: b0 */
- 84, /* 243 -> PULSE 1_9: b0 */
- 87, /* 244 -> PULSE 1_10: b0 */
- 127, /* 245 -> PULSE 2_6: b0 */
- 130, /* 246 -> PULSE 2_7: b0 */
- 133, /* 247 -> PULSE 2_8: b0 */
- 136, /* 248 -> PULSE 2_9: b0 */
- 139, /* 249 -> PULSE 2_10: b0 */
- 182, /* 250 -> PULSE 3_6: b0 */
- 185, /* 251 -> PULSE 3_7: b0 */
- 188, /* 252 -> PULSE 3_8: b0 */
- 191, /* 253 -> PULSE 3_9: b0 */
- 194, /* 254 -> PULSE 3_10: b0 */
- 234, /* 255 -> PULSE 4_6: b0 */
- 237, /* 256 -> PULSE 4_7: b0 */
- 240, /* 257 -> PULSE 4_8: b0 */
- 243, /* 258 -> PULSE 4_9: b0 */
- 246, /* 259 -> PULSE 4_10: b0 */
-};
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/codec/gsm690.c b/Src/osmoconbb/src/shared/libosmocore/src/codec/gsm690.c
deleted file mode 100644
index e5b9bd4..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/codec/gsm690.c
+++ /dev/null
@@ -1,210 +0,0 @@
-/* GSM 06.90 - GSM AMR Codec */
-
-/*
- * (C) 2010 Sylvain Munaut <tnt@246tNt.com>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-
-/*
- * These table map between the raw encoder parameter output and
- * the format used before channel coding. Both in GSM and in various
- * file/network format (same tables used in several specs).
- */
-
-/* AMR 12.2 kbits - subjective importance bit ordering */
- /* This array encodes GSM 05.03 Table 7
- * It's also TS 26.101 Table B.8
- */
-uint16_t gsm690_12_2_bitorder[244] = {
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
- 10, 11, 12, 13, 14, 23, 15, 16, 17, 18,
- 19, 20, 21, 22, 24, 25, 26, 27, 28, 38,
- 141, 39, 142, 40, 143, 41, 144, 42, 145, 43,
- 146, 44, 147, 45, 148, 46, 149, 47, 97, 150,
- 200, 48, 98, 151, 201, 49, 99, 152, 202, 86,
- 136, 189, 239, 87, 137, 190, 240, 88, 138, 191,
- 241, 91, 194, 92, 195, 93, 196, 94, 197, 95,
- 198, 29, 30, 31, 32, 33, 34, 35, 50, 100,
- 153, 203, 89, 139, 192, 242, 51, 101, 154, 204,
- 55, 105, 158, 208, 90, 140, 193, 243, 59, 109,
- 162, 212, 63, 113, 166, 216, 67, 117, 170, 220,
- 36, 37, 54, 53, 52, 58, 57, 56, 62, 61,
- 60, 66, 65, 64, 70, 69, 68, 104, 103, 102,
- 108, 107, 106, 112, 111, 110, 116, 115, 114, 120,
- 119, 118, 157, 156, 155, 161, 160, 159, 165, 164,
- 163, 169, 168, 167, 173, 172, 171, 207, 206, 205,
- 211, 210, 209, 215, 214, 213, 219, 218, 217, 223,
- 222, 221, 73, 72, 71, 76, 75, 74, 79, 78,
- 77, 82, 81, 80, 85, 84, 83, 123, 122, 121,
- 126, 125, 124, 129, 128, 127, 132, 131, 130, 135,
- 134, 133, 176, 175, 174, 179, 178, 177, 182, 181,
- 180, 185, 184, 183, 188, 187, 186, 226, 225, 224,
- 229, 228, 227, 232, 231, 230, 235, 234, 233, 238,
- 237, 236, 96, 199,
-};
-
-/* AMR 10.2 kbits - subjective importance bit ordering */
- /* This array encodes GSM 05.03 Table 8
- * It's also TS 26.101 Table B.7
- */
-uint16_t gsm690_10_2_bitorder[204] = {
- 7, 6, 5, 4, 3, 2, 1, 0, 16, 15,
- 14, 13, 12, 11, 10, 9, 8, 26, 27, 28,
- 29, 30, 31, 115, 116, 117, 118, 119, 120, 72,
- 73, 161, 162, 65, 68, 69, 108, 111, 112, 154,
- 157, 158, 197, 200, 201, 32, 33, 121, 122, 74,
- 75, 163, 164, 66, 109, 155, 198, 19, 23, 21,
- 22, 18, 17, 20, 24, 25, 37, 36, 35, 34,
- 80, 79, 78, 77, 126, 125, 124, 123, 169, 168,
- 167, 166, 70, 67, 71, 113, 110, 114, 159, 156,
- 160, 202, 199, 203, 76, 165, 81, 82, 92, 91,
- 93, 83, 95, 85, 84, 94, 101, 102, 96, 104,
- 86, 103, 87, 97, 127, 128, 138, 137, 139, 129,
- 141, 131, 130, 140, 147, 148, 142, 150, 132, 149,
- 133, 143, 170, 171, 181, 180, 182, 172, 184, 174,
- 173, 183, 190, 191, 185, 193, 175, 192, 176, 186,
- 38, 39, 49, 48, 50, 40, 52, 42, 41, 51,
- 58, 59, 53, 61, 43, 60, 44, 54, 194, 179,
- 189, 196, 177, 195, 178, 187, 188, 151, 136, 146,
- 153, 134, 152, 135, 144, 145, 105, 90, 100, 107,
- 88, 106, 89, 98, 99, 62, 47, 57, 64, 45,
- 63, 46, 55, 56,
-};
-
-/* AMR 7.95 kbits - subjective importance bit ordering */
- /* This array encodes GSM 05.03 Table 9
- * It's also TS 26.101 Table B.6
- */
-uint16_t gsm690_7_95_bitorder[159] = {
- 8, 7, 6, 5, 4, 3, 2, 14, 16, 9,
- 10, 12, 13, 15, 11, 17, 20, 22, 24, 23,
- 19, 18, 21, 56, 88, 122, 154, 57, 89, 123,
- 155, 58, 90, 124, 156, 52, 84, 118, 150, 53,
- 85, 119, 151, 27, 93, 28, 94, 29, 95, 30,
- 96, 31, 97, 61, 127, 62, 128, 63, 129, 59,
- 91, 125, 157, 32, 98, 64, 130, 1, 0, 25,
- 26, 33, 99, 34, 100, 65, 131, 66, 132, 54,
- 86, 120, 152, 60, 92, 126, 158, 55, 87, 121,
- 153, 117, 116, 115, 46, 78, 112, 144, 43, 75,
- 109, 141, 40, 72, 106, 138, 36, 68, 102, 134,
- 114, 149, 148, 147, 146, 83, 82, 81, 80, 51,
- 50, 49, 48, 47, 45, 44, 42, 39, 35, 79,
- 77, 76, 74, 71, 67, 113, 111, 110, 108, 105,
- 101, 145, 143, 142, 140, 137, 133, 41, 73, 107,
- 139, 37, 69, 103, 135, 38, 70, 104, 136,
-};
-
-/* AMR 7.4 kbits - subjective importance bit ordering */
- /* This array encodes GSM 05.03 Table 10
- * It's also TS 26.101 Table B.5
- */
-uint16_t gsm690_7_4_bitorder[148] = {
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
- 10, 11, 12, 13, 14, 15, 16, 26, 87, 27,
- 88, 28, 89, 29, 90, 30, 91, 51, 80, 112,
- 141, 52, 81, 113, 142, 54, 83, 115, 144, 55,
- 84, 116, 145, 58, 119, 59, 120, 21, 22, 23,
- 17, 18, 19, 31, 60, 92, 121, 56, 85, 117,
- 146, 20, 24, 25, 50, 79, 111, 140, 57, 86,
- 118, 147, 49, 78, 110, 139, 48, 77, 53, 82,
- 114, 143, 109, 138, 47, 76, 108, 137, 32, 33,
- 61, 62, 93, 94, 122, 123, 41, 42, 43, 44,
- 45, 46, 70, 71, 72, 73, 74, 75, 102, 103,
- 104, 105, 106, 107, 131, 132, 133, 134, 135, 136,
- 34, 63, 95, 124, 35, 64, 96, 125, 36, 65,
- 97, 126, 37, 66, 98, 127, 38, 67, 99, 128,
- 39, 68, 100, 129, 40, 69, 101, 130,
-};
-
-/* AMR 6.7 kbits - subjective importance bit ordering */
- /* This array encodes GSM 05.03 Table 11
- * It's also TS 26.101 Table B.4
- */
-uint16_t gsm690_6_7_bitorder[134] = {
- 0, 1, 4, 3, 5, 6, 13, 7, 2, 8,
- 9, 11, 15, 12, 14, 10, 28, 82, 29, 83,
- 27, 81, 26, 80, 30, 84, 16, 55, 109, 56,
- 110, 31, 85, 57, 111, 48, 73, 102, 127, 32,
- 86, 51, 76, 105, 130, 52, 77, 106, 131, 58,
- 112, 33, 87, 19, 23, 53, 78, 107, 132, 21,
- 22, 18, 17, 20, 24, 25, 50, 75, 104, 129,
- 47, 72, 101, 126, 54, 79, 108, 133, 46, 71,
- 100, 125, 128, 103, 74, 49, 45, 70, 99, 124,
- 42, 67, 96, 121, 39, 64, 93, 118, 38, 63,
- 92, 117, 35, 60, 89, 114, 34, 59, 88, 113,
- 44, 69, 98, 123, 43, 68, 97, 122, 41, 66,
- 95, 120, 40, 65, 94, 119, 37, 62, 91, 116,
- 36, 61, 90, 115,
-};
-
-/* AMR 5.9 kbits - subjective importance bit ordering */
- /* This array encodes GSM 05.03 Table 12
- * It's also TS 26.101 Table B.3
- */
-uint16_t gsm690_5_9_bitorder[118] = {
- 0, 1, 4, 5, 3, 6, 7, 2, 13, 15,
- 8, 9, 11, 12, 14, 10, 16, 28, 74, 29,
- 75, 27, 73, 26, 72, 30, 76, 51, 97, 50,
- 71, 96, 117, 31, 77, 52, 98, 49, 70, 95,
- 116, 53, 99, 32, 78, 33, 79, 48, 69, 94,
- 115, 47, 68, 93, 114, 46, 67, 92, 113, 19,
- 21, 23, 22, 18, 17, 20, 24, 111, 43, 89,
- 110, 64, 65, 44, 90, 25, 45, 66, 91, 112,
- 54, 100, 40, 61, 86, 107, 39, 60, 85, 106,
- 36, 57, 82, 103, 35, 56, 81, 102, 34, 55,
- 80, 101, 42, 63, 88, 109, 41, 62, 87, 108,
- 38, 59, 84, 105, 37, 58, 83, 104,
-};
-
-/* AMR 5.15 kbits - subjective importance bit ordering */
- /* This array encodes GSM 05.03 Table 13
- * It's also TS 26.101 Table B.2
- */
-uint16_t gsm690_5_15_bitorder[103] = {
- 7, 6, 5, 4, 3, 2, 1, 0, 15, 14,
- 13, 12, 11, 10, 9, 8, 23, 24, 25, 26,
- 27, 46, 65, 84, 45, 44, 43, 64, 63, 62,
- 83, 82, 81, 102, 101, 100, 42, 61, 80, 99,
- 28, 47, 66, 85, 18, 41, 60, 79, 98, 29,
- 48, 67, 17, 20, 22, 40, 59, 78, 97, 21,
- 30, 49, 68, 86, 19, 16, 87, 39, 38, 58,
- 57, 77, 35, 54, 73, 92, 76, 96, 95, 36,
- 55, 74, 93, 32, 51, 33, 52, 70, 71, 89,
- 90, 31, 50, 69, 88, 37, 56, 75, 94, 34,
- 53, 72, 91,
-};
-
-/* AMR 4.75 kbits - subjective importance bit ordering */
- /* This array encodes GSM 05.03 Table 14
- * It's also TS 26.101 Table B.1
- */
-uint16_t gsm690_4_75_bitorder[95] = {
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
- 10, 11, 12, 13, 14, 15, 23, 24, 25, 26,
- 27, 28, 48, 49, 61, 62, 82, 83, 47, 46,
- 45, 44, 81, 80, 79, 78, 17, 18, 20, 22,
- 77, 76, 75, 74, 29, 30, 43, 42, 41, 40,
- 38, 39, 16, 19, 21, 50, 51, 59, 60, 63,
- 64, 72, 73, 84, 85, 93, 94, 32, 33, 35,
- 36, 53, 54, 56, 57, 66, 67, 69, 70, 87,
- 88, 90, 91, 34, 55, 68, 89, 37, 58, 71,
- 92, 31, 52, 65, 86,
-};
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/conv.c b/Src/osmoconbb/src/shared/libosmocore/src/conv.c
deleted file mode 100644
index 70bdffb..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/conv.c
+++ /dev/null
@@ -1,496 +0,0 @@
-/*
- * conv.c
- *
- * Generic convolutional encoding / decoding
- *
- * Copyright (C) 2011 Sylvain Munaut <tnt@246tNt.com>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include <alloca.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <osmocom/core/bits.h>
-#include <osmocom/core/conv.h>
-
-
-/* ------------------------------------------------------------------------ */
-/* Encoding */
-/* ------------------------------------------------------------------------ */
-
-void
-osmo_conv_encode_init(struct osmo_conv_encoder *encoder,
- const struct osmo_conv_code *code)
-{
- memset(encoder, 0x00, sizeof(struct osmo_conv_encoder));
- encoder->code = code;
-}
-
-static inline int
-_conv_encode_do_output(struct osmo_conv_encoder *encoder,
- uint8_t out, ubit_t *output)
-{
- const struct osmo_conv_code *code = encoder->code;
- int o_idx = 0;
- int j;
-
- if (code->puncture) {
- for (j=0; j<code->N; j++)
- {
- int bit_no = code->N - j - 1;
- int r_idx = encoder->i_idx * code->N + j;
-
- if (code->puncture[encoder->p_idx] == r_idx)
- encoder->p_idx++;
- else
- output[o_idx++] = (out >> bit_no) & 1;
- }
- } else {
- for (j=0; j<code->N; j++)
- {
- int bit_no = code->N - j - 1;
- output[o_idx++] = (out >> bit_no) & 1;
- }
- }
-
- return o_idx;
-}
-
-int
-osmo_conv_encode_raw(struct osmo_conv_encoder *encoder,
- const ubit_t *input, ubit_t *output, int n)
-{
- const struct osmo_conv_code *code = encoder->code;
- uint8_t state;
- int i;
- int o_idx;
-
- o_idx = 0;
- state = encoder->state;
-
- for (i=0; i<n; i++) {
- int bit = input[i];
- uint8_t out;
-
- out = code->next_output[state][bit];
- state = code->next_state[state][bit];
-
- o_idx += _conv_encode_do_output(encoder, out, &output[o_idx]);
-
- encoder->i_idx++;
- }
-
- encoder->state = state;
-
- return o_idx;
-}
-
-int
-osmo_conv_encode_finish(struct osmo_conv_encoder *encoder,
- ubit_t *output)
-{
- const struct osmo_conv_code *code = encoder->code;
- uint8_t state;
- int n;
- int i;
- int o_idx;
-
- n = code->K - 1;
-
- o_idx = 0;
- state = encoder->state;
-
- for (i=0; i<n; i++) {
- uint8_t out;
-
- if (code->next_term_output) {
- out = code->next_term_output[state];
- state = code->next_term_state[state];
- } else {
- out = code->next_output[state][0];
- state = code->next_state[state][0];
- }
-
- o_idx += _conv_encode_do_output(encoder, out, &output[o_idx]);
-
- encoder->i_idx++;
- }
-
- encoder->state = state;
-
- return o_idx;
-}
-
-int
-osmo_conv_encode(const struct osmo_conv_code *code,
- const ubit_t *input, ubit_t *output)
-{
- struct osmo_conv_encoder encoder;
- int l;
-
- osmo_conv_encode_init(&encoder, code);
- l = osmo_conv_encode_raw(&encoder, input, output, code->len);
- l += osmo_conv_encode_finish(&encoder, &output[l]);
-
- return l;
-}
-
-
-/* ------------------------------------------------------------------------ */
-/* Decoding (viterbi) */
-/* ------------------------------------------------------------------------ */
-
-#define MAX_AE 0x00ffffff
-
-void
-osmo_conv_decode_init(struct osmo_conv_decoder *decoder,
- const struct osmo_conv_code *code, int len)
-{
- int n_states;
-
- /* Init */
- if (len <= 0)
- len = code->len;
-
- n_states = 1 << (code->K - 1);
-
- memset(decoder, 0x00, sizeof(struct osmo_conv_decoder));
-
- decoder->code = code;
- decoder->n_states = n_states;
- decoder->len = len;
-
- /* Allocate arrays */
- decoder->ae = malloc(sizeof(unsigned int) * n_states);
- decoder->ae_next = malloc(sizeof(unsigned int) * n_states);
-
- decoder->state_history = malloc(sizeof(uint8_t) * n_states * (len + decoder->code->K - 1));
-
- /* Classic reset */
- osmo_conv_decode_reset(decoder);
-}
-
-void
-osmo_conv_decode_reset(struct osmo_conv_decoder *decoder)
-{
- int i;
-
- /* Reset indexes */
- decoder->o_idx = 0;
- decoder->p_idx = 0;
-
- /* Initial error (only state 0 is valid) */
- decoder->ae[0] = 0;
- for (i=1; i<decoder->n_states; i++) {
- decoder->ae[i] = MAX_AE;
- }
-}
-
-void
-osmo_conv_decode_deinit(struct osmo_conv_decoder *decoder)
-{
- free(decoder->ae);
- free(decoder->ae_next);
- free(decoder->state_history);
-
- memset(decoder, 0x00, sizeof(struct osmo_conv_decoder));
-}
-
-int
-osmo_conv_decode_scan(struct osmo_conv_decoder *decoder,
- const sbit_t *input, int n)
-{
- const struct osmo_conv_code *code = decoder->code;
-
- int i, s, b, j;
-
- int n_states;
- unsigned int *ae;
- unsigned int *ae_next;
- uint8_t *state_history;
- sbit_t *in_sym;
-
- int i_idx, p_idx;
-
- /* Prepare */
- n_states = decoder->n_states;
-
- ae = decoder->ae;
- ae_next = decoder->ae_next;
- state_history = &decoder->state_history[n_states * decoder->o_idx];
-
- in_sym = alloca(sizeof(sbit_t) * code->N);
-
- i_idx = 0;
- p_idx = decoder->p_idx;
-
- /* Scan the treillis */
- for (i=0; i<n; i++)
- {
- /* Reset next accumulated error */
- for (s=0; s<n_states; s++) {
- ae_next[s] = MAX_AE;
- }
-
- /* Get input */
- if (code->puncture) {
- /* Hard way ... */
- for (j=0; j<code->N; j++) {
- int idx = ((decoder->o_idx + i) * code->N) + j;
- if (idx == code->puncture[p_idx]) {
- in_sym[j] = 0; /* Undefined */
- p_idx++;
- } else {
- in_sym[j] = input[i_idx];
- i_idx++;
- }
- }
- } else {
- /* Easy, just copy N bits */
- memcpy(in_sym, &input[i_idx], code->N);
- i_idx += code->N;
- }
-
- /* Scan all state */
- for (s=0; s<n_states; s++)
- {
- /* Scan possible input bits */
- for (b=0; b<2; b++)
- {
- int nae, ov, e;
- uint8_t m;
-
- /* Next output and state */
- uint8_t out = code->next_output[s][b];
- uint8_t state = code->next_state[s][b];
-
- /* New error for this path */
- nae = ae[s]; /* start from last error */
- m = 1 << (code->N - 1); /* mask for 'out' bit selection */
-
- for (j=0; j<code->N; j++) {
- ov = (out & m) ? -127 : 127; /* sbit_t value for it */
- e = ((int)in_sym[j]) - ov; /* raw error for this bit */
- nae += (e * e) >> 9; /* acc the squared/scaled value */
- m >>= 1; /* next mask bit */
- }
-
- /* Is it survivor ? */
- if (ae_next[state] > nae) {
- ae_next[state] = nae;
- state_history[(n_states * i) + state] = s;
- }
- }
- }
-
- /* Copy accumulated error */
- memcpy(ae, ae_next, sizeof(unsigned int) * n_states);
- }
-
- /* Update decoder state */
- decoder->p_idx = p_idx;
- decoder->o_idx += n;
-
- return i_idx;
-}
-
-int
-osmo_conv_decode_finish(struct osmo_conv_decoder *decoder,
- const sbit_t *input)
-{
- const struct osmo_conv_code *code = decoder->code;
-
- int i, s, j;
-
- int n_states;
- unsigned int *ae;
- unsigned int *ae_next;
- uint8_t *state_history;
- sbit_t *in_sym;
-
- int i_idx, p_idx;
-
- /* Prepare */
- n_states = decoder->n_states;
-
- ae = decoder->ae;
- ae_next = decoder->ae_next;
- state_history = &decoder->state_history[n_states * decoder->o_idx];
-
- in_sym = alloca(sizeof(sbit_t) * code->N);
-
- i_idx = 0;
- p_idx = decoder->p_idx;
-
- /* Scan the treillis */
- for (i=0; i<code->K-1; i++)
- {
- /* Reset next accumulated error */
- for (s=0; s<n_states; s++) {
- ae_next[s] = MAX_AE;
- }
-
- /* Get input */
- if (code->puncture) {
- /* Hard way ... */
- for (j=0; j<code->N; j++) {
- int idx = ((decoder->o_idx + i) * code->N) + j;
- if (idx == code->puncture[p_idx]) {
- in_sym[j] = 0; /* Undefined */
- p_idx++;
- } else {
- in_sym[j] = input[i_idx];
- i_idx++;
- }
- }
- } else {
- /* Easy, just copy N bits */
- memcpy(in_sym, &input[i_idx], code->N);
- i_idx += code->N;
- }
-
- /* Scan all state */
- for (s=0; s<n_states; s++)
- {
- int nae, ov, e;
- uint8_t m;
-
- /* Next output and state */
- uint8_t out;
- uint8_t state;
-
- if (code->next_term_output) {
- out = code->next_term_output[s];
- state = code->next_term_state[s];
- } else {
- out = code->next_output[s][0];
- state = code->next_state[s][0];
- }
-
- /* New error for this path */
- nae = ae[s]; /* start from last error */
- m = 1 << (code->N - 1); /* mask for 'out' bit selection */
-
- for (j=0; j<code->N; j++) {
- int is = (int)in_sym[j];
- if (is) {
- ov = (out & m) ? -127 : 127; /* sbit_t value for it */
- e = is - ov; /* raw error for this bit */
- nae += (e * e) >> 9; /* acc the squared/scaled value */
- }
- m >>= 1; /* next mask bit */
- }
-
- /* Is it survivor ? */
- if (ae_next[state] > nae) {
- ae_next[state] = nae;
- state_history[(n_states * i) + state] = s;
- }
- }
-
- /* Copy accumulated error */
- memcpy(ae, ae_next, sizeof(unsigned int) * n_states);
- }
-
- /* Update decoder state */
- decoder->p_idx = p_idx;
- decoder->o_idx += code->K - 1;
-
- return i_idx;
-}
-
-int
-osmo_conv_decode_get_output(struct osmo_conv_decoder *decoder,
- ubit_t *output, int has_finish)
-{
- const struct osmo_conv_code *code = decoder->code;
-
- int min_ae;
- uint8_t min_state, cur_state;
- int i, s, n;
-
- uint8_t *sh_ptr;
-
- /* Find state with least error */
- min_ae = MAX_AE;
- min_state = 0xff;
-
- for (s=0; s<decoder->n_states; s++)
- {
- if (decoder->ae[s] < min_ae) {
- min_ae = decoder->ae[s];
- min_state = s;
- }
- }
-
- if (min_state == 0xff)
- return -1;
-
- /* Traceback */
- cur_state = min_state;
-
- n = decoder->o_idx;
-
- sh_ptr = &decoder->state_history[decoder->n_states * (n-1)];
-
- /* No output for the K-1 termination input bits */
- if (has_finish) {
- for (i=0; i<code->K-1; i++) {
- cur_state = sh_ptr[cur_state];
- sh_ptr -= decoder->n_states;
- }
- n -= code->K - 1;
- }
-
- /* Generate output backward */
- for (i=n-1; i>=0; i--)
- {
- min_state = cur_state;
- cur_state = sh_ptr[cur_state];
-
- sh_ptr -= decoder->n_states;
-
- if (code->next_state[cur_state][0] == min_state)
- output[i] = 0;
- else
- output[i] = 1;
- }
-
- return min_ae;
-}
-
-int
-osmo_conv_decode(const struct osmo_conv_code *code,
- const sbit_t *input, ubit_t *output)
-{
- struct osmo_conv_decoder decoder;
- int rv, l;
-
- osmo_conv_decode_init(&decoder, code, 0);
-
- l = osmo_conv_decode_scan(&decoder, input, code->len);
- l = osmo_conv_decode_finish(&decoder, &input[l]);
-
- rv = osmo_conv_decode_get_output(&decoder, output, 1);
-
- osmo_conv_decode_deinit(&decoder);
-
- return rv;
-}
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/crc16.c b/Src/osmoconbb/src/shared/libosmocore/src/crc16.c
deleted file mode 100644
index 2741cf5..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/crc16.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * This was copied from the linux kernel and adjusted for our types.
- */
-/*
- * crc16.c
- *
- * This source code is licensed under the GNU General Public License,
- * Version 2. See the file COPYING for more details.
- */
-
-#include <osmocom/core/crc16.h>
-
-/** CRC table for the CRC-16. The poly is 0x8005 (x^16 + x^15 + x^2 + 1) */
-uint16_t const osmo_crc16_table[256] = {
- 0x0000, 0xC0C1, 0xC181, 0x0140, 0xC301, 0x03C0, 0x0280, 0xC241,
- 0xC601, 0x06C0, 0x0780, 0xC741, 0x0500, 0xC5C1, 0xC481, 0x0440,
- 0xCC01, 0x0CC0, 0x0D80, 0xCD41, 0x0F00, 0xCFC1, 0xCE81, 0x0E40,
- 0x0A00, 0xCAC1, 0xCB81, 0x0B40, 0xC901, 0x09C0, 0x0880, 0xC841,
- 0xD801, 0x18C0, 0x1980, 0xD941, 0x1B00, 0xDBC1, 0xDA81, 0x1A40,
- 0x1E00, 0xDEC1, 0xDF81, 0x1F40, 0xDD01, 0x1DC0, 0x1C80, 0xDC41,
- 0x1400, 0xD4C1, 0xD581, 0x1540, 0xD701, 0x17C0, 0x1680, 0xD641,
- 0xD201, 0x12C0, 0x1380, 0xD341, 0x1100, 0xD1C1, 0xD081, 0x1040,
- 0xF001, 0x30C0, 0x3180, 0xF141, 0x3300, 0xF3C1, 0xF281, 0x3240,
- 0x3600, 0xF6C1, 0xF781, 0x3740, 0xF501, 0x35C0, 0x3480, 0xF441,
- 0x3C00, 0xFCC1, 0xFD81, 0x3D40, 0xFF01, 0x3FC0, 0x3E80, 0xFE41,
- 0xFA01, 0x3AC0, 0x3B80, 0xFB41, 0x3900, 0xF9C1, 0xF881, 0x3840,
- 0x2800, 0xE8C1, 0xE981, 0x2940, 0xEB01, 0x2BC0, 0x2A80, 0xEA41,
- 0xEE01, 0x2EC0, 0x2F80, 0xEF41, 0x2D00, 0xEDC1, 0xEC81, 0x2C40,
- 0xE401, 0x24C0, 0x2580, 0xE541, 0x2700, 0xE7C1, 0xE681, 0x2640,
- 0x2200, 0xE2C1, 0xE381, 0x2340, 0xE101, 0x21C0, 0x2080, 0xE041,
- 0xA001, 0x60C0, 0x6180, 0xA141, 0x6300, 0xA3C1, 0xA281, 0x6240,
- 0x6600, 0xA6C1, 0xA781, 0x6740, 0xA501, 0x65C0, 0x6480, 0xA441,
- 0x6C00, 0xACC1, 0xAD81, 0x6D40, 0xAF01, 0x6FC0, 0x6E80, 0xAE41,
- 0xAA01, 0x6AC0, 0x6B80, 0xAB41, 0x6900, 0xA9C1, 0xA881, 0x6840,
- 0x7800, 0xB8C1, 0xB981, 0x7940, 0xBB01, 0x7BC0, 0x7A80, 0xBA41,
- 0xBE01, 0x7EC0, 0x7F80, 0xBF41, 0x7D00, 0xBDC1, 0xBC81, 0x7C40,
- 0xB401, 0x74C0, 0x7580, 0xB541, 0x7700, 0xB7C1, 0xB681, 0x7640,
- 0x7200, 0xB2C1, 0xB381, 0x7340, 0xB101, 0x71C0, 0x7080, 0xB041,
- 0x5000, 0x90C1, 0x9181, 0x5140, 0x9301, 0x53C0, 0x5280, 0x9241,
- 0x9601, 0x56C0, 0x5780, 0x9741, 0x5500, 0x95C1, 0x9481, 0x5440,
- 0x9C01, 0x5CC0, 0x5D80, 0x9D41, 0x5F00, 0x9FC1, 0x9E81, 0x5E40,
- 0x5A00, 0x9AC1, 0x9B81, 0x5B40, 0x9901, 0x59C0, 0x5880, 0x9841,
- 0x8801, 0x48C0, 0x4980, 0x8941, 0x4B00, 0x8BC1, 0x8A81, 0x4A40,
- 0x4E00, 0x8EC1, 0x8F81, 0x4F40, 0x8D01, 0x4DC0, 0x4C80, 0x8C41,
- 0x4400, 0x84C1, 0x8581, 0x4540, 0x8701, 0x47C0, 0x4680, 0x8641,
- 0x8201, 0x42C0, 0x4380, 0x8341, 0x4100, 0x81C1, 0x8081, 0x4040
-};
-
-/**
- * crc16 - compute the CRC-16 for the data buffer
- * @crc: previous CRC value
- * @buffer: data pointer
- * @len: number of bytes in the buffer
- *
- * Returns the updated CRC value.
- */
-uint16_t osmo_crc16(uint16_t crc, uint8_t const *buffer, size_t len)
-{
- while (len--)
- crc = osmo_crc16_byte(crc, *buffer++);
- return crc;
-}
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/gsm/Makefile.am b/Src/osmoconbb/src/shared/libosmocore/src/gsm/Makefile.am
deleted file mode 100644
index f5e4676..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/gsm/Makefile.am
+++ /dev/null
@@ -1,15 +0,0 @@
-# This is _NOT_ the library release version, it's an API version.
-# Please read Chapter 6 "Library interface versions" of the libtool documentation before making any modification
-LIBVERSION=1:0:0
-
-INCLUDES = $(all_includes) -I$(top_srcdir)/include
-AM_CFLAGS = -fPIC -Wall
-
-lib_LTLIBRARIES = libosmogsm.la
-
-libosmogsm_la_SOURCES = a5.c rxlev_stat.c tlv_parser.c comp128.c gsm_utils.c \
- rsl.c gsm48.c gsm48_ie.c gsm0808.c sysinfo.c \
- gprs_cipher_core.c gsm0480.c abis_nm.c gsm0502.c \
- lapdm.c
-libosmogsm_la_LDFLAGS = -version-info $(LIBVERSION)
-libosmogsm_la_LIBADD = $(top_builddir)/src/libosmocore.la
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/gsm/a5.c b/Src/osmoconbb/src/shared/libosmocore/src/gsm/a5.c
deleted file mode 100644
index d3f2b2c..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/gsm/a5.c
+++ /dev/null
@@ -1,311 +0,0 @@
-/*
- * a5.c
- *
- * Full reimplementation of A5/1,2 (split and threadsafe)
- *
- * The logic behind the algorithm is taken from "A pedagogical implementation
- * of the GSM A5/1 and A5/2 "voice privacy" encryption algorithms." by
- * Marc Briceno, Ian Goldberg, and David Wagner.
- *
- * Copyright (C) 2011 Sylvain Munaut <tnt@246tNt.com>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include <string.h>
-
-#include <osmocom/gsm/a5.h>
-
-void
-osmo_a5(int n, uint8_t *key, uint32_t fn, ubit_t *dl, ubit_t *ul)
-{
- switch (n)
- {
- case 0:
- if (dl)
- memset(dl, 0x00, 114);
- if (ul)
- memset(ul, 0x00, 114);
- break;
-
- case 1:
- osmo_a5_1(key, fn, dl, ul);
- break;
-
- case 2:
- osmo_a5_2(key, fn, dl, ul);
- break;
-
- default:
- /* a5/[3..7] not supported here/yet */
- break;
- }
-}
-
-
-/* ------------------------------------------------------------------------ */
-/* A5/1&2 common stuff */
-/* ------------------------------------------------------------------------ */
-
-#define A5_R1_LEN 19
-#define A5_R2_LEN 22
-#define A5_R3_LEN 23
-#define A5_R4_LEN 17 /* A5/2 only */
-
-#define A5_R1_MASK ((1<<A5_R1_LEN)-1)
-#define A5_R2_MASK ((1<<A5_R2_LEN)-1)
-#define A5_R3_MASK ((1<<A5_R3_LEN)-1)
-#define A5_R4_MASK ((1<<A5_R4_LEN)-1)
-
-#define A5_R1_TAPS 0x072000 /* x^19 + x^5 + x^2 + x + 1 */
-#define A5_R2_TAPS 0x300000 /* x^22 + x + 1 */
-#define A5_R3_TAPS 0x700080 /* x^23 + x^15 + x^2 + x + 1 */
-#define A5_R4_TAPS 0x010800 /* x^17 + x^5 + 1 */
-
-static inline uint32_t
-_a5_12_parity(uint32_t x)
-{
- x ^= x >> 16;
- x ^= x >> 8;
- x ^= x >> 4;
- x ^= x >> 2;
- x ^= x >> 1;
- return x & 1;
-}
-
-static inline uint32_t
-_a5_12_majority(uint32_t v1, uint32_t v2, uint32_t v3)
-{
- return (!!v1 + !!v2 + !!v3) >= 2;
-}
-
-static inline uint32_t
-_a5_12_clock(uint32_t r, uint32_t mask, uint32_t taps)
-{
- return ((r << 1) & mask) | _a5_12_parity(r & taps);
-}
-
-
-/* ------------------------------------------------------------------------ */
-/* A5/1 */
-/* ------------------------------------------------------------------------ */
-
-#define A51_R1_CLKBIT 0x000100
-#define A51_R2_CLKBIT 0x000400
-#define A51_R3_CLKBIT 0x000400
-
-static inline void
-_a5_1_clock(uint32_t r[], int force)
-{
- int cb[3], maj;
-
- cb[0] = !!(r[0] & A51_R1_CLKBIT);
- cb[1] = !!(r[1] & A51_R2_CLKBIT);
- cb[2] = !!(r[2] & A51_R3_CLKBIT);
-
- maj = _a5_12_majority(cb[0], cb[1], cb[2]);
-
- if (force || (maj == cb[0]))
- r[0] = _a5_12_clock(r[0], A5_R1_MASK, A5_R1_TAPS);
-
- if (force || (maj == cb[1]))
- r[1] = _a5_12_clock(r[1], A5_R2_MASK, A5_R2_TAPS);
-
- if (force || (maj == cb[2]))
- r[2] = _a5_12_clock(r[2], A5_R3_MASK, A5_R3_TAPS);
-}
-
-static inline uint8_t
-_a5_1_get_output(uint32_t r[])
-{
- return (r[0] >> (A5_R1_LEN-1)) ^
- (r[1] >> (A5_R2_LEN-1)) ^
- (r[2] >> (A5_R3_LEN-1));
-}
-
-void
-osmo_a5_1(uint8_t *key, uint32_t fn, ubit_t *dl, ubit_t *ul)
-{
- uint32_t r[3] = {0, 0, 0};
- uint32_t fn_count;
- uint32_t b;
- int i;
-
- /* Key load */
- for (i=0; i<64; i++)
- {
- b = ( key[7 - (i>>3)] >> (i&7) ) & 1;
-
- _a5_1_clock(r, 1);
-
- r[0] ^= b;
- r[1] ^= b;
- r[2] ^= b;
- }
-
- /* Frame count load */
- fn_count = osmo_a5_fn_count(fn);
-
- for (i=0; i<22; i++)
- {
- b = (fn_count >> i) & 1;
-
- _a5_1_clock(r, 1);
-
- r[0] ^= b;
- r[1] ^= b;
- r[2] ^= b;
- }
-
- /* Mix */
- for (i=0; i<100; i++)
- {
- _a5_1_clock(r, 0);
- }
-
- /* Output */
- for (i=0; i<114; i++) {
- _a5_1_clock(r, 0);
- if (dl)
- dl[i] = _a5_1_get_output(r);
- }
-
- for (i=0; i<114; i++) {
- _a5_1_clock(r, 0);
- if (ul)
- ul[i] = _a5_1_get_output(r);
- }
-}
-
-
-/* ------------------------------------------------------------------------ */
-/* A5/2 */
-/* ------------------------------------------------------------------------ */
-
-#define A52_R4_CLKBIT0 0x000400
-#define A52_R4_CLKBIT1 0x000008
-#define A52_R4_CLKBIT2 0x000080
-
-static inline void
-_a5_2_clock(uint32_t r[], int force)
-{
- int cb[3], maj;
-
- cb[0] = !!(r[3] & A52_R4_CLKBIT0);
- cb[1] = !!(r[3] & A52_R4_CLKBIT1);
- cb[2] = !!(r[3] & A52_R4_CLKBIT2);
-
- maj = (cb[0] + cb[1] + cb[2]) >= 2;
-
- if (force || (maj == cb[0]))
- r[0] = _a5_12_clock(r[0], A5_R1_MASK, A5_R1_TAPS);
-
- if (force || (maj == cb[1]))
- r[1] = _a5_12_clock(r[1], A5_R2_MASK, A5_R2_TAPS);
-
- if (force || (maj == cb[2]))
- r[2] = _a5_12_clock(r[2], A5_R3_MASK, A5_R3_TAPS);
-
- r[3] = _a5_12_clock(r[3], A5_R4_MASK, A5_R4_TAPS);
-}
-
-static inline uint8_t
-_a5_2_get_output(uint32_t r[], uint8_t *db)
-{
- uint8_t cb, tb;
-
- tb = (r[0] >> (A5_R1_LEN-1)) ^
- (r[1] >> (A5_R2_LEN-1)) ^
- (r[2] >> (A5_R3_LEN-1));
-
- cb = *db;
-
- *db = ( tb ^
- _a5_12_majority( r[0] & 0x08000, ~r[0] & 0x04000, r[0] & 0x1000) ^
- _a5_12_majority(~r[1] & 0x10000, r[1] & 0x02000, r[1] & 0x0200) ^
- _a5_12_majority( r[2] & 0x40000, r[2] & 0x10000, ~r[2] & 0x2000)
- );
-
- return cb;
-}
-
-void
-osmo_a5_2(uint8_t *key, uint32_t fn, ubit_t *dl, ubit_t *ul)
-{
- uint32_t r[4] = {0, 0, 0, 0};
- uint32_t fn_count;
- uint32_t b;
- uint8_t db = 0, o;
- int i;
-
- /* Key load */
- for (i=0; i<64; i++)
- {
- b = ( key[7 - (i>>3)] >> (i&7) ) & 1;
-
- _a5_2_clock(r, 1);
-
- r[0] ^= b;
- r[1] ^= b;
- r[2] ^= b;
- r[3] ^= b;
- }
-
- /* Frame count load */
- fn_count = osmo_a5_fn_count(fn);
-
- for (i=0; i<22; i++)
- {
- b = (fn_count >> i) & 1;
-
- _a5_2_clock(r, 1);
-
- r[0] ^= b;
- r[1] ^= b;
- r[2] ^= b;
- r[3] ^= b;
- }
-
- r[0] |= 1 << 15;
- r[1] |= 1 << 16;
- r[2] |= 1 << 18;
- r[3] |= 1 << 10;
-
- /* Mix */
- for (i=0; i<100; i++)
- {
- _a5_2_clock(r, 0);
- }
-
- _a5_2_get_output(r, &db);
-
-
- /* Output */
- for (i=0; i<114; i++) {
- _a5_2_clock(r, 0);
- o = _a5_2_get_output(r, &db);
- if (dl)
- dl[i] = o;
- }
-
- for (i=0; i<114; i++) {
- _a5_2_clock(r, 0);
- o = _a5_2_get_output(r, &db);
- if (ul)
- ul[i] = o;
- }
-}
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/gsm/abis_nm.c b/Src/osmoconbb/src/shared/libosmocore/src/gsm/abis_nm.c
deleted file mode 100644
index b54657d..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/gsm/abis_nm.c
+++ /dev/null
@@ -1,430 +0,0 @@
-/* GSM Network Management (OML) messages on the A-bis interface
- * 3GPP TS 12.21 version 8.0.0 Release 1999 / ETSI TS 100 623 V8.0.0 */
-
-/* (C) 2008-2011 by Harald Welte <laforge@gnumonks.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#include <stdint.h>
-#include <errno.h>
-
-#include <osmocom/core/utils.h>
-#include <osmocom/core/logging.h>
-#include <osmocom/gsm/tlv.h>
-#include <osmocom/gsm/gsm_utils.h>
-#include <osmocom/gsm/protocol/gsm_12_21.h>
-#include <osmocom/gsm/abis_nm.h>
-
-/* unidirectional messages from BTS to BSC */
-const enum abis_nm_msgtype abis_nm_reports[4] = {
- NM_MT_SW_ACTIVATED_REP,
- NM_MT_TEST_REP,
- NM_MT_STATECHG_EVENT_REP,
- NM_MT_FAILURE_EVENT_REP,
-};
-
-/* messages without ACK/NACK */
-const enum abis_nm_msgtype abis_nm_no_ack_nack[3] = {
- NM_MT_MEAS_RES_REQ,
- NM_MT_STOP_MEAS,
- NM_MT_START_MEAS,
-};
-
-/* Messages related to software load */
-const enum abis_nm_msgtype abis_nm_sw_load_msgs[9] = {
- NM_MT_LOAD_INIT_ACK,
- NM_MT_LOAD_INIT_NACK,
- NM_MT_LOAD_SEG_ACK,
- NM_MT_LOAD_ABORT,
- NM_MT_LOAD_END_ACK,
- NM_MT_LOAD_END_NACK,
- //NM_MT_SW_ACT_REQ,
- NM_MT_ACTIVATE_SW_ACK,
- NM_MT_ACTIVATE_SW_NACK,
- NM_MT_SW_ACTIVATED_REP,
-};
-
-const enum abis_nm_msgtype abis_nm_nacks[33] = {
- NM_MT_LOAD_INIT_NACK,
- NM_MT_LOAD_END_NACK,
- NM_MT_SW_ACT_REQ_NACK,
- NM_MT_ACTIVATE_SW_NACK,
- NM_MT_ESTABLISH_TEI_NACK,
- NM_MT_CONN_TERR_SIGN_NACK,
- NM_MT_DISC_TERR_SIGN_NACK,
- NM_MT_CONN_TERR_TRAF_NACK,
- NM_MT_DISC_TERR_TRAF_NACK,
- NM_MT_CONN_MDROP_LINK_NACK,
- NM_MT_DISC_MDROP_LINK_NACK,
- NM_MT_SET_BTS_ATTR_NACK,
- NM_MT_SET_RADIO_ATTR_NACK,
- NM_MT_SET_CHAN_ATTR_NACK,
- NM_MT_PERF_TEST_NACK,
- NM_MT_SEND_TEST_REP_NACK,
- NM_MT_STOP_TEST_NACK,
- NM_MT_STOP_EVENT_REP_NACK,
- NM_MT_REST_EVENT_REP_NACK,
- NM_MT_CHG_ADM_STATE_NACK,
- NM_MT_CHG_ADM_STATE_REQ_NACK,
- NM_MT_REP_OUTST_ALARMS_NACK,
- NM_MT_CHANGEOVER_NACK,
- NM_MT_OPSTART_NACK,
- NM_MT_REINIT_NACK,
- NM_MT_SET_SITE_OUT_NACK,
- NM_MT_CHG_HW_CONF_NACK,
- NM_MT_GET_ATTR_NACK,
- NM_MT_SET_ALARM_THRES_NACK,
- NM_MT_BS11_BEGIN_DB_TX_NACK,
- NM_MT_BS11_END_DB_TX_NACK,
- NM_MT_BS11_CREATE_OBJ_NACK,
- NM_MT_BS11_DELETE_OBJ_NACK,
-};
-
-static const struct value_string nack_names[] = {
- { NM_MT_LOAD_INIT_NACK, "SOFTWARE LOAD INIT" },
- { NM_MT_LOAD_END_NACK, "SOFTWARE LOAD END" },
- { NM_MT_SW_ACT_REQ_NACK, "SOFTWARE ACTIVATE REQUEST" },
- { NM_MT_ACTIVATE_SW_NACK, "ACTIVATE SOFTWARE" },
- { NM_MT_ESTABLISH_TEI_NACK, "ESTABLISH TEI" },
- { NM_MT_CONN_TERR_SIGN_NACK, "CONNECT TERRESTRIAL SIGNALLING" },
- { NM_MT_DISC_TERR_SIGN_NACK, "DISCONNECT TERRESTRIAL SIGNALLING" },
- { NM_MT_CONN_TERR_TRAF_NACK, "CONNECT TERRESTRIAL TRAFFIC" },
- { NM_MT_DISC_TERR_TRAF_NACK, "DISCONNECT TERRESTRIAL TRAFFIC" },
- { NM_MT_CONN_MDROP_LINK_NACK, "CONNECT MULTI-DROP LINK" },
- { NM_MT_DISC_MDROP_LINK_NACK, "DISCONNECT MULTI-DROP LINK" },
- { NM_MT_SET_BTS_ATTR_NACK, "SET BTS ATTRIBUTE" },
- { NM_MT_SET_RADIO_ATTR_NACK, "SET RADIO ATTRIBUTE" },
- { NM_MT_SET_CHAN_ATTR_NACK, "SET CHANNEL ATTRIBUTE" },
- { NM_MT_PERF_TEST_NACK, "PERFORM TEST" },
- { NM_MT_SEND_TEST_REP_NACK, "SEND TEST REPORT" },
- { NM_MT_STOP_TEST_NACK, "STOP TEST" },
- { NM_MT_STOP_EVENT_REP_NACK, "STOP EVENT REPORT" },
- { NM_MT_REST_EVENT_REP_NACK, "RESET EVENT REPORT" },
- { NM_MT_CHG_ADM_STATE_NACK, "CHANGE ADMINISTRATIVE STATE" },
- { NM_MT_CHG_ADM_STATE_REQ_NACK,
- "CHANGE ADMINISTRATIVE STATE REQUEST" },
- { NM_MT_REP_OUTST_ALARMS_NACK, "REPORT OUTSTANDING ALARMS" },
- { NM_MT_CHANGEOVER_NACK, "CHANGEOVER" },
- { NM_MT_OPSTART_NACK, "OPSTART" },
- { NM_MT_REINIT_NACK, "REINIT" },
- { NM_MT_SET_SITE_OUT_NACK, "SET SITE OUTPUT" },
- { NM_MT_CHG_HW_CONF_NACK, "CHANGE HARDWARE CONFIGURATION" },
- { NM_MT_GET_ATTR_NACK, "GET ATTRIBUTE" },
- { NM_MT_SET_ALARM_THRES_NACK, "SET ALARM THRESHOLD" },
- { NM_MT_BS11_BEGIN_DB_TX_NACK, "BS11 BEGIN DATABASE TRANSMISSION" },
- { NM_MT_BS11_END_DB_TX_NACK, "BS11 END DATABASE TRANSMISSION" },
- { NM_MT_BS11_CREATE_OBJ_NACK, "BS11 CREATE OBJECT" },
- { NM_MT_BS11_DELETE_OBJ_NACK, "BS11 DELETE OBJECT" },
- { 0, NULL }
-};
-
-const char *abis_nm_nack_name(uint8_t nack)
-{
- return get_value_string(nack_names, nack);
-}
-
-/* Chapter 9.4.36 */
-static const struct value_string nack_cause_names[] = {
- /* General Nack Causes */
- { NM_NACK_INCORR_STRUCT, "Incorrect message structure" },
- { NM_NACK_MSGTYPE_INVAL, "Invalid message type value" },
- { NM_NACK_OBJCLASS_INVAL, "Invalid Object class value" },
- { NM_NACK_OBJCLASS_NOTSUPP, "Object class not supported" },
- { NM_NACK_BTSNR_UNKN, "BTS no. unknown" },
- { NM_NACK_TRXNR_UNKN, "Baseband Transceiver no. unknown" },
- { NM_NACK_OBJINST_UNKN, "Object Instance unknown" },
- { NM_NACK_ATTRID_INVAL, "Invalid attribute identifier value" },
- { NM_NACK_ATTRID_NOTSUPP, "Attribute identifier not supported" },
- { NM_NACK_PARAM_RANGE, "Parameter value outside permitted range" },
- { NM_NACK_ATTRLIST_INCONSISTENT,"Inconsistency in attribute list" },
- { NM_NACK_SPEC_IMPL_NOTSUPP, "Specified implementation not supported" },
- { NM_NACK_CANT_PERFORM, "Message cannot be performed" },
- /* Specific Nack Causes */
- { NM_NACK_RES_NOTIMPL, "Resource not implemented" },
- { NM_NACK_RES_NOTAVAIL, "Resource not available" },
- { NM_NACK_FREQ_NOTAVAIL, "Frequency not available" },
- { NM_NACK_TEST_NOTSUPP, "Test not supported" },
- { NM_NACK_CAPACITY_RESTR, "Capacity restrictions" },
- { NM_NACK_PHYSCFG_NOTPERFORM, "Physical configuration cannot be performed" },
- { NM_NACK_TEST_NOTINIT, "Test not initiated" },
- { NM_NACK_PHYSCFG_NOTRESTORE, "Physical configuration cannot be restored" },
- { NM_NACK_TEST_NOSUCH, "No such test" },
- { NM_NACK_TEST_NOSTOP, "Test cannot be stopped" },
- { NM_NACK_MSGINCONSIST_PHYSCFG, "Message inconsistent with physical configuration" },
- { NM_NACK_FILE_INCOMPLETE, "Complete file notreceived" },
- { NM_NACK_FILE_NOTAVAIL, "File not available at destination" },
- { NM_NACK_FILE_NOTACTIVATE, "File cannot be activate" },
- { NM_NACK_REQ_NOT_GRANT, "Request not granted" },
- { NM_NACK_WAIT, "Wait" },
- { NM_NACK_NOTH_REPORT_EXIST, "Nothing reportable existing" },
- { NM_NACK_MEAS_NOTSUPP, "Measurement not supported" },
- { NM_NACK_MEAS_NOTSTART, "Measurement not started" },
- { 0, NULL }
-};
-
-const char *abis_nm_nack_cause_name(uint8_t cause)
-{
- return get_value_string(nack_cause_names, cause);
-}
-
-/* Chapter 9.4.16: Event Type */
-static const struct value_string event_type_names[] = {
- { NM_EVT_COMM_FAIL, "communication failure" },
- { NM_EVT_QOS_FAIL, "quality of service failure" },
- { NM_EVT_PROC_FAIL, "processing failure" },
- { NM_EVT_EQUIP_FAIL, "equipment failure" },
- { NM_EVT_ENV_FAIL, "environment failure" },
- { 0, NULL }
-};
-
-const char *abis_nm_event_type_name(uint8_t cause)
-{
- return get_value_string(event_type_names, cause);
-}
-
-/* Chapter 9.4.63: Perceived Severity */
-static const struct value_string severity_names[] = {
- { NM_SEVER_CEASED, "failure ceased" },
- { NM_SEVER_CRITICAL, "critical failure" },
- { NM_SEVER_MAJOR, "major failure" },
- { NM_SEVER_MINOR, "minor failure" },
- { NM_SEVER_WARNING, "warning level failure" },
- { NM_SEVER_INDETERMINATE, "indeterminate failure" },
- { 0, NULL }
-};
-
-const char *abis_nm_severity_name(uint8_t cause)
-{
- return get_value_string(severity_names, cause);
-}
-
-/* Attributes that the BSC can set, not only get, according to Section 9.4 */
-const enum abis_nm_attr abis_nm_att_settable[] = {
- NM_ATT_ADD_INFO,
- NM_ATT_ADD_TEXT,
- NM_ATT_DEST,
- NM_ATT_EVENT_TYPE,
- NM_ATT_FILE_DATA,
- NM_ATT_GET_ARI,
- NM_ATT_HW_CONF_CHG,
- NM_ATT_LIST_REQ_ATTR,
- NM_ATT_MDROP_LINK,
- NM_ATT_MDROP_NEXT,
- NM_ATT_NACK_CAUSES,
- NM_ATT_OUTST_ALARM,
- NM_ATT_PHYS_CONF,
- NM_ATT_PROB_CAUSE,
- NM_ATT_RAD_SUBC,
- NM_ATT_SOURCE,
- NM_ATT_SPEC_PROB,
- NM_ATT_START_TIME,
- NM_ATT_TEST_DUR,
- NM_ATT_TEST_NO,
- NM_ATT_TEST_REPORT,
- NM_ATT_WINDOW_SIZE,
- NM_ATT_SEVERITY,
- NM_ATT_MEAS_RES,
- NM_ATT_MEAS_TYPE,
-};
-
-const struct tlv_definition abis_nm_att_tlvdef = {
- .def = {
- [NM_ATT_ABIS_CHANNEL] = { TLV_TYPE_FIXED, 3 },
- [NM_ATT_ADD_INFO] = { TLV_TYPE_TL16V },
- [NM_ATT_ADD_TEXT] = { TLV_TYPE_TL16V },
- [NM_ATT_ADM_STATE] = { TLV_TYPE_TV },
- [NM_ATT_ARFCN_LIST]= { TLV_TYPE_TL16V },
- [NM_ATT_AUTON_REPORT] = { TLV_TYPE_TV },
- [NM_ATT_AVAIL_STATUS] = { TLV_TYPE_TL16V },
- [NM_ATT_BCCH_ARFCN] = { TLV_TYPE_FIXED, 2 },
- [NM_ATT_BSIC] = { TLV_TYPE_TV },
- [NM_ATT_BTS_AIR_TIMER] = { TLV_TYPE_TV },
- [NM_ATT_CCCH_L_I_P] = { TLV_TYPE_TV },
- [NM_ATT_CCCH_L_T] = { TLV_TYPE_TV },
- [NM_ATT_CHAN_COMB] = { TLV_TYPE_TV },
- [NM_ATT_CONN_FAIL_CRIT] = { TLV_TYPE_TL16V },
- [NM_ATT_DEST] = { TLV_TYPE_TL16V },
- [NM_ATT_EVENT_TYPE] = { TLV_TYPE_TV },
- [NM_ATT_FILE_DATA] = { TLV_TYPE_TL16V },
- [NM_ATT_FILE_ID] = { TLV_TYPE_TL16V },
- [NM_ATT_FILE_VERSION] = { TLV_TYPE_TL16V },
- [NM_ATT_GSM_TIME] = { TLV_TYPE_FIXED, 2 },
- [NM_ATT_HSN] = { TLV_TYPE_TV },
- [NM_ATT_HW_CONFIG] = { TLV_TYPE_TL16V },
- [NM_ATT_HW_DESC] = { TLV_TYPE_TL16V },
- [NM_ATT_INTAVE_PARAM] = { TLV_TYPE_TV },
- [NM_ATT_INTERF_BOUND] = { TLV_TYPE_FIXED, 6 },
- [NM_ATT_LIST_REQ_ATTR] = { TLV_TYPE_TL16V },
- [NM_ATT_MAIO] = { TLV_TYPE_TV },
- [NM_ATT_MANUF_STATE] = { TLV_TYPE_TV },
- [NM_ATT_MANUF_THRESH] = { TLV_TYPE_TL16V },
- [NM_ATT_MANUF_ID] = { TLV_TYPE_TL16V },
- [NM_ATT_MAX_TA] = { TLV_TYPE_TV },
- [NM_ATT_MDROP_LINK] = { TLV_TYPE_FIXED, 2 },
- [NM_ATT_MDROP_NEXT] = { TLV_TYPE_FIXED, 2 },
- [NM_ATT_NACK_CAUSES] = { TLV_TYPE_TV },
- [NM_ATT_NY1] = { TLV_TYPE_TV },
- [NM_ATT_OPER_STATE] = { TLV_TYPE_TV },
- [NM_ATT_OVERL_PERIOD] = { TLV_TYPE_TL16V },
- [NM_ATT_PHYS_CONF] = { TLV_TYPE_TL16V },
- [NM_ATT_POWER_CLASS] = { TLV_TYPE_TV },
- [NM_ATT_POWER_THRESH] = { TLV_TYPE_FIXED, 3 },
- [NM_ATT_PROB_CAUSE] = { TLV_TYPE_FIXED, 3 },
- [NM_ATT_RACH_B_THRESH] = { TLV_TYPE_TV },
- [NM_ATT_LDAVG_SLOTS] = { TLV_TYPE_FIXED, 2 },
- [NM_ATT_RAD_SUBC] = { TLV_TYPE_TV },
- [NM_ATT_RF_MAXPOWR_R] = { TLV_TYPE_TV },
- [NM_ATT_SITE_INPUTS] = { TLV_TYPE_TL16V },
- [NM_ATT_SITE_OUTPUTS] = { TLV_TYPE_TL16V },
- [NM_ATT_SOURCE] = { TLV_TYPE_TL16V },
- [NM_ATT_SPEC_PROB] = { TLV_TYPE_TV },
- [NM_ATT_START_TIME] = { TLV_TYPE_FIXED, 2 },
- [NM_ATT_T200] = { TLV_TYPE_FIXED, 7 },
- [NM_ATT_TEI] = { TLV_TYPE_TV },
- [NM_ATT_TEST_DUR] = { TLV_TYPE_FIXED, 2 },
- [NM_ATT_TEST_NO] = { TLV_TYPE_TV },
- [NM_ATT_TEST_REPORT] = { TLV_TYPE_TL16V },
- [NM_ATT_VSWR_THRESH] = { TLV_TYPE_FIXED, 2 },
- [NM_ATT_WINDOW_SIZE] = { TLV_TYPE_TV },
- [NM_ATT_TSC] = { TLV_TYPE_TV },
- [NM_ATT_SW_CONFIG] = { TLV_TYPE_TL16V },
- [NM_ATT_SEVERITY] = { TLV_TYPE_TV },
- [NM_ATT_GET_ARI] = { TLV_TYPE_TL16V },
- [NM_ATT_HW_CONF_CHG] = { TLV_TYPE_TL16V },
- [NM_ATT_OUTST_ALARM] = { TLV_TYPE_TV },
- [NM_ATT_MEAS_RES] = { TLV_TYPE_TL16V },
- },
-};
-
-const struct value_string abis_nm_obj_class_names[] = {
- { NM_OC_SITE_MANAGER, "SITE-MANAGER" },
- { NM_OC_BTS, "BTS" },
- { NM_OC_RADIO_CARRIER, "RADIO-CARRIER" },
- { NM_OC_BASEB_TRANSC, "BASEBAND-TRANSCEIVER" },
- { NM_OC_CHANNEL, "CHANNEL" },
- { NM_OC_BS11_ADJC, "ADJC" },
- { NM_OC_BS11_HANDOVER, "HANDOVER" },
- { NM_OC_BS11_PWR_CTRL, "POWER-CONTROL" },
- { NM_OC_BS11_BTSE, "BTSE" },
- { NM_OC_BS11_RACK, "RACK" },
- { NM_OC_BS11_TEST, "TEST" },
- { NM_OC_BS11_ENVABTSE, "ENVABTSE" },
- { NM_OC_BS11_BPORT, "BPORT" },
- { NM_OC_GPRS_NSE, "GPRS-NSE" },
- { NM_OC_GPRS_CELL, "GPRS-CELL" },
- { NM_OC_GPRS_NSVC, "GPRS-NSVC" },
- { NM_OC_BS11, "SIEMENSHW" },
- { 0, NULL }
-};
-
-const char *abis_nm_opstate_name(uint8_t os)
-{
- switch (os) {
- case NM_OPSTATE_DISABLED:
- return "Disabled";
- case NM_OPSTATE_ENABLED:
- return "Enabled";
- case NM_OPSTATE_NULL:
- return "NULL";
- default:
- return "RFU";
- }
-}
-
-/* Chapter 9.4.7 */
-static const struct value_string avail_names[] = {
- { 0, "In test" },
- { 1, "Failed" },
- { 2, "Power off" },
- { 3, "Off line" },
- /* Not used */
- { 5, "Dependency" },
- { 6, "Degraded" },
- { 7, "Not installed" },
- { 0xff, "OK" },
- { 0, NULL }
-};
-
-const char *abis_nm_avail_name(uint8_t avail)
-{
- return get_value_string(avail_names, avail);
-}
-
-static struct value_string test_names[] = {
- /* FIXME: standard test names */
- { NM_IPACC_TESTNO_CHAN_USAGE, "Channel Usage" },
- { NM_IPACC_TESTNO_BCCH_CHAN_USAGE, "BCCH Channel Usage" },
- { NM_IPACC_TESTNO_FREQ_SYNC, "Frequency Synchronization" },
- { NM_IPACC_TESTNO_BCCH_INFO, "BCCH Info" },
- { NM_IPACC_TESTNO_TX_BEACON, "Transmit Beacon" },
- { NM_IPACC_TESTNO_SYSINFO_MONITOR, "System Info Monitor" },
- { NM_IPACC_TESTNO_BCCCH_MONITOR, "BCCH Monitor" },
- { 0, NULL }
-};
-
-const char *abis_nm_test_name(uint8_t test)
-{
- return get_value_string(test_names, test);
-}
-
-const struct value_string abis_nm_adm_state_names[] = {
- { NM_STATE_LOCKED, "Locked" },
- { NM_STATE_UNLOCKED, "Unlocked" },
- { NM_STATE_SHUTDOWN, "Shutdown" },
- { NM_STATE_NULL, "NULL" },
- { 0, NULL }
-};
-
-void abis_nm_debugp_foh(int ss, struct abis_om_fom_hdr *foh)
-{
- DEBUGP(ss, "OC=%s(%02x) INST=(%02x,%02x,%02x) ",
- get_value_string(abis_nm_obj_class_names, foh->obj_class),
- foh->obj_class, foh->obj_inst.bts_nr, foh->obj_inst.trx_nr,
- foh->obj_inst.ts_nr);
-}
-
-static const enum abis_nm_chan_comb chcomb4pchan[] = {
- [GSM_PCHAN_NONE] = 0xff,
- [GSM_PCHAN_CCCH] = NM_CHANC_mainBCCH,
- [GSM_PCHAN_CCCH_SDCCH4] = NM_CHANC_BCCHComb,
- [GSM_PCHAN_TCH_F] = NM_CHANC_TCHFull,
- [GSM_PCHAN_TCH_H] = NM_CHANC_TCHHalf,
- [GSM_PCHAN_SDCCH8_SACCH8C] = NM_CHANC_SDCCH,
- [GSM_PCHAN_PDCH] = NM_CHANC_IPAC_PDCH,
- [GSM_PCHAN_TCH_F_PDCH] = NM_CHANC_IPAC_TCHFull_PDCH,
- [GSM_PCHAN_UNKNOWN] = 0xff,
- /* FIXME: bounds check */
-};
-
-int abis_nm_chcomb4pchan(enum gsm_phys_chan_config pchan)
-{
- if (pchan < ARRAY_SIZE(chcomb4pchan))
- return chcomb4pchan[pchan];
-
- return -EINVAL;
-}
-
-enum abis_nm_chan_comb abis_nm_pchan4chcomb(uint8_t chcomb)
-{
- int i;
- for (i = 0; i < ARRAY_SIZE(chcomb4pchan); i++) {
- if (chcomb4pchan[i] == chcomb)
- return i;
- }
- return GSM_PCHAN_NONE;
-}
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/gsm/comp128.c b/Src/osmoconbb/src/shared/libosmocore/src/gsm/comp128.c
deleted file mode 100644
index 5d5680c..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/gsm/comp128.c
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
- * COMP128 implementation
- *
- *
- * This code is inspired by original code from :
- * Marc Briceno <marc@scard.org>, Ian Goldberg <iang@cs.berkeley.edu>,
- * and David Wagner <daw@cs.berkeley.edu>
- *
- * But it has been fully rewritten from various PDFs found online describing
- * the algorithm because the licence of the code referenced above was unclear.
- * A comment snippet from the original code is included below, it describes
- * where the doc came from and how the algorithm was reverse engineered.
- *
- *
- * (C) 2009 by Sylvain Munaut <tnt@246tNt.com>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-/*
- * --- SNIP ---
- *
- * This code derived from a leaked document from the GSM standards.
- * Some missing pieces were filled in by reverse-engineering a working SIM.
- * We have verified that this is the correct COMP128 algorithm.
- *
- * The first page of the document identifies it as
- * _Technical Information: GSM System Security Study_.
- * 10-1617-01, 10th June 1988.
- * The bottom of the title page is marked
- * Racal Research Ltd.
- * Worton Drive, Worton Grange Industrial Estate,
- * Reading, Berks. RG2 0SB, England.
- * Telephone: Reading (0734) 868601 Telex: 847152
- * The relevant bits are in Part I, Section 20 (pages 66--67). Enjoy!
- *
- * Note: There are three typos in the spec (discovered by
- * reverse-engineering).
- * First, "z = (2 * x[n] + x[n]) mod 2^(9-j)" should clearly read
- * "z = (2 * x[m] + x[n]) mod 2^(9-j)".
- * Second, the "k" loop in the "Form bits from bytes" section is severely
- * botched: the k index should run only from 0 to 3, and clearly the range
- * on "the (8-k)th bit of byte j" is also off (should be 0..7, not 1..8,
- * to be consistent with the subsequent section).
- * Third, SRES is taken from the first 8 nibbles of x[], not the last 8 as
- * claimed in the document. (And the document doesn't specify how Kc is
- * derived, but that was also easily discovered with reverse engineering.)
- * All of these typos have been corrected in the following code.
- *
- * --- /SNIP ---
- */
-
-#include <string.h>
-#include <stdint.h>
-
-/* The compression tables (just copied ...) */
-static const uint8_t table_0[512] = {
- 102, 177, 186, 162, 2, 156, 112, 75, 55, 25, 8, 12, 251, 193, 246, 188,
- 109, 213, 151, 53, 42, 79, 191, 115, 233, 242, 164, 223, 209, 148, 108, 161,
- 252, 37, 244, 47, 64, 211, 6, 237, 185, 160, 139, 113, 76, 138, 59, 70,
- 67, 26, 13, 157, 63, 179, 221, 30, 214, 36, 166, 69, 152, 124, 207, 116,
- 247, 194, 41, 84, 71, 1, 49, 14, 95, 35, 169, 21, 96, 78, 215, 225,
- 182, 243, 28, 92, 201, 118, 4, 74, 248, 128, 17, 11, 146, 132, 245, 48,
- 149, 90, 120, 39, 87, 230, 106, 232, 175, 19, 126, 190, 202, 141, 137, 176,
- 250, 27, 101, 40, 219, 227, 58, 20, 51, 178, 98, 216, 140, 22, 32, 121,
- 61, 103, 203, 72, 29, 110, 85, 212, 180, 204, 150, 183, 15, 66, 172, 196,
- 56, 197, 158, 0, 100, 45, 153, 7, 144, 222, 163, 167, 60, 135, 210, 231,
- 174, 165, 38, 249, 224, 34, 220, 229, 217, 208, 241, 68, 206, 189, 125, 255,
- 239, 54, 168, 89, 123, 122, 73, 145, 117, 234, 143, 99, 129, 200, 192, 82,
- 104, 170, 136, 235, 93, 81, 205, 173, 236, 94, 105, 52, 46, 228, 198, 5,
- 57, 254, 97, 155, 142, 133, 199, 171, 187, 50, 65, 181, 127, 107, 147, 226,
- 184, 218, 131, 33, 77, 86, 31, 44, 88, 62, 238, 18, 24, 43, 154, 23,
- 80, 159, 134, 111, 9, 114, 3, 91, 16, 130, 83, 10, 195, 240, 253, 119,
- 177, 102, 162, 186, 156, 2, 75, 112, 25, 55, 12, 8, 193, 251, 188, 246,
- 213, 109, 53, 151, 79, 42, 115, 191, 242, 233, 223, 164, 148, 209, 161, 108,
- 37, 252, 47, 244, 211, 64, 237, 6, 160, 185, 113, 139, 138, 76, 70, 59,
- 26, 67, 157, 13, 179, 63, 30, 221, 36, 214, 69, 166, 124, 152, 116, 207,
- 194, 247, 84, 41, 1, 71, 14, 49, 35, 95, 21, 169, 78, 96, 225, 215,
- 243, 182, 92, 28, 118, 201, 74, 4, 128, 248, 11, 17, 132, 146, 48, 245,
- 90, 149, 39, 120, 230, 87, 232, 106, 19, 175, 190, 126, 141, 202, 176, 137,
- 27, 250, 40, 101, 227, 219, 20, 58, 178, 51, 216, 98, 22, 140, 121, 32,
- 103, 61, 72, 203, 110, 29, 212, 85, 204, 180, 183, 150, 66, 15, 196, 172,
- 197, 56, 0, 158, 45, 100, 7, 153, 222, 144, 167, 163, 135, 60, 231, 210,
- 165, 174, 249, 38, 34, 224, 229, 220, 208, 217, 68, 241, 189, 206, 255, 125,
- 54, 239, 89, 168, 122, 123, 145, 73, 234, 117, 99, 143, 200, 129, 82, 192,
- 170, 104, 235, 136, 81, 93, 173, 205, 94, 236, 52, 105, 228, 46, 5, 198,
- 254, 57, 155, 97, 133, 142, 171, 199, 50, 187, 181, 65, 107, 127, 226, 147,
- 218, 184, 33, 131, 86, 77, 44, 31, 62, 88, 18, 238, 43, 24, 23, 154,
- 159, 80, 111, 134, 114, 9, 91, 3, 130, 16, 10, 83, 240, 195, 119, 253,
-}, table_1[256] = {
- 19, 11, 80, 114, 43, 1, 69, 94, 39, 18, 127, 117, 97, 3, 85, 43,
- 27, 124, 70, 83, 47, 71, 63, 10, 47, 89, 79, 4, 14, 59, 11, 5,
- 35, 107, 103, 68, 21, 86, 36, 91, 85, 126, 32, 50, 109, 94, 120, 6,
- 53, 79, 28, 45, 99, 95, 41, 34, 88, 68, 93, 55, 110, 125, 105, 20,
- 90, 80, 76, 96, 23, 60, 89, 64, 121, 56, 14, 74, 101, 8, 19, 78,
- 76, 66, 104, 46, 111, 50, 32, 3, 39, 0, 58, 25, 92, 22, 18, 51,
- 57, 65, 119, 116, 22, 109, 7, 86, 59, 93, 62, 110, 78, 99, 77, 67,
- 12, 113, 87, 98, 102, 5, 88, 33, 38, 56, 23, 8, 75, 45, 13, 75,
- 95, 63, 28, 49, 123, 120, 20, 112, 44, 30, 15, 98, 106, 2, 103, 29,
- 82, 107, 42, 124, 24, 30, 41, 16, 108, 100, 117, 40, 73, 40, 7, 114,
- 82, 115, 36, 112, 12, 102, 100, 84, 92, 48, 72, 97, 9, 54, 55, 74,
- 113, 123, 17, 26, 53, 58, 4, 9, 69, 122, 21, 118, 42, 60, 27, 73,
- 118, 125, 34, 15, 65, 115, 84, 64, 62, 81, 70, 1, 24, 111, 121, 83,
- 104, 81, 49, 127, 48, 105, 31, 10, 6, 91, 87, 37, 16, 54, 116, 126,
- 31, 38, 13, 0, 72, 106, 77, 61, 26, 67, 46, 29, 96, 37, 61, 52,
- 101, 17, 44, 108, 71, 52, 66, 57, 33, 51, 25, 90, 2, 119, 122, 35,
-}, table_2[128] = {
- 52, 50, 44, 6, 21, 49, 41, 59, 39, 51, 25, 32, 51, 47, 52, 43,
- 37, 4, 40, 34, 61, 12, 28, 4, 58, 23, 8, 15, 12, 22, 9, 18,
- 55, 10, 33, 35, 50, 1, 43, 3, 57, 13, 62, 14, 7, 42, 44, 59,
- 62, 57, 27, 6, 8, 31, 26, 54, 41, 22, 45, 20, 39, 3, 16, 56,
- 48, 2, 21, 28, 36, 42, 60, 33, 34, 18, 0, 11, 24, 10, 17, 61,
- 29, 14, 45, 26, 55, 46, 11, 17, 54, 46, 9, 24, 30, 60, 32, 0,
- 20, 38, 2, 30, 58, 35, 1, 16, 56, 40, 23, 48, 13, 19, 19, 27,
- 31, 53, 47, 38, 63, 15, 49, 5, 37, 53, 25, 36, 63, 29, 5, 7,
-}, table_3[64] = {
- 1, 5, 29, 6, 25, 1, 18, 23, 17, 19, 0, 9, 24, 25, 6, 31,
- 28, 20, 24, 30, 4, 27, 3, 13, 15, 16, 14, 18, 4, 3, 8, 9,
- 20, 0, 12, 26, 21, 8, 28, 2, 29, 2, 15, 7, 11, 22, 14, 10,
- 17, 21, 12, 30, 26, 27, 16, 31, 11, 7, 13, 23, 10, 5, 22, 19,
-}, table_4[32] = {
- 15, 12, 10, 4, 1, 14, 11, 7, 5, 0, 14, 7, 1, 2, 13, 8,
- 10, 3, 4, 9, 6, 0, 3, 2, 5, 6, 8, 9, 11, 13, 15, 12,
-};
-
-static const uint8_t *_comp128_table[5] = { table_0, table_1, table_2, table_3, table_4 };
-
-
-static inline void
-_comp128_compression_round(uint8_t *x, int n, const uint8_t *tbl)
-{
- int i, j, m, a, b, y, z;
- m = 4 - n;
- for (i=0; i<(1<<n); i++)
- for (j=0; j<(1<<m); j++) {
- a = j + i * (2<<m);
- b = a + (1<<m);
- y = (x[a] + (x[b]<<1)) & ((32<<m)-1);
- z = ((x[a]<<1) + x[b]) & ((32<<m)-1);
- x[a] = tbl[y];
- x[b] = tbl[z];
- }
-}
-
-static inline void
-_comp128_compression(uint8_t *x)
-{
- int n;
- for (n=0; n<5; n++)
- _comp128_compression_round(x, n, _comp128_table[n]);
-}
-
-static inline void
-_comp128_bitsfrombytes(uint8_t *x, uint8_t *bits)
-{
- int i;
- memset(bits, 0x00, 128);
- for (i=0; i<128; i++)
- if (x[i>>2] & (1<<(3-(i&3))))
- bits[i] = 1;
-}
-
-static inline void
-_comp128_permutation(uint8_t *x, uint8_t *bits)
-{
- int i;
- memset(&x[16], 0x00, 16);
- for (i=0; i<128; i++)
- x[(i>>3)+16] |= bits[(i*17) & 127] << (7-(i&7));
-}
-
-void
-comp128(uint8_t *ki, uint8_t *rand, uint8_t *sres, uint8_t *kc)
-{
- int i;
- uint8_t x[32], bits[128];
-
- /* x[16-31] = RAND */
- memcpy(&x[16], rand, 16);
-
- /* Round 1-7 */
- for (i=0; i<7; i++) {
- /* x[0-15] = Ki */
- memcpy(x, ki, 16);
-
- /* Compression */
- _comp128_compression(x);
-
- /* FormBitFromBytes */
- _comp128_bitsfrombytes(x, bits);
-
- /* Permutation */
- _comp128_permutation(x, bits);
- }
-
- /* Round 8 (final) */
- /* x[0-15] = Ki */
- memcpy(x, ki, 16);
-
- /* Compression */
- _comp128_compression(x);
-
- /* Output stage */
- for (i=0; i<8; i+=2)
- sres[i>>1] = x[i]<<4 | x[i+1];
-
- for (i=0; i<12; i+=2)
- kc[i>>1] = (x[i + 18] << 6) |
- (x[i + 19] << 2) |
- (x[i + 20] >> 2);
-
- kc[6] = (x[30]<<6) | (x[31]<<2);
- kc[7] = 0;
-}
-
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/gsm/gprs_cipher_core.c b/Src/osmoconbb/src/shared/libosmocore/src/gsm/gprs_cipher_core.c
deleted file mode 100644
index b9a22a1..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/gsm/gprs_cipher_core.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/* GPRS LLC cipher core infrastructure */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <errno.h>
-#include <stdint.h>
-
-#include <osmocom/core/utils.h>
-#include <osmocom/core/linuxlist.h>
-#include <osmocom/core/plugin.h>
-
-#include <osmocom/crypt/gprs_cipher.h>
-
-static LLIST_HEAD(gprs_ciphers);
-
-static struct gprs_cipher_impl *selected_ciphers[_GPRS_ALGO_NUM];
-
-/* register a cipher with the core */
-int gprs_cipher_register(struct gprs_cipher_impl *ciph)
-{
- if (ciph->algo >= ARRAY_SIZE(selected_ciphers))
- return -ERANGE;
-
- llist_add_tail(&ciph->list, &gprs_ciphers);
-
- /* check if we want to select this implementation over others */
- if (!selected_ciphers[ciph->algo] ||
- (selected_ciphers[ciph->algo]->priority > ciph->priority))
- selected_ciphers[ciph->algo] = ciph;
-
- return 0;
-}
-
-/* load all available GPRS cipher plugins */
-int gprs_cipher_load(const char *path)
-{
- /* load all plugins available from path */
- return osmo_plugin_load_all(path);
-}
-
-/* function to be called by core code */
-int gprs_cipher_run(uint8_t *out, uint16_t len, enum gprs_ciph_algo algo,
- uint64_t kc, uint32_t iv, enum gprs_cipher_direction dir)
-{
- if (algo >= ARRAY_SIZE(selected_ciphers))
- return -ERANGE;
-
- if (!selected_ciphers[algo])
- return -EINVAL;
-
- if (len > GSM0464_CIPH_MAX_BLOCK)
- return -ERANGE;
-
- /* run the actual cipher from the plugin */
- return selected_ciphers[algo]->run(out, len, kc, iv, dir);
-}
-
-int gprs_cipher_supported(enum gprs_ciph_algo algo)
-{
- if (algo >= ARRAY_SIZE(selected_ciphers))
- return -ERANGE;
-
- if (selected_ciphers[algo])
- return 1;
-
- return 0;
-}
-
-/* GSM TS 04.64 / Section A.2.1 : Generation of 'input' */
-uint32_t gprs_cipher_gen_input_ui(uint32_t iov_ui, uint8_t sapi, uint32_t lfn, uint32_t oc)
-{
- uint32_t sx = ((1<<27) * sapi) + (1<<31);
-
- return (iov_ui ^ sx) + lfn + oc;
-}
-
-/* GSM TS 04.64 / Section A.2.1 : Generation of 'input' */
-uint32_t gprs_cipher_gen_input_i(uint32_t iov_i, uint32_t lfn, uint32_t oc)
-{
- return iov_i + lfn + oc;
-}
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/gsm/gsm0480.c b/Src/osmoconbb/src/shared/libosmocore/src/gsm/gsm0480.c
deleted file mode 100644
index b9b3ed9..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/gsm/gsm0480.c
+++ /dev/null
@@ -1,461 +0,0 @@
-/* Format functions for GSM 04.80 */
-
-/*
- * (C) 2010 by Holger Hans Peter Freyther <zecke@selfish.org>
- * (C) 2009 by Mike Haben <michael.haben@btinternet.com>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <osmocom/gsm/gsm0480.h>
-#include <osmocom/gsm/gsm_utils.h>
-
-#include <osmocom/core/logging.h>
-
-#include <osmocom/gsm/protocol/gsm_04_08.h>
-#include <osmocom/gsm/protocol/gsm_04_80.h>
-
-#include <string.h>
-
-static inline unsigned char *msgb_wrap_with_TL(struct msgb *msgb, uint8_t tag)
-{
- uint8_t *data = msgb_push(msgb, 2);
-
- data[0] = tag;
- data[1] = msgb->len - 2;
- return data;
-}
-
-static inline unsigned char *msgb_push_TLV1(struct msgb *msgb, uint8_t tag,
- uint8_t value)
-{
- uint8_t *data = msgb_push(msgb, 3);
-
- data[0] = tag;
- data[1] = 1;
- data[2] = value;
- return data;
-}
-
-/* wrap an invoke around it... the other way around
- *
- * 1.) Invoke Component tag
- * 2.) Invoke ID Tag
- * 3.) Operation
- * 4.) Data
- */
-int gsm0480_wrap_invoke(struct msgb *msg, int op, int link_id)
-{
- /* 3. operation */
- msgb_push_TLV1(msg, GSM0480_OPERATION_CODE, op);
-
- /* 2. invoke id tag */
- msgb_push_TLV1(msg, GSM0480_COMPIDTAG_INVOKE_ID, link_id);
-
- /* 1. component tag */
- msgb_wrap_with_TL(msg, GSM0480_CTYPE_INVOKE);
-
- return 0;
-}
-
-/* wrap the GSM 04.08 Facility IE around it */
-int gsm0480_wrap_facility(struct msgb *msg)
-{
- msgb_wrap_with_TL(msg, GSM0480_IE_FACILITY);
-
- return 0;
-}
-
-struct msgb *gsm0480_create_unstructuredSS_Notify(int alertPattern, const char *text)
-{
- struct msgb *msg;
- uint8_t *seq_len_ptr, *ussd_len_ptr, *data;
- int len;
-
- msg = msgb_alloc_headroom(1024, 128, "GSM 04.80");
- if (!msg)
- return NULL;
-
- /* SEQUENCE { */
- msgb_put_u8(msg, GSM_0480_SEQUENCE_TAG);
- seq_len_ptr = msgb_put(msg, 1);
-
- /* DCS { */
- msgb_put_u8(msg, ASN1_OCTET_STRING_TAG);
- msgb_put_u8(msg, 1);
- msgb_put_u8(msg, 0x0F);
- /* } DCS */
-
- /* USSD-String { */
- msgb_put_u8(msg, ASN1_OCTET_STRING_TAG);
- ussd_len_ptr = msgb_put(msg, 1);
- data = msgb_put(msg, 0);
- len = gsm_7bit_encode(data, text);
- msgb_put(msg, len);
- ussd_len_ptr[0] = len;
- /* USSD-String } */
-
- /* alertingPattern { */
- msgb_put_u8(msg, ASN1_OCTET_STRING_TAG);
- msgb_put_u8(msg, 1);
- msgb_put_u8(msg, alertPattern);
- /* } alertingPattern */
-
- seq_len_ptr[0] = 3 + 2 + ussd_len_ptr[0] + 3;
- /* } SEQUENCE */
-
- return msg;
-}
-
-struct msgb *gsm0480_create_notifySS(const char *text)
-{
- struct msgb *msg;
- uint8_t *data, *tmp_len;
- uint8_t *seq_len_ptr, *cal_len_ptr, *opt_len_ptr, *nam_len_ptr;
- int len;
-
- len = strlen(text);
- if (len < 1 || len > 160)
- return NULL;
-
- msg = msgb_alloc_headroom(1024, 128, "GSM 04.80");
- if (!msg)
- return NULL;
-
- msgb_put_u8(msg, GSM_0480_SEQUENCE_TAG);
- seq_len_ptr = msgb_put(msg, 1);
-
- /* ss_code for CNAP { */
- msgb_put_u8(msg, 0x81);
- msgb_put_u8(msg, 1);
- msgb_put_u8(msg, 0x19);
- /* } ss_code */
-
-
- /* nameIndicator { */
- msgb_put_u8(msg, 0xB4);
- nam_len_ptr = msgb_put(msg, 1);
-
- /* callingName { */
- msgb_put_u8(msg, 0xA0);
- opt_len_ptr = msgb_put(msg, 1);
- msgb_put_u8(msg, 0xA0);
- cal_len_ptr = msgb_put(msg, 1);
-
- /* namePresentationAllowed { */
- /* add the DCS value */
- msgb_put_u8(msg, 0x80);
- msgb_put_u8(msg, 1);
- msgb_put_u8(msg, 0x0F);
-
- /* add the lengthInCharacters */
- msgb_put_u8(msg, 0x81);
- msgb_put_u8(msg, 1);
- msgb_put_u8(msg, strlen(text));
-
- /* add the actual string */
- msgb_put_u8(msg, 0x82);
- tmp_len = msgb_put(msg, 1);
- data = msgb_put(msg, 0);
- len = gsm_7bit_encode(data, text);
- tmp_len[0] = len;
- msgb_put(msg, len);
-
- /* }; namePresentationAllowed */
-
- cal_len_ptr[0] = 3 + 3 + 2 + len;
- opt_len_ptr[0] = cal_len_ptr[0] + 2;
- /* }; callingName */
-
- nam_len_ptr[0] = opt_len_ptr[0] + 2;
- /* ); nameIndicator */
-
- /* write the lengths... */
- seq_len_ptr[0] = 3 + nam_len_ptr[0] + 2;
-
- return msg;
-}
-
-/* Forward declarations */
-static int parse_ussd(const struct gsm48_hdr *hdr,
- uint16_t len, struct ussd_request *req);
-static int parse_ussd_info_elements(const uint8_t *ussd_ie, uint16_t len,
- struct ussd_request *req);
-static int parse_facility_ie(const uint8_t *facility_ie, uint16_t length,
- struct ussd_request *req);
-static int parse_ss_invoke(const uint8_t *invoke_data, uint16_t length,
- struct ussd_request *req);
-static int parse_process_uss_req(const uint8_t *uss_req_data, uint16_t length,
- struct ussd_request *req);
-
-/* Decode a mobile-originated USSD-request message */
-int gsm0480_decode_ussd_request(const struct gsm48_hdr *hdr, uint16_t len,
- struct ussd_request *req)
-{
- int rc = 0;
-
- if (len < sizeof(*hdr) + 2) {
- LOGP(0, LOGL_DEBUG, "USSD Request is too short.\n");
- return 0;
- }
-
- if ((hdr->proto_discr & 0x0f) == GSM48_PDISC_NC_SS) {
- req->transaction_id = hdr->proto_discr & 0x70;
- rc = parse_ussd(hdr, len, req);
- }
-
- if (!rc)
- LOGP(0, LOGL_DEBUG, "Error occurred while parsing received USSD!\n");
-
- return rc;
-}
-
-static int parse_ussd(const struct gsm48_hdr *hdr, uint16_t len, struct ussd_request *req)
-{
- int rc = 1;
- uint8_t msg_type = hdr->msg_type & 0xBF; /* message-type - section 3.4 */
-
- switch (msg_type) {
- case GSM0480_MTYPE_RELEASE_COMPLETE:
- LOGP(0, LOGL_DEBUG, "USS Release Complete\n");
- /* could also parse out the optional Cause/Facility data */
- req->text[0] = 0xFF;
- break;
- case GSM0480_MTYPE_REGISTER:
- case GSM0480_MTYPE_FACILITY:
- rc &= parse_ussd_info_elements(&hdr->data[0], len - sizeof(*hdr), req);
- break;
- default:
- LOGP(0, LOGL_DEBUG, "Unknown GSM 04.80 message-type field 0x%02x\n",
- hdr->msg_type);
- rc = 0;
- break;
- }
-
- return rc;
-}
-
-static int parse_ussd_info_elements(const uint8_t *ussd_ie, uint16_t len,
- struct ussd_request *req)
-{
- int rc = -1;
- /* Information Element Identifier - table 3.2 & GSM 04.08 section 10.5 */
- uint8_t iei;
- uint8_t iei_length;
-
- iei = ussd_ie[0];
- iei_length = ussd_ie[1];
-
- /* If the data does not fit, report an error */
- if (len - 2 < iei_length)
- return 0;
-
- switch (iei) {
- case GSM48_IE_CAUSE:
- break;
- case GSM0480_IE_FACILITY:
- rc = parse_facility_ie(ussd_ie+2, iei_length, req);
- break;
- case GSM0480_IE_SS_VERSION:
- break;
- default:
- LOGP(0, LOGL_DEBUG, "Unhandled GSM 04.08 or 04.80 IEI 0x%02x\n",
- iei);
- rc = 0;
- break;
- }
-
- return rc;
-}
-
-static int parse_facility_ie(const uint8_t *facility_ie, uint16_t length,
- struct ussd_request *req)
-{
- int rc = 1;
- uint8_t offset = 0;
-
- while (offset + 2 <= length) {
- /* Component Type tag - table 3.7 */
- uint8_t component_type = facility_ie[offset];
- uint8_t component_length = facility_ie[offset+1];
-
- /* size check */
- if (offset + 2 + component_length > length) {
- LOGP(0, LOGL_ERROR, "Component does not fit.\n");
- return 0;
- }
-
- switch (component_type) {
- case GSM0480_CTYPE_INVOKE:
- rc &= parse_ss_invoke(facility_ie+2,
- component_length,
- req);
- break;
- case GSM0480_CTYPE_RETURN_RESULT:
- break;
- case GSM0480_CTYPE_RETURN_ERROR:
- break;
- case GSM0480_CTYPE_REJECT:
- break;
- default:
- LOGP(0, LOGL_DEBUG, "Unknown GSM 04.80 Facility "
- "Component Type 0x%02x\n", component_type);
- rc = 0;
- break;
- }
- offset += (component_length+2);
- };
-
- return rc;
-}
-
-/* Parse an Invoke component - see table 3.3 */
-static int parse_ss_invoke(const uint8_t *invoke_data, uint16_t length,
- struct ussd_request *req)
-{
- int rc = 1;
- uint8_t offset;
-
- if (length < 3)
- return 0;
-
- /* mandatory part */
- if (invoke_data[0] != GSM0480_COMPIDTAG_INVOKE_ID) {
- LOGP(0, LOGL_DEBUG, "Unexpected GSM 04.80 Component-ID tag "
- "0x%02x (expecting Invoke ID tag)\n", invoke_data[0]);
- }
-
- offset = invoke_data[1] + 2;
- req->invoke_id = invoke_data[2];
-
- /* look ahead once */
- if (offset + 1 > length)
- return 0;
-
- /* optional part */
- if (invoke_data[offset] == GSM0480_COMPIDTAG_LINKED_ID)
- offset += invoke_data[offset+1] + 2; /* skip over it */
-
- /* mandatory part */
- if (invoke_data[offset] == GSM0480_OPERATION_CODE) {
- if (offset + 2 > length)
- return 0;
- uint8_t operation_code = invoke_data[offset+2];
- switch (operation_code) {
- case GSM0480_OP_CODE_PROCESS_USS_REQ:
- rc = parse_process_uss_req(invoke_data + offset + 3,
- length - offset - 3,
- req);
- break;
- default:
- LOGP(0, LOGL_DEBUG, "GSM 04.80 operation code 0x%02x "
- "is not yet handled\n", operation_code);
- rc = 0;
- break;
- }
- } else {
- LOGP(0, LOGL_DEBUG, "Unexpected GSM 04.80 Component-ID tag 0x%02x "
- "(expecting Operation Code tag)\n",
- invoke_data[0]);
- rc = 0;
- }
-
- return rc;
-}
-
-/* Parse the parameters of a Process UnstructuredSS Request */
-static int parse_process_uss_req(const uint8_t *uss_req_data, uint16_t length,
- struct ussd_request *req)
-{
- int rc = 0;
- int num_chars;
- uint8_t dcs;
-
-
- /* we need at least that much */
- if (length < 8)
- return 0;
-
-
- if (uss_req_data[0] == GSM_0480_SEQUENCE_TAG) {
- if (uss_req_data[2] == ASN1_OCTET_STRING_TAG) {
- dcs = uss_req_data[4];
- if ((dcs == 0x0F) &&
- (uss_req_data[5] == ASN1_OCTET_STRING_TAG)) {
- num_chars = (uss_req_data[6] * 8) / 7;
- /* Prevent a mobile-originated buffer-overrun! */
- if (num_chars > MAX_LEN_USSD_STRING)
- num_chars = MAX_LEN_USSD_STRING;
- gsm_7bit_decode(req->text,
- &(uss_req_data[7]), num_chars);
- rc = 1;
- }
- }
- }
- return rc;
-}
-
-struct msgb *gsm0480_create_ussd_resp(uint8_t invoke_id, uint8_t trans_id, const char *text)
-{
- struct msgb *msg;
- struct gsm48_hdr *gh;
- uint8_t *ptr8;
- int response_len;
-
- msg = msgb_alloc_headroom(1024, 128, "GSM 04.80");
- if (!msg)
- return NULL;
-
- /* First put the payload text into the message */
- ptr8 = msgb_put(msg, 0);
- response_len = gsm_7bit_encode(ptr8, text);
- msgb_put(msg, response_len);
-
- /* Then wrap it as an Octet String */
- msgb_wrap_with_TL(msg, ASN1_OCTET_STRING_TAG);
-
- /* Pre-pend the DCS octet string */
- msgb_push_TLV1(msg, ASN1_OCTET_STRING_TAG, 0x0F);
-
- /* Then wrap these as a Sequence */
- msgb_wrap_with_TL(msg, GSM_0480_SEQUENCE_TAG);
-
- /* Pre-pend the operation code */
- msgb_push_TLV1(msg, GSM0480_OPERATION_CODE,
- GSM0480_OP_CODE_PROCESS_USS_REQ);
-
- /* Wrap the operation code and IA5 string as a sequence */
- msgb_wrap_with_TL(msg, GSM_0480_SEQUENCE_TAG);
-
- /* Pre-pend the invoke ID */
- msgb_push_TLV1(msg, GSM0480_COMPIDTAG_INVOKE_ID, invoke_id);
-
- /* Wrap this up as a Return Result component */
- msgb_wrap_with_TL(msg, GSM0480_CTYPE_RETURN_RESULT);
-
- /* Wrap the component in a Facility message */
- msgb_wrap_with_TL(msg, GSM0480_IE_FACILITY);
-
- /* And finally pre-pend the L3 header */
- gh = (struct gsm48_hdr *) msgb_push(msg, sizeof(*gh));
- gh->proto_discr = GSM48_PDISC_NC_SS | trans_id
- | (1<<7); /* TI direction = 1 */
- gh->msg_type = GSM0480_MTYPE_RELEASE_COMPLETE;
-
- return msg;
-}
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/gsm/gsm0502.c b/Src/osmoconbb/src/shared/libosmocore/src/gsm/gsm0502.c
deleted file mode 100644
index df1d8e9..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/gsm/gsm0502.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Paging helper code */
-
-/* (C) 2009 by Holger Hans Peter Freyther <zecke@selfish.org>
- * 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, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#include <stdint.h>
-
-#include <osmocom/gsm/protocol/gsm_04_08.h>
-#include <osmocom/gsm/gsm0502.h>
-#include <osmocom/gsm/gsm48.h>
-#include <osmocom/gsm/rsl.h>
-
-unsigned int
-gsm0502_calc_paging_group(struct gsm48_control_channel_descr *chan_desc, uint64_t imsi)
-{
- int ccch_conf;
- int bs_cc_chans;
- int blocks;
- unsigned int group;
-
- ccch_conf = chan_desc->ccch_conf;
- bs_cc_chans = rsl_ccch_conf_to_bs_cc_chans(ccch_conf);
- /* code word + 2, as 2 channels equals 0x0 */
- blocks = gsm48_number_of_paging_subchannels(chan_desc);
- group = gsm0502_get_paging_group(imsi, bs_cc_chans, blocks);
-
- return group;
-}
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/gsm/gsm0808.c b/Src/osmoconbb/src/shared/libosmocore/src/gsm/gsm0808.c
deleted file mode 100644
index 01221bd..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/gsm/gsm0808.c
+++ /dev/null
@@ -1,455 +0,0 @@
-/* (C) 2009,2010 by Holger Hans Peter Freyther <zecke@selfish.org>
- * (C) 2009,2010 by On-Waves
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <osmocom/gsm/gsm0808.h>
-#include <osmocom/gsm/protocol/gsm_08_08.h>
-#include <osmocom/gsm/gsm48.h>
-
-#include <arpa/inet.h>
-
-#define BSSMAP_MSG_SIZE 512
-#define BSSMAP_MSG_HEADROOM 128
-
-static void put_data_16(uint8_t *data, const uint16_t val)
-{
- memcpy(data, &val, sizeof(val));
-}
-
-struct msgb *gsm0808_create_layer3(struct msgb *msg_l3, uint16_t nc, uint16_t cc, int lac, uint16_t _ci)
-{
- uint8_t *data;
- uint8_t *ci;
- struct msgb* msg;
- struct gsm48_loc_area_id *lai;
-
- msg = msgb_alloc_headroom(BSSMAP_MSG_SIZE, BSSMAP_MSG_HEADROOM,
- "bssmap cmpl l3");
- if (!msg)
- return NULL;
-
- /* create the bssmap header */
- msg->l3h = msgb_put(msg, 2);
- msg->l3h[0] = 0x0;
-
- /* create layer 3 header */
- data = msgb_put(msg, 1);
- data[0] = BSS_MAP_MSG_COMPLETE_LAYER_3;
-
- /* create the cell header */
- data = msgb_put(msg, 3);
- data[0] = GSM0808_IE_CELL_IDENTIFIER;
- data[1] = 1 + sizeof(*lai) + 2;
- data[2] = CELL_IDENT_WHOLE_GLOBAL;
-
- lai = (struct gsm48_loc_area_id *) msgb_put(msg, sizeof(*lai));
- gsm48_generate_lai(lai, cc, nc, lac);
-
- ci = msgb_put(msg, 2);
- put_data_16(ci, htons(_ci));
-
- /* copy the layer3 data */
- data = msgb_put(msg, msgb_l3len(msg_l3) + 2);
- data[0] = GSM0808_IE_LAYER_3_INFORMATION;
- data[1] = msgb_l3len(msg_l3);
- memcpy(&data[2], msg_l3->l3h, data[1]);
-
- /* update the size */
- msg->l3h[1] = msgb_l3len(msg) - 2;
-
- return msg;
-}
-
-struct msgb *gsm0808_create_reset(void)
-{
- struct msgb *msg = msgb_alloc_headroom(BSSMAP_MSG_SIZE, BSSMAP_MSG_HEADROOM,
- "bssmap: reset");
- if (!msg)
- return NULL;
-
- msg->l3h = msgb_put(msg, 6);
- msg->l3h[0] = BSSAP_MSG_BSS_MANAGEMENT;
- msg->l3h[1] = 0x04;
- msg->l3h[2] = 0x30;
- msg->l3h[3] = 0x04;
- msg->l3h[4] = 0x01;
- msg->l3h[5] = 0x20;
- return msg;
-}
-
-struct msgb *gsm0808_create_clear_complete(void)
-{
- struct msgb *msg = msgb_alloc_headroom(BSSMAP_MSG_SIZE, BSSMAP_MSG_HEADROOM,
- "bssmap: clear complete");
- if (!msg)
- return NULL;
-
- msg->l3h = msgb_put(msg, 3);
- msg->l3h[0] = BSSAP_MSG_BSS_MANAGEMENT;
- msg->l3h[1] = 1;
- msg->l3h[2] = BSS_MAP_MSG_CLEAR_COMPLETE;
-
- return msg;
-}
-
-struct msgb *gsm0808_create_clear_command(uint8_t reason)
-{
- struct msgb *msg = msgb_alloc_headroom(BSSMAP_MSG_SIZE, BSSMAP_MSG_HEADROOM,
- "bssmap: clear command");
- if (!msg)
- return NULL;
-
- msg->l3h = msgb_tv_put(msg, BSSAP_MSG_BSS_MANAGEMENT, 4);
- msgb_v_put(msg, BSS_MAP_MSG_CLEAR_CMD);
- msgb_tlv_put(msg, GSM0808_IE_CAUSE, 1, &reason);
- return msg;
-}
-
-struct msgb *gsm0808_create_cipher_complete(struct msgb *layer3, uint8_t alg_id)
-{
- struct msgb *msg = msgb_alloc_headroom(BSSMAP_MSG_SIZE, BSSMAP_MSG_HEADROOM,
- "cipher-complete");
- if (!msg)
- return NULL;
-
- /* send response with BSS override for A5/1... cheating */
- msg->l3h = msgb_put(msg, 3);
- msg->l3h[0] = BSSAP_MSG_BSS_MANAGEMENT;
- msg->l3h[1] = 0xff;
- msg->l3h[2] = BSS_MAP_MSG_CIPHER_MODE_COMPLETE;
-
- /* include layer3 in case we have at least two octets */
- if (layer3 && msgb_l3len(layer3) > 2) {
- msg->l4h = msgb_put(msg, msgb_l3len(layer3) + 2);
- msg->l4h[0] = GSM0808_IE_LAYER_3_MESSAGE_CONTENTS;
- msg->l4h[1] = msgb_l3len(layer3);
- memcpy(&msg->l4h[2], layer3->l3h, msgb_l3len(layer3));
- }
-
- /* and the optional BSS message */
- msg->l4h = msgb_put(msg, 2);
- msg->l4h[0] = GSM0808_IE_CHOSEN_ENCR_ALG;
- msg->l4h[1] = alg_id;
-
- /* update the size */
- msg->l3h[1] = msgb_l3len(msg) - 2;
- return msg;
-}
-
-struct msgb *gsm0808_create_cipher_reject(uint8_t cause)
-{
- struct msgb *msg = msgb_alloc_headroom(BSSMAP_MSG_SIZE, BSSMAP_MSG_HEADROOM,
- "bssmap: clear complete");
- if (!msg)
- return NULL;
-
- msg->l3h = msgb_put(msg, 4);
- msg->l3h[0] = BSSAP_MSG_BSS_MANAGEMENT;
- msg->l3h[1] = 2;
- msg->l3h[2] = BSS_MAP_MSG_CIPHER_MODE_REJECT;
- msg->l3h[3] = cause;
-
- return msg;
-}
-
-struct msgb *gsm0808_create_classmark_update(const uint8_t *classmark_data, uint8_t length)
-{
- struct msgb *msg = msgb_alloc_headroom(BSSMAP_MSG_SIZE, BSSMAP_MSG_HEADROOM,
- "classmark-update");
- if (!msg)
- return NULL;
-
- msg->l3h = msgb_put(msg, 3);
- msg->l3h[0] = BSSAP_MSG_BSS_MANAGEMENT;
- msg->l3h[1] = 0xff;
- msg->l3h[2] = BSS_MAP_MSG_CLASSMARK_UPDATE;
-
- msg->l4h = msgb_put(msg, length);
- memcpy(msg->l4h, classmark_data, length);
-
- /* update the size */
- msg->l3h[1] = msgb_l3len(msg) - 2;
- return msg;
-}
-
-struct msgb *gsm0808_create_sapi_reject(uint8_t link_id)
-{
- struct msgb *msg = msgb_alloc_headroom(BSSMAP_MSG_SIZE, BSSMAP_MSG_HEADROOM,
- "bssmap: sapi 'n' reject");
- if (!msg)
- return NULL;
-
- msg->l3h = msgb_put(msg, 5);
- msg->l3h[0] = BSSAP_MSG_BSS_MANAGEMENT;
- msg->l3h[1] = 3;
- msg->l3h[2] = BSS_MAP_MSG_SAPI_N_REJECT;
- msg->l3h[3] = link_id;
- msg->l3h[4] = GSM0808_CAUSE_BSS_NOT_EQUIPPED;
-
- return msg;
-}
-
-struct msgb *gsm0808_create_assignment_completed(uint8_t rr_cause,
- uint8_t chosen_channel, uint8_t encr_alg_id,
- uint8_t speech_mode)
-{
- uint8_t *data;
-
- struct msgb *msg = msgb_alloc(35, "bssmap: ass compl");
- if (!msg)
- return NULL;
-
- msg->l3h = msgb_put(msg, 3);
- msg->l3h[0] = BSSAP_MSG_BSS_MANAGEMENT;
- msg->l3h[1] = 0xff;
- msg->l3h[2] = BSS_MAP_MSG_ASSIGMENT_COMPLETE;
-
- /* write 3.2.2.22 */
- data = msgb_put(msg, 2);
- data[0] = GSM0808_IE_RR_CAUSE;
- data[1] = rr_cause;
-
- /* write cirtcuit identity code 3.2.2.2 */
- /* write cell identifier 3.2.2.17 */
- /* write chosen channel 3.2.2.33 when BTS picked it */
- data = msgb_put(msg, 2);
- data[0] = GSM0808_IE_CHOSEN_CHANNEL;
- data[1] = chosen_channel;
-
- /* write chosen encryption algorithm 3.2.2.44 */
- data = msgb_put(msg, 2);
- data[0] = GSM0808_IE_CHOSEN_ENCR_ALG;
- data[1] = encr_alg_id;
-
- /* write circuit pool 3.2.2.45 */
- /* write speech version chosen: 3.2.2.51 when BTS picked it */
- if (speech_mode != 0) {
- data = msgb_put(msg, 2);
- data[0] = GSM0808_IE_SPEECH_VERSION;
- data[1] = speech_mode;
- }
-
- /* write LSA identifier 3.2.2.15 */
-
-
- /* update the size */
- msg->l3h[1] = msgb_l3len(msg) - 2;
- return msg;
-}
-
-struct msgb *gsm0808_create_assignment_failure(uint8_t cause, uint8_t *rr_cause)
-{
- uint8_t *data;
- struct msgb *msg = msgb_alloc_headroom(BSSMAP_MSG_SIZE, BSSMAP_MSG_HEADROOM,
- "bssmap: ass fail");
- if (!msg)
- return NULL;
-
- msg->l3h = msgb_put(msg, 6);
- msg->l3h[0] = BSSAP_MSG_BSS_MANAGEMENT;
- msg->l3h[1] = 0xff;
- msg->l3h[2] = BSS_MAP_MSG_ASSIGMENT_FAILURE;
- msg->l3h[3] = GSM0808_IE_CAUSE;
- msg->l3h[4] = 1;
- msg->l3h[5] = cause;
-
- /* RR cause 3.2.2.22 */
- if (rr_cause) {
- data = msgb_put(msg, 2);
- data[0] = GSM0808_IE_RR_CAUSE;
- data[1] = *rr_cause;
- }
-
- /* Circuit pool 3.22.45 */
- /* Circuit pool list 3.2.2.46 */
-
- /* update the size */
- msg->l3h[1] = msgb_l3len(msg) - 2;
- return msg;
-}
-
-struct msgb *gsm0808_create_clear_rqst(uint8_t cause)
-{
- struct msgb *msg;
-
- msg = msgb_alloc_headroom(BSSMAP_MSG_SIZE, BSSMAP_MSG_HEADROOM,
- "bssmap: clear rqst");
- if (!msg)
- return NULL;
-
- msg->l3h = msgb_put(msg, 2 + 4);
- msg->l3h[0] = BSSAP_MSG_BSS_MANAGEMENT;
- msg->l3h[1] = 4;
-
- msg->l3h[2] = BSS_MAP_MSG_CLEAR_RQST;
- msg->l3h[3] = GSM0808_IE_CAUSE;
- msg->l3h[4] = 1;
- msg->l3h[5] = cause;
- return msg;
-}
-
-void gsm0808_prepend_dtap_header(struct msgb *msg, uint8_t link_id)
-{
- uint8_t *hh = msgb_push(msg, 3);
- hh[0] = BSSAP_MSG_DTAP;
- hh[1] = link_id;
- hh[2] = msg->len - 3;
-}
-
-struct msgb *gsm0808_create_dtap(struct msgb *msg_l3, uint8_t link_id)
-{
- struct dtap_header *header;
- uint8_t *data;
- struct msgb *msg = msgb_alloc_headroom(BSSMAP_MSG_SIZE, BSSMAP_MSG_HEADROOM,
- "dtap");
- if (!msg)
- return NULL;
-
- /* DTAP header */
- msg->l3h = msgb_put(msg, sizeof(*header));
- header = (struct dtap_header *) &msg->l3h[0];
- header->type = BSSAP_MSG_DTAP;
- header->link_id = link_id;
- header->length = msgb_l3len(msg_l3);
-
- /* Payload */
- data = msgb_put(msg, header->length);
- memcpy(data, msg_l3->l3h, header->length);
-
- return msg;
-}
-
-static const struct tlv_definition bss_att_tlvdef = {
- .def = {
- [GSM0808_IE_IMSI] = { TLV_TYPE_TLV },
- [GSM0808_IE_TMSI] = { TLV_TYPE_TLV },
- [GSM0808_IE_CELL_IDENTIFIER_LIST] = { TLV_TYPE_TLV },
- [GSM0808_IE_CHANNEL_NEEDED] = { TLV_TYPE_TV },
- [GSM0808_IE_EMLPP_PRIORITY] = { TLV_TYPE_TV },
- [GSM0808_IE_CHANNEL_TYPE] = { TLV_TYPE_TLV },
- [GSM0808_IE_PRIORITY] = { TLV_TYPE_TLV },
- [GSM0808_IE_CIRCUIT_IDENTITY_CODE] = { TLV_TYPE_FIXED, 2 },
- [GSM0808_IE_DOWNLINK_DTX_FLAG] = { TLV_TYPE_TV },
- [GSM0808_IE_INTERFERENCE_BAND_TO_USE] = { TLV_TYPE_TV },
- [GSM0808_IE_CLASSMARK_INFORMATION_T2] = { TLV_TYPE_TLV },
- [GSM0808_IE_GROUP_CALL_REFERENCE] = { TLV_TYPE_TLV },
- [GSM0808_IE_TALKER_FLAG] = { TLV_TYPE_T },
- [GSM0808_IE_CONFIG_EVO_INDI] = { TLV_TYPE_TV },
- [GSM0808_IE_LSA_ACCESS_CTRL_SUPPR] = { TLV_TYPE_TV },
- [GSM0808_IE_SERVICE_HANDOVER] = { TLV_TYPE_TLV },
- [GSM0808_IE_ENCRYPTION_INFORMATION] = { TLV_TYPE_TLV },
- [GSM0808_IE_CIPHER_RESPONSE_MODE] = { TLV_TYPE_TV },
- [GSM0808_IE_CELL_IDENTIFIER] = { TLV_TYPE_TLV },
- [GSM0808_IE_CHOSEN_CHANNEL] = { TLV_TYPE_TV },
- [GSM0808_IE_LAYER_3_INFORMATION] = { TLV_TYPE_TLV },
- [GSM0808_IE_SPEECH_VERSION] = { TLV_TYPE_TV },
- [GSM0808_IE_CHOSEN_ENCR_ALG] = { TLV_TYPE_TV },
- },
-};
-
-const struct tlv_definition *gsm0808_att_tlvdef(void)
-{
- return &bss_att_tlvdef;
-}
-
-static const struct value_string gsm0808_msgt_names[] = {
- { BSS_MAP_MSG_ASSIGMENT_RQST, "ASSIGNMENT REQ" },
- { BSS_MAP_MSG_ASSIGMENT_COMPLETE, "ASSIGNMENT COMPL" },
- { BSS_MAP_MSG_ASSIGMENT_FAILURE, "ASSIGNMENT FAIL" },
-
- { BSS_MAP_MSG_HANDOVER_RQST, "HANDOVER REQ" },
- { BSS_MAP_MSG_HANDOVER_REQUIRED, "HANDOVER REQUIRED" },
- { BSS_MAP_MSG_HANDOVER_RQST_ACKNOWLEDGE,"HANDOVER REQ ACK" },
- { BSS_MAP_MSG_HANDOVER_CMD, "HANDOVER CMD" },
- { BSS_MAP_MSG_HANDOVER_COMPLETE, "HANDOVER COMPLETE" },
- { BSS_MAP_MSG_HANDOVER_SUCCEEDED, "HANDOVER SUCCESS" },
- { BSS_MAP_MSG_HANDOVER_FAILURE, "HANDOVER FAILURE" },
- { BSS_MAP_MSG_HANDOVER_PERFORMED, "HANDOVER PERFORMED" },
- { BSS_MAP_MSG_HANDOVER_CANDIDATE_ENQUIRE, "HANDOVER CAND ENQ" },
- { BSS_MAP_MSG_HANDOVER_CANDIDATE_RESPONSE, "HANDOVER CAND RESP" },
- { BSS_MAP_MSG_HANDOVER_REQUIRED_REJECT, "HANDOVER REQ REJ" },
- { BSS_MAP_MSG_HANDOVER_DETECT, "HANDOVER DETECT" },
-
- { BSS_MAP_MSG_CLEAR_CMD, "CLEAR COMMAND" },
- { BSS_MAP_MSG_CLEAR_COMPLETE, "CLEAR COMPLETE" },
- { BSS_MAP_MSG_CLEAR_RQST, "CLEAR REQUEST" },
- { BSS_MAP_MSG_SAPI_N_REJECT, "SAPI N REJECT" },
- { BSS_MAP_MSG_CONFUSION, "CONFUSION" },
-
- { BSS_MAP_MSG_SUSPEND, "SUSPEND" },
- { BSS_MAP_MSG_RESUME, "RESUME" },
- { BSS_MAP_MSG_CONNECTION_ORIENTED_INFORMATION, "CONN ORIENT INFO" },
- { BSS_MAP_MSG_PERFORM_LOCATION_RQST, "PERFORM LOC REQ" },
- { BSS_MAP_MSG_LSA_INFORMATION, "LSA INFORMATION" },
- { BSS_MAP_MSG_PERFORM_LOCATION_RESPONSE, "PERFORM LOC RESP" },
- { BSS_MAP_MSG_PERFORM_LOCATION_ABORT, "PERFORM LOC ABORT" },
- { BSS_MAP_MSG_COMMON_ID, "COMMON ID" },
-
- { BSS_MAP_MSG_RESET, "RESET" },
- { BSS_MAP_MSG_RESET_ACKNOWLEDGE, "RESET ACK" },
- { BSS_MAP_MSG_OVERLOAD, "OVERLOAD" },
- { BSS_MAP_MSG_RESET_CIRCUIT, "RESET CIRCUIT" },
- { BSS_MAP_MSG_RESET_CIRCUIT_ACKNOWLEDGE, "RESET CIRCUIT ACK" },
- { BSS_MAP_MSG_MSC_INVOKE_TRACE, "MSC INVOKE TRACE" },
- { BSS_MAP_MSG_BSS_INVOKE_TRACE, "BSS INVOKE TRACE" },
- { BSS_MAP_MSG_CONNECTIONLESS_INFORMATION, "CONNLESS INFO" },
-
- { BSS_MAP_MSG_BLOCK, "BLOCK" },
- { BSS_MAP_MSG_BLOCKING_ACKNOWLEDGE, "BLOCK ACK" },
- { BSS_MAP_MSG_UNBLOCK, "UNBLOCK" },
- { BSS_MAP_MSG_UNBLOCKING_ACKNOWLEDGE, "UNBLOCK ACK" },
- { BSS_MAP_MSG_CIRCUIT_GROUP_BLOCK, "CIRC GROUP BLOCK" },
- { BSS_MAP_MSG_CIRCUIT_GROUP_BLOCKING_ACKNOWLEDGE, "CIRC GORUP BLOCK ACK" },
- { BSS_MAP_MSG_CIRCUIT_GROUP_UNBLOCK, "CIRC GROUP UNBLOCK" },
- { BSS_MAP_MSG_CIRCUIT_GROUP_UNBLOCKING_ACKNOWLEDGE, "CIRC GROUP UNBLOCK ACK" },
- { BSS_MAP_MSG_UNEQUIPPED_CIRCUIT, "UNEQUIPPED CIRCUIT" },
- { BSS_MAP_MSG_CHANGE_CIRCUIT, "CHANGE CIRCUIT" },
- { BSS_MAP_MSG_CHANGE_CIRCUIT_ACKNOWLEDGE, "CHANGE CIRCUIT ACK" },
-
- { BSS_MAP_MSG_RESOURCE_RQST, "RESOURCE REQ" },
- { BSS_MAP_MSG_RESOURCE_INDICATION, "RESOURCE IND" },
- { BSS_MAP_MSG_PAGING, "PAGING" },
- { BSS_MAP_MSG_CIPHER_MODE_CMD, "CIPHER MODE CMD" },
- { BSS_MAP_MSG_CLASSMARK_UPDATE, "CLASSMARK UPDATE" },
- { BSS_MAP_MSG_CIPHER_MODE_COMPLETE, "CIPHER MODE COMPLETE" },
- { BSS_MAP_MSG_QUEUING_INDICATION, "QUEUING INDICATION" },
- { BSS_MAP_MSG_COMPLETE_LAYER_3, "COMPLETE LAYER 3" },
- { BSS_MAP_MSG_CLASSMARK_RQST, "CLASSMARK REQ" },
- { BSS_MAP_MSG_CIPHER_MODE_REJECT, "CIPHER MODE REJECT" },
- { BSS_MAP_MSG_LOAD_INDICATION, "LOAD IND" },
-
- /* FIXME: VGCS/VBS */
-
- { 0, NULL }
-};
-
-const char *gsm0808_bssmap_name(uint8_t msg_type)
-{
- return get_value_string(gsm0808_msgt_names, msg_type);
-}
-
-static const struct value_string gsm0808_bssap_names[] = {
- { BSSAP_MSG_BSS_MANAGEMENT, "MANAGEMENT" },
- { BSSAP_MSG_DTAP, "DTAP" },
-};
-
-const char *gsm0808_bssap_name(uint8_t msg_type)
-{
- return get_value_string(gsm0808_bssap_names, msg_type);
-}
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/gsm/gsm48.c b/Src/osmoconbb/src/shared/libosmocore/src/gsm/gsm48.c
deleted file mode 100644
index 44baec6..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/gsm/gsm48.c
+++ /dev/null
@@ -1,428 +0,0 @@
-/* GSM Mobile Radio Interface Layer 3 messages
- * 3GPP TS 04.08 version 7.21.0 Release 1998 / ETSI TS 100 940 V7.21.0 */
-
-/* (C) 2008-2010 by Harald Welte <laforge@gnumonks.org>
- * (C) 2008, 2009 by Holger Hans Peter Freyther <zecke@selfish.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-#include <string.h>
-
-#include <arpa/inet.h>
-
-#include <osmocom/core/utils.h>
-#include <osmocom/gsm/tlv.h>
-#include <osmocom/gsm/gsm48.h>
-#include <osmocom/gsm/gsm0502.h>
-
-#include <osmocom/gsm/protocol/gsm_04_08.h>
-#include <osmocom/gsm/protocol/gsm_08_58.h>
-
-const struct tlv_definition gsm48_att_tlvdef = {
- .def = {
- [GSM48_IE_MOBILE_ID] = { TLV_TYPE_TLV },
- [GSM48_IE_NAME_LONG] = { TLV_TYPE_TLV },
- [GSM48_IE_NAME_SHORT] = { TLV_TYPE_TLV },
- [GSM48_IE_UTC] = { TLV_TYPE_TV },
- [GSM48_IE_NET_TIME_TZ] = { TLV_TYPE_FIXED, 7 },
- [GSM48_IE_LSA_IDENT] = { TLV_TYPE_TLV },
-
- [GSM48_IE_BEARER_CAP] = { TLV_TYPE_TLV },
- [GSM48_IE_CAUSE] = { TLV_TYPE_TLV },
- [GSM48_IE_CC_CAP] = { TLV_TYPE_TLV },
- [GSM48_IE_ALERT] = { TLV_TYPE_TLV },
- [GSM48_IE_FACILITY] = { TLV_TYPE_TLV },
- [GSM48_IE_PROGR_IND] = { TLV_TYPE_TLV },
- [GSM48_IE_AUX_STATUS] = { TLV_TYPE_TLV },
- [GSM48_IE_NOTIFY] = { TLV_TYPE_TV },
- [GSM48_IE_KPD_FACILITY] = { TLV_TYPE_TV },
- [GSM48_IE_SIGNAL] = { TLV_TYPE_TV },
- [GSM48_IE_CONN_BCD] = { TLV_TYPE_TLV },
- [GSM48_IE_CONN_SUB] = { TLV_TYPE_TLV },
- [GSM48_IE_CALLING_BCD] = { TLV_TYPE_TLV },
- [GSM48_IE_CALLING_SUB] = { TLV_TYPE_TLV },
- [GSM48_IE_CALLED_BCD] = { TLV_TYPE_TLV },
- [GSM48_IE_CALLED_SUB] = { TLV_TYPE_TLV },
- [GSM48_IE_REDIR_BCD] = { TLV_TYPE_TLV },
- [GSM48_IE_REDIR_SUB] = { TLV_TYPE_TLV },
- [GSM48_IE_LOWL_COMPAT] = { TLV_TYPE_TLV },
- [GSM48_IE_HIGHL_COMPAT] = { TLV_TYPE_TLV },
- [GSM48_IE_USER_USER] = { TLV_TYPE_TLV },
- [GSM48_IE_SS_VERS] = { TLV_TYPE_TLV },
- [GSM48_IE_MORE_DATA] = { TLV_TYPE_T },
- [GSM48_IE_CLIR_SUPP] = { TLV_TYPE_T },
- [GSM48_IE_CLIR_INVOC] = { TLV_TYPE_T },
- [GSM48_IE_REV_C_SETUP] = { TLV_TYPE_T },
- [GSM48_IE_REPEAT_CIR] = { TLV_TYPE_T },
- [GSM48_IE_REPEAT_SEQ] = { TLV_TYPE_T },
- /* FIXME: more elements */
- },
-};
-
-/* RR elements */
-const struct tlv_definition gsm48_rr_att_tlvdef = {
- .def = {
- /* NOTE: Don't add IE 17 = MOBILE_ID here, it already used. */
- [GSM48_IE_VGCS_TARGET] = { TLV_TYPE_TLV },
- [GSM48_IE_FRQSHORT_AFTER] = { TLV_TYPE_FIXED, 9 },
- [GSM48_IE_MUL_RATE_CFG] = { TLV_TYPE_TLV },
- [GSM48_IE_FREQ_L_AFTER] = { TLV_TYPE_TLV },
- [GSM48_IE_MSLOT_DESC] = { TLV_TYPE_TLV },
- [GSM48_IE_CHANMODE_2] = { TLV_TYPE_TV },
- [GSM48_IE_FRQSHORT_BEFORE] = { TLV_TYPE_FIXED, 9 },
- [GSM48_IE_CHANMODE_3] = { TLV_TYPE_TV },
- [GSM48_IE_CHANMODE_4] = { TLV_TYPE_TV },
- [GSM48_IE_CHANMODE_5] = { TLV_TYPE_TV },
- [GSM48_IE_CHANMODE_6] = { TLV_TYPE_TV },
- [GSM48_IE_CHANMODE_7] = { TLV_TYPE_TV },
- [GSM48_IE_CHANMODE_8] = { TLV_TYPE_TV },
- [GSM48_IE_FREQ_L_BEFORE] = { TLV_TYPE_TLV },
- [GSM48_IE_CH_DESC_1_BEFORE] = { TLV_TYPE_FIXED, 3 },
- [GSM48_IE_CH_DESC_2_BEFORE] = { TLV_TYPE_FIXED, 3 },
- [GSM48_IE_F_CH_SEQ_BEFORE] = { TLV_TYPE_FIXED, 9 },
- [GSM48_IE_CLASSMARK3] = { TLV_TYPE_TLV },
- [GSM48_IE_MA_BEFORE] = { TLV_TYPE_TLV },
- [GSM48_IE_RR_PACKET_UL] = { TLV_TYPE_TLV },
- [GSM48_IE_RR_PACKET_DL] = { TLV_TYPE_TLV },
- [GSM48_IE_CELL_CH_DESC] = { TLV_TYPE_FIXED, 16 },
- [GSM48_IE_CHANMODE_1] = { TLV_TYPE_TV },
- [GSM48_IE_CHDES_2_AFTER] = { TLV_TYPE_FIXED, 3 },
- [GSM48_IE_MODE_SEC_CH] = { TLV_TYPE_TV },
- [GSM48_IE_F_CH_SEQ_AFTER] = { TLV_TYPE_FIXED, 9 },
- [GSM48_IE_MA_AFTER] = { TLV_TYPE_TLV },
- [GSM48_IE_BA_RANGE] = { TLV_TYPE_TLV },
- [GSM48_IE_GROUP_CHDES] = { TLV_TYPE_TLV },
- [GSM48_IE_BA_LIST_PREF] = { TLV_TYPE_TLV },
- [GSM48_IE_MOB_OVSERV_DIF] = { TLV_TYPE_TLV },
- [GSM48_IE_REALTIME_DIFF] = { TLV_TYPE_TLV },
- [GSM48_IE_START_TIME] = { TLV_TYPE_FIXED, 2 },
- [GSM48_IE_TIMING_ADVANCE] = { TLV_TYPE_TV },
- [GSM48_IE_GROUP_CIP_SEQ] = { TLV_TYPE_SINGLE_TV },
- [GSM48_IE_CIP_MODE_SET] = { TLV_TYPE_SINGLE_TV },
- [GSM48_IE_GPRS_RESUMPT] = { TLV_TYPE_SINGLE_TV },
- [GSM48_IE_SYNC_IND] = { TLV_TYPE_SINGLE_TV },
- },
-};
-
-/* MM elements */
-const struct tlv_definition gsm48_mm_att_tlvdef = {
- .def = {
- [GSM48_IE_MOBILE_ID] = { TLV_TYPE_TLV },
- [GSM48_IE_NAME_LONG] = { TLV_TYPE_TLV },
- [GSM48_IE_NAME_SHORT] = { TLV_TYPE_TLV },
- [GSM48_IE_UTC] = { TLV_TYPE_TV },
- [GSM48_IE_NET_TIME_TZ] = { TLV_TYPE_FIXED, 7 },
- [GSM48_IE_LSA_IDENT] = { TLV_TYPE_TLV },
-
- [GSM48_IE_LOCATION_AREA] = { TLV_TYPE_FIXED, 5 },
- [GSM48_IE_PRIORITY_LEV] = { TLV_TYPE_SINGLE_TV },
- [GSM48_IE_FOLLOW_ON_PROC] = { TLV_TYPE_T },
- [GSM48_IE_CTS_PERMISSION] = { TLV_TYPE_T },
- },
-};
-
-static const struct value_string rr_cause_names[] = {
- { GSM48_RR_CAUSE_NORMAL, "Normal event" },
- { GSM48_RR_CAUSE_ABNORMAL_UNSPEC, "Abnormal release, unspecified" },
- { GSM48_RR_CAUSE_ABNORMAL_UNACCT, "Abnormal release, channel unacceptable" },
- { GSM48_RR_CAUSE_ABNORMAL_TIMER, "Abnormal release, timer expired" },
- { GSM48_RR_CAUSE_ABNORMAL_NOACT, "Abnormal release, no activity on radio path" },
- { GSM48_RR_CAUSE_PREMPTIVE_REL, "Preemptive release" },
- { GSM48_RR_CAUSE_HNDOVER_IMP, "Handover impossible, timing advance out of range" },
- { GSM48_RR_CAUSE_CHAN_MODE_UNACCT, "Channel mode unacceptable" },
- { GSM48_RR_CAUSE_FREQ_NOT_IMPL, "Frequency not implemented" },
- { GSM48_RR_CAUSE_CALL_CLEARED, "Call already cleared" },
- { GSM48_RR_CAUSE_SEMANT_INCORR, "Semantically incorrect message" },
- { GSM48_RR_CAUSE_INVALID_MAND_INF, "Invalid mandatory information" },
- { GSM48_RR_CAUSE_MSG_TYPE_N, "Message type non-existant or not implemented" },
- { GSM48_RR_CAUSE_MSG_TYPE_N_COMPAT, "Message type not compatible with protocol state" },
- { GSM48_RR_CAUSE_COND_IE_ERROR, "Conditional IE error" },
- { GSM48_RR_CAUSE_NO_CELL_ALLOC_A, "No cell allocation available" },
- { GSM48_RR_CAUSE_PROT_ERROR_UNSPC, "Protocol error unspecified" },
- { 0, NULL },
-};
-
-/* FIXME: convert to value_string */
-static const char *cc_state_names[32] = {
- "NULL",
- "INITIATED",
- "MM_CONNECTION_PEND",
- "MO_CALL_PROC",
- "CALL_DELIVERED",
- "illegal state 5",
- "CALL_PRESENT",
- "CALL_RECEIVED",
- "CONNECT_REQUEST",
- "MO_TERM_CALL_CONF",
- "ACTIVE",
- "DISCONNECT_REQ",
- "DISCONNECT_IND",
- "illegal state 13",
- "illegal state 14",
- "illegal state 15",
- "illegal state 16",
- "illegal state 17",
- "illegal state 18",
- "RELEASE_REQ",
- "illegal state 20",
- "illegal state 21",
- "illegal state 22",
- "illegal state 23",
- "illegal state 24",
- "illegal state 25",
- "MO_ORIG_MODIFY",
- "MO_TERM_MODIFY",
- "CONNECT_IND",
- "illegal state 29",
- "illegal state 30",
- "illegal state 31",
-};
-
-const char *gsm48_cc_state_name(uint8_t state)
-{
- if (state < ARRAY_SIZE(cc_state_names))
- return cc_state_names[state];
-
- return "invalid";
-}
-
-static const struct value_string cc_msg_names[] = {
- { GSM48_MT_CC_ALERTING, "ALERTING" },
- { GSM48_MT_CC_CALL_PROC, "CALL_PROC" },
- { GSM48_MT_CC_PROGRESS, "PROGRESS" },
- { GSM48_MT_CC_ESTAB, "ESTAB" },
- { GSM48_MT_CC_SETUP, "SETUP" },
- { GSM48_MT_CC_ESTAB_CONF, "ESTAB_CONF" },
- { GSM48_MT_CC_CONNECT, "CONNECT" },
- { GSM48_MT_CC_CALL_CONF, "CALL_CONF" },
- { GSM48_MT_CC_START_CC, "START_CC" },
- { GSM48_MT_CC_RECALL, "RECALL" },
- { GSM48_MT_CC_EMERG_SETUP, "EMERG_SETUP" },
- { GSM48_MT_CC_CONNECT_ACK, "CONNECT_ACK" },
- { GSM48_MT_CC_USER_INFO, "USER_INFO" },
- { GSM48_MT_CC_MODIFY_REJECT, "MODIFY_REJECT" },
- { GSM48_MT_CC_MODIFY, "MODIFY" },
- { GSM48_MT_CC_HOLD, "HOLD" },
- { GSM48_MT_CC_HOLD_ACK, "HOLD_ACK" },
- { GSM48_MT_CC_HOLD_REJ, "HOLD_REJ" },
- { GSM48_MT_CC_RETR, "RETR" },
- { GSM48_MT_CC_RETR_ACK, "RETR_ACK" },
- { GSM48_MT_CC_RETR_REJ, "RETR_REJ" },
- { GSM48_MT_CC_MODIFY_COMPL, "MODIFY_COMPL" },
- { GSM48_MT_CC_DISCONNECT, "DISCONNECT" },
- { GSM48_MT_CC_RELEASE_COMPL, "RELEASE_COMPL" },
- { GSM48_MT_CC_RELEASE, "RELEASE" },
- { GSM48_MT_CC_STOP_DTMF, "STOP_DTMF" },
- { GSM48_MT_CC_STOP_DTMF_ACK, "STOP_DTMF_ACK" },
- { GSM48_MT_CC_STATUS_ENQ, "STATUS_ENQ" },
- { GSM48_MT_CC_START_DTMF, "START_DTMF" },
- { GSM48_MT_CC_START_DTMF_ACK, "START_DTMF_ACK" },
- { GSM48_MT_CC_START_DTMF_REJ, "START_DTMF_REJ" },
- { GSM48_MT_CC_CONG_CTRL, "CONG_CTRL" },
- { GSM48_MT_CC_FACILITY, "FACILITY" },
- { GSM48_MT_CC_STATUS, "STATUS" },
- { GSM48_MT_CC_NOTIFY, "NOTFIY" },
- { 0, NULL }
-};
-
-const char *gsm48_cc_msg_name(uint8_t msgtype)
-{
- return get_value_string(cc_msg_names, msgtype);
-}
-
-const char *rr_cause_name(uint8_t cause)
-{
- return get_value_string(rr_cause_names, cause);
-}
-
-static void to_bcd(uint8_t *bcd, uint16_t val)
-{
- bcd[2] = val % 10;
- val = val / 10;
- bcd[1] = val % 10;
- val = val / 10;
- bcd[0] = val % 10;
- val = val / 10;
-}
-
-void gsm48_generate_lai(struct gsm48_loc_area_id *lai48, uint16_t mcc,
- uint16_t mnc, uint16_t lac)
-{
- uint8_t bcd[3];
-
- to_bcd(bcd, mcc);
- lai48->digits[0] = bcd[0] | (bcd[1] << 4);
- lai48->digits[1] = bcd[2];
-
- to_bcd(bcd, mnc);
- /* FIXME: do we need three-digit MNC? See Table 10.5.3 */
- if (mnc > 99) {
- lai48->digits[1] |= bcd[2] << 4;
- lai48->digits[2] = bcd[0] | (bcd[1] << 4);
- } else {
- lai48->digits[1] |= 0xf << 4;
- lai48->digits[2] = bcd[1] | (bcd[2] << 4);
- }
-
- lai48->lac = htons(lac);
-}
-
-int gsm48_generate_mid_from_tmsi(uint8_t *buf, uint32_t tmsi)
-{
- uint32_t *tptr = (uint32_t *) &buf[3];
-
- buf[0] = GSM48_IE_MOBILE_ID;
- buf[1] = GSM48_TMSI_LEN;
- buf[2] = 0xf0 | GSM_MI_TYPE_TMSI;
- *tptr = htonl(tmsi);
-
- return 7;
-}
-
-int gsm48_generate_mid_from_imsi(uint8_t *buf, const char *imsi)
-{
- unsigned int length = strlen(imsi), i, off = 0;
- uint8_t odd = (length & 0x1) == 1;
-
- buf[0] = GSM48_IE_MOBILE_ID;
- buf[2] = osmo_char2bcd(imsi[0]) << 4 | GSM_MI_TYPE_IMSI | (odd << 3);
-
- /* if the length is even we will fill half of the last octet */
- if (odd)
- buf[1] = (length + 1) >> 1;
- else
- buf[1] = (length + 2) >> 1;
-
- for (i = 1; i < buf[1]; ++i) {
- uint8_t lower, upper;
-
- lower = osmo_char2bcd(imsi[++off]);
- if (!odd && off + 1 == length)
- upper = 0x0f;
- else
- upper = osmo_char2bcd(imsi[++off]) & 0x0f;
-
- buf[2 + i] = (upper << 4) | lower;
- }
-
- return 2 + buf[1];
-}
-
-/* Convert Mobile Identity (10.5.1.4) to string */
-int gsm48_mi_to_string(char *string, const int str_len, const uint8_t *mi,
- const int mi_len)
-{
- int i;
- uint8_t mi_type;
- char *str_cur = string;
- uint32_t tmsi;
-
- mi_type = mi[0] & GSM_MI_TYPE_MASK;
-
- switch (mi_type) {
- case GSM_MI_TYPE_NONE:
- break;
- case GSM_MI_TYPE_TMSI:
- /* Table 10.5.4.3, reverse generate_mid_from_tmsi */
- if (mi_len == GSM48_TMSI_LEN && mi[0] == (0xf0 | GSM_MI_TYPE_TMSI)) {
- memcpy(&tmsi, &mi[1], 4);
- tmsi = ntohl(tmsi);
- return snprintf(string, str_len, "%u", tmsi);
- }
- break;
- case GSM_MI_TYPE_IMSI:
- case GSM_MI_TYPE_IMEI:
- case GSM_MI_TYPE_IMEISV:
- *str_cur++ = osmo_bcd2char(mi[0] >> 4);
-
- for (i = 1; i < mi_len; i++) {
- if (str_cur + 2 >= string + str_len)
- return str_cur - string;
- *str_cur++ = osmo_bcd2char(mi[i] & 0xf);
- /* skip last nibble in last input byte when GSM_EVEN */
- if( (i != mi_len-1) || (mi[0] & GSM_MI_ODD))
- *str_cur++ = osmo_bcd2char(mi[i] >> 4);
- }
- break;
- default:
- break;
- }
- *str_cur++ = '\0';
-
- return str_cur - string;
-}
-
-void gsm48_parse_ra(struct gprs_ra_id *raid, const uint8_t *buf)
-{
- raid->mcc = (buf[0] & 0xf) * 100;
- raid->mcc += (buf[0] >> 4) * 10;
- raid->mcc += (buf[1] & 0xf) * 1;
-
- /* I wonder who came up with the stupidity of encoding the MNC
- * differently depending on how many digits its decimal number has! */
- if ((buf[1] >> 4) == 0xf) {
- raid->mnc = (buf[2] & 0xf) * 10;
- raid->mnc += (buf[2] >> 4) * 1;
- } else {
- raid->mnc = (buf[2] & 0xf) * 100;
- raid->mnc += (buf[2] >> 4) * 10;
- raid->mnc += (buf[1] >> 4) * 1;
- }
-
- raid->lac = ntohs(*(uint16_t *)(buf + 3));
- raid->rac = buf[5];
-}
-
-int gsm48_construct_ra(uint8_t *buf, const struct gprs_ra_id *raid)
-{
- uint16_t mcc = raid->mcc;
- uint16_t mnc = raid->mnc;
-
- buf[0] = ((mcc / 100) % 10) | (((mcc / 10) % 10) << 4);
- buf[1] = (mcc % 10);
-
- /* I wonder who came up with the stupidity of encoding the MNC
- * differently depending on how many digits its decimal number has! */
- if (mnc < 100) {
- buf[1] |= 0xf0;
- buf[2] = ((mnc / 10) % 10) | ((mnc % 10) << 4);
- } else {
- buf[1] |= (mnc % 10) << 4;
- buf[2] = ((mnc / 100) % 10) | (((mcc / 10) % 10) << 4);
- }
-
- *(uint16_t *)(buf+3) = htons(raid->lac);
-
- buf[5] = raid->rac;
-
- return 6;
-}
-
-/* From Table 10.5.33 of GSM 04.08 */
-int gsm48_number_of_paging_subchannels(struct gsm48_control_channel_descr *chan_desc)
-{
- unsigned int n_pag_blocks = gsm0502_get_n_pag_blocks(chan_desc);
-
- if (chan_desc->ccch_conf == RSL_BCCH_CCCH_CONF_1_C)
- return OSMO_MAX(1, n_pag_blocks) * (chan_desc->bs_pa_mfrms + 2);
- else
- return n_pag_blocks * (chan_desc->bs_pa_mfrms + 2);
-}
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/gsm/gsm48_ie.c b/Src/osmoconbb/src/shared/libosmocore/src/gsm/gsm48_ie.c
deleted file mode 100644
index 863e636..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/gsm/gsm48_ie.c
+++ /dev/null
@@ -1,1095 +0,0 @@
-/* GSM Mobile Radio Interface Layer 3 messages
- * 3GPP TS 04.08 version 7.21.0 Release 1998 / ETSI TS 100 940 V7.21.0 */
-
-/* (C) 2008 by Harald Welte <laforge@gnumonks.org>
- * (C) 2009-2010 by Andreas Eversberg
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-
-#include <stdint.h>
-#include <string.h>
-#include <errno.h>
-
-#include <osmocom/core/utils.h>
-#include <osmocom/core/msgb.h>
-#include <osmocom/gsm/tlv.h>
-#include <osmocom/gsm/mncc.h>
-#include <osmocom/gsm/protocol/gsm_04_08.h>
-#include <osmocom/gsm/gsm48_ie.h>
-
-static const char bcd_num_digits[] = {
- '0', '1', '2', '3', '4', '5', '6', '7',
- '8', '9', '*', '#', 'a', 'b', 'c', '\0'
-};
-
-/* decode a 'called/calling/connect party BCD number' as in 10.5.4.7 */
-int gsm48_decode_bcd_number(char *output, int output_len,
- const uint8_t *bcd_lv, int h_len)
-{
- uint8_t in_len = bcd_lv[0];
- int i;
-
- for (i = 1 + h_len; i <= in_len; i++) {
- /* lower nibble */
- output_len--;
- if (output_len <= 1)
- break;
- *output++ = bcd_num_digits[bcd_lv[i] & 0xf];
-
- /* higher nibble */
- output_len--;
- if (output_len <= 1)
- break;
- *output++ = bcd_num_digits[bcd_lv[i] >> 4];
- }
- if (output_len >= 1)
- *output++ = '\0';
-
- return 0;
-}
-
-/* convert a single ASCII character to call-control BCD */
-static int asc_to_bcd(const char asc)
-{
- int i;
-
- for (i = 0; i < ARRAY_SIZE(bcd_num_digits); i++) {
- if (bcd_num_digits[i] == asc)
- return i;
- }
- return -EINVAL;
-}
-
-/* convert a ASCII phone number to 'called/calling/connect party BCD number' */
-int gsm48_encode_bcd_number(uint8_t *bcd_lv, uint8_t max_len,
- int h_len, const char *input)
-{
- int in_len = strlen(input);
- int i;
- uint8_t *bcd_cur = bcd_lv + 1 + h_len;
-
- /* two digits per byte, plus type byte */
- bcd_lv[0] = in_len/2 + h_len;
- if (in_len % 2)
- bcd_lv[0]++;
-
- if (bcd_lv[0] > max_len)
- return -EIO;
-
- for (i = 0; i < in_len; i++) {
- int rc = asc_to_bcd(input[i]);
- if (rc < 0)
- return rc;
- if (i % 2 == 0)
- *bcd_cur = rc;
- else
- *bcd_cur++ |= (rc << 4);
- }
- /* append padding nibble in case of odd length */
- if (i % 2)
- *bcd_cur++ |= 0xf0;
-
- /* return how many bytes we used */
- return (bcd_cur - bcd_lv);
-}
-
-/* decode 'bearer capability' */
-int gsm48_decode_bearer_cap(struct gsm_mncc_bearer_cap *bcap,
- const uint8_t *lv)
-{
- uint8_t in_len = lv[0];
- int i, s;
-
- if (in_len < 1)
- return -EINVAL;
-
- bcap->speech_ver[0] = -1; /* end of list, of maximum 7 values */
-
- /* octet 3 */
- bcap->transfer = lv[1] & 0x07;
- bcap->mode = (lv[1] & 0x08) >> 3;
- bcap->coding = (lv[1] & 0x10) >> 4;
- bcap->radio = (lv[1] & 0x60) >> 5;
-
- if (bcap->transfer == GSM_MNCC_BCAP_SPEECH) {
- i = 1;
- s = 0;
- while(!(lv[i] & 0x80)) {
- i++; /* octet 3a etc */
- if (in_len < i)
- return 0;
- bcap->speech_ver[s++] = lv[i] & 0x0f;
- bcap->speech_ver[s] = -1; /* end of list */
- if (i == 2) /* octet 3a */
- bcap->speech_ctm = (lv[i] & 0x20) >> 5;
- if (s == 7) /* maximum speech versions + end of list */
- return 0;
- }
- } else {
- i = 1;
- while (!(lv[i] & 0x80)) {
- i++; /* octet 3a etc */
- if (in_len < i)
- return 0;
- /* ignore them */
- }
- /* FIXME: implement OCTET 4+ parsing */
- }
-
- return 0;
-}
-
-/* encode 'bearer capability' */
-int gsm48_encode_bearer_cap(struct msgb *msg, int lv_only,
- const struct gsm_mncc_bearer_cap *bcap)
-{
- uint8_t lv[32 + 1];
- int i = 1, s;
-
- lv[1] = bcap->transfer;
- lv[1] |= bcap->mode << 3;
- lv[1] |= bcap->coding << 4;
- lv[1] |= bcap->radio << 5;
-
- if (bcap->transfer == GSM_MNCC_BCAP_SPEECH) {
- for (s = 0; bcap->speech_ver[s] >= 0; s++) {
- i++; /* octet 3a etc */
- lv[i] = bcap->speech_ver[s];
- if (i == 2) /* octet 3a */
- lv[i] |= bcap->speech_ctm << 5;
- }
- lv[i] |= 0x80; /* last IE of octet 3 etc */
- } else {
- /* FIXME: implement OCTET 4+ encoding */
- }
-
- lv[0] = i;
- if (lv_only)
- msgb_lv_put(msg, lv[0], lv+1);
- else
- msgb_tlv_put(msg, GSM48_IE_BEARER_CAP, lv[0], lv+1);
-
- return 0;
-}
-
-/* decode 'call control cap' */
-int gsm48_decode_cccap(struct gsm_mncc_cccap *ccap, const uint8_t *lv)
-{
- uint8_t in_len = lv[0];
-
- if (in_len < 1)
- return -EINVAL;
-
- /* octet 3 */
- ccap->dtmf = lv[1] & 0x01;
- ccap->pcp = (lv[1] & 0x02) >> 1;
-
- return 0;
-}
-
-/* encode 'call control cap' */
-int gsm48_encode_cccap(struct msgb *msg,
- const struct gsm_mncc_cccap *ccap)
-{
- uint8_t lv[2];
-
- lv[0] = 1;
- lv[1] = 0;
- if (ccap->dtmf)
- lv [1] |= 0x01;
- if (ccap->pcp)
- lv [1] |= 0x02;
-
- msgb_tlv_put(msg, GSM48_IE_CC_CAP, lv[0], lv+1);
-
- return 0;
-}
-
-/* decode 'called party BCD number' */
-int gsm48_decode_called(struct gsm_mncc_number *called,
- const uint8_t *lv)
-{
- uint8_t in_len = lv[0];
-
- if (in_len < 1)
- return -EINVAL;
-
- /* octet 3 */
- called->plan = lv[1] & 0x0f;
- called->type = (lv[1] & 0x70) >> 4;
-
- /* octet 4..N */
- gsm48_decode_bcd_number(called->number, sizeof(called->number), lv, 1);
-
- return 0;
-}
-
-/* encode 'called party BCD number' */
-int gsm48_encode_called(struct msgb *msg,
- const struct gsm_mncc_number *called)
-{
- uint8_t lv[18];
- int ret;
-
- /* octet 3 */
- lv[1] = 0x80; /* no extension */
- lv[1] |= called->plan;
- lv[1] |= called->type << 4;
-
- /* octet 4..N, octet 2 */
- ret = gsm48_encode_bcd_number(lv, sizeof(lv), 1, called->number);
- if (ret < 0)
- return ret;
-
- msgb_tlv_put(msg, GSM48_IE_CALLED_BCD, lv[0], lv+1);
-
- return 0;
-}
-
-/* decode callerid of various IEs */
-int gsm48_decode_callerid(struct gsm_mncc_number *callerid,
- const uint8_t *lv)
-{
- uint8_t in_len = lv[0];
- int i = 1;
-
- if (in_len < 1)
- return -EINVAL;
-
- /* octet 3 */
- callerid->plan = lv[1] & 0x0f;
- callerid->type = (lv[1] & 0x70) >> 4;
-
- /* octet 3a */
- if (!(lv[1] & 0x80)) {
- callerid->screen = lv[2] & 0x03;
- callerid->present = (lv[2] & 0x60) >> 5;
- i = 2;
- }
-
- /* octet 4..N */
- gsm48_decode_bcd_number(callerid->number, sizeof(callerid->number), lv, i);
-
- return 0;
-}
-
-/* encode callerid of various IEs */
-int gsm48_encode_callerid(struct msgb *msg, int ie, int max_len,
- const struct gsm_mncc_number *callerid)
-{
- uint8_t lv[max_len - 1];
- int h_len = 1;
- int ret;
-
- /* octet 3 */
- lv[1] = callerid->plan;
- lv[1] |= callerid->type << 4;
-
- if (callerid->present || callerid->screen) {
- /* octet 3a */
- lv[2] = callerid->screen;
- lv[2] |= callerid->present << 5;
- lv[2] |= 0x80;
- h_len++;
- } else
- lv[1] |= 0x80;
-
- /* octet 4..N, octet 2 */
- ret = gsm48_encode_bcd_number(lv, sizeof(lv), h_len, callerid->number);
- if (ret < 0)
- return ret;
-
- msgb_tlv_put(msg, ie, lv[0], lv+1);
-
- return 0;
-}
-
-/* decode 'cause' */
-int gsm48_decode_cause(struct gsm_mncc_cause *cause,
- const uint8_t *lv)
-{
- uint8_t in_len = lv[0];
- int i;
-
- if (in_len < 2)
- return -EINVAL;
-
- cause->diag_len = 0;
-
- /* octet 3 */
- cause->location = lv[1] & 0x0f;
- cause->coding = (lv[1] & 0x60) >> 5;
-
- i = 1;
- if (!(lv[i] & 0x80)) {
- i++; /* octet 3a */
- if (in_len < i+1)
- return 0;
- cause->rec = 1;
- cause->rec_val = lv[i] & 0x7f;
- }
- i++;
-
- /* octet 4 */
- cause->value = lv[i] & 0x7f;
- i++;
-
- if (in_len < i) /* no diag */
- return 0;
-
- if (in_len - (i-1) > 32) /* maximum 32 octets */
- return 0;
-
- /* octet 5-N */
- memcpy(cause->diag, lv + i, in_len - (i-1));
- cause->diag_len = in_len - (i-1);
-
- return 0;
-}
-
-/* encode 'cause' */
-int gsm48_encode_cause(struct msgb *msg, int lv_only,
- const struct gsm_mncc_cause *cause)
-{
- uint8_t lv[32+4];
- int i;
-
- if (cause->diag_len > 32)
- return -EINVAL;
-
- /* octet 3 */
- lv[1] = cause->location;
- lv[1] |= cause->coding << 5;
-
- i = 1;
- if (cause->rec) {
- i++; /* octet 3a */
- lv[i] = cause->rec_val;
- }
- lv[i] |= 0x80; /* end of octet 3 */
-
- /* octet 4 */
- i++;
- lv[i] = 0x80 | cause->value;
-
- /* octet 5-N */
- if (cause->diag_len) {
- memcpy(lv + i, cause->diag, cause->diag_len);
- i += cause->diag_len;
- }
-
- lv[0] = i;
- if (lv_only)
- msgb_lv_put(msg, lv[0], lv+1);
- else
- msgb_tlv_put(msg, GSM48_IE_CAUSE, lv[0], lv+1);
-
- return 0;
-}
-
-/* decode 'calling number' */
-int gsm48_decode_calling(struct gsm_mncc_number *calling,
- const uint8_t *lv)
-{
- return gsm48_decode_callerid(calling, lv);
-}
-
-/* encode 'calling number' */
-int gsm48_encode_calling(struct msgb *msg,
- const struct gsm_mncc_number *calling)
-{
- return gsm48_encode_callerid(msg, GSM48_IE_CALLING_BCD, 14, calling);
-}
-
-/* decode 'connected number' */
-int gsm48_decode_connected(struct gsm_mncc_number *connected,
- const uint8_t *lv)
-{
- return gsm48_decode_callerid(connected, lv);
-}
-
-/* encode 'connected number' */
-int gsm48_encode_connected(struct msgb *msg,
- const struct gsm_mncc_number *connected)
-{
- return gsm48_encode_callerid(msg, GSM48_IE_CONN_BCD, 14, connected);
-}
-
-/* decode 'redirecting number' */
-int gsm48_decode_redirecting(struct gsm_mncc_number *redirecting,
- const uint8_t *lv)
-{
- return gsm48_decode_callerid(redirecting, lv);
-}
-
-/* encode 'redirecting number' */
-int gsm48_encode_redirecting(struct msgb *msg,
- const struct gsm_mncc_number *redirecting)
-{
- return gsm48_encode_callerid(msg, GSM48_IE_REDIR_BCD, 19, redirecting);
-}
-
-/* decode 'facility' */
-int gsm48_decode_facility(struct gsm_mncc_facility *facility,
- const uint8_t *lv)
-{
- uint8_t in_len = lv[0];
-
- if (in_len < 1)
- return -EINVAL;
-
- if (in_len > sizeof(facility->info))
- return -EINVAL;
-
- memcpy(facility->info, lv+1, in_len);
- facility->len = in_len;
-
- return 0;
-}
-
-/* encode 'facility' */
-int gsm48_encode_facility(struct msgb *msg, int lv_only,
- const struct gsm_mncc_facility *facility)
-{
- uint8_t lv[GSM_MAX_FACILITY + 1];
-
- if (facility->len < 1 || facility->len > GSM_MAX_FACILITY)
- return -EINVAL;
-
- memcpy(lv+1, facility->info, facility->len);
- lv[0] = facility->len;
- if (lv_only)
- msgb_lv_put(msg, lv[0], lv+1);
- else
- msgb_tlv_put(msg, GSM48_IE_FACILITY, lv[0], lv+1);
-
- return 0;
-}
-
-/* decode 'notify' */
-int gsm48_decode_notify(int *notify, const uint8_t *v)
-{
- *notify = v[0] & 0x7f;
-
- return 0;
-}
-
-/* encode 'notify' */
-int gsm48_encode_notify(struct msgb *msg, int notify)
-{
- msgb_v_put(msg, notify | 0x80);
-
- return 0;
-}
-
-/* decode 'signal' */
-int gsm48_decode_signal(int *signal, const uint8_t *v)
-{
- *signal = v[0];
-
- return 0;
-}
-
-/* encode 'signal' */
-int gsm48_encode_signal(struct msgb *msg, int signal)
-{
- msgb_tv_put(msg, GSM48_IE_SIGNAL, signal);
-
- return 0;
-}
-
-/* decode 'keypad' */
-int gsm48_decode_keypad(int *keypad, const uint8_t *lv)
-{
- uint8_t in_len = lv[0];
-
- if (in_len < 1)
- return -EINVAL;
-
- *keypad = lv[1] & 0x7f;
-
- return 0;
-}
-
-/* encode 'keypad' */
-int gsm48_encode_keypad(struct msgb *msg, int keypad)
-{
- msgb_tv_put(msg, GSM48_IE_KPD_FACILITY, keypad);
-
- return 0;
-}
-
-/* decode 'progress' */
-int gsm48_decode_progress(struct gsm_mncc_progress *progress,
- const uint8_t *lv)
-{
- uint8_t in_len = lv[0];
-
- if (in_len < 2)
- return -EINVAL;
-
- progress->coding = (lv[1] & 0x60) >> 5;
- progress->location = lv[1] & 0x0f;
- progress->descr = lv[2] & 0x7f;
-
- return 0;
-}
-
-/* encode 'progress' */
-int gsm48_encode_progress(struct msgb *msg, int lv_only,
- const struct gsm_mncc_progress *p)
-{
- uint8_t lv[3];
-
- lv[0] = 2;
- lv[1] = 0x80 | ((p->coding & 0x3) << 5) | (p->location & 0xf);
- lv[2] = 0x80 | (p->descr & 0x7f);
- if (lv_only)
- msgb_lv_put(msg, lv[0], lv+1);
- else
- msgb_tlv_put(msg, GSM48_IE_PROGR_IND, lv[0], lv+1);
-
- return 0;
-}
-
-/* decode 'user-user' */
-int gsm48_decode_useruser(struct gsm_mncc_useruser *uu,
- const uint8_t *lv)
-{
- uint8_t in_len = lv[0];
- char *info = uu->info;
- int info_len = sizeof(uu->info);
- int i;
-
- if (in_len < 1)
- return -EINVAL;
-
- uu->proto = lv[1];
-
- for (i = 2; i <= in_len; i++) {
- info_len--;
- if (info_len <= 1)
- break;
- *info++ = lv[i];
- }
- if (info_len >= 1)
- *info++ = '\0';
-
- return 0;
-}
-
-/* encode 'useruser' */
-int gsm48_encode_useruser(struct msgb *msg, int lv_only,
- const struct gsm_mncc_useruser *uu)
-{
- uint8_t lv[GSM_MAX_USERUSER + 2];
-
- if (strlen(uu->info) > GSM_MAX_USERUSER)
- return -EINVAL;
-
- lv[0] = 1 + strlen(uu->info);
- lv[1] = uu->proto;
- memcpy(lv + 2, uu->info, strlen(uu->info));
- if (lv_only)
- msgb_lv_put(msg, lv[0], lv+1);
- else
- msgb_tlv_put(msg, GSM48_IE_USER_USER, lv[0], lv+1);
-
- return 0;
-}
-
-/* decode 'ss version' */
-int gsm48_decode_ssversion(struct gsm_mncc_ssversion *ssv,
- const uint8_t *lv)
-{
- uint8_t in_len = lv[0];
-
- if (in_len < 1 || in_len < sizeof(ssv->info))
- return -EINVAL;
-
- memcpy(ssv->info, lv + 1, in_len);
- ssv->len = in_len;
-
- return 0;
-}
-
-/* encode 'ss version' */
-int gsm48_encode_ssversion(struct msgb *msg,
- const struct gsm_mncc_ssversion *ssv)
-{
- uint8_t lv[GSM_MAX_SSVERSION + 1];
-
- if (ssv->len > GSM_MAX_SSVERSION)
- return -EINVAL;
-
- lv[0] = ssv->len;
- memcpy(lv + 1, ssv->info, ssv->len);
- msgb_tlv_put(msg, GSM48_IE_SS_VERS, lv[0], lv+1);
-
- return 0;
-}
-
-/* decode 'more data' does not require a function, because it has no value */
-
-/* encode 'more data' */
-int gsm48_encode_more(struct msgb *msg)
-{
- uint8_t *ie;
-
- ie = msgb_put(msg, 1);
- ie[0] = GSM48_IE_MORE_DATA;
-
- return 0;
-}
-
-/* decode "Cell Channel Description" (10.5.2.1b) and other frequency lists */
-int gsm48_decode_freq_list(struct gsm_sysinfo_freq *f, uint8_t *cd,
- uint8_t len, uint8_t mask, uint8_t frqt)
-{
- int i;
-
- /* NOTES:
- *
- * The Range format uses "SMOD" computation.
- * e.g. "n SMOD m" equals "((n - 1) % m) + 1"
- * A cascade of multiple SMOD computations is simpified:
- * "(n SMOD m) SMOD o" equals "(((n - 1) % m) % o) + 1"
- *
- * The Range format uses 16 octets of data in SYSTEM INFORMATION.
- * When used in dedicated messages, the length can be less.
- * In this case the ranges are decoded for all frequencies that
- * fit in the block of given length.
- */
-
- /* tabula rasa */
- for (i = 0; i < 1024; i++)
- f[i].mask &= ~frqt;
-
- /* 00..XXX. */
- if ((cd[0] & 0xc0 & mask) == 0x00) {
- /* Bit map 0 format */
- if (len < 16)
- return -EINVAL;
- for (i = 1; i <= 124; i++)
- if ((cd[15 - ((i-1) >> 3)] & (1 << ((i-1) & 7))))
- f[i].mask |= frqt;
-
- return 0;
- }
-
- /* 10..0XX. */
- if ((cd[0] & 0xc8 & mask) == 0x80) {
- /* Range 1024 format */
- uint16_t w[17]; /* 1..16 */
- struct gsm48_range_1024 *r = (struct gsm48_range_1024 *)cd;
-
- if (len < 2)
- return -EINVAL;
- memset(w, 0, sizeof(w));
- if (r->f0)
- f[0].mask |= frqt;
- w[1] = (r->w1_hi << 8) | r->w1_lo;
- if (len >= 4)
- w[2] = (r->w2_hi << 1) | r->w2_lo;
- if (len >= 5)
- w[3] = (r->w3_hi << 2) | r->w3_lo;
- if (len >= 6)
- w[4] = (r->w4_hi << 2) | r->w4_lo;
- if (len >= 7)
- w[5] = (r->w5_hi << 2) | r->w5_lo;
- if (len >= 8)
- w[6] = (r->w6_hi << 2) | r->w6_lo;
- if (len >= 9)
- w[7] = (r->w7_hi << 2) | r->w7_lo;
- if (len >= 10)
- w[8] = (r->w8_hi << 1) | r->w8_lo;
- if (len >= 10)
- w[9] = r->w9;
- if (len >= 11)
- w[10] = r->w10;
- if (len >= 12)
- w[11] = (r->w11_hi << 6) | r->w11_lo;
- if (len >= 13)
- w[12] = (r->w12_hi << 5) | r->w12_lo;
- if (len >= 14)
- w[13] = (r->w13_hi << 4) | r->w13_lo;
- if (len >= 15)
- w[14] = (r->w14_hi << 3) | r->w14_lo;
- if (len >= 16)
- w[15] = (r->w15_hi << 2) | r->w15_lo;
- if (len >= 16)
- w[16] = r->w16;
- if (w[1])
- f[w[1]].mask |= frqt;
- if (w[2])
- f[((w[1] - 512 + w[2] - 1) % 1023) + 1].mask |= frqt;
- if (w[3])
- f[((w[1] + w[3] - 1) % 1023) + 1].mask |= frqt;
- if (w[4])
- f[((w[1] - 512 + ((w[2] - 256 + w[4] - 1) % 511)) % 1023) + 1].mask |= frqt;
- if (w[5])
- f[((w[1] + ((w[3] - 256 + w[5] - 1) % 511)) % 1023) + 1].mask |= frqt;
- if (w[6])
- f[((w[1] - 512 + ((w[2] + w[6] - 1) % 511)) % 1023) + 1].mask |= frqt;
- if (w[7])
- f[((w[1] + ((w[3] + w[7] - 1) % 511)) % 1023) + 1].mask |= frqt;
- if (w[8])
- f[((w[1] - 512 + ((w[2] - 256 + ((w[4] - 128 + w[8] - 1) % 255)) % 511)) % 1023) + 1].mask |= frqt;
- if (w[9])
- f[((w[1] + ((w[3] - 256 + ((w[5] - 128 + w[9] - 1) % 255)) % 511)) % 1023) + 1].mask |= frqt;
- if (w[10])
- f[((w[1] - 512 + ((w[2] + ((w[6] - 128 + w[10] - 1) % 255)) % 511)) % 1023) + 1].mask |= frqt;
- if (w[11])
- f[((w[1] + ((w[3] + ((w[7] - 128 + w[11] - 1) % 255)) % 511)) % 1023) + 1].mask |= frqt;
- if (w[12])
- f[((w[1] - 512 + ((w[2] - 256 + ((w[4] + w[12] - 1) % 255)) % 511)) % 1023) + 1].mask |= frqt;
- if (w[13])
- f[((w[1] + ((w[3] - 256 + ((w[5] + w[13] - 1) % 255)) % 511)) % 1023) + 1].mask |= frqt;
- if (w[14])
- f[((w[1] - 512 + ((w[2] + ((w[6] + w[14] - 1) % 255)) % 511)) % 1023) + 1].mask |= frqt;
- if (w[15])
- f[((w[1] + ((w[3] + ((w[7] + w[15] - 1) % 255)) % 511)) % 1023) + 1].mask |= frqt;
- if (w[16])
- f[((w[1] - 512 + ((w[2] - 256 + ((w[4] - 128 + ((w[8] - 64 + w[16] - 1) % 127)) % 255)) % 511)) % 1023) + 1].mask |= frqt;
-
- return 0;
- }
- /* 10..100. */
- if ((cd[0] & 0xce & mask) == 0x88) {
- /* Range 512 format */
- uint16_t w[18]; /* 1..17 */
- struct gsm48_range_512 *r = (struct gsm48_range_512 *)cd;
-
- if (len < 4)
- return -EINVAL;
- memset(w, 0, sizeof(w));
- w[0] = (r->orig_arfcn_hi << 9) | (r->orig_arfcn_mid << 1) | r->orig_arfcn_lo;
- w[1] = (r->w1_hi << 2) | r->w1_lo;
- if (len >= 5)
- w[2] = (r->w2_hi << 2) | r->w2_lo;
- if (len >= 6)
- w[3] = (r->w3_hi << 2) | r->w3_lo;
- if (len >= 7)
- w[4] = (r->w4_hi << 1) | r->w4_lo;
- if (len >= 7)
- w[5] = r->w5;
- if (len >= 8)
- w[6] = r->w6;
- if (len >= 9)
- w[7] = (r->w7_hi << 6) | r->w7_lo;
- if (len >= 10)
- w[8] = (r->w8_hi << 4) | r->w8_lo;
- if (len >= 11)
- w[9] = (r->w9_hi << 2) | r->w9_lo;
- if (len >= 11)
- w[10] = r->w10;
- if (len >= 12)
- w[11] = r->w11;
- if (len >= 13)
- w[12] = (r->w12_hi << 4) | r->w12_lo;
- if (len >= 14)
- w[13] = (r->w13_hi << 2) | r->w13_lo;
- if (len >= 14)
- w[14] = r->w14;
- if (len >= 15)
- w[15] = r->w15;
- if (len >= 16)
- w[16] = (r->w16_hi << 3) | r->w16_lo;
- if (len >= 16)
- w[17] = r->w17;
- f[w[0]].mask |= frqt;
- if (w[1])
- f[(w[0] + w[1]) % 1024].mask |= frqt;
- if (w[2])
- f[(w[0] + ((w[1] - 256 + w[2] - 1) % 511) + 1) % 1024].mask |= frqt;
- if (w[3])
- f[(w[0] + ((w[1] + w[3] - 1) % 511) + 1) % 1024].mask |= frqt;
- if (w[4])
- f[(w[0] + ((w[1] - 256 + ((w[2] - 128 + w[4] - 1) % 255)) % 511) + 1) % 1024].mask |= frqt;
- if (w[5])
- f[(w[0] + ((w[1] + ((w[3] - 128 + w[5] - 1) % 255)) % 511) + 1) % 1024].mask |= frqt;
- if (w[6])
- f[(w[0] + ((w[1] - 256 + ((w[2] + w[6] - 1) % 255)) % 511) + 1) % 1024].mask |= frqt;
- if (w[7])
- f[(w[0] + ((w[1] + ((w[3] + w[7] - 1) % 255)) % 511) + 1) % 1024].mask |= frqt;
- if (w[8])
- f[(w[0] + ((w[1] - 256 + ((w[2] - 128 + ((w[4] - 64 + w[8] - 1) % 127)) % 255)) % 511) + 1) % 1024].mask |= frqt;
- if (w[9])
- f[(w[0] + ((w[1] + ((w[3] - 128 + ((w[5] - 64 + w[9] - 1) % 127)) % 255)) % 511) + 1) % 1024].mask |= frqt;
- if (w[10])
- f[(w[0] + ((w[1] - 256 + ((w[2] + ((w[6] - 64 + w[10] - 1) % 127)) % 255)) % 511) + 1) % 1024].mask |= frqt;
- if (w[11])
- f[(w[0] + ((w[1] + ((w[3] + ((w[7] - 64 + w[11] - 1) % 127)) % 255)) % 511) + 1) % 1024].mask |= frqt;
- if (w[12])
- f[(w[0] + ((w[1] - 256 + ((w[2] - 128 + ((w[4] + w[12] - 1) % 127)) % 255)) % 511) + 1) % 1024].mask |= frqt;
- if (w[13])
- f[(w[0] + ((w[1] + ((w[3] - 128 + ((w[5] + w[13] - 1) % 127)) % 255)) % 511) + 1) % 1024].mask |= frqt;
- if (w[14])
- f[(w[0] + ((w[1] - 256 + ((w[2] + ((w[6] + w[14] - 1) % 127)) % 255)) % 511) + 1) % 1024].mask |= frqt;
- if (w[15])
- f[(w[0] + ((w[1] + ((w[3] + ((w[7] + w[15] - 1) % 127)) % 255)) % 511) + 1) % 1024].mask |= frqt;
- if (w[16])
- f[(w[0] + ((w[1] - 256 + ((w[2] - 128 + ((w[4] - 64 + ((w[8] - 32 + w[16] - 1) % 63)) % 127)) % 255)) % 511) + 1) % 1024].mask |= frqt;
- if (w[17])
- f[(w[0] + ((w[1] + ((w[3] - 128 + ((w[5] - 64 + ((w[9] - 32 + w[17] - 1) % 63)) % 127)) % 255)) % 511) + 1) % 1024].mask |= frqt;
-
- return 0;
- }
- /* 10..101. */
- if ((cd[0] & 0xce & mask) == 0x8a) {
- /* Range 256 format */
- uint16_t w[22]; /* 1..21 */
- struct gsm48_range_256 *r = (struct gsm48_range_256 *)cd;
-
- if (len < 4)
- return -EINVAL;
- memset(w, 0, sizeof(w));
- w[0] = (r->orig_arfcn_hi << 9) | (r->orig_arfcn_mid << 1) | r->orig_arfcn_lo;
- w[1] = (r->w1_hi << 1) | r->w1_lo;
- if (len >= 4)
- w[2] = r->w2;
- if (len >= 5)
- w[3] = r->w3;
- if (len >= 6)
- w[4] = (r->w4_hi << 5) | r->w4_lo;
- if (len >= 7)
- w[5] = (r->w5_hi << 3) | r->w5_lo;
- if (len >= 8)
- w[6] = (r->w6_hi << 1) | r->w6_lo;
- if (len >= 8)
- w[7] = r->w7;
- if (len >= 9)
- w[8] = (r->w8_hi << 4) | r->w8_lo;
- if (len >= 10)
- w[9] = (r->w9_hi << 1) | r->w9_lo;
- if (len >= 10)
- w[10] = r->w10;
- if (len >= 11)
- w[11] = (r->w11_hi << 3) | r->w11_lo;
- if (len >= 11)
- w[12] = r->w12;
- if (len >= 12)
- w[13] = r->w13;
- if (len >= 13)
- w[14] = r->w15;
- if (len >= 13)
- w[15] = (r->w14_hi << 2) | r->w14_lo;
- if (len >= 14)
- w[16] = (r->w16_hi << 3) | r->w16_lo;
- if (len >= 14)
- w[17] = r->w17;
- if (len >= 15)
- w[18] = r->w19;
- if (len >= 15)
- w[19] = (r->w18_hi << 3) | r->w18_lo;
- if (len >= 16)
- w[20] = (r->w20_hi << 3) | r->w20_lo;
- if (len >= 16)
- w[21] = r->w21;
- f[w[0]].mask |= frqt;
- if (w[1])
- f[(w[0] + w[1]) % 1024].mask |= frqt;
- if (w[2])
- f[(w[0] + ((w[1] - 128 + w[2] - 1) % 255) + 1) % 1024].mask |= frqt;
- if (w[3])
- f[(w[0] + ((w[1] + w[3] - 1) % 255) + 1) % 1024].mask |= frqt;
- if (w[4])
- f[(w[0] + ((w[1] - 128 + ((w[2] - 64 + w[4] - 1) % 127)) % 255) + 1) % 1024].mask |= frqt;
- if (w[5])
- f[(w[0] + ((w[1] + ((w[3] - 64 + w[5] - 1) % 127)) % 255) + 1) % 1024].mask |= frqt;
- if (w[6])
- f[(w[0] + ((w[1] - 128 + ((w[2] + w[6] - 1) % 127)) % 255) + 1) % 1024].mask |= frqt;
- if (w[7])
- f[(w[0] + ((w[1] + ((w[3] + w[7] - 1) % 127)) % 255) + 1) % 1024].mask |= frqt;
- if (w[8])
- f[(w[0] + ((w[1] - 128 + ((w[2] - 64 + ((w[4] - 32 + w[8] - 1) % 63)) % 127)) % 255) + 1) % 1024].mask |= frqt;
- if (w[9])
- f[(w[0] + ((w[1] + ((w[3] - 64 + ((w[5] - 32 + w[9] - 1) % 63)) % 127)) % 255) + 1) % 1024].mask |= frqt;
- if (w[10])
- f[(w[0] + ((w[1] - 128 + ((w[2] + ((w[6] - 32 + w[10] - 1) % 63)) % 127)) % 255) + 1) % 1024].mask |= frqt;
- if (w[11])
- f[(w[0] + ((w[1] + ((w[3] + ((w[7] - 32 + w[11] - 1) % 63)) % 127)) % 255) + 1) % 1024].mask |= frqt;
- if (w[12])
- f[(w[0] + ((w[1] - 128 + ((w[2] - 64 + ((w[4] + w[12] - 1) % 63)) % 127)) % 255) + 1) % 1024].mask |= frqt;
- if (w[13])
- f[(w[0] + ((w[1] + ((w[3] - 64 + ((w[5] + w[13] - 1) % 63)) % 127)) % 255) + 1) % 1024].mask |= frqt;
- if (w[14])
- f[(w[0] + ((w[1] - 128 + ((w[2] + ((w[6] + w[14] - 1) % 63)) % 127)) % 255) + 1) % 1024].mask |= frqt;
- if (w[15])
- f[(w[0] + ((w[1] + ((w[3] + ((w[7] + w[15] - 1) % 63)) % 127)) % 255) + 1) % 1024].mask |= frqt;
- if (w[16])
- f[(w[0] + ((w[1] - 128 + ((w[2] - 64 + ((w[4] - 32 + ((w[8] - 16 + w[16] - 1) % 31)) % 63)) % 127)) % 255) + 1) % 1024].mask |= frqt;
- if (w[17])
- f[(w[0] + ((w[1] + ((w[3] - 64 + ((w[5] - 32 + ((w[9] - 16 + w[17] - 1) % 31)) % 63)) % 127)) % 255) + 1) % 1024].mask |= frqt;
- if (w[18])
- f[(w[0] + ((w[1] - 128 + ((w[2] + ((w[6] - 32 + ((w[10] - 16 + w[18] - 1) % 31)) % 63)) % 127)) % 255) + 1) % 1024].mask |= frqt;
- if (w[19])
- f[(w[0] + ((w[1] + ((w[3] + ((w[7] - 32 + ((w[11] - 16 + w[19] - 1) % 31)) % 63)) % 127)) % 255) + 1) % 1024].mask |= frqt;
- if (w[20])
- f[(w[0] + ((w[1] - 128 + ((w[2] - 64 + ((w[4] + ((w[12] - 16 + w[20] - 1) % 31)) % 63)) % 127)) % 255) + 1) % 1024].mask |= frqt;
- if (w[21])
- f[(w[0] + ((w[1] + ((w[3] - 64 + ((w[5] + ((w[13] - 16 + w[21] - 1) % 31)) % 63)) % 127)) % 255) + 1) % 1024].mask |= frqt;
-
- return 0;
- }
- /* 10..110. */
- if ((cd[0] & 0xce & mask) == 0x8c) {
- /* Range 128 format */
- uint16_t w[29]; /* 1..28 */
- struct gsm48_range_128 *r = (struct gsm48_range_128 *)cd;
-
- if (len < 3)
- return -EINVAL;
- memset(w, 0, sizeof(w));
- w[0] = (r->orig_arfcn_hi << 9) | (r->orig_arfcn_mid << 1) | r->orig_arfcn_lo;
- w[1] = r->w1;
- if (len >= 4)
- w[2] = r->w2;
- if (len >= 5)
- w[3] = (r->w3_hi << 4) | r->w3_lo;
- if (len >= 6)
- w[4] = (r->w4_hi << 1) | r->w4_lo;
- if (len >= 6)
- w[5] = r->w5;
- if (len >= 7)
- w[6] = (r->w6_hi << 3) | r->w6_lo;
- if (len >= 7)
- w[7] = r->w7;
- if (len >= 8)
- w[8] = r->w8;
- if (len >= 8)
- w[9] = r->w9;
- if (len >= 9)
- w[10] = r->w10;
- if (len >= 9)
- w[11] = r->w11;
- if (len >= 10)
- w[12] = r->w12;
- if (len >= 10)
- w[13] = r->w13;
- if (len >= 11)
- w[14] = r->w14;
- if (len >= 11)
- w[15] = r->w15;
- if (len >= 12)
- w[16] = r->w16;
- if (len >= 12)
- w[17] = r->w17;
- if (len >= 13)
- w[18] = (r->w18_hi << 1) | r->w18_lo;
- if (len >= 13)
- w[19] = r->w19;
- if (len >= 13)
- w[20] = r->w20;
- if (len >= 14)
- w[21] = (r->w21_hi << 2) | r->w21_lo;
- if (len >= 14)
- w[22] = r->w22;
- if (len >= 14)
- w[23] = r->w23;
- if (len >= 15)
- w[24] = r->w24;
- if (len >= 15)
- w[25] = r->w25;
- if (len >= 16)
- w[26] = (r->w26_hi << 1) | r->w26_lo;
- if (len >= 16)
- w[27] = r->w27;
- if (len >= 16)
- w[28] = r->w28;
- f[w[0]].mask |= frqt;
- if (w[1])
- f[(w[0] + w[1]) % 1024].mask |= frqt;
- if (w[2])
- f[(w[0] + ((w[1] - 64 + w[2] - 1) % 127) + 1) % 1024].mask |= frqt;
- if (w[3])
- f[(w[0] + ((w[1] + w[3] - 1) % 127) + 1) % 1024].mask |= frqt;
- if (w[4])
- f[(w[0] + ((w[1] - 64 + ((w[2] - 32 + w[4] - 1) % 63)) % 127) + 1) % 1024].mask |= frqt;
- if (w[5])
- f[(w[0] + ((w[1] + ((w[3] - 32 + w[5] - 1) % 63)) % 127) + 1) % 1024].mask |= frqt;
- if (w[6])
- f[(w[0] + ((w[1] - 64 + ((w[2] + w[6] - 1) % 63)) % 127) + 1) % 1024].mask |= frqt;
- if (w[7])
- f[(w[0] + ((w[1] + ((w[3] + w[7] - 1) % 63)) % 127) + 1) % 1024].mask |= frqt;
- if (w[8])
- f[(w[0] + ((w[1] - 64 + ((w[2] - 32 + ((w[4] - 16 + w[8] - 1) % 31)) % 63)) % 127) + 1) % 1024].mask |= frqt;
- if (w[9])
- f[(w[0] + ((w[1] + ((w[3] - 32 + ((w[5] - 16 + w[9] - 1) % 31)) % 63)) % 127) + 1) % 1024].mask |= frqt;
- if (w[10])
- f[(w[0] + ((w[1] - 64 + ((w[2] + ((w[6] - 16 + w[10] - 1) % 31)) % 63)) % 127) + 1) % 1024].mask |= frqt;
- if (w[11])
- f[(w[0] + ((w[1] + ((w[3] + ((w[7] - 16 + w[11] - 1) % 31)) % 63)) % 127) + 1) % 1024].mask |= frqt;
- if (w[12])
- f[(w[0] + ((w[1] - 64 + ((w[2] - 32 + ((w[4] + w[12] - 1) % 31)) % 63)) % 127) + 1) % 1024].mask |= frqt;
- if (w[13])
- f[(w[0] + ((w[1] + ((w[3] - 32 + ((w[5] + w[13] - 1) % 31)) % 63)) % 127) + 1) % 1024].mask |= frqt;
- if (w[14])
- f[(w[0] + ((w[1] - 64 + ((w[2] + ((w[6] + w[14] - 1) % 31)) % 63)) % 127) + 1) % 1024].mask |= frqt;
- if (w[15])
- f[(w[0] + ((w[1] + ((w[3] + ((w[7] + w[15] - 1) % 31)) % 63)) % 127) + 1) % 1024].mask |= frqt;
- if (w[16])
- f[(w[0] + ((w[1] - 64 + ((w[2] - 32 + ((w[4] - 16 + ((w[8] - 8 + w[16] - 1) % 15)) % 31)) % 63)) % 127) + 1) % 1024].mask |= frqt;
- if (w[17])
- f[(w[0] + ((w[1] + ((w[3] - 32 + ((w[5] - 16 + ((w[9] - 8 + w[17] - 1) % 15)) % 31)) % 63)) % 127) + 1) % 1024].mask |= frqt;
- if (w[18])
- f[(w[0] + ((w[1] - 64 + ((w[2] + ((w[6] - 16 + ((w[10] - 8 + w[18] - 1) % 15)) % 31)) % 63)) % 127) + 1) % 1024].mask |= frqt;
- if (w[19])
- f[(w[0] + ((w[1] + ((w[3] + ((w[7] - 16 + ((w[11] - 8 + w[19] - 1) % 15)) % 31)) % 63)) % 127) + 1) % 1024].mask |= frqt;
- if (w[20])
- f[(w[0] + ((w[1] - 64 + ((w[2] - 32 + ((w[4] + ((w[12] - 8 + w[20] - 1) % 15)) % 31)) % 63)) % 127) + 1) % 1024].mask |= frqt;
- if (w[21])
- f[(w[0] + ((w[1] + ((w[3] - 32 + ((w[5] + ((w[13] - 8 + w[21] - 1) % 15)) % 31)) % 63)) % 127) + 1) % 1024].mask |= frqt;
- if (w[22])
- f[(w[0] + ((w[1] - 64 + ((w[2] + ((w[6] + ((w[14] - 8 + w[22] - 1) % 15)) % 31)) % 63)) % 127) + 1) % 1024].mask |= frqt;
- if (w[23])
- f[(w[0] + ((w[1] + ((w[3] + ((w[7] + ((w[15] - 8 + w[23] - 1) % 15)) % 31)) % 63)) % 127) + 1) % 1024].mask |= frqt;
- if (w[24])
- f[(w[0] + ((w[1] - 64 + ((w[2] - 32 + ((w[4] - 16 + ((w[8] + w[24] - 1) % 15)) % 31)) % 63)) % 127) + 1) % 1024].mask |= frqt;
- if (w[25])
- f[(w[0] + ((w[1] + ((w[3] - 32 + ((w[5] - 16 + ((w[9] + w[25] - 1) % 15)) % 31)) % 63)) % 127) + 1) % 1024].mask |= frqt;
- if (w[26])
- f[(w[0] + ((w[1] - 64 + ((w[2] + ((w[6] - 16 + ((w[10] + w[26] - 1) % 15)) % 31)) % 63)) % 127) + 1) % 1024].mask |= frqt;
- if (w[27])
- f[(w[0] + ((w[1] + ((w[3] + ((w[7] - 16 + ((w[11] + w[27] - 1) % 15)) % 31)) % 63)) % 127) + 1) % 1024].mask |= frqt;
- if (w[28])
- f[(w[0] + ((w[1] - 64 + ((w[2] - 32 + ((w[4] + ((w[12] + w[28] - 1) % 15)) % 31)) % 63)) % 127) + 1) % 1024].mask |= frqt;
-
- return 0;
- }
- /* 10..111. */
- if ((cd[0] & 0xce & mask) == 0x8e) {
- /* Variable bitmap format (can be any length >= 3) */
- uint16_t orig = 0;
- struct gsm48_var_bit *r = (struct gsm48_var_bit *)cd;
-
- if (len < 3)
- return -EINVAL;
- orig = (r->orig_arfcn_hi << 9) | (r->orig_arfcn_mid << 1) | r->orig_arfcn_lo;
- f[orig].mask |= frqt;
- for (i = 1; 2 + (i >> 3) < len; i++)
- if ((cd[2 + (i >> 3)] & (0x80 >> (i & 7))))
- f[(orig + i) % 1024].mask |= frqt;
-
- return 0;
- }
-
- return 0;
-}
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/gsm/gsm_utils.c b/Src/osmoconbb/src/shared/libosmocore/src/gsm/gsm_utils.c
deleted file mode 100644
index 1fa6116..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/gsm/gsm_utils.c
+++ /dev/null
@@ -1,566 +0,0 @@
-/*
- * (C) 2008 by Daniel Willmann <daniel@totalueberwachung.de>
- * (C) 2009 by Holger Hans Peter Freyther <zecke@selfish.org>
- * (C) 2009-2010 by Harald Welte <laforge@gnumonks.org>
- * (C) 2010 by Nico Golde <nico@ngolde.de>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-//#include <openbsc/gsm_data.h>
-#include <osmocom/core/utils.h>
-#include <osmocom/gsm/gsm_utils.h>
-
-#include <stdlib.h>
-#include <stdint.h>
-#include <string.h>
-#include <stdio.h>
-#include <errno.h>
-#include <ctype.h>
-
-#include "../../config.h"
-
-/* ETSI GSM 03.38 6.2.1 and 6.2.1.1 default alphabet
- * Greek symbols at hex positions 0x10 and 0x12-0x1a
- * left out as they can't be handled with a char and
- * since most phones don't display or write these
- * characters this would only needlessly make the code
- * more complex
-*/
-static unsigned char gsm_7bit_alphabet[] = {
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0a, 0xff, 0xff, 0x0d, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0x20, 0x21, 0x22, 0x23, 0x02, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c,
- 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b,
- 0x3c, 0x3d, 0x3e, 0x3f, 0x00, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
- 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59,
- 0x5a, 0x3c, 0x2f, 0x3e, 0x14, 0x11, 0xff, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
- 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
- 0x78, 0x79, 0x7a, 0x28, 0x40, 0x29, 0x3d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0x0c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5e, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x40, 0xff, 0x01, 0xff,
- 0x03, 0xff, 0x7b, 0x7d, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5c, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5b, 0x7e, 0x5d, 0xff, 0x7c, 0xff, 0xff, 0xff,
- 0xff, 0x5b, 0x0e, 0x1c, 0x09, 0xff, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5d,
- 0xff, 0xff, 0xff, 0xff, 0x5c, 0xff, 0x0b, 0xff, 0xff, 0xff, 0x5e, 0xff, 0xff, 0x1e, 0x7f,
- 0xff, 0xff, 0xff, 0x7b, 0x0f, 0x1d, 0xff, 0x04, 0x05, 0xff, 0xff, 0x07, 0xff, 0xff, 0xff,
- 0xff, 0x7d, 0x08, 0xff, 0xff, 0xff, 0x7c, 0xff, 0x0c, 0x06, 0xff, 0xff, 0x7e, 0xff, 0xff
-};
-
-/* GSM 03.38 6.2.1 Character lookup for decoding */
-static int gsm_septet_lookup(uint8_t ch)
-{
- int i = 0;
- for (; i < sizeof(gsm_7bit_alphabet); i++) {
- if (gsm_7bit_alphabet[i] == ch)
- return i;
- }
- return -1;
-}
-
-/* Compute the number of octets from the number of septets, for instance: 47 septets needs 41,125 = 42 octets */
-uint8_t gsm_get_octet_len(const uint8_t sept_len){
- int octet_len = (sept_len * 7) / 8;
- if ((sept_len * 7) % 8 != 0)
- octet_len++;
-
- return octet_len;
-}
-
-/* GSM 03.38 6.2.1 Character unpacking */
-int gsm_7bit_decode_hdr(char *text, const uint8_t *user_data, uint8_t septet_l, uint8_t ud_hdr_ind)
-{
- int i = 0;
- int shift = 0;
-
- uint8_t *rtext = calloc(septet_l, sizeof(uint8_t));
- uint8_t tmp;
-
- /* skip the user data header */
- if (ud_hdr_ind) {
- /* get user data header length + 1 (for the 'user data header length'-field) */
- shift = ((user_data[0] + 1) * 8) / 7;
- if ((((user_data[0] + 1) * 8) % 7) != 0)
- shift++;
- septet_l = septet_l - shift;
- }
-
- for (i = 0; i < septet_l; i++) {
- rtext[i] =
- ((user_data[((i + shift) * 7 + 7) >> 3] <<
- (7 - (((i + shift) * 7 + 7) & 7))) |
- (user_data[((i + shift) * 7) >> 3] >>
- (((i + shift) * 7) & 7))) & 0x7f;
- }
-
- for (i = 0; i < septet_l; i++) {
- /* this is an extension character */
- if(rtext[i] == 0x1b && i + 1 < septet_l){
- tmp = rtext[i+1];
- *(text++) = gsm_7bit_alphabet[0x7f + tmp];
- i++;
- continue;
- }
-
- *(text++) = gsm_septet_lookup(rtext[i]);
- }
-
- if (ud_hdr_ind)
- i += shift;
- *text = '\0';
- free(rtext);
-
- return i;
-}
-
-int gsm_7bit_decode(char *text, const uint8_t *user_data, uint8_t septet_l)
-{
- return gsm_7bit_decode_hdr(text, user_data, septet_l, 0);
-}
-
-/* GSM 03.38 6.2.1 Prepare character packing */
-int gsm_septet_encode(uint8_t *result, const char *data)
-{
- int i, y = 0;
- uint8_t ch;
- for (i = 0; i < strlen(data); i++) {
- ch = data[i];
- switch(ch){
- /* fall-through for extension characters */
- case 0x0c:
- case 0x5e:
- case 0x7b:
- case 0x7d:
- case 0x5c:
- case 0x5b:
- case 0x7e:
- case 0x5d:
- case 0x7c:
- result[y++] = 0x1b;
- default:
- result[y] = gsm_7bit_alphabet[ch];
- break;
- }
- y++;
- }
-
- return y;
-}
-
-/* 7bit to octet packing */
-int gsm_septets2octets(uint8_t *result, uint8_t *rdata, uint8_t septet_len, uint8_t padding){
- int i = 0, z = 0;
- uint8_t cb, nb;
- int shift = 0;
- uint8_t *data = calloc(septet_len + 1, sizeof(uint8_t));
-
- if (padding) {
- shift = 7 - padding;
- /* the first zero is needed for padding */
- memcpy(data + 1, rdata, septet_len);
- septet_len++;
- } else
- memcpy(data, rdata, septet_len);
-
- for (i = 0; i < septet_len; i++) {
- if (shift == 7) {
- /*
- * special end case with the. This is necessary if the
- * last septet fits into the previous octet. E.g. 48
- * non-extension characters:
- * ....ag ( a = 1100001, g = 1100111)
- * result[40] = 100001 XX, result[41] = 1100111 1 */
- if (i + 1 < septet_len) {
- shift = 0;
- continue;
- } else if (i + 1 == septet_len)
- break;
- }
-
- cb = (data[i] & 0x7f) >> shift;
- if (i + 1 < septet_len) {
- nb = (data[i + 1] & 0x7f) << (7 - shift);
- cb = cb | nb;
- }
-
- result[z++] = cb;
- shift++;
- }
-
- free(data);
-
- return z;
-}
-
-/* GSM 03.38 6.2.1 Character packing */
-int gsm_7bit_encode(uint8_t *result, const char *data)
-{
- int y = 0, z = 0;
- /* prepare for the worst case, every character expanding to two bytes */
- uint8_t *rdata = calloc(strlen(data) * 2, sizeof(uint8_t));
- y = gsm_septet_encode(rdata, data);
- z = gsm_septets2octets(result, rdata, y, 0);
-
- free(rdata);
-
- /*
- * We don't care about the number of octets (z), because they are not
- * unique. E.g.:
- * 1.) 46 non-extension characters + 1 extension character
- * => (46 * 7 bit + (1 * (2 * 7 bit))) / 8 bit = 42 octets
- * 2.) 47 non-extension characters
- * => (47 * 7 bit) / 8 bit = 41,125 = 42 octets
- * 3.) 48 non-extension characters
- * => (48 * 7 bit) / 8 bit = 42 octects
- */
- return y;
-}
-
-/* convert power class to dBm according to GSM TS 05.05 */
-unsigned int ms_class_gmsk_dbm(enum gsm_band band, int class)
-{
- switch (band) {
- case GSM_BAND_450:
- case GSM_BAND_480:
- case GSM_BAND_750:
- case GSM_BAND_900:
- case GSM_BAND_810:
- case GSM_BAND_850:
- if (class == 1)
- return 43; /* 20W */
- if (class == 2)
- return 39; /* 8W */
- if (class == 3)
- return 37; /* 5W */
- if (class == 4)
- return 33; /* 2W */
- if (class == 5)
- return 29; /* 0.8W */
- break;
- case GSM_BAND_1800:
- if (class == 1)
- return 30; /* 1W */
- if (class == 2)
- return 24; /* 0.25W */
- if (class == 3)
- return 36; /* 4W */
- break;
- case GSM_BAND_1900:
- if (class == 1)
- return 30; /* 1W */
- if (class == 2)
- return 24; /* 0.25W */
- if (class == 3)
- return 33; /* 2W */
- break;
- }
- return -EINVAL;
-}
-
-/* determine power control level for given dBm value, as indicated
- * by the tables in chapter 4.1.1 of GSM TS 05.05 */
-int ms_pwr_ctl_lvl(enum gsm_band band, unsigned int dbm)
-{
- switch (band) {
- case GSM_BAND_450:
- case GSM_BAND_480:
- case GSM_BAND_750:
- case GSM_BAND_900:
- case GSM_BAND_810:
- case GSM_BAND_850:
- if (dbm >= 39)
- return 0;
- else if (dbm < 5)
- return 19;
- else {
- /* we are guaranteed to have (5 <= dbm < 39) */
- return 2 + ((39 - dbm) / 2);
- }
- break;
- case GSM_BAND_1800:
- if (dbm >= 36)
- return 29;
- else if (dbm >= 34)
- return 30;
- else if (dbm >= 32)
- return 31;
- else if (dbm == 31)
- return 0;
- else {
- /* we are guaranteed to have (0 <= dbm < 31) */
- return (30 - dbm) / 2;
- }
- break;
- case GSM_BAND_1900:
- if (dbm >= 33)
- return 30;
- else if (dbm >= 32)
- return 31;
- else if (dbm == 31)
- return 0;
- else {
- /* we are guaranteed to have (0 <= dbm < 31) */
- return (30 - dbm) / 2;
- }
- break;
- }
- return -EINVAL;
-}
-
-int ms_pwr_dbm(enum gsm_band band, uint8_t lvl)
-{
- lvl &= 0x1f;
-
- switch (band) {
- case GSM_BAND_450:
- case GSM_BAND_480:
- case GSM_BAND_750:
- case GSM_BAND_900:
- case GSM_BAND_810:
- case GSM_BAND_850:
- if (lvl < 2)
- return 39;
- else if (lvl < 20)
- return 39 - ((lvl - 2) * 2) ;
- else
- return 5;
- break;
- case GSM_BAND_1800:
- if (lvl < 16)
- return 30 - (lvl * 2);
- else if (lvl < 29)
- return 0;
- else
- return 36 - ((lvl - 29) * 2);
- break;
- case GSM_BAND_1900:
- if (lvl < 16)
- return 30 - (lvl * 2);
- else if (lvl < 30)
- return -EINVAL;
- else
- return 33 - (lvl - 30);
- break;
- }
- return -EINVAL;
-}
-
-/* According to TS 08.05 Chapter 8.1.4 */
-int rxlev2dbm(uint8_t rxlev)
-{
- if (rxlev > 63)
- rxlev = 63;
-
- return -110 + rxlev;
-}
-
-/* According to TS 08.05 Chapter 8.1.4 */
-uint8_t dbm2rxlev(int dbm)
-{
- int rxlev = dbm + 110;
-
- if (rxlev > 63)
- rxlev = 63;
- else if (rxlev < 0)
- rxlev = 0;
-
- return rxlev;
-}
-
-const char *gsm_band_name(enum gsm_band band)
-{
- switch (band) {
- case GSM_BAND_450:
- return "GSM450";
- case GSM_BAND_480:
- return "GSM480";
- case GSM_BAND_750:
- return "GSM750";
- case GSM_BAND_810:
- return "GSM810";
- case GSM_BAND_850:
- return "GSM850";
- case GSM_BAND_900:
- return "GSM900";
- case GSM_BAND_1800:
- return "DCS1800";
- case GSM_BAND_1900:
- return "PCS1900";
- }
- return "invalid";
-}
-
-enum gsm_band gsm_band_parse(const char* mhz)
-{
- while (*mhz && !isdigit(*mhz))
- mhz++;
-
- if (*mhz == '\0')
- return -EINVAL;
-
- switch (strtol(mhz, NULL, 10)) {
- case 450:
- return GSM_BAND_450;
- case 480:
- return GSM_BAND_480;
- case 750:
- return GSM_BAND_750;
- case 810:
- return GSM_BAND_810;
- case 850:
- return GSM_BAND_850;
- case 900:
- return GSM_BAND_900;
- case 1800:
- return GSM_BAND_1800;
- case 1900:
- return GSM_BAND_1900;
- default:
- return -EINVAL;
- }
-}
-
-enum gsm_band gsm_arfcn2band(uint16_t arfcn)
-{
- int is_pcs = arfcn & ARFCN_PCS;
-
- arfcn &= ~ARFCN_FLAG_MASK;
-
- if (is_pcs)
- return GSM_BAND_1900;
- else if (arfcn <= 124)
- return GSM_BAND_900;
- else if (arfcn >= 955 && arfcn <= 1023)
- return GSM_BAND_900;
- else if (arfcn >= 128 && arfcn <= 251)
- return GSM_BAND_850;
- else if (arfcn >= 512 && arfcn <= 885)
- return GSM_BAND_1800;
- else if (arfcn >= 259 && arfcn <= 293)
- return GSM_BAND_450;
- else if (arfcn >= 306 && arfcn <= 340)
- return GSM_BAND_480;
- else if (arfcn >= 350 && arfcn <= 425)
- return GSM_BAND_810;
- else if (arfcn >= 438 && arfcn <= 511)
- return GSM_BAND_750;
- else
- return GSM_BAND_1800;
-}
-
-/* Convert an ARFCN to the frequency in MHz * 10 */
-uint16_t gsm_arfcn2freq10(uint16_t arfcn, int uplink)
-{
- uint16_t freq10_ul;
- uint16_t freq10_dl;
- int is_pcs = arfcn & ARFCN_PCS;
-
- arfcn &= ~ARFCN_FLAG_MASK;
-
- if (is_pcs) {
- /* DCS 1900 */
- arfcn &= ~ARFCN_PCS;
- freq10_ul = 18502 + 2 * (arfcn-512);
- freq10_dl = freq10_ul + 800;
- } else if (arfcn <= 124) {
- /* Primary GSM + ARFCN 0 of E-GSM */
- freq10_ul = 8900 + 2 * arfcn;
- freq10_dl = freq10_ul + 450;
- } else if (arfcn >= 955 && arfcn <= 1023) {
- /* E-GSM and R-GSM */
- freq10_ul = 8900 + 2 * (arfcn - 1024);
- freq10_dl = freq10_ul + 450;
- } else if (arfcn >= 128 && arfcn <= 251) {
- /* GSM 850 */
- freq10_ul = 8242 + 2 * (arfcn - 128);
- freq10_dl = freq10_ul + 450;
- } else if (arfcn >= 512 && arfcn <= 885) {
- /* DCS 1800 */
- freq10_ul = 17102 + 2 * (arfcn - 512);
- freq10_dl = freq10_ul + 950;
- } else if (arfcn >= 259 && arfcn <= 293) {
- /* GSM 450 */
- freq10_ul = 4506 + 2 * (arfcn - 259);
- freq10_dl = freq10_ul + 100;
- } else if (arfcn >= 306 && arfcn <= 340) {
- /* GSM 480 */
- freq10_ul = 4790 + 2 * (arfcn - 306);
- freq10_dl = freq10_ul + 100;
- } else if (arfcn >= 350 && arfcn <= 425) {
- /* GSM 810 */
- freq10_ul = 8060 + 2 * (arfcn - 350);
- freq10_dl = freq10_ul + 450;
- } else if (arfcn >= 438 && arfcn <= 511) {
- /* GSM 750 */
- freq10_ul = 7472 + 2 * (arfcn - 438);
- freq10_dl = freq10_ul + 300;
- } else
- return 0xffff;
-
- if (uplink)
- return freq10_ul;
- else
- return freq10_dl;
-}
-
-void gsm_fn2gsmtime(struct gsm_time *time, uint32_t fn)
-{
- time->fn = fn;
- time->t1 = time->fn / (26*51);
- time->t2 = time->fn % 26;
- time->t3 = time->fn % 51;
- time->tc = (time->fn / 51) % 8;
-}
-
-uint32_t gsm_gsmtime2fn(struct gsm_time *time)
-{
- /* TS 05.02 Chapter 4.3.3 TDMA frame number */
- return (51 * ((time->t3 - time->t2 + 26) % 26) + time->t3 + (26 * 51 * time->t1));
-}
-
-/* TS 03.03 Chapter 2.6 */
-int gprs_tlli_type(uint32_t tlli)
-{
- if ((tlli & 0xc0000000) == 0xc0000000)
- return TLLI_LOCAL;
- else if ((tlli & 0xc0000000) == 0x80000000)
- return TLLI_FOREIGN;
- else if ((tlli & 0xf8000000) == 0x78000000)
- return TLLI_RANDOM;
- else if ((tlli & 0xf8000000) == 0x70000000)
- return TLLI_AUXILIARY;
-
- return TLLI_RESERVED;
-}
-
-uint32_t gprs_tmsi2tlli(uint32_t p_tmsi, enum gprs_tlli_type type)
-{
- uint32_t tlli;
- switch (type) {
- case TLLI_LOCAL:
- tlli = p_tmsi | 0xc0000000;
- break;
- case TLLI_FOREIGN:
- tlli = (p_tmsi & 0x3fffffff) | 0x80000000;
- break;
- default:
- tlli = 0;
- break;
- }
- return tlli;
-}
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/gsm/lapdm.c b/Src/osmoconbb/src/shared/libosmocore/src/gsm/lapdm.c
deleted file mode 100644
index 470a5b2..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/gsm/lapdm.c
+++ /dev/null
@@ -1,2528 +0,0 @@
-/* GSM LAPDm (TS 04.06) implementation */
-
-/* (C) 2010-2011 by Harald Welte <laforge@gnumonks.org>
- * (C) 2010 by Andreas Eversberg <jolly@eversberg.eu>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-/* Notes on Buffering: rcv_buffer, tx_queue, tx_hist, send_buffer, send_queue
- *
- * RX data is stored in the rcv_buffer (pointer). If the message is complete, it
- * is removed from rcv_buffer pointer and forwarded to L3. If the RX data is
- * received while there is an incomplete rcv_buffer, it is appended to it.
- *
- * TX data is stored in the send_queue first. When transmitting a frame,
- * the first message in the send_queue is moved to the send_buffer. There it
- * resides until all fragments are acknowledged. Fragments to be sent by I
- * frames are stored in the tx_hist buffer for resend, if required. Also the
- * current fragment is copied into the tx_queue. There it resides until it is
- * forwarded to layer 1.
- *
- * In case we have SAPI 0, we only have a window size of 1, so the unack-
- * nowledged message resides always in the send_buffer. In case of a suspend,
- * it can be written back to the first position of the send_queue.
- *
- * The layer 1 normally sends a PH-READY-TO-SEND. But because we use
- * asynchronous transfer between layer 1 and layer 2 (serial link), we must
- * send a frame before layer 1 reaches the right timeslot to send it. So we
- * move the tx_queue to layer 1 when there is not already a pending frame, and
- * wait until acknowledge after the frame has been sent. If we receive an
- * acknowledge, we can send the next frame from the buffer, if any.
- *
- * The moving of tx_queue to layer 1 may also trigger T200, if desired. Also it
- * will trigger next I frame, if possible.
- *
- */
-
-#include <stdio.h>
-#include <stdint.h>
-#include <string.h>
-#include <errno.h>
-#include <arpa/inet.h>
-
-#include <osmocom/core/logging.h>
-#include <osmocom/core/timer.h>
-#include <osmocom/core/msgb.h>
-#include <osmocom/core/utils.h>
-
-#include <osmocom/gsm/tlv.h>
-#include <osmocom/gsm/rsl.h>
-#include <osmocom/gsm/prim.h>
-#include <osmocom/gsm/gsm_utils.h>
-#include <osmocom/gsm/lapdm.h>
-
-#include <osmocom/gsm/protocol/gsm_04_08.h>
-#include <osmocom/gsm/protocol/gsm_08_58.h>
-
-/* TS 04.06 Figure 4 / Section 3.2 */
-#define LAPDm_LPD_NORMAL 0
-#define LAPDm_LPD_SMSCB 1
-#define LAPDm_SAPI_NORMAL 0
-#define LAPDm_SAPI_SMS 3
-#define LAPDm_ADDR(lpd, sapi, cr) ((((lpd) & 0x3) << 5) | (((sapi) & 0x7) << 2) | (((cr) & 0x1) << 1) | 0x1)
-
-#define LAPDm_ADDR_SAPI(addr) (((addr) >> 2) & 0x7)
-#define LAPDm_ADDR_CR(addr) (((addr) >> 1) & 0x1)
-#define LAPDm_ADDR_EA(addr) ((addr) & 0x1)
-
-/* TS 04.06 Table 3 / Section 3.4.3 */
-#define LAPDm_CTRL_I(nr, ns, p) ((((nr) & 0x7) << 5) | (((p) & 0x1) << 4) | (((ns) & 0x7) << 1))
-#define LAPDm_CTRL_S(nr, s, p) ((((nr) & 0x7) << 5) | (((p) & 0x1) << 4) | (((s) & 0x3) << 2) | 0x1)
-#define LAPDm_CTRL_U(u, p) ((((u) & 0x1c) << (5-2)) | (((p) & 0x1) << 4) | (((u) & 0x3) << 2) | 0x3)
-
-#define LAPDm_CTRL_is_I(ctrl) (((ctrl) & 0x1) == 0)
-#define LAPDm_CTRL_is_S(ctrl) (((ctrl) & 0x3) == 1)
-#define LAPDm_CTRL_is_U(ctrl) (((ctrl) & 0x3) == 3)
-
-#define LAPDm_CTRL_U_BITS(ctrl) ((((ctrl) & 0xC) >> 2) | ((ctrl) & 0xE0) >> 3)
-#define LAPDm_CTRL_PF_BIT(ctrl) (((ctrl) >> 4) & 0x1)
-
-#define LAPDm_CTRL_S_BITS(ctrl) (((ctrl) & 0xC) >> 2)
-
-#define LAPDm_CTRL_I_Ns(ctrl) (((ctrl) & 0xE) >> 1)
-#define LAPDm_CTRL_Nr(ctrl) (((ctrl) & 0xE0) >> 5)
-
-/* TS 04.06 Table 4 / Section 3.8.1 */
-#define LAPDm_U_SABM 0x7
-#define LAPDm_U_DM 0x3
-#define LAPDm_U_UI 0x0
-#define LAPDm_U_DISC 0x8
-#define LAPDm_U_UA 0xC
-
-#define LAPDm_S_RR 0x0
-#define LAPDm_S_RNR 0x1
-#define LAPDm_S_REJ 0x2
-
-#define LAPDm_LEN(len) ((len << 2) | 0x1)
-#define LAPDm_MORE 0x2
-
-/* TS 04.06 Section 5.8.3 */
-#define N201_AB_SACCH 18
-#define N201_AB_SDCCH 20
-#define N201_AB_FACCH 20
-#define N201_Bbis 23
-#define N201_Bter_SACCH 21
-#define N201_Bter_SDCCH 23
-#define N201_Bter_FACCH 23
-#define N201_B4 19
-
-/* 5.8.2.1 N200 during establish and release */
-#define N200_EST_REL 5
-/* 5.8.2.1 N200 during timer recovery state */
-#define N200_TR_SACCH 5
-#define N200_TR_SDCCH 23
-#define N200_TR_FACCH_FR 34
-#define N200_TR_EFACCH_FR 48
-#define N200_TR_FACCH_HR 29
-/* FIXME: this depends on chan type */
-#define N200 N200_TR_SACCH
-
-#define CR_MS2BS_CMD 0
-#define CR_MS2BS_RESP 1
-#define CR_BS2MS_CMD 1
-#define CR_BS2MS_RESP 0
-
-/* Set T200 to 1 Second (OpenBTS uses 900ms) */
-#define T200 1, 0
-
-/* k value for each SAPI */
-static uint8_t k_sapi[] = {1, 1, 1, 1, 1, 1, 1, 1};
-
-enum lapdm_format {
- LAPDm_FMT_A,
- LAPDm_FMT_B,
- LAPDm_FMT_Bbis,
- LAPDm_FMT_Bter,
- LAPDm_FMT_B4,
-};
-
-static void lapdm_t200_cb(void *data);
-static int rslms_send_i(struct lapdm_msg_ctx *mctx, int line);
-
-/* UTILITY FUNCTIONS */
-
-static inline uint8_t inc_mod8(uint8_t x)
-{
- return (x + 1) & 7;
-}
-
-static inline uint8_t add_mod8(uint8_t x, uint8_t y)
-{
- return (x + y) & 7;
-}
-
-static inline uint8_t sub_mod8(uint8_t x, uint8_t y)
-{
- return (x - y) & 7; /* handle negative results correctly */
-}
-
-static void lapdm_dl_init(struct lapdm_datalink *dl,
- struct lapdm_entity *entity)
-{
- memset(dl, 0, sizeof(*dl));
- INIT_LLIST_HEAD(&dl->send_queue);
- INIT_LLIST_HEAD(&dl->tx_queue);
- dl->state = LAPDm_STATE_IDLE;
- dl->t200.data = dl;
- dl->t200.cb = &lapdm_t200_cb;
- dl->entity = entity;
-}
-
-void lapdm_entity_init(struct lapdm_entity *le, enum lapdm_mode mode)
-{
- unsigned int i;
-
- for (i = 0; i < ARRAY_SIZE(le->datalink); i++)
- lapdm_dl_init(&le->datalink[i], le);
-
- lapdm_entity_set_mode(le, mode);
-}
-
-void lapdm_channel_init(struct lapdm_channel *lc, enum lapdm_mode mode)
-{
- lapdm_entity_init(&lc->lapdm_acch, mode);
- lapdm_entity_init(&lc->lapdm_dcch, mode);
-}
-
-
-static void lapdm_dl_flush_send(struct lapdm_datalink *dl)
-{
- struct msgb *msg;
-
- /* Flush send-queue */
- while ((msg = msgb_dequeue(&dl->send_queue)))
- msgb_free(msg);
-
- /* Clear send-buffer */
- if (dl->send_buffer) {
- msgb_free(dl->send_buffer);
- dl->send_buffer = NULL;
- }
-}
-
-static void lapdm_dl_flush_tx(struct lapdm_datalink *dl)
-{
- struct msgb *msg;
- unsigned int i;
-
- while ((msg = msgb_dequeue(&dl->tx_queue)))
- msgb_free(msg);
- for (i = 0; i < 8; i++)
- dl->tx_length[i] = 0;
-}
-
-void lapdm_entity_exit(struct lapdm_entity *le)
-{
- unsigned int i;
- struct lapdm_datalink *dl;
-
- for (i = 0; i < ARRAY_SIZE(le->datalink); i++) {
- dl = &le->datalink[i];
- lapdm_dl_flush_tx(dl);
- lapdm_dl_flush_send(dl);
- if (dl->rcv_buffer)
- msgb_free(dl->rcv_buffer);
- }
-}
-
-void lapdm_channel_exit(struct lapdm_channel *lc)
-{
- lapdm_entity_exit(&lc->lapdm_acch);
- lapdm_entity_exit(&lc->lapdm_dcch);
-}
-
-static void lapdm_dl_newstate(struct lapdm_datalink *dl, uint32_t state)
-{
- LOGP(DLLAPDM, LOGL_INFO, "new state %s -> %s\n",
- lapdm_state_names[dl->state], lapdm_state_names[state]);
-
- dl->state = state;
-}
-
-static struct lapdm_datalink *datalink_for_sapi(struct lapdm_entity *le, uint8_t sapi)
-{
- switch (sapi) {
- case LAPDm_SAPI_NORMAL:
- return &le->datalink[0];
- case LAPDm_SAPI_SMS:
- return &le->datalink[1];
- default:
- return NULL;
- }
-}
-
-/* remove the L2 header from a MSGB */
-static inline unsigned char *msgb_pull_l2h(struct msgb *msg)
-{
- unsigned char *ret = msgb_pull(msg, msg->l3h - msg->l2h);
- msg->l2h = NULL;
- return ret;
-}
-
-/* Append padding (if required) */
-static void lapdm_pad_msgb(struct msgb *msg, uint8_t n201)
-{
- int pad_len = n201 - msgb_l2len(msg);
- uint8_t *data;
-
- if (pad_len < 0) {
- LOGP(DLLAPDM, LOGL_ERROR,
- "cannot pad message that is already too big!\n");
- return;
- }
-
- data = msgb_put(msg, pad_len);
- memset(data, 0x2B, pad_len);
-}
-
-/* input function that L2 calls when sending messages up to L3 */
-static int rslms_sendmsg(struct msgb *msg, struct lapdm_entity *le)
-{
- if (!le->l3_cb) {
- msgb_free(msg);
- return -EIO;
- }
-
- /* call the layer2 message handler that is registered */
- return le->l3_cb(msg, le, le->l3_ctx);
-}
-
-/* write a frame into the tx queue */
-static int tx_ph_data_enqueue(struct lapdm_datalink *dl, struct msgb *msg,
- uint8_t chan_nr, uint8_t link_id, uint8_t n201)
-{
- struct lapdm_entity *le = dl->entity;
- struct osmo_phsap_prim pp;
-
- /* if there is a pending message, queue it */
- if (le->tx_pending || le->flags & LAPDM_ENT_F_POLLING_ONLY) {
- *msgb_push(msg, 1) = n201;
- *msgb_push(msg, 1) = link_id;
- *msgb_push(msg, 1) = chan_nr;
- msgb_enqueue(&dl->tx_queue, msg);
- return -EBUSY;
- }
-
- osmo_prim_init(&pp.oph, SAP_GSM_PH, PRIM_PH_DATA,
- PRIM_OP_REQUEST, msg);
- pp.u.data.chan_nr = chan_nr;
- pp.u.data.link_id = link_id;
-
- /* send the frame now */
- le->tx_pending = 0; /* disabled flow control */
- lapdm_pad_msgb(msg, n201);
-
- return le->l1_prim_cb(&pp.oph, le->l1_ctx);
-}
-
-static struct msgb *tx_dequeue_msgb(struct lapdm_entity *le)
-{
- struct lapdm_datalink *dl;
- int last = le->last_tx_dequeue;
- int i = last, n = ARRAY_SIZE(le->datalink);
- struct msgb *msg = NULL;
-
- /* round-robin dequeue */
- do {
- /* next */
- i = (i + 1) % n;
- dl = &le->datalink[i];
- if ((msg = msgb_dequeue(&dl->tx_queue)))
- break;
- } while (i != last);
-
- if (msg) {
- /* Set last dequeue position */
- le->last_tx_dequeue = i;
- }
-
- return msg;
-}
-
-/* dequeue a msg that's pending transmission via L1 and wrap it into
- * a osmo_phsap_prim */
-int lapdm_phsap_dequeue_prim(struct lapdm_entity *le, struct osmo_phsap_prim *pp)
-{
- struct msgb *msg;
- uint8_t n201;
-
- msg = tx_dequeue_msgb(le);
- if (!msg)
- return -ENODEV;
-
- /* if we have a message, send PH-DATA.req */
- osmo_prim_init(&pp->oph, SAP_GSM_PH, PRIM_PH_DATA,
- PRIM_OP_REQUEST, msg);
-
- /* Pull chan_nr and link_id */
- pp->u.data.chan_nr = *msg->data;
- msgb_pull(msg, 1);
- pp->u.data.link_id = *msg->data;
- msgb_pull(msg, 1);
- n201 = *msg->data;
- msgb_pull(msg, 1);
-
- /* Pad the frame, we can transmit now */
- lapdm_pad_msgb(msg, n201);
-
- return 0;
-}
-
-/* get next frame from the tx queue. because the ms has multiple datalinks,
- * each datalink's queue is read round-robin.
- */
-static int l2_ph_data_conf(struct msgb *msg, struct lapdm_entity *le)
-{
- struct osmo_phsap_prim pp;
-
- /* we may send again */
- le->tx_pending = 0;
-
- /* free confirm message */
- if (msg)
- msgb_free(msg);
-
- if (lapdm_phsap_dequeue_prim(le, &pp) < 0) {
- /* no message in all queues */
-
- /* If user didn't request PH-EMPTY_FRAME.req, abort */
- if (!(le->flags & LAPDM_ENT_F_EMPTY_FRAME))
- return 0;
-
- /* otherwise, send PH-EMPTY_FRAME.req */
- osmo_prim_init(&pp.oph, SAP_GSM_PH,
- PRIM_PH_EMPTY_FRAME,
- PRIM_OP_REQUEST, NULL);
- } else {
- le->tx_pending = 1;
- }
-
- return le->l1_prim_cb(&pp.oph, le->l1_ctx);
-}
-
-/* Create RSLms various RSLms messages */
-static int send_rslms_rll_l3(uint8_t msg_type, struct lapdm_msg_ctx *mctx,
- struct msgb *msg)
-{
- /* Add the RSL + RLL header */
- rsl_rll_push_l3(msg, msg_type, mctx->chan_nr, mctx->link_id, 1);
-
- /* send off the RSLms message to L3 */
- return rslms_sendmsg(msg, mctx->dl->entity);
-}
-
-/* Take a B4 format message from L1 and create RSLms UNIT DATA IND */
-static int send_rslms_rll_l3_ui(struct lapdm_msg_ctx *mctx, struct msgb *msg)
-{
- uint8_t l3_len = msg->tail - (uint8_t *)msgb_l3(msg);
- struct abis_rsl_rll_hdr *rllh;
-
- /* Add the RSL + RLL header */
- msgb_tv16_push(msg, RSL_IE_L3_INFO, l3_len);
- msgb_push(msg, 2 + 2);
- rsl_rll_push_hdr(msg, RSL_MT_UNIT_DATA_IND, mctx->chan_nr,
- mctx->link_id, 1);
- rllh = (struct abis_rsl_rll_hdr *)msgb_l2(msg);
-
- rllh->data[0] = RSL_IE_TIMING_ADVANCE;
- rllh->data[1] = mctx->ta_ind;
-
- rllh->data[2] = RSL_IE_MS_POWER;
- rllh->data[3] = mctx->tx_power_ind;
-
- return rslms_sendmsg(msg, mctx->dl->entity);
-}
-
-static int send_rll_simple(uint8_t msg_type, struct lapdm_msg_ctx *mctx)
-{
- struct msgb *msg;
-
- msg = rsl_rll_simple(msg_type, mctx->chan_nr, mctx->link_id, 1);
-
- /* send off the RSLms message to L3 */
- return rslms_sendmsg(msg, mctx->dl->entity);
-}
-
-static int rsl_rll_error(uint8_t cause, struct lapdm_msg_ctx *mctx)
-{
- struct msgb *msg;
-
- LOGP(DLLAPDM, LOGL_NOTICE, "sending MDL-ERROR-IND %d\n", cause);
- msg = rsl_rll_simple(RSL_MT_ERROR_IND, mctx->chan_nr, mctx->link_id, 1);
- msg->l2h = msgb_put(msg, sizeof(struct abis_rsl_rll_hdr));
- msgb_tlv_put(msg, RSL_IE_RLM_CAUSE, 1, &cause);
- return rslms_sendmsg(msg, mctx->dl->entity);
-}
-
-static int check_length_ind(struct lapdm_msg_ctx *mctx, uint8_t length_ind)
-{
- if (!(length_ind & 0x01)) {
- /* G.4.1 If the EL bit is set to "0", an MDL-ERROR-INDICATION
- * primitive with cause "frame not implemented" is sent to the
- * mobile management entity. */
- LOGP(DLLAPDM, LOGL_NOTICE,
- "we don't support multi-octet length\n");
- rsl_rll_error(RLL_CAUSE_FRM_UNIMPL, mctx);
- return -EINVAL;
- }
- return 0;
-}
-
-static int lapdm_send_resend(struct lapdm_datalink *dl)
-{
- struct msgb *msg = msgb_alloc_headroom(23+10, 10, "LAPDm resend");
- int length;
-
- /* Resend SABM/DISC from tx_hist */
- length = dl->tx_length[0];
- msg->l2h = msgb_put(msg, length);
- memcpy(msg->l2h, dl->tx_hist[dl->V_send], length);
-
- return tx_ph_data_enqueue(dl, msg, dl->mctx.chan_nr, dl->mctx.link_id,
- dl->mctx.n201);
-}
-
-static int lapdm_send_ua(struct lapdm_msg_ctx *mctx, uint8_t len, uint8_t *data)
-{
- uint8_t sapi = mctx->link_id & 7;
- uint8_t f_bit = LAPDm_CTRL_PF_BIT(mctx->ctrl);
- struct msgb *msg = msgb_alloc_headroom(23+10, 10, "LAPDm UA");
- struct lapdm_entity *le = mctx->dl->entity;
-
- msg->l2h = msgb_put(msg, 3 + len);
- msg->l2h[0] = LAPDm_ADDR(LAPDm_LPD_NORMAL, sapi, le->cr.loc2rem.resp);
- msg->l2h[1] = LAPDm_CTRL_U(LAPDm_U_UA, f_bit);
- msg->l2h[2] = LAPDm_LEN(len);
- if (len)
- memcpy(msg->l2h + 3, data, len);
-
- return tx_ph_data_enqueue(mctx->dl, msg, mctx->chan_nr, mctx->link_id,
- mctx->n201);
-}
-
-static int lapdm_send_dm(struct lapdm_msg_ctx *mctx)
-{
- uint8_t sapi = mctx->link_id & 7;
- uint8_t f_bit = LAPDm_CTRL_PF_BIT(mctx->ctrl);
- struct msgb *msg = msgb_alloc_headroom(23+10, 10, "LAPDm DM");
- struct lapdm_entity *le = mctx->dl->entity;
-
- msg->l2h = msgb_put(msg, 3);
- msg->l2h[0] = LAPDm_ADDR(LAPDm_LPD_NORMAL, sapi, le->cr.loc2rem.resp);
- msg->l2h[1] = LAPDm_CTRL_U(LAPDm_U_DM, f_bit);
- msg->l2h[2] = 0;
-
- return tx_ph_data_enqueue(mctx->dl, msg, mctx->chan_nr, mctx->link_id,
- mctx->n201);
-}
-
-static int lapdm_send_rr(struct lapdm_msg_ctx *mctx, uint8_t f_bit)
-{
- uint8_t sapi = mctx->link_id & 7;
- struct msgb *msg = msgb_alloc_headroom(23+10, 10, "LAPDm RR");
- struct lapdm_entity *le = mctx->dl->entity;
-
- msg->l2h = msgb_put(msg, 3);
- msg->l2h[0] = LAPDm_ADDR(LAPDm_LPD_NORMAL, sapi, le->cr.loc2rem.resp);
- msg->l2h[1] = LAPDm_CTRL_S(mctx->dl->V_recv, LAPDm_S_RR, f_bit);
- msg->l2h[2] = LAPDm_LEN(0);
-
- return tx_ph_data_enqueue(mctx->dl, msg, mctx->chan_nr, mctx->link_id,
- mctx->n201);
-}
-
-static int lapdm_send_rnr(struct lapdm_msg_ctx *mctx, uint8_t f_bit)
-{
- uint8_t sapi = mctx->link_id & 7;
- struct msgb *msg = msgb_alloc_headroom(23+10, 10, "LAPDm RNR");
- struct lapdm_entity *le = mctx->dl->entity;
-
- msg->l2h = msgb_put(msg, 3);
- msg->l2h[0] = LAPDm_ADDR(LAPDm_LPD_NORMAL, sapi, le->cr.loc2rem.resp);
- msg->l2h[1] = LAPDm_CTRL_S(mctx->dl->V_recv, LAPDm_S_RNR, f_bit);
- msg->l2h[2] = LAPDm_LEN(0);
-
- return tx_ph_data_enqueue(mctx->dl, msg, mctx->chan_nr, mctx->link_id,
- mctx->n201);
-}
-
-static int lapdm_send_rej(struct lapdm_msg_ctx *mctx, uint8_t f_bit)
-{
- uint8_t sapi = mctx->link_id & 7;
- struct msgb *msg = msgb_alloc_headroom(23+10, 10, "LAPDm REJ");
- struct lapdm_entity *le = mctx->dl->entity;
-
- msg->l2h = msgb_put(msg, 3);
- msg->l2h[0] = LAPDm_ADDR(LAPDm_LPD_NORMAL, sapi, le->cr.loc2rem.resp);
- msg->l2h[1] = LAPDm_CTRL_S(mctx->dl->V_recv, LAPDm_S_REJ, f_bit);
- msg->l2h[2] = LAPDm_LEN(0);
-
- return tx_ph_data_enqueue(mctx->dl, msg, mctx->chan_nr, mctx->link_id,
- mctx->n201);
-}
-
-/* Timer callback on T200 expiry */
-static void lapdm_t200_cb(void *data)
-{
- struct lapdm_datalink *dl = data;
-
- LOGP(DLLAPDM, LOGL_INFO, "lapdm_t200_cb(%p) state=%u\n", dl, dl->state);
-
- switch (dl->state) {
- case LAPDm_STATE_SABM_SENT:
- /* 5.4.1.3 */
- if (dl->retrans_ctr + 1 >= N200_EST_REL + 1) {
- /* send RELEASE INDICATION to L3 */
- send_rll_simple(RSL_MT_REL_IND, &dl->mctx);
- /* send MDL ERROR INIDCATION to L3 */
- rsl_rll_error(RLL_CAUSE_T200_EXPIRED, &dl->mctx);
- /* flush tx buffers */
- lapdm_dl_flush_tx(dl);
- lapdm_dl_flush_send(dl);
- /* go back to idle state */
- lapdm_dl_newstate(dl, LAPDm_STATE_IDLE);
- /* NOTE: we must not change any other states or buffers
- * and queues, since we may reconnect after handover
- * failure. the buffered messages is replaced there */
- break;
- }
- /* retransmit SABM command */
- lapdm_send_resend(dl);
- /* increment re-transmission counter */
- dl->retrans_ctr++;
- /* restart T200 (PH-READY-TO-SEND) */
- osmo_timer_schedule(&dl->t200, T200);
- break;
- case LAPDm_STATE_DISC_SENT:
- /* 5.4.4.3 */
- if (dl->retrans_ctr + 1 >= N200_EST_REL + 1) {
- /* send RELEASE INDICATION to L3 */
- send_rll_simple(RSL_MT_REL_CONF, &dl->mctx);
- /* send MDL ERROR INIDCATION to L3 */
- rsl_rll_error(RLL_CAUSE_T200_EXPIRED, &dl->mctx);
- /* flush buffers */
- lapdm_dl_flush_tx(dl);
- lapdm_dl_flush_send(dl);
- /* go back to idle state */
- lapdm_dl_newstate(dl, LAPDm_STATE_IDLE);
- /* NOTE: we must not change any other states or buffers
- * and queues, since we may reconnect after handover
- * failure. the buffered messages is replaced there */
- break;
- }
- /* retransmit DISC command */
- lapdm_send_resend(dl);
- /* increment re-transmission counter */
- dl->retrans_ctr++;
- /* restart T200 (PH-READY-TO-SEND) */
- osmo_timer_schedule(&dl->t200, T200);
- break;
- case LAPDm_STATE_MF_EST:
- /* 5.5.7 */
- dl->retrans_ctr = 0;
- lapdm_dl_newstate(dl, LAPDm_STATE_TIMER_RECOV);
- /* fall through */
- case LAPDm_STATE_TIMER_RECOV:
- dl->retrans_ctr++;
- if (dl->retrans_ctr < N200) {
- /* retransmit I frame (V_s-1) with P=1, if any */
- if (dl->tx_length[sub_mod8(dl->V_send, 1)]) {
- struct msgb *msg;
- int length;
-
- LOGP(DLLAPDM, LOGL_INFO, "retransmit last frame "
- "V(S)=%d\n", sub_mod8(dl->V_send, 1));
- /* Create I frame (segment) from tx_hist */
- length = dl->tx_length[sub_mod8(dl->V_send, 1)];
- msg = msgb_alloc_headroom(23+10, 10, "LAPDm I");
- msg->l2h = msgb_put(msg, length);
- memcpy(msg->l2h,
- dl->tx_hist[sub_mod8(dl->V_send, 1)],
- length);
- msg->l2h[1] = LAPDm_CTRL_I(dl->V_recv,
- sub_mod8(dl->V_send, 1), 1); /* P=1 */
- tx_ph_data_enqueue(dl, msg, dl->mctx.chan_nr,
- dl->mctx.link_id, dl->mctx.n201);
- } else {
- /* OR send appropriate supervision frame with P=1 */
- if (!dl->own_busy && !dl->seq_err_cond) {
- lapdm_send_rr(&dl->mctx, 1);
- /* NOTE: In case of sequence error
- * condition, the REJ frame has been
- * transmitted when entering the
- * condition, so it has not be done
- * here
- */
- } else if (dl->own_busy) {
- lapdm_send_rnr(&dl->mctx, 1);
- } else {
- LOGP(DLLAPDM, LOGL_INFO, "unhandled, "
- "pls. fix\n");
- }
- }
- /* restart T200 (PH-READY-TO-SEND) */
- osmo_timer_schedule(&dl->t200, T200);
- } else {
- /* send MDL ERROR INIDCATION to L3 */
- rsl_rll_error(RLL_CAUSE_T200_EXPIRED, &dl->mctx);
- }
- break;
- default:
- LOGP(DLLAPDM, LOGL_INFO, "T200 expired in unexpected "
- "dl->state %u\n", dl->state);
- }
-}
-
-/* 5.5.3.1: Common function to acknowlege frames up to the given N(R) value */
-static void lapdm_acknowledge(struct lapdm_msg_ctx *mctx)
-{
- struct lapdm_datalink *dl = mctx->dl;
- uint8_t nr = LAPDm_CTRL_Nr(mctx->ctrl);
- int s = 0, rej = 0, t200_reset = 0;
- int i;
-
- /* supervisory frame ? */
- if (LAPDm_CTRL_is_S(mctx->ctrl))
- s = 1;
- /* REJ frame ? */
- if (s && LAPDm_CTRL_S_BITS(mctx->ctrl) == LAPDm_S_REJ)
- rej = 1;
-
- /* Flush all transmit buffers of acknowledged frames */
- for (i = dl->V_ack; i != nr; i = inc_mod8(i)) {
- if (dl->tx_length[i]) {
- dl->tx_length[i] = 0;
- LOGP(DLLAPDM, LOGL_INFO, "ack frame %d\n", i);
- }
- }
-
- if (dl->state != LAPDm_STATE_TIMER_RECOV) {
- /* When not in the timer recovery condition, the data
- * link layer entity shall reset the timer T200 on
- * receipt of a valid I frame with N(R) higher than V(A),
- * or an REJ with an N(R) equal to V(A). */
- if ((!rej && nr != dl->V_ack)
- || (rej && nr == dl->V_ack)) {
- LOGP(DLLAPDM, LOGL_INFO, "reset t200\n");
- t200_reset = 1;
- osmo_timer_del(&dl->t200);
- /* 5.5.3.1 Note 1 + 2 imply timer recovery cond. */
- }
- /* 5.7.4: N(R) sequence error
- * N(R) is called valid, if and only if
- * (N(R)-V(A)) mod 8 <= (V(S)-V(A)) mod 8.
- */
- if (sub_mod8(nr, dl->V_ack) > sub_mod8(dl->V_send, dl->V_ack)) {
- LOGP(DLLAPDM, LOGL_NOTICE, "N(R) sequence error\n");
- rsl_rll_error(RLL_CAUSE_SEQ_ERR, mctx);
- }
- }
-
- /* V(A) shall be set to the value of N(R) */
- dl->V_ack = nr;
-
- /* If T200 has been reset by the receipt of an I, RR or RNR frame,
- * and if there are outstanding I frames, restart T200 */
- if (t200_reset && !rej) {
- if (dl->tx_length[dl->V_send - 1]) {
- LOGP(DLLAPDM, LOGL_INFO, "start T200, due to unacked I "
- "frame(s)\n");
- osmo_timer_schedule(&dl->t200, T200);
- }
- }
-}
-
-/* L1 -> L2 */
-
-/* Receive a LAPDm U (Unnumbered) message from L1 */
-static int lapdm_rx_u(struct msgb *msg, struct lapdm_msg_ctx *mctx)
-{
- struct lapdm_datalink *dl = mctx->dl;
- struct lapdm_entity *le = dl->entity;
- uint8_t length;
- int rc;
- int rsl_msg;
-
- switch (LAPDm_CTRL_U_BITS(mctx->ctrl)) {
- case LAPDm_U_SABM:
- rsl_msg = RSL_MT_EST_IND;
-
- LOGP(DLLAPDM, LOGL_INFO, "SABM received\n");
- /* 5.7.1 */
- dl->seq_err_cond = 0;
- /* G.2.2 Wrong value of the C/R bit */
- if (LAPDm_ADDR_CR(mctx->addr) == le->cr.rem2loc.resp) {
- LOGP(DLLAPDM, LOGL_NOTICE, "SABM response error\n");
- msgb_free(msg);
- rsl_rll_error(RLL_CAUSE_FRM_UNIMPL, mctx);
- return -EINVAL;
- }
-
- length = msg->l2h[2] >> 2;
- /* G.4.5 If SABM is received with L>N201 or with M bit
- * set, AN MDL-ERROR-INDICATION is sent to MM.
- */
- if ((msg->l2h[2] & LAPDm_MORE) || length + 3 > mctx->n201) {
- LOGP(DLLAPDM, LOGL_NOTICE, "SABM too large error\n");
- msgb_free(msg);
- rsl_rll_error(RLL_CAUSE_UFRM_INC_PARAM, mctx);
- return -EIO;
- }
-
- /* Must be Format B */
- rc = check_length_ind(mctx, msg->l2h[2]);
- if (rc < 0) {
- msgb_free(msg);
- return rc;
- }
- switch (dl->state) {
- case LAPDm_STATE_IDLE:
- /* Set chan_nr and link_id for established connection */
- memset(&dl->mctx, 0, sizeof(dl->mctx));
- dl->mctx.dl = dl;
- dl->mctx.chan_nr = mctx->chan_nr;
- dl->mctx.link_id = mctx->link_id;
- dl->mctx.n201 = mctx->n201;
- break;
- case LAPDm_STATE_MF_EST:
- if (length == 0) {
- rsl_msg = RSL_MT_EST_CONF;
- break;
- }
- LOGP(DLLAPDM, LOGL_INFO, "SABM command, multiple "
- "frame established state\n");
- /* check for contention resoultion */
- if (dl->tx_hist[0][2] >> 2) {
- LOGP(DLLAPDM, LOGL_NOTICE, "SABM not allowed "
- "during contention resolution\n");
- rsl_rll_error(RLL_CAUSE_SABM_INFO_NOTALL, mctx);
- }
- msgb_free(msg);
- return 0;
- case LAPDm_STATE_DISC_SENT:
- /* 5.4.6.2 send DM with F=P */
- lapdm_send_dm(mctx);
- /* reset Timer T200 */
- osmo_timer_del(&dl->t200);
- msgb_free(msg);
- return send_rll_simple(RSL_MT_REL_CONF, mctx);
- default:
- lapdm_send_ua(mctx, length, msg->l2h + 3);
- msgb_free(msg);
- return 0;
- }
- /* send UA response */
- lapdm_send_ua(mctx, length, msg->l2h + 3);
- /* set Vs, Vr and Va to 0 */
- dl->V_send = dl->V_recv = dl->V_ack = 0;
- /* clear tx_hist */
- dl->tx_length[0] = 0;
- /* enter multiple-frame-established state */
- lapdm_dl_newstate(dl, LAPDm_STATE_MF_EST);
- /* send notification to L3 */
- if (length == 0) {
- /* 5.4.1.2 Normal establishment procedures */
- rc = send_rll_simple(rsl_msg, mctx);
- msgb_free(msg);
- } else {
- /* 5.4.1.4 Contention resolution establishment */
- msg->l3h = msg->l2h + 3;
- msgb_pull_l2h(msg);
- rc = send_rslms_rll_l3(rsl_msg, mctx, msg);
- }
- break;
- case LAPDm_U_DM:
- LOGP(DLLAPDM, LOGL_INFO, "DM received\n");
- /* G.2.2 Wrong value of the C/R bit */
- if (LAPDm_ADDR_CR(mctx->addr) == le->cr.rem2loc.cmd) {
- LOGP(DLLAPDM, LOGL_NOTICE, "DM command error\n");
- msgb_free(msg);
- rsl_rll_error(RLL_CAUSE_FRM_UNIMPL, mctx);
- return -EINVAL;
- }
- if (!LAPDm_CTRL_PF_BIT(mctx->ctrl)) {
- /* 5.4.1.2 DM responses with the F bit set to "0"
- * shall be ignored.
- */
- msgb_free(msg);
- return 0;
- }
- switch (dl->state) {
- case LAPDm_STATE_SABM_SENT:
- break;
- case LAPDm_STATE_MF_EST:
- if (LAPDm_CTRL_PF_BIT(mctx->ctrl) == 1) {
- LOGP(DLLAPDM, LOGL_INFO, "unsolicited DM "
- "response\n");
- rsl_rll_error(RLL_CAUSE_UNSOL_DM_RESP, mctx);
- } else {
- LOGP(DLLAPDM, LOGL_INFO, "unsolicited DM "
- "response, multiple frame established "
- "state\n");
- rsl_rll_error(RLL_CAUSE_UNSOL_DM_RESP_MF, mctx);
- }
- msgb_free(msg);
- return 0;
- case LAPDm_STATE_TIMER_RECOV:
- /* DM is normal in case PF = 1 */
- if (LAPDm_CTRL_PF_BIT(mctx->ctrl) == 0) {
- LOGP(DLLAPDM, LOGL_INFO, "unsolicited DM "
- "response, multiple frame established "
- "state\n");
- rsl_rll_error(RLL_CAUSE_UNSOL_DM_RESP_MF, mctx);
- msgb_free(msg);
- return 0;
- }
- break;
- case LAPDm_STATE_DISC_SENT:
- /* reset Timer T200 */
- osmo_timer_del(&dl->t200);
- /* go to idle state */
- lapdm_dl_flush_tx(dl);
- lapdm_dl_flush_send(dl);
- lapdm_dl_newstate(dl, LAPDm_STATE_IDLE);
- rc = send_rll_simple(RSL_MT_REL_CONF, mctx);
- msgb_free(msg);
- return 0;
- case LAPDm_STATE_IDLE:
- /* 5.4.5 all other frame types shall be discarded */
- default:
- LOGP(DLLAPDM, LOGL_INFO, "unsolicited DM response! "
- "(discarding)\n");
- msgb_free(msg);
- return 0;
- }
- /* reset T200 */
- osmo_timer_del(&dl->t200);
- rc = send_rll_simple(RSL_MT_REL_IND, mctx);
- msgb_free(msg);
- break;
- case LAPDm_U_UI:
- LOGP(DLLAPDM, LOGL_INFO, "UI received\n");
- /* G.2.2 Wrong value of the C/R bit */
- if (LAPDm_ADDR_CR(mctx->addr) == le->cr.rem2loc.resp) {
- LOGP(DLLAPDM, LOGL_NOTICE, "UI indicates response "
- "error\n");
- msgb_free(msg);
- rsl_rll_error(RLL_CAUSE_FRM_UNIMPL, mctx);
- return -EINVAL;
- }
-
- length = msg->l2h[2] >> 2;
- /* FIXME: G.4.5 If UI is received with L>N201 or with M bit
- * set, AN MDL-ERROR-INDICATION is sent to MM.
- */
-
- if (mctx->lapdm_fmt == LAPDm_FMT_B4) {
- length = N201_B4;
- msg->l3h = msg->l2h + 2;
- } else {
- rc = check_length_ind(mctx, msg->l2h[2]);
- if (rc < 0) {
- msgb_free(msg);
- return rc;
- }
- length = msg->l2h[2] >> 2;
- msg->l3h = msg->l2h + 3;
- }
- /* do some length checks */
- if (length == 0) {
- /* 5.3.3 UI frames received with the length indicator
- * set to "0" shall be ignored
- */
- LOGP(DLLAPDM, LOGL_INFO, "length=0 (discarding)\n");
- msgb_free(msg);
- return 0;
- }
- switch (LAPDm_ADDR_SAPI(mctx->addr)) {
- case LAPDm_SAPI_NORMAL:
- case LAPDm_SAPI_SMS:
- break;
- default:
- /* 5.3.3 UI frames with invalid SAPI values shall be
- * discarded
- */
- LOGP(DLLAPDM, LOGL_INFO, "sapi=%u (discarding)\n",
- LAPDm_ADDR_SAPI(mctx->addr));
- msgb_free(msg);
- return 0;
- }
- msgb_pull_l2h(msg);
- rc = send_rslms_rll_l3_ui(mctx, msg);
- break;
- case LAPDm_U_DISC:
- rsl_msg = RSL_MT_REL_IND;
-
- LOGP(DLLAPDM, LOGL_INFO, "DISC received\n");
- /* flush buffers */
- lapdm_dl_flush_tx(dl);
- lapdm_dl_flush_send(dl);
- /* 5.7.1 */
- dl->seq_err_cond = 0;
- /* G.2.2 Wrong value of the C/R bit */
- if (LAPDm_ADDR_CR(mctx->addr) == le->cr.rem2loc.resp) {
- LOGP(DLLAPDM, LOGL_NOTICE, "DISC response error\n");
- msgb_free(msg);
- rsl_rll_error(RLL_CAUSE_FRM_UNIMPL, mctx);
- return -EINVAL;
- }
- length = msg->l2h[2] >> 2;
- if (length > 0 || msg->l2h[2] & 0x02) {
- /* G.4.4 If a DISC or DM frame is received with L>0 or
- * with the M bit set to "1", an MDL-ERROR-INDICATION
- * primitive with cause "U frame with incorrect
- * parameters" is sent to the mobile management entity.
- */
- LOGP(DLLAPDM, LOGL_NOTICE,
- "U frame iwth incorrect parameters ");
- msgb_free(msg);
- rsl_rll_error(RLL_CAUSE_UFRM_INC_PARAM, mctx);
- return -EIO;
- }
- switch (dl->state) {
- case LAPDm_STATE_IDLE:
- LOGP(DLLAPDM, LOGL_INFO, "DISC in idle state\n");
- /* send DM with F=P */
- msgb_free(msg);
- return lapdm_send_dm(mctx);
- case LAPDm_STATE_SABM_SENT:
- LOGP(DLLAPDM, LOGL_INFO, "DISC in SABM state\n");
- /* 5.4.6.2 send DM with F=P */
- lapdm_send_dm(mctx);
- /* reset Timer T200 */
- osmo_timer_del(&dl->t200);
- msgb_free(msg);
- return send_rll_simple(RSL_MT_REL_IND, mctx);
- case LAPDm_STATE_MF_EST:
- case LAPDm_STATE_TIMER_RECOV:
- LOGP(DLLAPDM, LOGL_INFO, "DISC in est state\n");
- break;
- case LAPDm_STATE_DISC_SENT:
- LOGP(DLLAPDM, LOGL_INFO, "DISC in disc state\n");
- rsl_msg = RSL_MT_REL_CONF;
- break;
- default:
- lapdm_send_ua(mctx, length, msg->l2h + 3);
- msgb_free(msg);
- return 0;
- }
- /* send UA response */
- lapdm_send_ua(mctx, length, msg->l2h + 3);
- /* reset Timer T200 */
- osmo_timer_del(&dl->t200);
- /* enter idle state */
- lapdm_dl_flush_tx(dl);
- lapdm_dl_flush_send(dl);
- lapdm_dl_newstate(dl, LAPDm_STATE_IDLE);
- /* send notification to L3 */
- rc = send_rll_simple(rsl_msg, mctx);
- msgb_free(msg);
- break;
- case LAPDm_U_UA:
- LOGP(DLLAPDM, LOGL_INFO, "UA received\n");
- /* G.2.2 Wrong value of the C/R bit */
- if (LAPDm_ADDR_CR(mctx->addr) == le->cr.rem2loc.cmd) {
- LOGP(DLLAPDM, LOGL_NOTICE, "UA indicates command "
- "error\n");
- msgb_free(msg);
- rsl_rll_error(RLL_CAUSE_FRM_UNIMPL, mctx);
- return -EINVAL;
- }
-
- length = msg->l2h[2] >> 2;
- /* G.4.5 If UA is received with L>N201 or with M bit
- * set, AN MDL-ERROR-INDICATION is sent to MM.
- */
- if ((msg->l2h[2] & LAPDm_MORE) || length + 3 > mctx->n201) {
- LOGP(DLLAPDM, LOGL_NOTICE, "UA too large error\n");
- msgb_free(msg);
- rsl_rll_error(RLL_CAUSE_UFRM_INC_PARAM, mctx);
- return -EIO;
- }
-
- if (!LAPDm_CTRL_PF_BIT(mctx->ctrl)) {
- /* 5.4.1.2 A UA response with the F bit set to "0"
- * shall be ignored.
- */
- LOGP(DLLAPDM, LOGL_INFO, "F=0 (discarding)\n");
- msgb_free(msg);
- return 0;
- }
- switch (dl->state) {
- case LAPDm_STATE_SABM_SENT:
- break;
- case LAPDm_STATE_MF_EST:
- case LAPDm_STATE_TIMER_RECOV:
- LOGP(DLLAPDM, LOGL_INFO, "unsolicited UA response! "
- "(discarding)\n");
- rsl_rll_error(RLL_CAUSE_UNSOL_UA_RESP, mctx);
- msgb_free(msg);
- return 0;
- case LAPDm_STATE_DISC_SENT:
- LOGP(DLLAPDM, LOGL_INFO, "UA in disconnect state\n");
- /* reset Timer T200 */
- osmo_timer_del(&dl->t200);
- /* go to idle state */
- lapdm_dl_flush_tx(dl);
- lapdm_dl_flush_send(dl);
- lapdm_dl_newstate(dl, LAPDm_STATE_IDLE);
- rc = send_rll_simple(RSL_MT_REL_CONF, mctx);
- msgb_free(msg);
- return 0;
- case LAPDm_STATE_IDLE:
- /* 5.4.5 all other frame types shall be discarded */
- default:
- LOGP(DLLAPDM, LOGL_INFO, "unsolicited UA response! "
- "(discarding)\n");
- msgb_free(msg);
- return 0;
- }
- LOGP(DLLAPDM, LOGL_INFO, "UA in SABM state\n");
- /* reset Timer T200 */
- osmo_timer_del(&dl->t200);
- /* compare UA with SABME if contention resolution is applied */
- if (dl->tx_hist[0][2] >> 2) {
- rc = check_length_ind(mctx, msg->l2h[2]);
- if (rc < 0) {
- rc = send_rll_simple(RSL_MT_REL_IND, mctx);
- msgb_free(msg);
- /* go to idle state */
- lapdm_dl_flush_tx(dl);
- lapdm_dl_flush_send(dl);
- lapdm_dl_newstate(dl, LAPDm_STATE_IDLE);
- return 0;
- }
- length = msg->l2h[2] >> 2;
- if (length != (dl->tx_hist[0][2] >> 2)
- || !!memcmp(dl->tx_hist[0] + 3, msg->l2h + 3,
- length)) {
- LOGP(DLLAPDM, LOGL_INFO, "**** UA response "
- "mismatches ****\n");
- rc = send_rll_simple(RSL_MT_REL_IND, mctx);
- msgb_free(msg);
- /* go to idle state */
- lapdm_dl_flush_tx(dl);
- lapdm_dl_flush_send(dl);
- lapdm_dl_newstate(dl, LAPDm_STATE_IDLE);
- return 0;
- }
- }
- /* set Vs, Vr and Va to 0 */
- dl->V_send = dl->V_recv = dl->V_ack = 0;
- /* clear tx_hist */
- dl->tx_length[0] = 0;
- /* enter multiple-frame-established state */
- lapdm_dl_newstate(dl, LAPDm_STATE_MF_EST);
- /* send outstanding frames, if any (resume / reconnect) */
- rslms_send_i(mctx, __LINE__);
- /* send notification to L3 */
- rc = send_rll_simple(RSL_MT_EST_CONF, mctx);
- msgb_free(msg);
- break;
- default:
- /* G.3.1 */
- LOGP(DLLAPDM, LOGL_NOTICE, "Unnumbered frame not allowed.\n");
- msgb_free(msg);
- rsl_rll_error(RLL_CAUSE_FRM_UNIMPL, mctx);
- return -EINVAL;
- }
- return rc;
-}
-
-/* Receive a LAPDm S (Supervisory) message from L1 */
-static int lapdm_rx_s(struct msgb *msg, struct lapdm_msg_ctx *mctx)
-{
- struct lapdm_datalink *dl = mctx->dl;
- struct lapdm_entity *le = dl->entity;
- uint8_t length;
-
- length = msg->l2h[2] >> 2;
- if (length > 0 || msg->l2h[2] & 0x02) {
- /* G.4.3 If a supervisory frame is received with L>0 or
- * with the M bit set to "1", an MDL-ERROR-INDICATION
- * primitive with cause "S frame with incorrect
- * parameters" is sent to the mobile management entity. */
- LOGP(DLLAPDM, LOGL_NOTICE,
- "S frame with incorrect parameters\n");
- msgb_free(msg);
- rsl_rll_error(RLL_CAUSE_SFRM_INC_PARAM, mctx);
- return -EIO;
- }
-
- if (LAPDm_ADDR_CR(mctx->addr) == le->cr.rem2loc.resp
- && LAPDm_CTRL_PF_BIT(mctx->ctrl)
- && dl->state != LAPDm_STATE_TIMER_RECOV) {
- /* 5.4.2.2: Inidcate error on supervisory reponse F=1 */
- LOGP(DLLAPDM, LOGL_NOTICE, "S frame response with F=1 error\n");
- rsl_rll_error(RLL_CAUSE_UNSOL_SPRV_RESP, mctx);
- }
-
- switch (dl->state) {
- case LAPDm_STATE_IDLE:
- /* if P=1, respond DM with F=1 (5.2.2) */
- /* 5.4.5 all other frame types shall be discarded */
- if (LAPDm_CTRL_PF_BIT(mctx->ctrl))
- lapdm_send_dm(mctx); /* F=P */
- /* fall though */
- case LAPDm_STATE_SABM_SENT:
- case LAPDm_STATE_DISC_SENT:
- LOGP(DLLAPDM, LOGL_NOTICE, "S frame ignored in this state\n");
- msgb_free(msg);
- return 0;
- }
- switch (LAPDm_CTRL_S_BITS(mctx->ctrl)) {
- case LAPDm_S_RR:
- LOGP(DLLAPDM, LOGL_INFO, "RR received\n");
- /* 5.5.3.1: Acknowlege all tx frames up the the N(R)-1 */
- lapdm_acknowledge(mctx);
-
- /* 5.5.3.2 */
- if (LAPDm_ADDR_CR(mctx->addr) == le->cr.rem2loc.cmd
- && LAPDm_CTRL_PF_BIT(mctx->ctrl)) {
- if (!dl->own_busy && !dl->seq_err_cond) {
- LOGP(DLLAPDM, LOGL_NOTICE, "RR frame command "
- "with polling bit set and we are not "
- "busy, so we reply with RR frame\n");
- lapdm_send_rr(mctx, 1);
- /* NOTE: In case of sequence error condition,
- * the REJ frame has been transmitted when
- * entering the condition, so it has not be
- * done here
- */
- } else if (dl->own_busy) {
- LOGP(DLLAPDM, LOGL_NOTICE, "RR frame command "
- "with polling bit set and we are busy, "
- "so we reply with RR frame\n");
- lapdm_send_rnr(mctx, 1);
- }
- } else if (LAPDm_ADDR_CR(mctx->addr) == le->cr.rem2loc.resp
- && LAPDm_CTRL_PF_BIT(mctx->ctrl)
- && dl->state == LAPDm_STATE_TIMER_RECOV) {
- LOGP(DLLAPDM, LOGL_INFO, "RR response with F==1, "
- "and we are in timer recovery state, so "
- "we leave that state\n");
- /* V(S) to the N(R) in the RR frame */
- dl->V_send = LAPDm_CTRL_Nr(mctx->ctrl);
- /* reset Timer T200 */
- osmo_timer_del(&dl->t200);
- /* 5.5.7 Clear timer recovery condition */
- lapdm_dl_newstate(dl, LAPDm_STATE_MF_EST);
- }
- /* Send message, if possible due to acknowledged data */
- rslms_send_i(mctx, __LINE__);
-
- break;
- case LAPDm_S_RNR:
- LOGP(DLLAPDM, LOGL_INFO, "RNR received\n");
- /* 5.5.3.1: Acknowlege all tx frames up the the N(R)-1 */
- lapdm_acknowledge(mctx);
-
- /* 5.5.5 */
- /* Set peer receiver busy condition */
- dl->peer_busy = 1;
-
- if (LAPDm_CTRL_PF_BIT(mctx->ctrl)) {
- if (LAPDm_ADDR_CR(mctx->addr) == le->cr.rem2loc.cmd) {
- if (!dl->own_busy) {
- LOGP(DLLAPDM, LOGL_INFO, "RNR poll "
- "command and we are not busy, "
- "so we reply with RR final "
- "response\n");
- /* Send RR with F=1 */
- lapdm_send_rr(mctx, 1);
- } else {
- LOGP(DLLAPDM, LOGL_INFO, "RNR poll "
- "command and we are busy, so "
- "we reply with RNR final "
- "response\n");
- /* Send RNR with F=1 */
- lapdm_send_rnr(mctx, 1);
- }
- } else if (dl->state == LAPDm_STATE_TIMER_RECOV) {
- LOGP(DLLAPDM, LOGL_INFO, "RNR poll response "
- "and we in timer recovery state, so "
- "we leave that state\n");
- /* 5.5.7 Clear timer recovery condition */
- lapdm_dl_newstate(dl, LAPDm_STATE_MF_EST);
- /* V(S) to the N(R) in the RNR frame */
- dl->V_send = LAPDm_CTRL_Nr(mctx->ctrl);
- }
- } else
- LOGP(DLLAPDM, LOGL_INFO, "RNR not polling/final state "
- "received\n");
-
- /* Send message, if possible due to acknowledged data */
- rslms_send_i(mctx, __LINE__);
-
- break;
- case LAPDm_S_REJ:
- LOGP(DLLAPDM, LOGL_INFO, "REJ received\n");
- /* 5.5.3.1: Acknowlege all tx frames up the the N(R)-1 */
- lapdm_acknowledge(mctx);
-
- /* 5.5.4.1 */
- if (dl->state != LAPDm_STATE_TIMER_RECOV) {
- /* Clear an existing peer receiver busy condition */
- dl->peer_busy = 0;
- /* V(S) and V(A) to the N(R) in the REJ frame */
- dl->V_send = dl->V_ack = LAPDm_CTRL_Nr(mctx->ctrl);
- /* reset Timer T200 */
- osmo_timer_del(&dl->t200);
- /* 5.5.3.2 */
- if (LAPDm_ADDR_CR(mctx->addr) == le->cr.rem2loc.cmd
- && LAPDm_CTRL_PF_BIT(mctx->ctrl)) {
- if (!dl->own_busy && !dl->seq_err_cond) {
- LOGP(DLLAPDM, LOGL_INFO, "REJ poll "
- "command not in timer recovery "
- "state and not in own busy "
- "condition received, so we "
- "respond with RR final "
- "response\n");
- lapdm_send_rr(mctx, 1);
- /* NOTE: In case of sequence error
- * condition, the REJ frame has been
- * transmitted when entering the
- * condition, so it has not be done
- * here
- */
- } else if (dl->own_busy) {
- LOGP(DLLAPDM, LOGL_INFO, "REJ poll "
- "command not in timer recovery "
- "state and in own busy "
- "condition received, so we "
- "respond with RNR final "
- "response\n");
- lapdm_send_rnr(mctx, 1);
- }
- } else
- LOGP(DLLAPDM, LOGL_INFO, "REJ response or not "
- "polling command not in timer recovery "
- "state received\n");
- /* send MDL ERROR INIDCATION to L3 */
- if (LAPDm_ADDR_CR(mctx->addr) == le->cr.rem2loc.resp
- && LAPDm_CTRL_PF_BIT(mctx->ctrl)) {
- rsl_rll_error(RLL_CAUSE_UNSOL_SPRV_RESP, mctx);
- }
-
- } else if (LAPDm_ADDR_CR(mctx->addr) == le->cr.rem2loc.resp
- && LAPDm_CTRL_PF_BIT(mctx->ctrl)) {
- LOGP(DLLAPDM, LOGL_INFO, "REJ poll response in timer "
- "recovery state received\n");
- /* Clear an existing peer receiver busy condition */
- dl->peer_busy = 0;
- /* 5.5.7 Clear timer recovery condition */
- lapdm_dl_newstate(dl, LAPDm_STATE_MF_EST);
- /* V(S) and V(A) to the N(R) in the REJ frame */
- dl->V_send = dl->V_ack = LAPDm_CTRL_Nr(mctx->ctrl);
- /* reset Timer T200 */
- osmo_timer_del(&dl->t200);
- } else {
- /* Clear an existing peer receiver busy condition */
- dl->peer_busy = 0;
- /* V(S) and V(A) to the N(R) in the REJ frame */
- dl->V_send = dl->V_ack = LAPDm_CTRL_Nr(mctx->ctrl);
- /* 5.5.3.2 */
- if (LAPDm_ADDR_CR(mctx->addr) == le->cr.rem2loc.cmd
- && LAPDm_CTRL_PF_BIT(mctx->ctrl)) {
- if (!dl->own_busy && !dl->seq_err_cond) {
- LOGP(DLLAPDM, LOGL_INFO, "REJ poll "
- "command in timer recovery "
- "state and not in own busy "
- "condition received, so we "
- "respond with RR final "
- "response\n");
- lapdm_send_rr(mctx, 1);
- /* NOTE: In case of sequence error
- * condition, the REJ frame has been
- * transmitted when entering the
- * condition, so it has not be done
- * here
- */
- } else if (dl->own_busy) {
- LOGP(DLLAPDM, LOGL_INFO, "REJ poll "
- "command in timer recovery "
- "state and in own busy "
- "condition received, so we "
- "respond with RNR final "
- "response\n");
- lapdm_send_rnr(mctx, 1);
- }
- } else
- LOGP(DLLAPDM, LOGL_INFO, "REJ response or not "
- "polling command in timer recovery "
- "state received\n");
- }
-
- /* FIXME: 5.5.4.2 2) */
-
- /* Send message, if possible due to acknowledged data */
- rslms_send_i(mctx, __LINE__);
-
- break;
- default:
- /* G.3.1 */
- LOGP(DLLAPDM, LOGL_NOTICE, "Supervisory frame not allowed.\n");
- msgb_free(msg);
- rsl_rll_error(RLL_CAUSE_FRM_UNIMPL, mctx);
- return -EINVAL;
- }
- msgb_free(msg);
- return 0;
-}
-
-/* Receive a LAPDm I (Information) message from L1 */
-static int lapdm_rx_i(struct msgb *msg, struct lapdm_msg_ctx *mctx)
-{
- struct lapdm_datalink *dl = mctx->dl;
- struct lapdm_entity *le = dl->entity;
- //uint8_t nr = LAPDm_CTRL_Nr(mctx->ctrl);
- uint8_t ns = LAPDm_CTRL_I_Ns(mctx->ctrl);
- uint8_t length;
- int rc;
-
- LOGP(DLLAPDM, LOGL_NOTICE, "I received\n");
-
- /* G.2.2 Wrong value of the C/R bit */
- if (LAPDm_ADDR_CR(mctx->addr) == le->cr.rem2loc.resp) {
- LOGP(DLLAPDM, LOGL_NOTICE, "I frame response not allowed\n");
- msgb_free(msg);
- rsl_rll_error(RLL_CAUSE_FRM_UNIMPL, mctx);
- return -EINVAL;
- }
-
- length = msg->l2h[2] >> 2;
- if (length == 0 || length + 3 > mctx->n201) {
- /* G.4.2 If the length indicator of an I frame is set
- * to a numerical value L>N201 or L=0, an MDL-ERROR-INDICATION
- * primitive with cause "I frame with incorrect length"
- * is sent to the mobile management entity. */
- LOGP(DLLAPDM, LOGL_NOTICE, "I frame length not allowed\n");
- msgb_free(msg);
- rsl_rll_error(RLL_CAUSE_IFRM_INC_LEN, mctx);
- return -EIO;
- }
-
- /* G.4.2 If the numerical value of L is L<N201 and the M
- * bit is set to "1", then an MDL-ERROR-INDICATION primitive with
- * cause "I frame with incorrect use of M bit" is sent to the
- * mobile management entity. */
- if ((msg->l2h[2] & LAPDm_MORE) && length + 3 < mctx->n201) {
- LOGP(DLLAPDM, LOGL_NOTICE, "I frame with M bit too short\n");
- msgb_free(msg);
- rsl_rll_error(RLL_CAUSE_IFRM_INC_MBITS, mctx);
- return -EIO;
- }
-
- switch (dl->state) {
- case LAPDm_STATE_IDLE:
- /* if P=1, respond DM with F=1 (5.2.2) */
- /* 5.4.5 all other frame types shall be discarded */
- if (LAPDm_CTRL_PF_BIT(mctx->ctrl))
- lapdm_send_dm(mctx); /* F=P */
- /* fall though */
- case LAPDm_STATE_SABM_SENT:
- case LAPDm_STATE_DISC_SENT:
- LOGP(DLLAPDM, LOGL_NOTICE, "I frame ignored in this state\n");
- msgb_free(msg);
- return 0;
- }
-
- /* 5.7.1: N(s) sequence error */
- if (ns != dl->V_recv) {
- LOGP(DLLAPDM, LOGL_NOTICE, "N(S) sequence error: N(S)=%u, "
- "V(R)=%u\n", ns, dl->V_recv);
- /* discard data */
- msgb_free(msg);
- if (!dl->seq_err_cond) {
- /* FIXME: help me understand what exactly todo here
- dl->seq_err_cond = 1;
- */
- lapdm_send_rej(mctx, LAPDm_CTRL_PF_BIT(mctx->ctrl));
- } else {
- }
- return -EIO;
- }
- dl->seq_err_cond = 0;
-
- /* Increment receiver state */
- dl->V_recv = inc_mod8(dl->V_recv);
- LOGP(DLLAPDM, LOGL_NOTICE, "incrementing V(R) to %u\n", dl->V_recv);
-
- /* 5.5.3.1: Acknowlege all transmitted frames up the the N(R)-1 */
- lapdm_acknowledge(mctx); /* V(A) is also set here */
-
- /* Only if we are not in own receiver busy condition */
- if (!dl->own_busy) {
- /* if the frame carries a complete segment */
- if (!(msg->l2h[2] & LAPDm_MORE)
- && !dl->rcv_buffer) {
- LOGP(DLLAPDM, LOGL_INFO, "message in single I frame\n");
- /* send a DATA INDICATION to L3 */
- msg->l3h = msg->l2h + 3;
- msgb_pull_l2h(msg);
- msg->len = length;
- msg->tail = msg->data + length;
- rc = send_rslms_rll_l3(RSL_MT_DATA_IND, mctx, msg);
- } else {
- /* create rcv_buffer */
- if (!dl->rcv_buffer) {
- LOGP(DLLAPDM, LOGL_INFO, "message in multiple I "
- "frames (first message)\n");
- dl->rcv_buffer = msgb_alloc_headroom(200+56, 56,
- "LAPDm RX");
- dl->rcv_buffer->l3h = dl->rcv_buffer->data;
- }
- /* concat. rcv_buffer */
- if (msgb_l3len(dl->rcv_buffer) + length > 200) {
- LOGP(DLLAPDM, LOGL_NOTICE, "Received frame "
- "overflow!\n");
- } else {
- memcpy(msgb_put(dl->rcv_buffer, length),
- msg->l2h + 3, length);
- }
- /* if the last segment was received */
- if (!(msg->l2h[2] & LAPDm_MORE)) {
- LOGP(DLLAPDM, LOGL_INFO, "message in multiple I "
- "frames (last message)\n");
- rc = send_rslms_rll_l3(RSL_MT_DATA_IND, mctx,
- dl->rcv_buffer);
- dl->rcv_buffer = NULL;
- } else
- LOGP(DLLAPDM, LOGL_INFO, "message in multiple I "
- "frames (next message)\n");
- msgb_free(msg);
-
- }
- } else
- LOGP(DLLAPDM, LOGL_INFO, "I frame ignored during own receiver "
- "busy condition\n");
-
- /* Check for P bit */
- if (LAPDm_CTRL_PF_BIT(mctx->ctrl)) {
- /* 5.5.2.1 */
- /* check if we are not in own receiver busy */
- if (!dl->own_busy) {
- LOGP(DLLAPDM, LOGL_INFO, "we are not busy, send RR\n");
- /* Send RR with F=1 */
- rc = lapdm_send_rr(mctx, 1);
- } else {
- LOGP(DLLAPDM, LOGL_INFO, "we are busy, send RNR\n");
- /* Send RNR with F=1 */
- rc = lapdm_send_rnr(mctx, 1);
- }
- } else {
- /* 5.5.2.2 */
- /* check if we are not in own receiver busy */
- if (!dl->own_busy) {
- /* NOTE: V(R) is already set above */
- rc = rslms_send_i(mctx, __LINE__);
- if (rc) {
- LOGP(DLLAPDM, LOGL_INFO, "we are not busy and "
- "have no pending data, send RR\n");
- /* Send RR with F=0 */
- return lapdm_send_rr(mctx, 0);
- }
- /* all I or one RR is sent, we are done */
- return 0;
- } else {
- LOGP(DLLAPDM, LOGL_INFO, "we are busy, send RNR\n");
- /* Send RNR with F=0 */
- rc = lapdm_send_rnr(mctx, 0);
- }
- }
-
- /* Send message, if possible due to acknowledged data */
- rslms_send_i(mctx, __LINE__);
-
- return rc;
-}
-
-/* Receive a LAPDm message from L1 */
-static int lapdm_ph_data_ind(struct msgb *msg, struct lapdm_msg_ctx *mctx)
-{
- int rc;
-
- /* G.2.3 EA bit set to "0" is not allowed in GSM */
- if (!LAPDm_ADDR_EA(mctx->addr)) {
- LOGP(DLLAPDM, LOGL_NOTICE, "EA bit 0 is not allowed in GSM\n");
- msgb_free(msg);
- rsl_rll_error(RLL_CAUSE_FRM_UNIMPL, mctx);
- return -EINVAL;
- }
-
- if (LAPDm_CTRL_is_U(mctx->ctrl))
- rc = lapdm_rx_u(msg, mctx);
- else if (LAPDm_CTRL_is_S(mctx->ctrl))
- rc = lapdm_rx_s(msg, mctx);
- else if (LAPDm_CTRL_is_I(mctx->ctrl))
- rc = lapdm_rx_i(msg, mctx);
- else {
- LOGP(DLLAPDM, LOGL_NOTICE, "unknown LAPDm format\n");
- msgb_free(msg);
- rc = -EINVAL;
- }
- return rc;
-}
-
-/* input into layer2 (from layer 1) */
-static int l2_ph_data_ind(struct msgb *msg, struct lapdm_entity *le, uint8_t chan_nr, uint8_t link_id)
-{
- uint8_t cbits = chan_nr >> 3;
- uint8_t sapi; /* we cannot take SAPI from link_id, as L1 has no clue */
- struct lapdm_msg_ctx mctx;
- int rc = 0;
-
- /* when we reach here, we have a msgb with l2h pointing to the raw
- * 23byte mac block. The l1h has already been purged. */
-
- mctx.chan_nr = chan_nr;
- mctx.link_id = link_id;
- mctx.addr = mctx.ctrl = 0;
-
- /* check for L1 chan_nr/link_id and determine LAPDm hdr format */
- if (cbits == 0x10 || cbits == 0x12) {
- /* Format Bbis is used on BCCH and CCCH(PCH, NCH and AGCH) */
- mctx.lapdm_fmt = LAPDm_FMT_Bbis;
- mctx.n201 = N201_Bbis;
- sapi = 0;
- } else {
- if (mctx.link_id & 0x40) {
- /* It was received from network on SACCH */
-
- /* If sent by BTS, lapdm_fmt must be B4 */
- if (le->mode == LAPDM_MODE_MS) {
- mctx.lapdm_fmt = LAPDm_FMT_B4;
- mctx.n201 = N201_B4;
- LOGP(DLLAPDM, LOGL_INFO, "fmt=B4\n");
- } else {
- mctx.lapdm_fmt = LAPDm_FMT_B;
- mctx.n201 = N201_AB_SACCH;
- LOGP(DLLAPDM, LOGL_INFO, "fmt=B\n");
- }
- /* SACCH frames have a two-byte L1 header that
- * OsmocomBB L1 doesn't strip */
- mctx.tx_power_ind = msg->l2h[0] & 0x1f;
- mctx.ta_ind = msg->l2h[1];
- msgb_pull(msg, 2);
- msg->l2h += 2;
- sapi = (msg->l2h[0] >> 2) & 7;
- } else {
- mctx.lapdm_fmt = LAPDm_FMT_B;
- LOGP(DLLAPDM, LOGL_INFO, "fmt=B\n");
- mctx.n201 = 23; // FIXME: select correct size by chan.
- sapi = (msg->l2h[0] >> 2) & 7;
- }
- }
-
- mctx.dl = datalink_for_sapi(le, sapi);
- /* G.2.1 No action on frames containing an unallocated SAPI. */
- if (!mctx.dl) {
- LOGP(DLLAPDM, LOGL_NOTICE, "Received frame for unsupported "
- "SAPI %d!\n", sapi);
- msgb_free(msg);
- return -EIO;
- }
-
- switch (mctx.lapdm_fmt) {
- case LAPDm_FMT_A:
- case LAPDm_FMT_B:
- case LAPDm_FMT_B4:
- mctx.addr = msg->l2h[0];
- if (!(mctx.addr & 0x01)) {
- LOGP(DLLAPDM, LOGL_ERROR, "we don't support "
- "multibyte addresses (discarding)\n");
- msgb_free(msg);
- return -EINVAL;
- }
- mctx.ctrl = msg->l2h[1];
- /* obtain SAPI from address field */
- mctx.link_id |= LAPDm_ADDR_SAPI(mctx.addr);
- rc = lapdm_ph_data_ind(msg, &mctx);
- break;
- case LAPDm_FMT_Bter:
- /* FIXME */
- msgb_free(msg);
- break;
- case LAPDm_FMT_Bbis:
- /* directly pass up to layer3 */
- LOGP(DLLAPDM, LOGL_INFO, "fmt=Bbis UI\n");
- msg->l3h = msg->l2h;
- msgb_pull_l2h(msg);
- rc = send_rslms_rll_l3(RSL_MT_UNIT_DATA_IND, &mctx, msg);
- break;
- default:
- msgb_free(msg);
- }
-
- return rc;
-}
-
-/* input into layer2 (from layer 1) */
-static int l2_ph_rach_ind(struct lapdm_entity *le, uint8_t ra, uint32_t fn, uint8_t acc_delay)
-{
- struct abis_rsl_cchan_hdr *ch;
- struct gsm48_req_ref req_ref;
- struct gsm_time gt;
- struct msgb *msg = msgb_alloc_headroom(512, 64, "RSL CHAN RQD");
-
- msg->l2h = msgb_push(msg, sizeof(*ch));
- ch = (struct abis_rsl_cchan_hdr *)msg->l2h;
- rsl_init_cchan_hdr(ch, RSL_MT_CHAN_RQD);
- ch->chan_nr = RSL_CHAN_RACH;
-
- /* generate a RSL CHANNEL REQUIRED message */
- gsm_fn2gsmtime(&gt, fn);
- req_ref.ra = ra;
- req_ref.t1 = gt.t1; /* FIXME: modulo? */
- req_ref.t2 = gt.t2;
- req_ref.t3_low = gt.t3 & 7;
- req_ref.t3_high = gt.t3 >> 3;
-
- msgb_tv_fixed_put(msg, RSL_IE_REQ_REFERENCE, 3, (uint8_t *) &req_ref);
- msgb_tv_put(msg, RSL_IE_ACCESS_DELAY, acc_delay);
-
- return rslms_sendmsg(msg, le);
-}
-
-static int l2_ph_chan_conf(struct msgb *msg, struct lapdm_entity *le, uint32_t frame_nr);
-
-int lapdm_phsap_up(struct osmo_prim_hdr *oph, struct lapdm_entity *le)
-{
- struct osmo_phsap_prim *pp = (struct osmo_phsap_prim *) oph;
- int rc = 0;
-
- if (oph->sap != SAP_GSM_PH) {
- LOGP(DLLAPDM, LOGL_ERROR, "primitive for unknown SAP %u\n",
- oph->sap);
- return -ENODEV;
- }
-
- switch (oph->primitive) {
- case PRIM_PH_DATA:
- if (oph->operation != PRIM_OP_INDICATION) {
- LOGP(DLLAPDM, LOGL_ERROR, "PH_DATA is not INDICATION %u\n",
- oph->operation);
- return -ENODEV;
- }
- rc = l2_ph_data_ind(oph->msg, le, pp->u.data.chan_nr,
- pp->u.data.link_id);
- break;
- case PRIM_PH_RTS:
- if (oph->operation != PRIM_OP_INDICATION) {
- LOGP(DLLAPDM, LOGL_ERROR, "PH_RTS is not INDICATION %u\n",
- oph->operation);
- return -ENODEV;
- }
- rc = l2_ph_data_conf(oph->msg, le);
- break;
- case PRIM_PH_RACH:
- switch (oph->operation) {
- case PRIM_OP_INDICATION:
- rc = l2_ph_rach_ind(le, pp->u.rach_ind.ra, pp->u.rach_ind.fn,
- pp->u.rach_ind.acc_delay);
- break;
- case PRIM_OP_CONFIRM:
- rc = l2_ph_chan_conf(oph->msg, le, pp->u.rach_ind.fn);
- break;
- default:
- return -EIO;
- }
- break;
- }
-
- return rc;
-}
-
-
-/* L3 -> L2 / RSLMS -> LAPDm */
-
-/* L3 requests establishment of data link */
-static int rslms_rx_rll_est_req(struct msgb *msg, struct lapdm_datalink *dl)
-{
- struct lapdm_entity *le = dl->entity;
- struct abis_rsl_rll_hdr *rllh = msgb_l2(msg);
- uint8_t chan_nr = rllh->chan_nr;
- uint8_t link_id = rllh->link_id;
- uint8_t sapi = rllh->link_id & 7;
- struct tlv_parsed tv;
- uint8_t length;
- uint8_t n201 = 23; //FIXME
-
- /* Set chan_nr and link_id for established connection */
- memset(&dl->mctx, 0, sizeof(dl->mctx));
- dl->mctx.dl = dl;
- dl->mctx.n201 = n201;
- dl->mctx.chan_nr = chan_nr;
- dl->mctx.link_id = link_id;
-
- rsl_tlv_parse(&tv, rllh->data, msgb_l2len(msg)-sizeof(*rllh));
- if (TLVP_PRESENT(&tv, RSL_IE_L3_INFO)) {
- msg->l3h = TLVP_VAL(&tv, RSL_IE_L3_INFO);
- /* contention resolution establishment procedure */
- if (sapi != 0) {
- /* According to clause 6, the contention resolution
- * procedure is only permitted with SAPI value 0 */
- LOGP(DLLAPDM, LOGL_ERROR, "SAPI != 0 but contention"
- "resolution (discarding)\n");
- msgb_free(msg);
- return send_rll_simple(RSL_MT_REL_IND, &dl->mctx);
- }
- /* transmit a SABM command with the P bit set to "1". The SABM
- * command shall contain the layer 3 message unit */
- length = TLVP_LEN(&tv, RSL_IE_L3_INFO);
- LOGP(DLLAPDM, LOGL_INFO, "perform establishment with content "
- "(SABM)\n");
- } else {
- /* normal establishment procedure */
- length = 0;
- LOGP(DLLAPDM, LOGL_INFO, "perform normal establishm. (SABM)\n");
- }
-
- /* check if the layer3 message length exceeds N201 */
- if (length + 3 > 21) { /* FIXME: do we know the channel N201? */
- LOGP(DLLAPDM, LOGL_ERROR, "frame too large: %d > N201(%d) "
- "(discarding)\n", length + 3, 21);
- msgb_free(msg);
- return send_rll_simple(RSL_MT_REL_IND, &dl->mctx);
- }
-
- /* Flush send-queue */
- /* Clear send-buffer */
- lapdm_dl_flush_send(dl);
-
- /* Discard partly received L3 message */
- if (dl->rcv_buffer) {
- msgb_free(dl->rcv_buffer);
- dl->rcv_buffer = NULL;
- }
-
- /* Remove RLL header from msgb */
- msgb_pull_l2h(msg);
-
- /* Push LAPDm header on msgb */
- msg->l2h = msgb_push(msg, 3);
- msg->l2h[0] = LAPDm_ADDR(LAPDm_LPD_NORMAL, sapi, le->cr.loc2rem.cmd);
- msg->l2h[1] = LAPDm_CTRL_U(LAPDm_U_SABM, 1);
- msg->l2h[2] = LAPDm_LEN(length);
- /* Transmit-buffer carries exactly one segment */
- memcpy(dl->tx_hist[0], msg->l2h, 3 + length);
- dl->tx_length[0] = 3 + length;
- /* set Vs to 0, because it is used as index when resending SABM */
- dl->V_send = 0;
-
- /* Set states */
- dl->own_busy = dl->peer_busy = 0;
- dl->retrans_ctr = 0;
- lapdm_dl_newstate(dl, LAPDm_STATE_SABM_SENT);
-
- /* Tramsmit and start T200 */
- osmo_timer_schedule(&dl->t200, T200);
- return tx_ph_data_enqueue(dl, msg, chan_nr, link_id, n201);
-}
-
-/* L3 requests transfer of unnumbered information */
-static int rslms_rx_rll_udata_req(struct msgb *msg, struct lapdm_datalink *dl)
-{
- struct lapdm_entity *le = dl->entity;
- struct abis_rsl_rll_hdr *rllh = msgb_l2(msg);
- uint8_t chan_nr = rllh->chan_nr;
- uint8_t link_id = rllh->link_id;
- uint8_t sapi = link_id & 7;
- struct tlv_parsed tv;
- int length;
- uint8_t n201 = 23; //FIXME
- uint8_t ta = 0, tx_power = 0;
-
- /* check if the layer3 message length exceeds N201 */
-
- rsl_tlv_parse(&tv, rllh->data, msgb_l2len(msg)-sizeof(*rllh));
-
- if (TLVP_PRESENT(&tv, RSL_IE_TIMING_ADVANCE)) {
- ta = *TLVP_VAL(&tv, RSL_IE_TIMING_ADVANCE);
- }
- if (TLVP_PRESENT(&tv, RSL_IE_MS_POWER)) {
- tx_power = *TLVP_VAL(&tv, RSL_IE_MS_POWER);
- }
- if (!TLVP_PRESENT(&tv, RSL_IE_L3_INFO)) {
- LOGP(DLLAPDM, LOGL_ERROR, "unit data request without message "
- "error\n");
- msgb_free(msg);
- return -EINVAL;
- }
- msg->l3h = TLVP_VAL(&tv, RSL_IE_L3_INFO);
- length = TLVP_LEN(&tv, RSL_IE_L3_INFO);
- /* check if the layer3 message length exceeds N201 */
- if (length + 5 > 23) { /* FIXME: do we know the channel N201? */
- LOGP(DLLAPDM, LOGL_ERROR, "frame too large: %d > N201(%d) "
- "(discarding)\n", length + 5, 23);
- msgb_free(msg);
- return -EIO;
- }
-
- LOGP(DLLAPDM, LOGL_INFO, "sending unit data (tx_power=%d, ta=%d)\n",
- tx_power, ta);
-
- /* Remove RLL header from msgb */
- msgb_pull_l2h(msg);
-
- /* Push L1 + LAPDm header on msgb */
- msg->l2h = msgb_push(msg, 2 + 3);
- msg->l2h[0] = tx_power;
- msg->l2h[1] = ta;
- msg->l2h[2] = LAPDm_ADDR(LAPDm_LPD_NORMAL, sapi, le->cr.loc2rem.cmd);
- msg->l2h[3] = LAPDm_CTRL_U(LAPDm_U_UI, 0);
- msg->l2h[4] = LAPDm_LEN(length);
- // FIXME: short L2 header support
-
- /* Tramsmit */
- return tx_ph_data_enqueue(dl, msg, chan_nr, link_id, n201);
-}
-
-/* L3 requests transfer of acknowledged information */
-static int rslms_rx_rll_data_req(struct msgb *msg, struct lapdm_datalink *dl)
-{
- struct abis_rsl_rll_hdr *rllh = msgb_l2(msg);
- struct tlv_parsed tv;
-
- rsl_tlv_parse(&tv, rllh->data, msgb_l2len(msg)-sizeof(*rllh));
- if (!TLVP_PRESENT(&tv, RSL_IE_L3_INFO)) {
- LOGP(DLLAPDM, LOGL_ERROR, "data request without message "
- "error\n");
- msgb_free(msg);
- return -EINVAL;
- }
- msg->l3h = TLVP_VAL(&tv, RSL_IE_L3_INFO);
-
- LOGP(DLLAPDM, LOGL_INFO, "writing message to send-queue\n");
-
- /* Remove the RSL/RLL header */
- msgb_pull_l2h(msg);
-
- /* Write data into the send queue */
- msgb_enqueue(&dl->send_queue, msg);
-
- /* Send message, if possible */
- rslms_send_i(&dl->mctx, __LINE__);
- return 0;
-}
-
-/* Send next I frame from queued/buffered data */
-static int rslms_send_i(struct lapdm_msg_ctx *mctx, int line)
-{
- struct lapdm_datalink *dl = mctx->dl;
- struct lapdm_entity *le = dl->entity;
- uint8_t chan_nr = mctx->chan_nr;
- uint8_t link_id = mctx->link_id;
- uint8_t sapi = link_id & 7;
- int k = k_sapi[sapi];
- struct msgb *msg;
- int length, left;
- int rc = - 1; /* we sent nothing */
-
- LOGP(DLLAPDM, LOGL_INFO, "%s() called from line %d\n", __func__, line);
-
- next_frame:
-
- if (dl->peer_busy) {
- LOGP(DLLAPDM, LOGL_INFO, "peer busy, not sending\n");
- return rc;
- }
-
- if (dl->state == LAPDm_STATE_TIMER_RECOV) {
- LOGP(DLLAPDM, LOGL_INFO, "timer recovery, not sending\n");
- return rc;
- }
-
- /* If the send state variable V(S) is equal to V(A) plus k
- * (where k is the maximum number of outstanding I frames - see
- * subclause 5.8.4), the data link layer entity shall not transmit any
- * new I frames, but shall retransmit an I frame as a result
- * of the error recovery procedures as described in subclauses 5.5.4 and
- * 5.5.7. */
- if (dl->V_send == add_mod8(dl->V_ack, k)) {
- LOGP(DLLAPDM, LOGL_INFO, "k frames outstanding, not sending "
- "more (k=%u V(S)=%u V(A)=%u)\n", k, dl->V_send,
- dl->V_ack);
- return rc;
- }
-
- /* if we have no tx_hist yet, we create it */
- if (!dl->tx_length[dl->V_send]) {
- /* Get next message into send-buffer, if any */
- if (!dl->send_buffer) {
- next_message:
- dl->send_out = 0;
- dl->send_buffer = msgb_dequeue(&dl->send_queue);
- /* No more data to be sent */
- if (!dl->send_buffer)
- return rc;
- LOGP(DLLAPDM, LOGL_INFO, "get message from "
- "send-queue\n");
- }
-
- /* How much is left in the send-buffer? */
- left = msgb_l3len(dl->send_buffer) - dl->send_out;
- /* Segment, if data exceeds N201 */
- length = left;
- if (length > mctx->n201 - 3)
- length = mctx->n201 - 3;
- LOGP(DLLAPDM, LOGL_INFO, "msg-len %d sent %d left %d N201 %d "
- "length %d first byte %02x\n",
- msgb_l3len(dl->send_buffer), dl->send_out, left,
- mctx->n201, length, dl->send_buffer->l3h[0]);
- /* If message in send-buffer is completely sent */
- if (left == 0) {
- msgb_free(dl->send_buffer);
- dl->send_buffer = NULL;
- goto next_message;
- }
-
- LOGP(DLLAPDM, LOGL_INFO, "send I frame %sV(S)=%d\n",
- (left > length) ? "segment " : "", dl->V_send);
-
- /* Create I frame (segment) and transmit-buffer content */
- msg = msgb_alloc_headroom(23+10, 10, "LAPDm I");
- msg->l2h = msgb_put(msg, 3 + length);
- msg->l2h[0] = LAPDm_ADDR(LAPDm_LPD_NORMAL, sapi, le->cr.loc2rem.cmd);
- msg->l2h[1] = LAPDm_CTRL_I(dl->V_recv, dl->V_send, 0);
- msg->l2h[2] = LAPDm_LEN(length);
- if (left > length)
- msg->l2h[2] |= LAPDm_MORE;
- memcpy(msg->l2h + 3, dl->send_buffer->l3h + dl->send_out,
- length);
- memcpy(dl->tx_hist[dl->V_send], msg->l2h, 3 + length);
- dl->tx_length[dl->V_send] = 3 + length;
- /* Add length to track how much is already in the tx buffer */
- dl->send_out += length;
- } else {
- LOGP(DLLAPDM, LOGL_INFO, "resend I frame from tx buffer "
- "V(S)=%d\n", dl->V_send);
-
- /* Create I frame (segment) from tx_hist */
- length = dl->tx_length[dl->V_send];
- msg = msgb_alloc_headroom(23+10, 10, "LAPDm I");
- msg->l2h = msgb_put(msg, length);
- memcpy(msg->l2h, dl->tx_hist[dl->V_send], length);
- msg->l2h[1] = LAPDm_CTRL_I(dl->V_recv, dl->V_send, 0);
- }
-
- /* The value of the send state variable V(S) shall be incremented by 1
- * at the end of the transmission of the I frame */
- dl->V_send = inc_mod8(dl->V_send);
-
- /* If timer T200 is not running at the time right before transmitting a
- * frame, when the PH-READY-TO-SEND primitive is received from the
- * physical layer., it shall be set. */
- if (!osmo_timer_pending(&dl->t200))
- osmo_timer_schedule(&dl->t200, T200);
-
- tx_ph_data_enqueue(dl, msg, chan_nr, link_id, mctx->n201);
-
- rc = 0; /* we sent something */
- goto next_frame;
-}
-
-/* L3 requests suspension of data link */
-static int rslms_rx_rll_susp_req(struct msgb *msg, struct lapdm_datalink *dl)
-{
- struct abis_rsl_rll_hdr *rllh = msgb_l2(msg);
- uint8_t sapi = rllh->link_id & 7;
-
- if (sapi != 0) {
- LOGP(DLLAPDM, LOGL_ERROR, "SAPI != 0 while suspending\n");
- msgb_free(msg);
- return -EINVAL;
- }
-
- LOGP(DLLAPDM, LOGL_INFO, "perform suspension\n");
-
- /* put back the send-buffer to the send-queue (first position) */
- if (dl->send_buffer) {
- LOGP(DLLAPDM, LOGL_INFO, "put frame in sendbuffer back to "
- "queue\n");
- llist_add(&dl->send_buffer->list, &dl->send_queue);
- dl->send_buffer = NULL;
- } else
- LOGP(DLLAPDM, LOGL_INFO, "no frame in sendbuffer\n");
-
- /* Clear transmit buffer, but keep send buffer */
- lapdm_dl_flush_tx(dl);
-
- msgb_free(msg);
-
- return send_rll_simple(RSL_MT_SUSP_CONF, &dl->mctx);
-}
-
-/* L3 requests resume of data link */
-static int rslms_rx_rll_res_req(struct msgb *msg, struct lapdm_datalink *dl)
-{
- struct lapdm_entity *le = dl->entity;
- struct abis_rsl_rll_hdr *rllh = msgb_l2(msg);
- uint8_t chan_nr = rllh->chan_nr;
- uint8_t link_id = rllh->link_id;
- uint8_t sapi = rllh->link_id & 7;
- struct tlv_parsed tv;
- uint8_t length;
- uint8_t n201 = 23; //FIXME
-
- /* Set chan_nr and link_id for established connection */
- memset(&dl->mctx, 0, sizeof(dl->mctx));
- dl->mctx.dl = dl;
- dl->mctx.n201 = n201;
- dl->mctx.chan_nr = chan_nr;
- dl->mctx.link_id = link_id;
-
- rsl_tlv_parse(&tv, rllh->data, msgb_l2len(msg)-sizeof(*rllh));
- if (!TLVP_PRESENT(&tv, RSL_IE_L3_INFO)) {
- LOGP(DLLAPDM, LOGL_ERROR, "resume without message error\n");
- msgb_free(msg);
- return send_rll_simple(RSL_MT_REL_IND, &dl->mctx);
- }
- length = TLVP_LEN(&tv, RSL_IE_L3_INFO);
-
- LOGP(DLLAPDM, LOGL_INFO, "perform re-establishment (SABM) length=%d\n",
- length);
-
- /* Replace message in the send-buffer (reconnect) */
- if (dl->send_buffer)
- msgb_free(dl->send_buffer);
- dl->send_out = 0;
- if (length) {
- /* Remove the RSL/RLL header */
- msgb_pull_l2h(msg);
- /* Write data into the send buffer, to be sent first */
- dl->send_buffer = msg;
- }
-
- /* Discard partly received L3 message */
- if (dl->rcv_buffer) {
- msgb_free(dl->rcv_buffer);
- dl->rcv_buffer = NULL;
- }
-
- /* Create new msgb (old one is now free) */
- msg = msgb_alloc_headroom(23+10, 10, "LAPDm SABM");
- msg->l2h = msgb_put(msg, 3);
- msg->l2h[0] = LAPDm_ADDR(LAPDm_LPD_NORMAL, sapi, le->cr.loc2rem.cmd);
- msg->l2h[1] = LAPDm_CTRL_U(LAPDm_U_SABM, 1);
- msg->l2h[2] = LAPDm_LEN(0);
- /* Transmit-buffer carries exactly one segment */
- memcpy(dl->tx_hist[0], msg->l2h, 3);
- dl->tx_length[0] = 3;
- /* set Vs to 0, because it is used as index when resending SABM */
- dl->V_send = 0;
-
- /* Set states */
- dl->own_busy = dl->peer_busy = 0;
- dl->retrans_ctr = 0;
- lapdm_dl_newstate(dl, LAPDm_STATE_SABM_SENT);
-
- /* Tramsmit and start T200 */
- osmo_timer_schedule(&dl->t200, T200);
- return tx_ph_data_enqueue(dl, msg, chan_nr, link_id, n201);
-}
-
-/* L3 requests release of data link */
-static int rslms_rx_rll_rel_req(struct msgb *msg, struct lapdm_datalink *dl)
-{
- struct lapdm_entity *le = dl->entity;
- struct abis_rsl_rll_hdr *rllh = msgb_l2(msg);
- uint8_t chan_nr = rllh->chan_nr;
- uint8_t link_id = rllh->link_id;
- uint8_t sapi = rllh->link_id & 7;
- uint8_t mode = 0;
-
- /* get release mode */
- if (rllh->data[0] == RSL_IE_RELEASE_MODE)
- mode = rllh->data[1] & 1;
-
- /* local release */
- if (mode) {
- LOGP(DLLAPDM, LOGL_INFO, "perform local release\n");
- msgb_free(msg);
- /* reset Timer T200 */
- osmo_timer_del(&dl->t200);
- /* enter idle state */
- lapdm_dl_newstate(dl, LAPDm_STATE_IDLE);
- /* flush buffers */
- lapdm_dl_flush_tx(dl);
- lapdm_dl_flush_send(dl);
- /* send notification to L3 */
- return send_rll_simple(RSL_MT_REL_CONF, &dl->mctx);
- }
-
- /* in case we are already disconnecting */
- if (dl->state == LAPDm_STATE_DISC_SENT)
- return -EBUSY;
-
- LOGP(DLLAPDM, LOGL_INFO, "perform normal release (DISC)\n");
-
- /* Pull rllh */
- msgb_pull(msg, msg->tail - msg->l2h);
-
- /* Push LAPDm header on msgb */
- msg->l2h = msgb_push(msg, 3);
- msg->l2h[0] = LAPDm_ADDR(LAPDm_LPD_NORMAL, sapi, le->cr.loc2rem.cmd);
- msg->l2h[1] = LAPDm_CTRL_U(LAPDm_U_DISC, 1);
- msg->l2h[2] = LAPDm_LEN(0);
- /* Transmit-buffer carries exactly one segment */
- memcpy(dl->tx_hist[0], msg->l2h, 3);
- dl->tx_length[0] = 3;
-
- /* Set states */
- dl->own_busy = dl->peer_busy = 0;
- dl->retrans_ctr = 0;
- lapdm_dl_newstate(dl, LAPDm_STATE_DISC_SENT);
-
- /* Tramsmit and start T200 */
- osmo_timer_schedule(&dl->t200, T200);
- return tx_ph_data_enqueue(dl, msg, chan_nr, link_id, dl->mctx.n201);
-}
-
-/* L3 requests release in idle state */
-static int rslms_rx_rll_rel_req_idle(struct msgb *msg, struct lapdm_datalink *dl)
-{
- msgb_free(msg);
-
- /* send notification to L3 */
- return send_rll_simple(RSL_MT_REL_CONF, &dl->mctx);
-}
-
-/* L3 requests channel in idle state */
-static int rslms_rx_chan_rqd(struct lapdm_channel *lc, struct msgb *msg)
-{
- struct abis_rsl_cchan_hdr *cch = msgb_l2(msg);
- void *l1ctx = lc->lapdm_dcch.l1_ctx;
- struct osmo_phsap_prim pp;
-
- osmo_prim_init(&pp.oph, SAP_GSM_PH, PRIM_PH_RACH,
- PRIM_OP_REQUEST, NULL);
-
- if (msgb_l2len(msg) < sizeof(*cch) + 4 + 2 + 2) {
- LOGP(DLLAPDM, LOGL_ERROR, "Message too short for CHAN RQD!\n");
- return -EINVAL;
- }
- if (cch->data[0] != RSL_IE_REQ_REFERENCE) {
- LOGP(DLLAPDM, LOGL_ERROR, "Missing REQ REFERENCE IE\n");
- return -EINVAL;
- }
- pp.u.rach_req.ra = cch->data[1];
- pp.u.rach_req.offset = ((cch->data[2] & 0x7f) << 8) | cch->data[3];
- pp.u.rach_req.is_combined_ccch = cch->data[2] >> 7;
-
- if (cch->data[4] != RSL_IE_ACCESS_DELAY) {
- LOGP(DLLAPDM, LOGL_ERROR, "Missing ACCESS_DELAY IE\n");
- return -EINVAL;
- }
- /* TA = 0 - delay */
- pp.u.rach_req.ta = 0 - cch->data[5];
-
- if (cch->data[6] != RSL_IE_MS_POWER) {
- LOGP(DLLAPDM, LOGL_ERROR, "Missing MS POWER IE\n");
- return -EINVAL;
- }
- pp.u.rach_req.tx_power = cch->data[7];
-
- msgb_free(msg);
-
- return lc->lapdm_dcch.l1_prim_cb(&pp.oph, l1ctx);
-}
-
-/* L1 confirms channel request */
-static int l2_ph_chan_conf(struct msgb *msg, struct lapdm_entity *le, uint32_t frame_nr)
-{
- struct abis_rsl_cchan_hdr *ch;
- struct gsm_time tm;
- struct gsm48_req_ref *ref;
-
- gsm_fn2gsmtime(&tm, frame_nr);
-
- msgb_pull_l2h(msg);
- msg->l2h = msgb_push(msg, sizeof(*ch) + sizeof(*ref));
- ch = (struct abis_rsl_cchan_hdr *)msg->l2h;
- rsl_init_cchan_hdr(ch, RSL_MT_CHAN_CONF);
- ch->chan_nr = RSL_CHAN_RACH;
- ch->data[0] = RSL_IE_REQ_REFERENCE;
- ref = (struct gsm48_req_ref *) (ch->data + 1);
- ref->t1 = tm.t1;
- ref->t2 = tm.t2;
- ref->t3_low = tm.t3 & 0x7;
- ref->t3_high = tm.t3 >> 3;
-
- return rslms_sendmsg(msg, le);
-}
-
-const char *lapdm_state_names[] = {
- "LAPDm_STATE_NULL",
- "LAPDm_STATE_IDLE",
- "LAPDm_STATE_SABM_SENT",
- "LAPDm_STATE_MF_EST",
- "LAPDm_STATE_TIMER_RECOV",
- "LAPDm_STATE_DISC_SENT",
-};
-
-/* statefull handling for RSLms RLL messages from L3 */
-static struct l2downstate {
- uint32_t states;
- int type;
- int (*rout) (struct msgb *msg, struct lapdm_datalink *dl);
-} l2downstatelist[] = {
- /* create and send UI command */
- {ALL_STATES,
- RSL_MT_UNIT_DATA_REQ, rslms_rx_rll_udata_req},
-
- /* create and send SABM command */
- {SBIT(LAPDm_STATE_IDLE),
- RSL_MT_EST_REQ, rslms_rx_rll_est_req},
-
- /* create and send I command */
- {SBIT(LAPDm_STATE_MF_EST) |
- SBIT(LAPDm_STATE_TIMER_RECOV),
- RSL_MT_DATA_REQ, rslms_rx_rll_data_req},
-
- /* suspend datalink */
- {SBIT(LAPDm_STATE_MF_EST) |
- SBIT(LAPDm_STATE_TIMER_RECOV),
- RSL_MT_SUSP_REQ, rslms_rx_rll_susp_req},
-
- /* create and send SABM command (resume) */
- {SBIT(LAPDm_STATE_MF_EST) |
- SBIT(LAPDm_STATE_TIMER_RECOV),
- RSL_MT_RES_REQ, rslms_rx_rll_res_req},
-
- /* create and send SABM command (reconnect) */
- {SBIT(LAPDm_STATE_IDLE) |
- SBIT(LAPDm_STATE_MF_EST) |
- SBIT(LAPDm_STATE_TIMER_RECOV),
- RSL_MT_RECON_REQ, rslms_rx_rll_res_req},
-
- /* create and send DISC command */
- {SBIT(LAPDm_STATE_SABM_SENT) |
- SBIT(LAPDm_STATE_MF_EST) |
- SBIT(LAPDm_STATE_TIMER_RECOV) |
- SBIT(LAPDm_STATE_DISC_SENT),
- RSL_MT_REL_REQ, rslms_rx_rll_rel_req},
-
- /* release in idle state */
- {SBIT(LAPDm_STATE_IDLE),
- RSL_MT_REL_REQ, rslms_rx_rll_rel_req_idle},
-};
-
-#define L2DOWNSLLEN \
- (sizeof(l2downstatelist) / sizeof(struct l2downstate))
-
-/* incoming RSLms RLL message from L3 */
-static int rslms_rx_rll(struct msgb *msg, struct lapdm_channel *lc)
-{
- struct abis_rsl_rll_hdr *rllh = msgb_l2(msg);
- int msg_type = rllh->c.msg_type;
- uint8_t sapi = rllh->link_id & 7;
- struct lapdm_entity *le;
- struct lapdm_datalink *dl;
- int i, supported = 0;
- int rc = 0;
-
- if (msgb_l2len(msg) < sizeof(*rllh)) {
- LOGP(DLLAPDM, LOGL_ERROR, "Message too short for RLL hdr!\n");
- return -EINVAL;
- }
-
- if (rllh->link_id & 0x40)
- le = &lc->lapdm_acch;
- else
- le = &lc->lapdm_dcch;
-
- /* G.2.1 No action schall be taken on frames containing an unallocated
- * SAPI.
- */
- dl = datalink_for_sapi(le, sapi);
- if (!dl) {
- LOGP(DLLAPDM, LOGL_ERROR, "No instance for SAPI %d!\n", sapi);
- return -EINVAL;
- }
-
- LOGP(DLLAPDM, LOGL_INFO, "(%p) RLL Message '%s' received in state %s\n",
- lc->name, rsl_msg_name(msg_type), lapdm_state_names[dl->state]);
-
- /* find function for current state and message */
- for (i = 0; i < L2DOWNSLLEN; i++) {
- if (msg_type == l2downstatelist[i].type)
- supported = 1;
- if ((msg_type == l2downstatelist[i].type)
- && ((1 << dl->state) & l2downstatelist[i].states))
- break;
- }
- if (!supported) {
- LOGP(DLLAPDM, LOGL_NOTICE, "Message unsupported.\n");
- msgb_free(msg);
- return 0;
- }
- if (i == L2DOWNSLLEN) {
- LOGP(DLLAPDM, LOGL_NOTICE, "Message unhandled at this state.\n");
- msgb_free(msg);
- return 0;
- }
-
- rc = l2downstatelist[i].rout(msg, dl);
-
- return rc;
-}
-
-/* incoming RSLms COMMON CHANNEL message from L3 */
-static int rslms_rx_com_chan(struct msgb *msg, struct lapdm_channel *lc)
-{
- struct abis_rsl_cchan_hdr *cch = msgb_l2(msg);
- int msg_type = cch->c.msg_type;
- int rc = 0;
-
- if (msgb_l2len(msg) < sizeof(*cch)) {
- LOGP(DLLAPDM, LOGL_ERROR, "Message too short for COM CHAN hdr!\n");
- return -EINVAL;
- }
-
- switch (msg_type) {
- case RSL_MT_CHAN_RQD:
- /* create and send RACH request */
- rc = rslms_rx_chan_rqd(lc, msg);
- break;
- default:
- LOGP(DLLAPDM, LOGL_NOTICE, "Unknown COMMON CHANNEL msg %d!\n",
- msg_type);
- msgb_free(msg);
- return 0;
- }
-
- return rc;
-}
-
-/* input into layer2 (from layer 3) */
-int lapdm_rslms_recvmsg(struct msgb *msg, struct lapdm_channel *lc)
-{
- struct abis_rsl_common_hdr *rslh = msgb_l2(msg);
- int rc = 0;
-
- if (msgb_l2len(msg) < sizeof(*rslh)) {
- LOGP(DLLAPDM, LOGL_ERROR, "Message too short RSL hdr!\n");
- return -EINVAL;
- }
-
- switch (rslh->msg_discr & 0xfe) {
- case ABIS_RSL_MDISC_RLL:
- rc = rslms_rx_rll(msg, lc);
- break;
- case ABIS_RSL_MDISC_COM_CHAN:
- rc = rslms_rx_com_chan(msg, lc);
- break;
- default:
- LOGP(DLLAPDM, LOGL_ERROR, "unknown RSLms message "
- "discriminator 0x%02x", rslh->msg_discr);
- msgb_free(msg);
- return -EINVAL;
- }
-
- return rc;
-}
-
-int lapdm_entity_set_mode(struct lapdm_entity *le, enum lapdm_mode mode)
-{
- switch (mode) {
- case LAPDM_MODE_MS:
- le->cr.loc2rem.cmd = CR_MS2BS_CMD;
- le->cr.loc2rem.resp = CR_MS2BS_RESP;
- le->cr.rem2loc.cmd = CR_BS2MS_CMD;
- le->cr.rem2loc.resp = CR_BS2MS_RESP;
- break;
- case LAPDM_MODE_BTS:
- le->cr.loc2rem.cmd = CR_BS2MS_CMD;
- le->cr.loc2rem.resp = CR_BS2MS_RESP;
- le->cr.rem2loc.cmd = CR_MS2BS_CMD;
- le->cr.rem2loc.resp = CR_MS2BS_RESP;
- break;
- default:
- return -EINVAL;
- }
-
- le->mode = mode;
-
- return 0;
-}
-
-int lapdm_channel_set_mode(struct lapdm_channel *lc, enum lapdm_mode mode)
-{
- int rc;
-
- rc = lapdm_entity_set_mode(&lc->lapdm_dcch, mode);
- if (rc < 0)
- return rc;
-
- return lapdm_entity_set_mode(&lc->lapdm_acch, mode);
-}
-
-void lapdm_channel_set_l1(struct lapdm_channel *lc, osmo_prim_cb cb, void *ctx)
-{
- lc->lapdm_dcch.l1_prim_cb = cb;
- lc->lapdm_acch.l1_prim_cb = cb;
- lc->lapdm_dcch.l1_ctx = ctx;
- lc->lapdm_acch.l1_ctx = ctx;
-}
-
-void lapdm_channel_set_l3(struct lapdm_channel *lc, lapdm_cb_t cb, void *ctx)
-{
- lc->lapdm_dcch.l3_cb = cb;
- lc->lapdm_acch.l3_cb = cb;
- lc->lapdm_dcch.l3_ctx = ctx;
- lc->lapdm_acch.l3_ctx = ctx;
-}
-
-void lapdm_entity_reset(struct lapdm_entity *le)
-{
- struct lapdm_datalink *dl;
- int i;
-
- for (i = 0; i < ARRAY_SIZE(le->datalink); i++) {
- dl = &le->datalink[i];
- if (dl->state == LAPDm_STATE_IDLE)
- continue;
- LOGP(DLLAPDM, LOGL_INFO, "Resetting LAPDm instance\n");
- /* reset Timer T200 */
- osmo_timer_del(&dl->t200);
- /* enter idle state */
- dl->state = LAPDm_STATE_IDLE;
- /* flush buffer */
- lapdm_dl_flush_tx(dl);
- lapdm_dl_flush_send(dl);
- }
-}
-
-void lapdm_channel_reset(struct lapdm_channel *lc)
-{
- lapdm_entity_reset(&lc->lapdm_dcch);
- lapdm_entity_reset(&lc->lapdm_acch);
-}
-
-void lapdm_entity_set_flags(struct lapdm_entity *le, unsigned int flags)
-{
- le->flags = flags;
-}
-
-void lapdm_channel_set_flags(struct lapdm_channel *lc, unsigned int flags)
-{
- lapdm_entity_set_flags(&lc->lapdm_dcch, flags);
- lapdm_entity_set_flags(&lc->lapdm_acch, flags);
-}
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/gsm/rsl.c b/Src/osmoconbb/src/shared/libosmocore/src/gsm/rsl.c
deleted file mode 100644
index c497ba9..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/gsm/rsl.c
+++ /dev/null
@@ -1,447 +0,0 @@
-/* GSM Radio Signalling Link messages on the A-bis interface
- * 3GPP TS 08.58 version 8.6.0 Release 1999 / ETSI TS 100 596 V8.6.0 */
-
-/* (C) 2008-2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-#include <errno.h>
-
-#include <osmocom/gsm/tlv.h>
-#include <osmocom/gsm/rsl.h>
-
-#define RSL_ALLOC_SIZE 200
-#define RSL_ALLOC_HEADROOM 56
-
-void rsl_init_rll_hdr(struct abis_rsl_rll_hdr *dh, uint8_t msg_type)
-{
- dh->c.msg_discr = ABIS_RSL_MDISC_RLL;
- dh->c.msg_type = msg_type;
- dh->ie_chan = RSL_IE_CHAN_NR;
- dh->ie_link_id = RSL_IE_LINK_IDENT;
-}
-
-void rsl_init_cchan_hdr(struct abis_rsl_cchan_hdr *ch, uint8_t msg_type)
-{
- ch->c.msg_discr = ABIS_RSL_MDISC_COM_CHAN;
- ch->c.msg_type = msg_type;
- ch->ie_chan = RSL_IE_CHAN_NR;
-}
-
-const struct tlv_definition rsl_att_tlvdef = {
- .def = {
- [RSL_IE_CHAN_NR] = { TLV_TYPE_TV },
- [RSL_IE_LINK_IDENT] = { TLV_TYPE_TV },
- [RSL_IE_ACT_TYPE] = { TLV_TYPE_TV },
- [RSL_IE_BS_POWER] = { TLV_TYPE_TV },
- [RSL_IE_CHAN_IDENT] = { TLV_TYPE_TLV },
- [RSL_IE_CHAN_MODE] = { TLV_TYPE_TLV },
- [RSL_IE_ENCR_INFO] = { TLV_TYPE_TLV },
- [RSL_IE_FRAME_NUMBER] = { TLV_TYPE_FIXED, 2 },
- [RSL_IE_HANDO_REF] = { TLV_TYPE_TV },
- [RSL_IE_L1_INFO] = { TLV_TYPE_FIXED, 2 },
- [RSL_IE_L3_INFO] = { TLV_TYPE_TL16V },
- [RSL_IE_MS_IDENTITY] = { TLV_TYPE_TLV },
- [RSL_IE_MS_POWER] = { TLV_TYPE_TV },
- [RSL_IE_PAGING_GROUP] = { TLV_TYPE_TV },
- [RSL_IE_PAGING_LOAD] = { TLV_TYPE_FIXED, 2 },
- [RSL_IE_PYHS_CONTEXT] = { TLV_TYPE_TLV },
- [RSL_IE_ACCESS_DELAY] = { TLV_TYPE_TV },
- [RSL_IE_RACH_LOAD] = { TLV_TYPE_TLV },
- [RSL_IE_REQ_REFERENCE] = { TLV_TYPE_FIXED, 3 },
- [RSL_IE_RELEASE_MODE] = { TLV_TYPE_TV },
- [RSL_IE_RESOURCE_INFO] = { TLV_TYPE_TLV },
- [RSL_IE_RLM_CAUSE] = { TLV_TYPE_TLV },
- [RSL_IE_STARTNG_TIME] = { TLV_TYPE_FIXED, 2 },
- [RSL_IE_TIMING_ADVANCE] = { TLV_TYPE_TV },
- [RSL_IE_UPLINK_MEAS] = { TLV_TYPE_TLV },
- [RSL_IE_CAUSE] = { TLV_TYPE_TLV },
- [RSL_IE_MEAS_RES_NR] = { TLV_TYPE_TV },
- [RSL_IE_MSG_ID] = { TLV_TYPE_TV },
- [RSL_IE_SYSINFO_TYPE] = { TLV_TYPE_TV },
- [RSL_IE_MS_POWER_PARAM] = { TLV_TYPE_TLV },
- [RSL_IE_BS_POWER_PARAM] = { TLV_TYPE_TLV },
- [RSL_IE_PREPROC_PARAM] = { TLV_TYPE_TLV },
- [RSL_IE_PREPROC_MEAS] = { TLV_TYPE_TLV },
- [RSL_IE_IMM_ASS_INFO] = { TLV_TYPE_TLV },
- [RSL_IE_SMSCB_INFO] = { TLV_TYPE_FIXED, 23 },
- [RSL_IE_MS_TIMING_OFFSET] = { TLV_TYPE_TV },
- [RSL_IE_ERR_MSG] = { TLV_TYPE_TLV },
- [RSL_IE_FULL_BCCH_INFO] = { TLV_TYPE_TLV },
- [RSL_IE_CHAN_NEEDED] = { TLV_TYPE_TV },
- [RSL_IE_CB_CMD_TYPE] = { TLV_TYPE_TV },
- [RSL_IE_SMSCB_MSG] = { TLV_TYPE_TLV },
- [RSL_IE_FULL_IMM_ASS_INFO] = { TLV_TYPE_TLV },
- [RSL_IE_SACCH_INFO] = { TLV_TYPE_TLV },
- [RSL_IE_CBCH_LOAD_INFO] = { TLV_TYPE_TV },
- [RSL_IE_SMSCB_CHAN_INDICATOR] = { TLV_TYPE_TV },
- [RSL_IE_GROUP_CALL_REF] = { TLV_TYPE_TLV },
- [RSL_IE_CHAN_DESC] = { TLV_TYPE_TLV },
- [RSL_IE_NCH_DRX_INFO] = { TLV_TYPE_TLV },
- [RSL_IE_CMD_INDICATOR] = { TLV_TYPE_TLV },
- [RSL_IE_EMLPP_PRIO] = { TLV_TYPE_TV },
- [RSL_IE_UIC] = { TLV_TYPE_TLV },
- [RSL_IE_MAIN_CHAN_REF] = { TLV_TYPE_TV },
- [RSL_IE_MR_CONFIG] = { TLV_TYPE_TLV },
- [RSL_IE_MR_CONTROL] = { TLV_TYPE_TV },
- [RSL_IE_SUP_CODEC_TYPES] = { TLV_TYPE_TLV },
- [RSL_IE_CODEC_CONFIG] = { TLV_TYPE_TLV },
- [RSL_IE_RTD] = { TLV_TYPE_TV },
- [RSL_IE_TFO_STATUS] = { TLV_TYPE_TV },
- [RSL_IE_LLP_APDU] = { TLV_TYPE_TLV },
- [RSL_IE_SIEMENS_MRPCI] = { TLV_TYPE_TV },
- [RSL_IE_IPAC_PROXY_UDP] = { TLV_TYPE_FIXED, 2 },
- [RSL_IE_IPAC_BSCMPL_TOUT] = { TLV_TYPE_TV },
- [RSL_IE_IPAC_REMOTE_IP] = { TLV_TYPE_FIXED, 4 },
- [RSL_IE_IPAC_REMOTE_PORT] = { TLV_TYPE_FIXED, 2 },
- [RSL_IE_IPAC_RTP_PAYLOAD] = { TLV_TYPE_TV },
- [RSL_IE_IPAC_LOCAL_PORT] = { TLV_TYPE_FIXED, 2 },
- [RSL_IE_IPAC_SPEECH_MODE] = { TLV_TYPE_TV },
- [RSL_IE_IPAC_LOCAL_IP] = { TLV_TYPE_FIXED, 4 },
- [RSL_IE_IPAC_CONN_ID] = { TLV_TYPE_FIXED, 2 },
- [RSL_IE_IPAC_RTP_CSD_FMT] = { TLV_TYPE_TV },
- [RSL_IE_IPAC_RTP_JIT_BUF] = { TLV_TYPE_FIXED, 2 },
- [RSL_IE_IPAC_RTP_COMPR] = { TLV_TYPE_TV },
- [RSL_IE_IPAC_RTP_PAYLOAD2] = { TLV_TYPE_TV },
- [RSL_IE_IPAC_RTP_MPLEX] = { TLV_TYPE_FIXED, 8 },
- [RSL_IE_IPAC_RTP_MPLEX_ID] = { TLV_TYPE_TV },
- },
-};
-
-/* encode channel number as per Section 9.3.1 */
-uint8_t rsl_enc_chan_nr(uint8_t type, uint8_t subch, uint8_t timeslot)
-{
- uint8_t ret;
-
- ret = (timeslot & 0x07) | type;
-
- switch (type) {
- case RSL_CHAN_Lm_ACCHs:
- subch &= 0x01;
- break;
- case RSL_CHAN_SDCCH4_ACCH:
- subch &= 0x03;
- break;
- case RSL_CHAN_SDCCH8_ACCH:
- subch &= 0x07;
- break;
- default:
- /* no subchannels allowed */
- subch = 0x00;
- break;
- }
- ret |= (subch << 3);
-
- return ret;
-}
-
-int rsl_dec_chan_nr(uint8_t chan_nr, uint8_t *type, uint8_t *subch, uint8_t *timeslot)
-{
- *timeslot = chan_nr & 0x7;
-
- if ((chan_nr & 0xf8) == RSL_CHAN_Bm_ACCHs) {
- *type = RSL_CHAN_Bm_ACCHs;
- *subch = 0;
- } else if ((chan_nr & 0xf0) == RSL_CHAN_Lm_ACCHs) {
- *type = RSL_CHAN_Lm_ACCHs;
- *subch = (chan_nr >> 3) & 0x1;
- } else if ((chan_nr & 0xe0) == RSL_CHAN_SDCCH4_ACCH) {
- *type = RSL_CHAN_SDCCH4_ACCH;
- *subch = (chan_nr >> 3) & 0x3;
- } else if ((chan_nr & 0xc0) == RSL_CHAN_SDCCH8_ACCH) {
- *type = RSL_CHAN_SDCCH8_ACCH;
- *subch = (chan_nr >> 3) & 0x7;
- } else if ((chan_nr & 0xf8) == RSL_CHAN_BCCH) {
- *type = RSL_CHAN_BCCH;
- *subch = 0;
- } else if ((chan_nr & 0xf8) == RSL_CHAN_RACH) {
- *type = RSL_CHAN_RACH;
- *subch = 0;
- } else if ((chan_nr & 0xf8) == RSL_CHAN_PCH_AGCH) {
- *type = RSL_CHAN_PCH_AGCH;
- *subch = 0;
- } else
- return -EINVAL;
-
- return 0;
-}
-
-const char *rsl_chan_nr_str(uint8_t chan_nr)
-{
- static char str[20];
- int ts = chan_nr & 7;
- uint8_t cbits = chan_nr >> 3;
-
- if (cbits == 0x01)
- sprintf(str, "TCH/F on TS%d", ts);
- else if ((cbits & 0x1e) == 0x02)
- sprintf(str, "TCH/H(%u) on TS%d", cbits & 0x01, ts);
- else if ((cbits & 0x1c) == 0x04)
- sprintf(str, "SDCCH/4(%u) on TS%d", cbits & 0x03, ts);
- else if ((cbits & 0x18) == 0x08)
- sprintf(str, "SDCCH/8(%u) on TS%d", cbits & 0x07, ts);
- else if (cbits == 0x10)
- sprintf(str, "BCCH on TS%d", ts);
- else if (cbits == 0x11)
- sprintf(str, "RACH on TS%d", ts);
- else if (cbits == 0x12)
- sprintf(str, "PCH/AGCH on TS%d", ts);
- else
- sprintf(str, "UNKNOWN on TS%d", ts);
-
- return str;
-}
-
-static const struct value_string rsl_err_vals[] = {
- { RSL_ERR_RADIO_IF_FAIL, "Radio Interface Failure" },
- { RSL_ERR_RADIO_LINK_FAIL, "Radio Link Failure" },
- { RSL_ERR_HANDOVER_ACC_FAIL, "Handover Access Failure" },
- { RSL_ERR_TALKER_ACC_FAIL, "Talker Access Failure" },
- { RSL_ERR_OM_INTERVENTION, "O&M Intervention" },
- { RSL_ERR_NORMAL_UNSPEC, "Normal event, unspecified" },
- { RSL_ERR_T_MSRFPCI_EXP, "Siemens: T_MSRFPCI Expired" },
- { RSL_ERR_EQUIPMENT_FAIL, "Equipment Failure" },
- { RSL_ERR_RR_UNAVAIL, "Radio Resource not available" },
- { RSL_ERR_TERR_CH_FAIL, "Terrestrial Channel Failure" },
- { RSL_ERR_CCCH_OVERLOAD, "CCCH Overload" },
- { RSL_ERR_ACCH_OVERLOAD, "ACCH Overload" },
- { RSL_ERR_PROCESSOR_OVERLOAD, "Processor Overload" },
- { RSL_ERR_RES_UNAVAIL, "Resource not available, unspecified" },
- { RSL_ERR_TRANSC_UNAVAIL, "Transcoding not available" },
- { RSL_ERR_SERV_OPT_UNAVAIL, "Service or Option not available" },
- { RSL_ERR_ENCR_UNIMPL, "Encryption algorithm not implemented" },
- { RSL_ERR_SERV_OPT_UNIMPL, "Service or Option not implemented" },
- { RSL_ERR_RCH_ALR_ACTV_ALLOC, "Radio channel already activated" },
- { RSL_ERR_INVALID_MESSAGE, "Invalid Message, unspecified" },
- { RSL_ERR_MSG_DISCR, "Message Discriminator Error" },
- { RSL_ERR_MSG_TYPE, "Message Type Error" },
- { RSL_ERR_MSG_SEQ, "Message Sequence Error" },
- { RSL_ERR_IE_ERROR, "General IE error" },
- { RSL_ERR_MAND_IE_ERROR, "Mandatory IE error" },
- { RSL_ERR_OPT_IE_ERROR, "Optional IE error" },
- { RSL_ERR_IE_NONEXIST, "IE non-existent" },
- { RSL_ERR_IE_LENGTH, "IE length error" },
- { RSL_ERR_IE_CONTENT, "IE content error" },
- { RSL_ERR_PROTO, "Protocol error, unspecified" },
- { RSL_ERR_INTERWORKING, "Interworking error, unspecified" },
- { 0, NULL }
-};
-
-const char *rsl_err_name(uint8_t err)
-{
- return get_value_string(rsl_err_vals, err);
-}
-
-/* Names for Radio Link Layer Management */
-static const struct value_string rsl_msgt_names[] = {
- { RSL_MT_DATA_REQ, "DATA_REQ" },
- { RSL_MT_DATA_IND, "DATA_IND" },
- { RSL_MT_ERROR_IND, "ERROR_IND" },
- { RSL_MT_EST_REQ, "EST_REQ" },
- { RSL_MT_EST_CONF, "EST_CONF" },
- { RSL_MT_EST_IND, "EST_IND" },
- { RSL_MT_REL_REQ, "REL_REQ" },
- { RSL_MT_REL_CONF, "REL_CONF" },
- { RSL_MT_REL_IND, "REL_IND" },
- { RSL_MT_UNIT_DATA_REQ, "UNIT_DATA_REQ" },
- { RSL_MT_UNIT_DATA_IND, "UNIT_DATA_IND" },
- { RSL_MT_SUSP_REQ, "SUSP_REQ" },
- { RSL_MT_SUSP_CONF, "SUSP_CONF" },
- { RSL_MT_RES_REQ, "RES_REQ" },
- { RSL_MT_RECON_REQ, "RECON_REQ" },
-
- { RSL_MT_BCCH_INFO, "BCCH_INFO" },
- { RSL_MT_CCCH_LOAD_IND, "CCCH_LOAD_IND" },
- { RSL_MT_CHAN_RQD, "CHAN_RQD" },
- { RSL_MT_DELETE_IND, "DELETE_IND" },
- { RSL_MT_PAGING_CMD, "PAGING_CMD" },
- { RSL_MT_IMMEDIATE_ASSIGN_CMD, "IMM_ASS_CMD" },
- { RSL_MT_SMS_BC_REQ, "SMS_BC_REQ" },
- { RSL_MT_CHAN_CONF, "CHAN_CONF" },
-
- { RSL_MT_RF_RES_IND, "RF_RES_IND" },
- { RSL_MT_SACCH_FILL, "SACCH_FILL" },
- { RSL_MT_OVERLOAD, "OVERLOAD" },
- { RSL_MT_ERROR_REPORT, "ERROR_REPORT" },
- { RSL_MT_SMS_BC_CMD, "SMS_BC_CMD" },
- { RSL_MT_CBCH_LOAD_IND, "CBCH_LOAD_IND" },
- { RSL_MT_NOT_CMD, "NOTIFY_CMD" },
-
- { RSL_MT_CHAN_ACTIV, "CHAN_ACTIV" },
- { RSL_MT_CHAN_ACTIV_ACK, "CHAN_ACTIV_ACK" },
- { RSL_MT_CHAN_ACTIV_NACK, "CHAN_ACTIV_NACK" },
- { RSL_MT_CONN_FAIL, "CONN_FAIL" },
- { RSL_MT_DEACTIVATE_SACCH, "DEACTIVATE_SACCH" },
- { RSL_MT_ENCR_CMD, "ENCR_CMD" },
- { RSL_MT_HANDO_DET, "HANDOVER_DETECT" },
- { RSL_MT_MEAS_RES, "MEAS_RES" },
- { RSL_MT_MODE_MODIFY_REQ, "MODE_MODIFY_REQ" },
- { RSL_MT_MODE_MODIFY_ACK, "MODE_MODIFY_ACK" },
- { RSL_MT_MODE_MODIFY_NACK, "MODE_MODIFY_NACK" },
- { RSL_MT_PHY_CONTEXT_REQ, "PHY_CONTEXT_REQ" },
- { RSL_MT_PHY_CONTEXT_CONF, "PHY_CONTEXT_CONF" },
- { RSL_MT_RF_CHAN_REL, "RF_CHAN_REL" },
- { RSL_MT_MS_POWER_CONTROL, "MS_POWER_CONTROL" },
- { RSL_MT_BS_POWER_CONTROL, "BS_POWER_CONTROL" },
- { RSL_MT_PREPROC_CONFIG, "PREPROC_CONFIG" },
- { RSL_MT_PREPROC_MEAS_RES, "PREPROC_MEAS_RES" },
- { RSL_MT_RF_CHAN_REL_ACK, "RF_CHAN_REL_ACK" },
- { RSL_MT_SACCH_INFO_MODIFY, "SACCH_INFO_MODIFY" },
- { RSL_MT_TALKER_DET, "TALKER_DETECT" },
- { RSL_MT_LISTENER_DET, "LISTENER_DETECT" },
- { RSL_MT_REMOTE_CODEC_CONF_REP, "REM_CODEC_CONF_REP" },
- { RSL_MT_RTD_REP, "RTD_REQ" },
- { RSL_MT_PRE_HANDO_NOTIF, "HANDO_NOTIF" },
- { RSL_MT_MR_CODEC_MOD_REQ, "CODEC_MOD_REQ" },
- { RSL_MT_MR_CODEC_MOD_ACK, "CODEC_MOD_ACK" },
- { RSL_MT_MR_CODEC_MOD_NACK, "CODEC_MOD_NACK" },
- { RSL_MT_MR_CODEC_MOD_PER, "CODEC_MODE_PER" },
- { RSL_MT_TFO_REP, "TFO_REP" },
- { RSL_MT_TFO_MOD_REQ, "TFO_MOD_REQ" },
- { RSL_MT_LOCATION_INFO, "LOCATION_INFO" },
- { 0, NULL }
-};
-
-
-const char *rsl_msg_name(uint8_t msg_type)
-{
- return get_value_string(rsl_msgt_names, msg_type);
-}
-
-static const struct value_string rsl_rlm_cause_strs[] = {
- { RLL_CAUSE_T200_EXPIRED, "Timer T200 expired (N200+1) times" },
- { RLL_CAUSE_REEST_REQ, "Re-establishment request" },
- { RLL_CAUSE_UNSOL_UA_RESP, "Unsolicited UA response" },
- { RLL_CAUSE_UNSOL_DM_RESP, "Unsolicited DM response" },
- { RLL_CAUSE_UNSOL_DM_RESP_MF, "Unsolicited DM response, multiple frame" },
- { RLL_CAUSE_UNSOL_SPRV_RESP, "Unsolicited supervisory response" },
- { RLL_CAUSE_SEQ_ERR, "Sequence Error" },
- { RLL_CAUSE_UFRM_INC_PARAM, "U-Frame with incorrect parameters" },
- { RLL_CAUSE_SFRM_INC_PARAM, "S-Frame with incorrect parameters" },
- { RLL_CAUSE_IFRM_INC_MBITS, "I-Frame with incorrect use of M bit" },
- { RLL_CAUSE_IFRM_INC_LEN, "I-Frame with incorrect length" },
- { RLL_CAUSE_FRM_UNIMPL, "Fraeme not implemented" },
- { RLL_CAUSE_SABM_MF, "SABM command, multiple frame established state" },
- { RLL_CAUSE_SABM_INFO_NOTALL, "SABM frame with information not allowed in this state" },
- { 0, NULL },
-};
-
-const char *rsl_rlm_cause_name(uint8_t err)
-{
- return get_value_string(rsl_rlm_cause_strs, err);
-}
-
-/* Section 3.3.2.3 TS 05.02. I think this looks like a table */
-int rsl_ccch_conf_to_bs_cc_chans(int ccch_conf)
-{
- switch (ccch_conf) {
- case RSL_BCCH_CCCH_CONF_1_NC:
- return 1;
- case RSL_BCCH_CCCH_CONF_1_C:
- return 1;
- case RSL_BCCH_CCCH_CONF_2_NC:
- return 2;
- case RSL_BCCH_CCCH_CONF_3_NC:
- return 3;
- case RSL_BCCH_CCCH_CONF_4_NC:
- return 4;
- default:
- return -1;
- }
-}
-
-/* Section 3.3.2.3 TS 05.02 */
-int rsl_ccch_conf_to_bs_ccch_sdcch_comb(int ccch_conf)
-{
- switch (ccch_conf) {
- case RSL_BCCH_CCCH_CONF_1_NC:
- return 0;
- case RSL_BCCH_CCCH_CONF_1_C:
- return 1;
- case RSL_BCCH_CCCH_CONF_2_NC:
- return 0;
- case RSL_BCCH_CCCH_CONF_3_NC:
- return 0;
- case RSL_BCCH_CCCH_CONF_4_NC:
- return 0;
- default:
- return -1;
- }
-}
-
-/* Push a RSL RLL header */
-void rsl_rll_push_hdr(struct msgb *msg, uint8_t msg_type, uint8_t chan_nr,
- uint8_t link_id, int transparent)
-{
- struct abis_rsl_rll_hdr *rh;
-
- rh = (struct abis_rsl_rll_hdr *) msgb_push(msg, sizeof(*rh));
- rsl_init_rll_hdr(rh, msg_type);
- if (transparent)
- rh->c.msg_discr |= ABIS_RSL_MDISC_TRANSP;
- rh->chan_nr = chan_nr;
- rh->link_id = link_id;
-
- /* set the l2 header pointer */
- msg->l2h = (uint8_t *)rh;
-}
-
-/* Push a RSL RLL header with L3_INFO IE */
-void rsl_rll_push_l3(struct msgb *msg, uint8_t msg_type, uint8_t chan_nr,
- uint8_t link_id, int transparent)
-{
- uint8_t l3_len = msg->tail - (uint8_t *)msgb_l3(msg);
-
- /* construct a RSLms RLL message (DATA INDICATION, UNIT DATA
- * INDICATION) and send it off via RSLms */
-
- /* Push the L3 IE tag and lengh */
- msgb_tv16_push(msg, RSL_IE_L3_INFO, l3_len);
-
- /* Then push the RSL header */
- rsl_rll_push_hdr(msg, msg_type, chan_nr, link_id, transparent);
-}
-
-struct msgb *rsl_rll_simple(uint8_t msg_type, uint8_t chan_nr,
- uint8_t link_id, int transparent)
-{
- struct abis_rsl_rll_hdr *rh;
- struct msgb *msg;
-
- msg = msgb_alloc_headroom(RSL_ALLOC_SIZE+RSL_ALLOC_HEADROOM,
- RSL_ALLOC_HEADROOM, "rsl_rll_simple");
-
- if (!msg)
- return NULL;
-
- /* put the RSL header */
- rh = (struct abis_rsl_rll_hdr *) msgb_put(msg, sizeof(*rh));
- rsl_init_rll_hdr(rh, msg_type);
- if (transparent)
- rh->c.msg_discr |= ABIS_RSL_MDISC_TRANSP;
- rh->chan_nr = chan_nr;
- rh->link_id = link_id;
-
- /* set the l2 header pointer */
- msg->l2h = (uint8_t *)rh;
-
- return msg;
-}
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/gsm/rxlev_stat.c b/Src/osmoconbb/src/shared/libosmocore/src/gsm/rxlev_stat.c
deleted file mode 100644
index d226861..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/gsm/rxlev_stat.c
+++ /dev/null
@@ -1,82 +0,0 @@
-/* Rx Level statistics */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <unistd.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include <stdint.h>
-
-#include <osmocom/core/bitvec.h>
-#include <osmocom/gsm/rxlev_stat.h>
-
-void rxlev_stat_input(struct rxlev_stats *st, uint16_t arfcn, uint8_t rxlev)
-{
- struct bitvec bv;
-
- if (rxlev >= NUM_RXLEVS)
- rxlev = NUM_RXLEVS-1;
-
- bv.data_len = NUM_ARFCNS/8;
- bv.data = st->rxlev_buckets[rxlev];
-
- bitvec_set_bit_pos(&bv, arfcn, ONE);
-}
-
-/* get the next ARFCN that has the specified Rxlev */
-int16_t rxlev_stat_get_next(const struct rxlev_stats *st, uint8_t rxlev, int16_t arfcn)
-{
- struct bitvec bv;
-
- if (rxlev >= NUM_RXLEVS)
- rxlev = NUM_RXLEVS-1;
-
- bv.data_len = NUM_ARFCNS/8;
-
- if (arfcn < 0)
- arfcn = -1;
-
- bv.data = (uint8_t *) st->rxlev_buckets[rxlev];
-
- return bitvec_find_bit_pos(&bv, arfcn+1, ONE);
-}
-
-void rxlev_stat_reset(struct rxlev_stats *st)
-{
- memset(st, 0, sizeof(*st));
-}
-
-void rxlev_stat_dump(const struct rxlev_stats *st)
-{
- int i;
-
- for (i = NUM_RXLEVS-1; i >= 0; i--) {
- int16_t arfcn = -1;
-
- printf("ARFCN with RxLev %u: ", i);
- while ((arfcn = rxlev_stat_get_next(st, i, arfcn)) >= 0) {
- printf("%u ", arfcn);
- }
- printf("\n");
- }
-}
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/gsm/sysinfo.c b/Src/osmoconbb/src/shared/libosmocore/src/gsm/sysinfo.c
deleted file mode 100644
index 1408f6b..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/gsm/sysinfo.c
+++ /dev/null
@@ -1,136 +0,0 @@
-/* GSM 04.08 System Information (SI) encoding and decoding
- * 3GPP TS 04.08 version 7.21.0 Release 1998 / ETSI TS 100 940 V7.21.0 */
-
-/* (C) 2008-2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#include <errno.h>
-#include <string.h>
-#include <stdio.h>
-
-#include <osmocom/core/bitvec.h>
-#include <osmocom/core/utils.h>
-#include <osmocom/gsm/sysinfo.h>
-#include <osmocom/gsm/protocol/gsm_04_08.h>
-#include <osmocom/gsm/protocol/gsm_08_58.h>
-
-/* verify the sizes of the system information type structs */
-
-/* rest octets are not part of the struct */
-osmo_static_assert(sizeof(struct gsm48_system_information_type_header) == 3, _si_header_size);
-osmo_static_assert(sizeof(struct gsm48_rach_control) == 3, _si_rach_control);
-osmo_static_assert(sizeof(struct gsm48_system_information_type_1) == 22, _si1_size);
-osmo_static_assert(sizeof(struct gsm48_system_information_type_2) == 23, _si2_size);
-osmo_static_assert(sizeof(struct gsm48_system_information_type_3) == 19, _si3_size);
-osmo_static_assert(sizeof(struct gsm48_system_information_type_4) == 13, _si4_size);
-
-/* bs11 forgot the l2 len, 0-6 rest octets */
-osmo_static_assert(sizeof(struct gsm48_system_information_type_5) == 18, _si5_size);
-osmo_static_assert(sizeof(struct gsm48_system_information_type_6) == 11, _si6_size);
-
-osmo_static_assert(sizeof(struct gsm48_system_information_type_13) == 3, _si13_size);
-
-static const uint8_t sitype2rsl[_MAX_SYSINFO_TYPE] = {
- [SYSINFO_TYPE_1] = RSL_SYSTEM_INFO_1,
- [SYSINFO_TYPE_2] = RSL_SYSTEM_INFO_2,
- [SYSINFO_TYPE_3] = RSL_SYSTEM_INFO_3,
- [SYSINFO_TYPE_4] = RSL_SYSTEM_INFO_4,
- [SYSINFO_TYPE_5] = RSL_SYSTEM_INFO_5,
- [SYSINFO_TYPE_6] = RSL_SYSTEM_INFO_6,
- [SYSINFO_TYPE_7] = RSL_SYSTEM_INFO_7,
- [SYSINFO_TYPE_8] = RSL_SYSTEM_INFO_8,
- [SYSINFO_TYPE_9] = RSL_SYSTEM_INFO_9,
- [SYSINFO_TYPE_10] = RSL_SYSTEM_INFO_10,
- [SYSINFO_TYPE_13] = RSL_SYSTEM_INFO_13,
- [SYSINFO_TYPE_16] = RSL_SYSTEM_INFO_16,
- [SYSINFO_TYPE_17] = RSL_SYSTEM_INFO_17,
- [SYSINFO_TYPE_18] = RSL_SYSTEM_INFO_18,
- [SYSINFO_TYPE_19] = RSL_SYSTEM_INFO_19,
- [SYSINFO_TYPE_20] = RSL_SYSTEM_INFO_20,
- [SYSINFO_TYPE_2bis] = RSL_SYSTEM_INFO_2bis,
- [SYSINFO_TYPE_2ter] = RSL_SYSTEM_INFO_2ter,
- [SYSINFO_TYPE_2quater] = RSL_SYSTEM_INFO_2quater,
- [SYSINFO_TYPE_5bis] = RSL_SYSTEM_INFO_5bis,
- [SYSINFO_TYPE_5ter] = RSL_SYSTEM_INFO_5ter,
- [SYSINFO_TYPE_EMO] = RSL_EXT_MEAS_ORDER,
- [SYSINFO_TYPE_MEAS_INFO]= RSL_MEAS_INFO,
-};
-
-static const uint8_t rsl2sitype[256] = {
- [RSL_SYSTEM_INFO_1] = SYSINFO_TYPE_1,
- [RSL_SYSTEM_INFO_2] = SYSINFO_TYPE_2,
- [RSL_SYSTEM_INFO_3] = SYSINFO_TYPE_3,
- [RSL_SYSTEM_INFO_4] = SYSINFO_TYPE_4,
- [RSL_SYSTEM_INFO_5] = SYSINFO_TYPE_5,
- [RSL_SYSTEM_INFO_6] = SYSINFO_TYPE_6,
- [RSL_SYSTEM_INFO_7] = SYSINFO_TYPE_7,
- [RSL_SYSTEM_INFO_8] = SYSINFO_TYPE_8,
- [RSL_SYSTEM_INFO_9] = SYSINFO_TYPE_9,
- [RSL_SYSTEM_INFO_10] = SYSINFO_TYPE_10,
- [RSL_SYSTEM_INFO_13] = SYSINFO_TYPE_13,
- [RSL_SYSTEM_INFO_16] = SYSINFO_TYPE_16,
- [RSL_SYSTEM_INFO_17] = SYSINFO_TYPE_17,
- [RSL_SYSTEM_INFO_18] = SYSINFO_TYPE_18,
- [RSL_SYSTEM_INFO_19] = SYSINFO_TYPE_19,
- [RSL_SYSTEM_INFO_20] = SYSINFO_TYPE_20,
- [RSL_SYSTEM_INFO_2bis] = SYSINFO_TYPE_2bis,
- [RSL_SYSTEM_INFO_2ter] = SYSINFO_TYPE_2ter,
- [RSL_SYSTEM_INFO_2quater] = SYSINFO_TYPE_2quater,
- [RSL_SYSTEM_INFO_5bis] = SYSINFO_TYPE_5bis,
- [RSL_SYSTEM_INFO_5ter] = SYSINFO_TYPE_5ter,
- [RSL_EXT_MEAS_ORDER] = SYSINFO_TYPE_EMO,
- [RSL_MEAS_INFO] = SYSINFO_TYPE_MEAS_INFO,
-};
-
-const struct value_string osmo_sitype_strs[_MAX_SYSINFO_TYPE] = {
- { SYSINFO_TYPE_1, "1" },
- { SYSINFO_TYPE_2, "2" },
- { SYSINFO_TYPE_3, "3" },
- { SYSINFO_TYPE_4, "4" },
- { SYSINFO_TYPE_5, "5" },
- { SYSINFO_TYPE_6, "6" },
- { SYSINFO_TYPE_7, "7" },
- { SYSINFO_TYPE_8, "8" },
- { SYSINFO_TYPE_9, "9" },
- { SYSINFO_TYPE_10, "10" },
- { SYSINFO_TYPE_13, "13" },
- { SYSINFO_TYPE_16, "16" },
- { SYSINFO_TYPE_17, "17" },
- { SYSINFO_TYPE_18, "18" },
- { SYSINFO_TYPE_19, "19" },
- { SYSINFO_TYPE_20, "20" },
- { SYSINFO_TYPE_2bis, "2bis" },
- { SYSINFO_TYPE_2ter, "2ter" },
- { SYSINFO_TYPE_2quater, "2quater" },
- { SYSINFO_TYPE_5bis, "5bis" },
- { SYSINFO_TYPE_5ter, "5ter" },
- { SYSINFO_TYPE_EMO, "EMO" },
- { SYSINFO_TYPE_MEAS_INFO, "MI" },
- { 0, NULL }
-};
-
-uint8_t osmo_sitype2rsl(enum osmo_sysinfo_type si_type)
-{
- return sitype2rsl[si_type];
-}
-
-enum osmo_sysinfo_type osmo_rsl2sitype(uint8_t rsl_si)
-{
- return rsl2sitype[rsl_si];
-}
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/gsm/tlv_parser.c b/Src/osmoconbb/src/shared/libosmocore/src/gsm/tlv_parser.c
deleted file mode 100644
index 1e4c6b5..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/gsm/tlv_parser.c
+++ /dev/null
@@ -1,179 +0,0 @@
-#include <stdio.h>
-#include <stdint.h>
-#include <osmocom/core/utils.h>
-#include <osmocom/gsm/tlv.h>
-
-struct tlv_definition tvlv_att_def;
-
-int tlv_dump(struct tlv_parsed *dec)
-{
- int i;
-
- for (i = 0; i <= 0xff; i++) {
- if (!dec->lv[i].val)
- continue;
- printf("T=%02x L=%d\n", i, dec->lv[i].len);
- }
- return 0;
-}
-
-/* o_tag: output: tag found
- * o_len: output: length of the data
- * o_val: output: pointer to the data
- * def: input: a structure defining the valid TLV tags / configurations
- * buf: input: the input data buffer to be parsed
- * buf_len: input: the length of the input data buffer
- *
- * Also, returns the number of bytes consumed by the TLV entry
- */
-int tlv_parse_one(uint8_t *o_tag, uint16_t *o_len, const uint8_t **o_val,
- const struct tlv_definition *def,
- const uint8_t *buf, int buf_len)
-{
- uint8_t tag;
- int len;
-
- tag = *buf;
- *o_tag = tag;
-
- /* single octet TV IE */
- if (def->def[tag & 0xf0].type == TLV_TYPE_SINGLE_TV) {
- *o_tag = tag & 0xf0;
- *o_val = buf;
- *o_len = 1;
- return 1;
- }
-
- /* FIXME: use tables for knwon IEI */
- switch (def->def[tag].type) {
- case TLV_TYPE_T:
- /* GSM TS 04.07 11.2.4: Type 1 TV or Type 2 T */
- *o_val = buf;
- *o_len = 0;
- len = 1;
- break;
- case TLV_TYPE_TV:
- *o_val = buf+1;
- *o_len = 1;
- len = 2;
- break;
- case TLV_TYPE_FIXED:
- *o_val = buf+1;
- *o_len = def->def[tag].fixed_len;
- len = def->def[tag].fixed_len + 1;
- break;
- case TLV_TYPE_TLV:
- /* GSM TS 04.07 11.2.4: Type 4 TLV */
- if (buf + 1 > buf + buf_len)
- return -1;
- *o_val = buf+2;
- *o_len = *(buf+1);
- len = *o_len + 2;
- if (len > buf_len)
- return -2;
- break;
- case TLV_TYPE_TvLV:
- if (*(buf+1) & 0x80) {
- /* like TLV, but without highest bit of len */
- if (buf + 1 > buf + buf_len)
- return -1;
- *o_val = buf+2;
- *o_len = *(buf+1) & 0x7f;
- len = *o_len + 2;
- if (len > buf_len)
- return -2;
- break;
- }
- /* like TL16V, fallthrough */
- case TLV_TYPE_TL16V:
- if (2 > buf_len)
- return -1;
- *o_val = buf+3;
- *o_len = *(buf+1) << 8 | *(buf+2);
- len = *o_len + 3;
- if (len > buf_len)
- return -2;
- break;
- default:
- return -3;
- }
-
- return len;
-}
-
-/* dec: output: a caller-allocated pointer to a struct tlv_parsed,
- * def: input: a structure defining the valid TLV tags / configurations
- * buf: input: the input data buffer to be parsed
- * buf_len: input: the length of the input data buffer
- * lv_tag: input: an initial LV tag at the start of the buffer
- * lv_tag2: input: a second initial LV tag following lv_tag
- */
-int tlv_parse(struct tlv_parsed *dec, const struct tlv_definition *def,
- const uint8_t *buf, int buf_len, uint8_t lv_tag,
- uint8_t lv_tag2)
-{
- int ofs = 0, num_parsed = 0;
- uint16_t len;
-
- memset(dec, 0, sizeof(*dec));
-
- if (lv_tag) {
- if (ofs > buf_len)
- return -1;
- dec->lv[lv_tag].val = &buf[ofs+1];
- dec->lv[lv_tag].len = buf[ofs];
- len = dec->lv[lv_tag].len + 1;
- if (ofs + len > buf_len)
- return -2;
- num_parsed++;
- ofs += len;
- }
- if (lv_tag2) {
- if (ofs > buf_len)
- return -1;
- dec->lv[lv_tag2].val = &buf[ofs+1];
- dec->lv[lv_tag2].len = buf[ofs];
- len = dec->lv[lv_tag2].len + 1;
- if (ofs + len > buf_len)
- return -2;
- num_parsed++;
- ofs += len;
- }
-
- while (ofs < buf_len) {
- int rv;
- uint8_t tag;
- const uint8_t *val;
-
- rv = tlv_parse_one(&tag, &len, &val, def,
- &buf[ofs], buf_len-ofs);
- if (rv < 0)
- return rv;
- dec->lv[tag].val = val;
- dec->lv[tag].len = len;
- ofs += rv;
- num_parsed++;
- }
- //tlv_dump(dec);
- return num_parsed;
-}
-
-/* take a master (src) tlvdev and fill up all empty slots in 'dst' */
-void tlv_def_patch(struct tlv_definition *dst, const struct tlv_definition *src)
-{
- int i;
-
- for (i = 0; i < ARRAY_SIZE(dst->def); i++) {
- if (src->def[i].type == TLV_TYPE_NONE)
- continue;
- if (dst->def[i].type == TLV_TYPE_NONE)
- dst->def[i] = src->def[i];
- }
-}
-
-static __attribute__((constructor)) void on_dso_load_tlv(void)
-{
- int i;
- for (i = 0; i < ARRAY_SIZE(tvlv_att_def.def); i++)
- tvlv_att_def.def[i].type = TLV_TYPE_TvLV;
-}
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/gsmtap_util.c b/Src/osmoconbb/src/shared/libosmocore/src/gsmtap_util.c
deleted file mode 100644
index c8c26c6..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/gsmtap_util.c
+++ /dev/null
@@ -1,280 +0,0 @@
-/* GSMTAP support code in libmsomcore */
-/*
- * (C) 2010-2011 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include "../config.h"
-
-#include <osmocom/core/gsmtap_util.h>
-#include <osmocom/core/logging.h>
-#include <osmocom/core/gsmtap.h>
-#include <osmocom/core/msgb.h>
-#include <osmocom/core/talloc.h>
-#include <osmocom/core/select.h>
-#include <osmocom/core/socket.h>
-#include <osmocom/gsm/protocol/gsm_04_08.h>
-#include <osmocom/gsm/rsl.h>
-
-#include <sys/types.h>
-
-#include <arpa/inet.h>
-
-#include <stdio.h>
-#include <unistd.h>
-#include <stdint.h>
-#include <string.h>
-#include <errno.h>
-
-uint8_t chantype_rsl2gsmtap(uint8_t rsl_chantype, uint8_t link_id)
-{
- uint8_t ret = GSMTAP_CHANNEL_UNKNOWN;
-
- switch (rsl_chantype) {
- case RSL_CHAN_Bm_ACCHs:
- ret = GSMTAP_CHANNEL_TCH_F;
- break;
- case RSL_CHAN_Lm_ACCHs:
- ret = GSMTAP_CHANNEL_TCH_H;
- break;
- case RSL_CHAN_SDCCH4_ACCH:
- ret = GSMTAP_CHANNEL_SDCCH4;
- break;
- case RSL_CHAN_SDCCH8_ACCH:
- ret = GSMTAP_CHANNEL_SDCCH8;
- break;
- case RSL_CHAN_BCCH:
- ret = GSMTAP_CHANNEL_BCCH;
- break;
- case RSL_CHAN_RACH:
- ret = GSMTAP_CHANNEL_RACH;
- break;
- case RSL_CHAN_PCH_AGCH:
- /* it could also be AGCH... */
- ret = GSMTAP_CHANNEL_PCH;
- break;
- }
-
- if (link_id & 0x40)
- ret |= GSMTAP_CHANNEL_ACCH;
-
- return ret;
-}
-
-/* receive a message from L1/L2 and put it in GSMTAP */
-struct msgb *gsmtap_makemsg(uint16_t arfcn, uint8_t ts, uint8_t chan_type,
- uint8_t ss, uint32_t fn, int8_t signal_dbm,
- uint8_t snr, const uint8_t *data, unsigned int len)
-{
- struct msgb *msg;
- struct gsmtap_hdr *gh;
- uint8_t *dst;
-
- msg = msgb_alloc(sizeof(*gh) + len, "gsmtap_tx");
- if (!msg)
- return NULL;
-
- gh = (struct gsmtap_hdr *) msgb_put(msg, sizeof(*gh));
-
- gh->version = GSMTAP_VERSION;
- gh->hdr_len = sizeof(*gh)/4;
- gh->type = GSMTAP_TYPE_UM;
- gh->timeslot = ts;
- gh->sub_slot = ss;
- gh->arfcn = htons(arfcn);
- gh->snr_db = snr;
- gh->signal_dbm = signal_dbm;
- gh->frame_number = htonl(fn);
- gh->sub_type = chan_type;
- gh->antenna_nr = 0;
-
- dst = msgb_put(msg, len);
- memcpy(dst, data, len);
-
- return msg;
-}
-
-#ifdef HAVE_SYS_SOCKET_H
-
-#include <sys/socket.h>
-#include <netinet/in.h>
-
-/* Open a GSMTAP source (sending) socket, conncet it to host/port and
- * return resulting fd */
-int gsmtap_source_init_fd(const char *host, uint16_t port)
-{
- if (port == 0)
- port = GSMTAP_UDP_PORT;
- if (host == NULL)
- host = "localhost";
-
- return osmo_sock_init(AF_UNSPEC, SOCK_DGRAM, IPPROTO_UDP, host, port,
- OSMO_SOCK_F_CONNECT);
-}
-
-int gsmtap_source_add_sink_fd(int gsmtap_fd)
-{
- struct sockaddr_storage ss;
- socklen_t ss_len = sizeof(ss);
- int rc;
-
- rc = getpeername(gsmtap_fd, (struct sockaddr *)&ss, &ss_len);
- if (rc < 0)
- return rc;
-
- if (osmo_sockaddr_is_local((struct sockaddr *)&ss, ss_len) == 1) {
- rc = osmo_sock_init_sa((struct sockaddr *)&ss, SOCK_DGRAM,
- IPPROTO_UDP, OSMO_SOCK_F_BIND);
- if (rc >= 0)
- return rc;
- }
-
- return -ENODEV;
-}
-
-int gsmtap_sendmsg(struct gsmtap_inst *gti, struct msgb *msg)
-{
- if (!gti)
- return -ENODEV;
-
- if (gti->ofd_wq_mode)
- return osmo_wqueue_enqueue(&gti->wq, msg);
- else {
- /* try immediate send and return error if any */
- int rc;
-
- rc = write(gsmtap_inst_fd(gti), msg->data, msg->len);
- if (rc <= 0) {
- return rc;
- } else if (rc >= msg->len) {
- msgb_free(msg);
- return 0;
- } else {
- /* short write */
- return -EIO;
- }
- }
-}
-
-/* receive a message from L1/L2 and put it in GSMTAP */
-int gsmtap_send(struct gsmtap_inst *gti, uint16_t arfcn, uint8_t ts,
- uint8_t chan_type, uint8_t ss, uint32_t fn,
- int8_t signal_dbm, uint8_t snr, const uint8_t *data,
- unsigned int len)
-{
- struct msgb *msg;
-
- if (!gti)
- return -ENODEV;
-
- msg = gsmtap_makemsg(arfcn, ts, chan_type, ss, fn, signal_dbm,
- snr, data, len);
- if (!msg)
- return -ENOMEM;
-
- return gsmtap_sendmsg(gti, msg);
-}
-
-/* Callback from select layer if we can write to the socket */
-static int gsmtap_wq_w_cb(struct osmo_fd *ofd, struct msgb *msg)
-{
- int rc;
-
- rc = write(ofd->fd, msg->data, msg->len);
- if (rc < 0) {
- perror("writing msgb to gsmtap fd");
- return rc;
- }
- if (rc != msg->len) {
- perror("short write to gsmtap fd");
- return -EIO;
- }
-
- return 0;
-}
-
-/* Callback from select layer if we can read from the sink socket */
-static int gsmtap_sink_fd_cb(struct osmo_fd *fd, unsigned int flags)
-{
- int rc;
- uint8_t buf[4096];
-
- if (!(flags & BSC_FD_READ))
- return 0;
-
- rc = read(fd->fd, buf, sizeof(buf));
- if (rc < 0) {
- perror("reading from gsmtap sink fd");
- return rc;
- }
- /* simply discard any data arriving on the socket */
-
- return 0;
-}
-
-/* Add a local sink to an existing GSMTAP source instance */
-int gsmtap_source_add_sink(struct gsmtap_inst *gti)
-{
- int fd;
-
- fd = gsmtap_source_add_sink_fd(gsmtap_inst_fd(gti));
- if (fd < 0)
- return fd;
-
- if (gti->ofd_wq_mode) {
- struct osmo_fd *sink_ofd;
-
- sink_ofd = &gti->sink_ofd;
- sink_ofd->fd = fd;
- sink_ofd->when = BSC_FD_READ;
- sink_ofd->cb = gsmtap_sink_fd_cb;
-
- osmo_fd_register(sink_ofd);
- }
-
- return fd;
-}
-
-/* like gsmtap_init2() but integrated with libosmocore select.c */
-struct gsmtap_inst *gsmtap_source_init(const char *host, uint16_t port,
- int ofd_wq_mode)
-{
- struct gsmtap_inst *gti;
- int fd;
-
- fd = gsmtap_source_init_fd(host, port);
- if (fd < 0)
- return NULL;
-
- gti = talloc_zero(NULL, struct gsmtap_inst);
- gti->ofd_wq_mode = ofd_wq_mode;
- gti->wq.bfd.fd = fd;
- gti->sink_ofd.fd = -1;
-
- if (ofd_wq_mode) {
- osmo_wqueue_init(&gti->wq, 64);
- gti->wq.write_cb = &gsmtap_wq_w_cb;
-
- osmo_fd_register(&gti->wq.bfd);
- }
-
- return gti;
-}
-
-#endif /* HAVE_SYS_SOCKET_H */
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/logging.c b/Src/osmoconbb/src/shared/libosmocore/src/logging.c
deleted file mode 100644
index 11d63ac..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/logging.c
+++ /dev/null
@@ -1,671 +0,0 @@
-/* Debugging/Logging support code */
-
-/* (C) 2008-2010 by Harald Welte <laforge@gnumonks.org>
- * (C) 2008 by Holger Hans Peter Freyther <zecke@selfish.org>
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include "../config.h"
-
-#include <stdarg.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-
-#ifdef HAVE_STRINGS_H
-#include <strings.h>
-#endif
-#include <time.h>
-#include <errno.h>
-
-#include <osmocom/core/talloc.h>
-#include <osmocom/core/utils.h>
-#include <osmocom/core/logging.h>
-
-#include <osmocom/vty/logging.h> /* for LOGGING_STR. */
-
-struct log_info *osmo_log_info;
-
-static struct log_context log_context;
-static void *tall_log_ctx = NULL;
-LLIST_HEAD(osmo_log_target_list);
-
-#define LOGLEVEL_DEFS 6 /* Number of loglevels.*/
-
-static const struct value_string loglevel_strs[LOGLEVEL_DEFS+1] = {
- { 0, "EVERYTHING" },
- { LOGL_DEBUG, "DEBUG" },
- { LOGL_INFO, "INFO" },
- { LOGL_NOTICE, "NOTICE" },
- { LOGL_ERROR, "ERROR" },
- { LOGL_FATAL, "FATAL" },
- { 0, NULL },
-};
-
-#define INT2IDX(x) (-1*(x)-1)
-static const struct log_info_cat internal_cat[OSMO_NUM_DLIB] = {
- [INT2IDX(DLGLOBAL)] = { /* -1 becomes 0 */
- .name = "DLGLOBAL",
- .description = "Library-internal global log family",
- .loglevel = LOGL_NOTICE,
- .enabled = 1,
- },
- [INT2IDX(DLLAPDM)] = { /* -2 becomes 1 */
- .name = "DLLAPDM",
- .description = "LAPDm in libosmogsm",
- .loglevel = LOGL_NOTICE,
- .enabled = 1,
- },
- [INT2IDX(DLINP)] = {
- .name = "DLINP",
- .description = "A-bis Intput Subsystem",
- .loglevel = LOGL_NOTICE,
- .enabled = 1,
- },
- [INT2IDX(DLMUX)] = {
- .name = "DLMUX",
- .description = "A-bis B-Subchannel TRAU Frame Multiplex",
- .loglevel = LOGL_NOTICE,
- .enabled = 1,
- },
- [INT2IDX(DLMI)] = {
- .name = "DLMI",
- .description = "A-bis Input Driver for Signalling",
- .enabled = 0, .loglevel = LOGL_NOTICE,
- },
- [INT2IDX(DLMIB)] = {
- .name = "DLMIB",
- .description = "A-bis Input Driver for B-Channels (voice)",
- .enabled = 0, .loglevel = LOGL_NOTICE,
- },
-};
-
-/* You have to keep this in sync with the structure loglevel_strs. */
-const char *loglevel_descriptions[LOGLEVEL_DEFS+1] = {
- "Log simply everything",
- "Log debug messages and higher levels",
- "Log informational messages and higher levels",
- "Log noticable messages and higher levels",
- "Log error messages and higher levels",
- "Log only fatal messages",
- NULL,
-};
-
-/* special magic for negative (library-internal) log subsystem numbers */
-static int subsys_lib2index(int subsys)
-{
- return (subsys * -1) + (osmo_log_info->num_cat_user-1);
-}
-
-int log_parse_level(const char *lvl)
-{
- return get_string_value(loglevel_strs, lvl);
-}
-
-const char *log_level_str(unsigned int lvl)
-{
- return get_value_string(loglevel_strs, lvl);
-}
-
-int log_parse_category(const char *category)
-{
- int i;
-
- for (i = 0; i < osmo_log_info->num_cat; ++i) {
- if (osmo_log_info->cat[i].name == NULL)
- continue;
- if (!strcasecmp(osmo_log_info->cat[i].name+1, category))
- return i;
- }
-
- return -EINVAL;
-}
-
-/*
- * Parse the category mask.
- * The format can be this: category1:category2:category3
- * or category1,2:category2,3:...
- */
-void log_parse_category_mask(struct log_target* target, const char *_mask)
-{
- int i = 0;
- char *mask = strdup(_mask);
- char *category_token = NULL;
-
- /* Disable everything to enable it afterwards */
- for (i = 0; i < osmo_log_info->num_cat; ++i)
- target->categories[i].enabled = 0;
-
- category_token = strtok(mask, ":");
- do {
- for (i = 0; i < osmo_log_info->num_cat; ++i) {
- char* colon = strstr(category_token, ",");
- int length = strlen(category_token);
-
- if (!osmo_log_info->cat[i].name)
- continue;
-
- if (colon)
- length = colon - category_token;
-
- if (strncasecmp(osmo_log_info->cat[i].name,
- category_token, length) == 0) {
- int level = 0;
-
- if (colon)
- level = atoi(colon+1);
-
- target->categories[i].enabled = 1;
- target->categories[i].loglevel = level;
- }
- }
- } while ((category_token = strtok(NULL, ":")));
-
- free(mask);
-}
-
-static const char* color(int subsys)
-{
- if (subsys < osmo_log_info->num_cat)
- return osmo_log_info->cat[subsys].color;
-
- return NULL;
-}
-
-static void _output(struct log_target *target, unsigned int subsys,
- unsigned int level, char *file, int line, int cont,
- const char *format, va_list ap)
-{
- char buf[4096];
- int ret, len = 0, offset = 0, rem = sizeof(buf);
-
- /* are we using color */
- if (target->use_color) {
- const char *c = color(subsys);
- if (c) {
- ret = snprintf(buf + offset, rem, "%s", color(subsys));
- if (ret < 0)
- goto err;
- OSMO_SNPRINTF_RET(ret, rem, offset, len);
- }
- }
- if (!cont) {
- if (target->print_timestamp) {
- char *timestr;
- time_t tm;
- tm = time(NULL);
- timestr = ctime(&tm);
- timestr[strlen(timestr)-1] = '\0';
- ret = snprintf(buf + offset, rem, "%s ", timestr);
- if (ret < 0)
- goto err;
- OSMO_SNPRINTF_RET(ret, rem, offset, len);
- }
- ret = snprintf(buf + offset, rem, "<%4.4x> %s:%d ",
- subsys, file, line);
- if (ret < 0)
- goto err;
- OSMO_SNPRINTF_RET(ret, rem, offset, len);
- }
- ret = vsnprintf(buf + offset, rem, format, ap);
- if (ret < 0)
- goto err;
- OSMO_SNPRINTF_RET(ret, rem, offset, len);
-
- ret = snprintf(buf + offset, rem, "%s",
- target->use_color ? "\033[0;m" : "");
- if (ret < 0)
- goto err;
- OSMO_SNPRINTF_RET(ret, rem, offset, len);
-err:
- buf[sizeof(buf)-1] = '\0';
- target->output(target, level, buf);
-}
-
-static void _logp(int subsys, int level, char *file, int line,
- int cont, const char *format, va_list ap)
-{
- struct log_target *tar;
-
- if (subsys < 0)
- subsys = subsys_lib2index(subsys);
-
- if (subsys > osmo_log_info->num_cat)
- subsys = DLGLOBAL;
-
- llist_for_each_entry(tar, &osmo_log_target_list, entry) {
- struct log_category *category;
- int output = 0;
- va_list bp;
-
- category = &tar->categories[subsys];
- /* subsystem is not supposed to be logged */
- if (!category->enabled)
- continue;
-
- /* Check the global log level */
- if (tar->loglevel != 0 && level < tar->loglevel)
- continue;
-
- /* Check the category log level */
- if (tar->loglevel == 0 && category->loglevel != 0 &&
- level < category->loglevel)
- continue;
-
- /* Apply filters here... if that becomes messy we will
- * need to put filters in a list and each filter will
- * say stop, continue, output */
- if ((tar->filter_map & LOG_FILTER_ALL) != 0)
- output = 1;
- else if (osmo_log_info->filter_fn)
- output = osmo_log_info->filter_fn(&log_context,
- tar);
- if (!output)
- continue;
-
- /* According to the manpage, vsnprintf leaves the value of ap
- * in undefined state. Since _output uses vsnprintf and it may
- * be called several times, we have to pass a copy of ap. */
- va_copy(bp, ap);
- _output(tar, subsys, level, file, line, cont, format, bp);
- va_end(bp);
- }
-}
-
-void logp(int subsys, char *file, int line, int cont,
- const char *format, ...)
-{
- va_list ap;
-
- va_start(ap, format);
- _logp(subsys, LOGL_DEBUG, file, line, cont, format, ap);
- va_end(ap);
-}
-
-void logp2(int subsys, unsigned int level, char *file, int line, int cont, const char *format, ...)
-{
- va_list ap;
-
- va_start(ap, format);
- _logp(subsys, level, file, line, cont, format, ap);
- va_end(ap);
-}
-
-void log_add_target(struct log_target *target)
-{
- llist_add_tail(&target->entry, &osmo_log_target_list);
-}
-
-void log_del_target(struct log_target *target)
-{
- llist_del(&target->entry);
-}
-
-void log_reset_context(void)
-{
- memset(&log_context, 0, sizeof(log_context));
-}
-
-int log_set_context(uint8_t ctx_nr, void *value)
-{
- if (ctx_nr > LOG_MAX_CTX)
- return -EINVAL;
-
- log_context.ctx[ctx_nr] = value;
-
- return 0;
-}
-
-void log_set_all_filter(struct log_target *target, int all)
-{
- if (all)
- target->filter_map |= LOG_FILTER_ALL;
- else
- target->filter_map &= ~LOG_FILTER_ALL;
-}
-
-void log_set_use_color(struct log_target *target, int use_color)
-{
- target->use_color = use_color;
-}
-
-void log_set_print_timestamp(struct log_target *target, int print_timestamp)
-{
- target->print_timestamp = print_timestamp;
-}
-
-void log_set_log_level(struct log_target *target, int log_level)
-{
- target->loglevel = log_level;
-}
-
-void log_set_category_filter(struct log_target *target, int category,
- int enable, int level)
-{
- if (category >= osmo_log_info->num_cat)
- return;
- target->categories[category].enabled = !!enable;
- target->categories[category].loglevel = level;
-}
-
-static void _file_output(struct log_target *target, unsigned int level,
- const char *log)
-{
- fprintf(target->tgt_file.out, "%s", log);
- fflush(target->tgt_file.out);
-}
-
-struct log_target *log_target_create(void)
-{
- struct log_target *target;
- unsigned int i;
-
- target = talloc_zero(tall_log_ctx, struct log_target);
- if (!target)
- return NULL;
-
- target->categories = talloc_zero_array(target,
- struct log_category,
- osmo_log_info->num_cat);
- if (!target->categories) {
- talloc_free(target);
- return NULL;
- }
-
- INIT_LLIST_HEAD(&target->entry);
-
- /* initialize the per-category enabled/loglevel from defaults */
- for (i = 0; i < osmo_log_info->num_cat; i++) {
- struct log_category *cat = &target->categories[i];
- cat->enabled = osmo_log_info->cat[i].enabled;
- cat->loglevel = osmo_log_info->cat[i].loglevel;
- }
-
- /* global settings */
- target->use_color = 1;
- target->print_timestamp = 0;
-
- /* global log level */
- target->loglevel = 0;
- return target;
-}
-
-struct log_target *log_target_create_stderr(void)
-{
-/* since C89/C99 says stderr is a macro, we can safely do this! */
-#ifdef stderr
- struct log_target *target;
-
- target = log_target_create();
- if (!target)
- return NULL;
-
- target->type = LOG_TGT_TYPE_STDERR;
- target->tgt_file.out = stderr;
- target->output = _file_output;
- return target;
-#else
- return NULL;
-#endif /* stderr */
-}
-
-struct log_target *log_target_create_file(const char *fname)
-{
- struct log_target *target;
-
- target = log_target_create();
- if (!target)
- return NULL;
-
- target->type = LOG_TGT_TYPE_FILE;
- target->tgt_file.out = fopen(fname, "a");
- if (!target->tgt_file.out)
- return NULL;
-
- target->output = _file_output;
-
- target->tgt_file.fname = talloc_strdup(target, fname);
-
- return target;
-}
-
-struct log_target *log_target_find(int type, const char *fname)
-{
- struct log_target *tgt;
-
- llist_for_each_entry(tgt, &osmo_log_target_list, entry) {
- if (tgt->type != type)
- continue;
- if (tgt->type == LOG_TGT_TYPE_FILE) {
- if (!strcmp(fname, tgt->tgt_file.fname))
- return tgt;
- } else
- return tgt;
- }
- return NULL;
-}
-
-void log_target_destroy(struct log_target *target)
-{
-
- /* just in case, to make sure we don't have any references */
- log_del_target(target);
-
- if (target->output == &_file_output) {
-/* since C89/C99 says stderr is a macro, we can safely do this! */
-#ifdef stderr
- /* don't close stderr */
- if (target->tgt_file.out != stderr)
-#endif
- {
- fclose(target->tgt_file.out);
- target->tgt_file.out = NULL;
- }
- }
-
- talloc_free(target);
-}
-
-/* close and re-open a log file (for log file rotation) */
-int log_target_file_reopen(struct log_target *target)
-{
- fclose(target->tgt_file.out);
-
- target->tgt_file.out = fopen(target->tgt_file.fname, "a");
- if (!target->tgt_file.out)
- return -errno;
-
- /* we assume target->output already to be set */
-
- return 0;
-}
-
-/* This generates the logging command string for VTY. */
-const char *log_vty_command_string(const struct log_info *unused_info)
-{
- struct log_info *info = osmo_log_info;
- int len = 0, offset = 0, ret, i, rem;
- int size = strlen("logging level () ()") + 1;
- char *str;
-
- for (i = 0; i < info->num_cat; i++) {
- if (info->cat[i].name == NULL)
- continue;
- size += strlen(info->cat[i].name) + 1;
- }
-
- for (i = 0; i < LOGLEVEL_DEFS; i++)
- size += strlen(loglevel_strs[i].str) + 1;
-
- rem = size;
- str = talloc_zero_size(tall_log_ctx, size);
- if (!str)
- return NULL;
-
- ret = snprintf(str + offset, rem, "logging level (all|");
- if (ret < 0)
- goto err;
- OSMO_SNPRINTF_RET(ret, rem, offset, len);
-
- for (i = 0; i < info->num_cat; i++) {
- if (info->cat[i].name) {
- int j, name_len = strlen(info->cat[i].name)+1;
- char name[name_len];
-
- for (j = 0; j < name_len; j++)
- name[j] = tolower(info->cat[i].name[j]);
-
- name[name_len-1] = '\0';
- ret = snprintf(str + offset, rem, "%s|", name+1);
- if (ret < 0)
- goto err;
- OSMO_SNPRINTF_RET(ret, rem, offset, len);
- }
- }
- offset--; /* to remove the trailing | */
- rem++;
-
- ret = snprintf(str + offset, rem, ") (");
- if (ret < 0)
- goto err;
- OSMO_SNPRINTF_RET(ret, rem, offset, len);
-
- for (i = 0; i < LOGLEVEL_DEFS; i++) {
- int j, loglevel_str_len = strlen(loglevel_strs[i].str)+1;
- char loglevel_str[loglevel_str_len];
-
- for (j = 0; j < loglevel_str_len; j++)
- loglevel_str[j] = tolower(loglevel_strs[i].str[j]);
-
- loglevel_str[loglevel_str_len-1] = '\0';
- ret = snprintf(str + offset, rem, "%s|", loglevel_str);
- if (ret < 0)
- goto err;
- OSMO_SNPRINTF_RET(ret, rem, offset, len);
- }
- offset--; /* to remove the trailing | */
- rem++;
-
- ret = snprintf(str + offset, rem, ")");
- if (ret < 0)
- goto err;
- OSMO_SNPRINTF_RET(ret, rem, offset, len);
-err:
- str[size-1] = '\0';
- return str;
-}
-
-/* This generates the logging command description for VTY. */
-const char *log_vty_command_description(const struct log_info *unused_info)
-{
- struct log_info *info = osmo_log_info;
- char *str;
- int i, ret, len = 0, offset = 0, rem;
- unsigned int size =
- strlen(LOGGING_STR
- "Set the log level for a specified category\n") + 1;
-
- for (i = 0; i < info->num_cat; i++) {
- if (info->cat[i].name == NULL)
- continue;
- size += strlen(info->cat[i].description) + 1;
- }
-
- for (i = 0; i < LOGLEVEL_DEFS; i++)
- size += strlen(loglevel_descriptions[i]) + 1;
-
- size += strlen("Global setting for all subsystems") + 1;
- rem = size;
- str = talloc_zero_size(tall_log_ctx, size);
- if (!str)
- return NULL;
-
- ret = snprintf(str + offset, rem, LOGGING_STR
- "Set the log level for a specified category\n");
- if (ret < 0)
- goto err;
- OSMO_SNPRINTF_RET(ret, rem, offset, len);
-
- ret = snprintf(str + offset, rem,
- "Global setting for all subsystems\n");
- if (ret < 0)
- goto err;
- OSMO_SNPRINTF_RET(ret, rem, offset, len);
-
- for (i = 0; i < info->num_cat; i++) {
- if (info->cat[i].name == NULL)
- continue;
- ret = snprintf(str + offset, rem, "%s\n",
- info->cat[i].description);
- if (ret < 0)
- goto err;
- OSMO_SNPRINTF_RET(ret, rem, offset, len);
- }
- for (i = 0; i < LOGLEVEL_DEFS; i++) {
- ret = snprintf(str + offset, rem, "%s\n",
- loglevel_descriptions[i]);
- if (ret < 0)
- goto err;
- OSMO_SNPRINTF_RET(ret, rem, offset, len);
- }
-err:
- str[size-1] = '\0';
- return str;
-}
-
-int log_init(const struct log_info *inf, void *ctx)
-{
- int i;
-
- tall_log_ctx = talloc_named_const(ctx, 1, "logging");
- if (!tall_log_ctx)
- return -ENOMEM;
-
- osmo_log_info = talloc_zero(tall_log_ctx, struct log_info);
- if (!osmo_log_info)
- return -ENOMEM;
-
- osmo_log_info->num_cat_user = inf->num_cat;
- /* total number = number of user cat + library cat */
- osmo_log_info->num_cat = inf->num_cat + ARRAY_SIZE(internal_cat);
-
- osmo_log_info->cat = talloc_zero_array(osmo_log_info,
- struct log_info_cat,
- osmo_log_info->num_cat);
- if (!osmo_log_info->cat) {
- talloc_free(osmo_log_info);
- osmo_log_info = NULL;
- return -ENOMEM;
- }
-
- /* copy over the user part */
- for (i = 0; i < inf->num_cat; i++) {
- memcpy(&osmo_log_info->cat[i], &inf->cat[i],
- sizeof(struct log_info_cat));
- }
-
- /* copy over the library part */
- for (i = 0; i < ARRAY_SIZE(internal_cat); i++) {
- unsigned int cn = osmo_log_info->num_cat_user + i;
- memcpy(&osmo_log_info->cat[cn],
- &internal_cat[i], sizeof(struct log_info_cat));
- }
-
- return 0;
-}
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/logging_syslog.c b/Src/osmoconbb/src/shared/libosmocore/src/logging_syslog.c
deleted file mode 100644
index 4f043b1..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/logging_syslog.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/* Syslog logging support code */
-
-/* (C) 2011 by Harald Welte <laforge@gnumonks.org>
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include "../config.h"
-
-#ifdef HAVE_SYSLOG_H
-
-#include <stdarg.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <syslog.h>
-
-#ifdef HAVE_STRINGS_H
-#include <strings.h>
-#endif
-
-#include <osmocom/core/talloc.h>
-#include <osmocom/core/utils.h>
-#include <osmocom/core/logging.h>
-
-static const int logp2syslog_level(unsigned int level)
-{
- if (level >= LOGL_FATAL)
- return LOG_CRIT;
- else if (level >= LOGL_ERROR)
- return LOG_ERR;
- else if (level >= LOGL_NOTICE)
- return LOG_NOTICE;
- else if (level >= LOGL_INFO)
- return LOG_INFO;
- else
- return LOG_DEBUG;
-}
-
-static void _syslog_output(struct log_target *target,
- unsigned int level, const char *log)
-{
- syslog(logp2syslog_level(level), "%s", log);
-}
-
-struct log_target *log_target_create_syslog(const char *ident, int option,
- int facility)
-{
- struct log_target *target;
-
- target = log_target_create();
- if (!target)
- return NULL;
-
- target->tgt_syslog.facility = facility;
- target->type = LOG_TGT_TYPE_SYSLOG;
- target->output = _syslog_output;
-
- openlog(ident, option, facility);
-
- return target;
-}
-
-#endif /* HAVE_SYSLOG_H */
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/msgb.c b/Src/osmoconbb/src/shared/libosmocore/src/msgb.c
deleted file mode 100644
index f9841ed..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/msgb.c
+++ /dev/null
@@ -1,105 +0,0 @@
-/* (C) 2008 by Harald Welte <laforge@gnumonks.org>
- * (C) 2010 by Holger Hans Peter Freyther <zecke@selfish.org>
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-
-#include <unistd.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include <osmocom/core/msgb.h>
-//#include <openbsc/gsm_data.h>
-#include <osmocom/core/talloc.h>
-//#include <openbsc/debug.h>
-
-void *tall_msgb_ctx;
-
-struct msgb *msgb_alloc(uint16_t size, const char *name)
-{
- struct msgb *msg;
-
- msg = _talloc_zero(tall_msgb_ctx, sizeof(*msg) + size, name);
-
- if (!msg) {
- //LOGP(DRSL, LOGL_FATAL, "unable to allocate msgb\n");
- return NULL;
- }
-
- msg->data_len = size;
- msg->len = 0;
- msg->data = msg->_data;
- msg->head = msg->_data;
- msg->tail = msg->_data;
-
- return msg;
-}
-
-void msgb_free(struct msgb *m)
-{
- talloc_free(m);
-}
-
-void msgb_enqueue(struct llist_head *queue, struct msgb *msg)
-{
- llist_add_tail(&msg->list, queue);
-}
-
-struct msgb *msgb_dequeue(struct llist_head *queue)
-{
- struct llist_head *lh;
-
- if (llist_empty(queue))
- return NULL;
-
- lh = queue->next;
- llist_del(lh);
-
- return llist_entry(lh, struct msgb, list);
-}
-
-void msgb_reset(struct msgb *msg)
-{
- msg->len = 0;
- msg->data = msg->_data;
- msg->head = msg->_data;
- msg->tail = msg->_data;
-
- msg->trx = NULL;
- msg->lchan = NULL;
- msg->l2h = NULL;
- msg->l3h = NULL;
- msg->l4h = NULL;
-
- memset(&msg->cb, 0, sizeof(msg->cb));
-}
-
-uint8_t *msgb_data(const struct msgb *msg)
-{
- return msg->data;
-}
-
-uint16_t msgb_length(const struct msgb *msg)
-{
- return msg->len;
-}
-
-void msgb_set_talloc_ctx(void *ctx)
-{
- tall_msgb_ctx = ctx;
-}
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/msgfile.c b/Src/osmoconbb/src/shared/libosmocore/src/msgfile.c
deleted file mode 100644
index d2b180d..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/msgfile.c
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Parse a simple file with messages, e.g used for USSD messages
- *
- * (C) 2010 by Holger Hans Peter Freyther
- * (C) 2010 by On-Waves
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <osmocom/core/msgfile.h>
-#include <osmocom/core/talloc.h>
-
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <string.h>
-
-static struct osmo_config_entry *
-alloc_entry(struct osmo_config_list *entries,
- const char *mcc, const char *mnc,
- const char *option, const char *text)
-{
- struct osmo_config_entry *entry =
- talloc_zero(entries, struct osmo_config_entry);
- if (!entry)
- return NULL;
-
- entry->mcc = talloc_strdup(entry, mcc);
- entry->mnc = talloc_strdup(entry, mnc);
- entry->option = talloc_strdup(entry, option);
- entry->text = talloc_strdup(entry, text);
-
- llist_add_tail(&entry->list, &entries->entry);
- return entry;
-}
-
-static struct osmo_config_list *alloc_entries(void *ctx)
-{
- struct osmo_config_list *entries;
-
- entries = talloc_zero(ctx, struct osmo_config_list);
- if (!entries)
- return NULL;
-
- INIT_LLIST_HEAD(&entries->entry);
- return entries;
-}
-
-/*
- * split a line like 'foo:Text'.
- */
-static void handle_line(struct osmo_config_list *entries, char *line)
-{
- int i;
- const int len = strlen(line);
-
- char *items[3];
- int last_item = 0;
-
- /* Skip comments from the file */
- if (line[0] == '#')
- return;
-
- for (i = 0; i < len; ++i) {
- if (line[i] == '\n' || line[i] == '\r')
- line[i] = '\0';
- else if (line[i] == ':' && last_item < 3) {
- line[i] = '\0';
-
- items[last_item++] = &line[i + 1];
- }
- }
-
- if (last_item == 3) {
- alloc_entry(entries, &line[0] , items[0], items[1], items[2]);
- return;
- }
-
- /* nothing found */
-}
-
-struct osmo_config_list *osmo_config_list_parse(void *ctx, const char *filename)
-{
- struct osmo_config_list *entries;
- size_t n;
- char *line;
- FILE *file;
-
- file = fopen(filename, "r");
- if (!file)
- return NULL;
-
- entries = alloc_entries(ctx);
- if (!entries) {
- fclose(file);
- return NULL;
- }
-
- n = 2342;
- line = NULL;
- while (getline(&line, &n, file) != -1) {
- handle_line(entries, line);
- free(line);
- line = NULL;
- }
-
- fclose(file);
- return entries;
-}
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/panic.c b/Src/osmoconbb/src/shared/libosmocore/src/panic.c
deleted file mode 100644
index d445226..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/panic.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/* Panic handling */
-/*
- * (C) 2010 by Sylvain Munaut <tnt@246tNt.com>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <osmocom/gsm/gsm_utils.h>
-#include <osmocom/core/panic.h>
-#include <osmocom/core/backtrace.h>
-
-#include "../config.h"
-
-
-static osmo_panic_handler_t osmo_panic_handler = (void*)0;
-
-
-#ifndef PANIC_INFLOOP
-
-#include <stdio.h>
-#include <stdlib.h>
-
-static void osmo_panic_default(const char *fmt, va_list args)
-{
- vfprintf(stderr, fmt, args);
- osmo_generate_backtrace();
- abort();
-}
-
-#else
-
-static void osmo_panic_default(const char *fmt, va_list args)
-{
- while (1);
-}
-
-#endif
-
-
-void osmo_panic(const char *fmt, ...)
-{
- va_list args;
-
- va_start(args, fmt);
-
- if (osmo_panic_handler)
- osmo_panic_handler(fmt, args);
- else
- osmo_panic_default(fmt, args);
-
- va_end(args);
-}
-
-
-void osmo_set_panic_handler(osmo_panic_handler_t h)
-{
- osmo_panic_handler = h;
-}
-
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/plugin.c b/Src/osmoconbb/src/shared/libosmocore/src/plugin.c
deleted file mode 100644
index 998bca3..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/plugin.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/* plugin infrastructure */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include "../config.h"
-
-#if HAVE_DLFCN_H
-
-#include <dirent.h>
-#include <dlfcn.h>
-#include <stdio.h>
-#include <errno.h>
-#include <limits.h>
-
-#include <osmocom/core/plugin.h>
-
-int osmo_plugin_load_all(const char *directory)
-{
- unsigned int num = 0;
- char fname[PATH_MAX];
- DIR *dir;
- struct dirent *entry;
-
- dir = opendir(directory);
- if (!dir)
- return -errno;
-
- while ((entry = readdir(dir))) {
- snprintf(fname, sizeof(fname), "%s/%s", directory,
- entry->d_name);
- if (dlopen(fname, RTLD_NOW))
- num++;
- }
-
- closedir(dir);
-
- return num;
-}
-#else
-int osmo_plugin_load_all(const char *directory)
-{
- return 0;
-}
-#endif /* HAVE_DLFCN_H */
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/rate_ctr.c b/Src/osmoconbb/src/shared/libosmocore/src/rate_ctr.c
deleted file mode 100644
index 6d771a4..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/rate_ctr.c
+++ /dev/null
@@ -1,161 +0,0 @@
-/* utility routines for keeping conters about events and the event rates */
-
-/* (C) 2009-2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <string.h>
-
-#include <osmocom/core/utils.h>
-#include <osmocom/core/linuxlist.h>
-#include <osmocom/core/talloc.h>
-#include <osmocom/core/timer.h>
-#include <osmocom/core/rate_ctr.h>
-
-static LLIST_HEAD(rate_ctr_groups);
-
-static void *tall_rate_ctr_ctx;
-
-struct rate_ctr_group *rate_ctr_group_alloc(void *ctx,
- const struct rate_ctr_group_desc *desc,
- unsigned int idx)
-{
- unsigned int size;
- struct rate_ctr_group *group;
-
- size = sizeof(struct rate_ctr_group) +
- desc->num_ctr * sizeof(struct rate_ctr);
-
- if (!ctx)
- ctx = tall_rate_ctr_ctx;
-
- group = talloc_zero_size(ctx, size);
- if (!group)
- return NULL;
-
- group->desc = desc;
- group->idx = idx;
-
- llist_add(&group->list, &rate_ctr_groups);
-
- return group;
-}
-
-void rate_ctr_group_free(struct rate_ctr_group *grp)
-{
- llist_del(&grp->list);
- talloc_free(grp);
-}
-
-void rate_ctr_add(struct rate_ctr *ctr, int inc)
-{
- ctr->current += inc;
-}
-
-static void interval_expired(struct rate_ctr *ctr, enum rate_ctr_intv intv)
-{
- /* calculate rate over last interval */
- ctr->intv[intv].rate = ctr->current - ctr->intv[intv].last;
- /* save current counter for next interval */
- ctr->intv[intv].last = ctr->current;
-
- /* update the rate of the next bigger interval. This will
- * be overwritten when that next larger interval expires */
- if (intv + 1 < ARRAY_SIZE(ctr->intv))
- ctr->intv[intv+1].rate += ctr->intv[intv].rate;
-}
-
-static struct osmo_timer_list rate_ctr_timer;
-static uint64_t timer_ticks;
-
-/* The one-second interval has expired */
-static void rate_ctr_group_intv(struct rate_ctr_group *grp)
-{
- unsigned int i;
-
- for (i = 0; i < grp->desc->num_ctr; i++) {
- struct rate_ctr *ctr = &grp->ctr[i];
-
- interval_expired(ctr, RATE_CTR_INTV_SEC);
- if ((timer_ticks % 60) == 0)
- interval_expired(ctr, RATE_CTR_INTV_MIN);
- if ((timer_ticks % (60*60)) == 0)
- interval_expired(ctr, RATE_CTR_INTV_HOUR);
- if ((timer_ticks % (24*60*60)) == 0)
- interval_expired(ctr, RATE_CTR_INTV_DAY);
- }
-}
-
-static void rate_ctr_timer_cb(void *data)
-{
- struct rate_ctr_group *ctrg;
-
- /* Increment number of ticks before we calculate intervals,
- * as a counter value of 0 would already wrap all counters */
- timer_ticks++;
-
- llist_for_each_entry(ctrg, &rate_ctr_groups, list)
- rate_ctr_group_intv(ctrg);
-
- osmo_timer_schedule(&rate_ctr_timer, 1, 0);
-}
-
-int rate_ctr_init(void *tall_ctx)
-{
- tall_rate_ctr_ctx = tall_ctx;
- rate_ctr_timer.cb = rate_ctr_timer_cb;
- osmo_timer_schedule(&rate_ctr_timer, 1, 0);
-
- return 0;
-}
-
-struct rate_ctr_group *rate_ctr_get_group_by_name_idx(const char *name, const unsigned int idx)
-{
- struct rate_ctr_group *ctrg;
-
- llist_for_each_entry(ctrg, &rate_ctr_groups, list) {
- if (!ctrg->desc)
- continue;
-
- if (!strcmp(ctrg->desc->group_name_prefix, name) &&
- ctrg->idx == idx) {
- return ctrg;
- }
- }
- return NULL;
-}
-
-const struct rate_ctr *rate_ctr_get_by_name(const struct rate_ctr_group *ctrg, const char *name)
-{
- int i;
- const struct rate_ctr_desc *ctr_desc;
-
- if (!ctrg->desc)
- return NULL;
-
- for (i = 0; i < ctrg->desc->num_ctr; i++) {
- ctr_desc = &ctrg->desc->ctr_desc[i];
-
- if (!strcmp(ctr_desc->name, name)) {
- return &ctrg->ctr[i];
- }
- }
- return NULL;
-}
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/select.c b/Src/osmoconbb/src/shared/libosmocore/src/select.c
deleted file mode 100644
index 4b002ae..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/select.c
+++ /dev/null
@@ -1,153 +0,0 @@
-/* select filedescriptor handling, taken from:
- * userspace logging daemon for the iptables ULOG target
- * of the linux 2.4 netfilter subsystem.
- *
- * (C) 2000-2009 by Harald Welte <laforge@gnumonks.org>
- *
- * 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
- */
-
-#include <fcntl.h>
-#include <stdio.h>
-
-#include <osmocom/core/select.h>
-#include <osmocom/core/linuxlist.h>
-#include <osmocom/core/timer.h>
-
-#include "../config.h"
-
-#ifdef HAVE_SYS_SELECT_H
-
-static int maxfd = 0;
-static LLIST_HEAD(osmo_fds);
-static int unregistered_count;
-
-int osmo_fd_register(struct osmo_fd *fd)
-{
- int flags;
-
- /* make FD nonblocking */
- flags = fcntl(fd->fd, F_GETFL);
- if (flags < 0)
- return flags;
- flags |= O_NONBLOCK;
- flags = fcntl(fd->fd, F_SETFL, flags);
- if (flags < 0)
- return flags;
-
- /* set close-on-exec flag */
- flags = fcntl(fd->fd, F_GETFD);
- if (flags < 0)
- return flags;
- flags |= FD_CLOEXEC;
- flags = fcntl(fd->fd, F_SETFD, flags);
- if (flags < 0)
- return flags;
-
- /* Register FD */
- if (fd->fd > maxfd)
- maxfd = fd->fd;
-
-#ifdef BSC_FD_CHECK
- struct osmo_fd *entry;
- llist_for_each_entry(entry, &osmo_fds, list) {
- if (entry == fd) {
- fprintf(stderr, "Adding a osmo_fd that is already in the list.\n");
- return 0;
- }
- }
-#endif
-
- llist_add_tail(&fd->list, &osmo_fds);
-
- return 0;
-}
-
-void osmo_fd_unregister(struct osmo_fd *fd)
-{
- unregistered_count++;
- llist_del(&fd->list);
-}
-
-int osmo_select_main(int polling)
-{
- struct osmo_fd *ufd, *tmp;
- fd_set readset, writeset, exceptset;
- int work = 0, rc;
- struct timeval no_time = {0, 0};
-
- FD_ZERO(&readset);
- FD_ZERO(&writeset);
- FD_ZERO(&exceptset);
-
- /* prepare read and write fdsets */
- llist_for_each_entry(ufd, &osmo_fds, list) {
- if (ufd->when & BSC_FD_READ)
- FD_SET(ufd->fd, &readset);
-
- if (ufd->when & BSC_FD_WRITE)
- FD_SET(ufd->fd, &writeset);
-
- if (ufd->when & BSC_FD_EXCEPT)
- FD_SET(ufd->fd, &exceptset);
- }
-
- osmo_timers_check();
-
- if (!polling)
- osmo_timers_prepare();
- rc = select(maxfd+1, &readset, &writeset, &exceptset, polling ? &no_time : osmo_timers_nearest());
- if (rc < 0)
- return 0;
-
- /* fire timers */
- osmo_timers_update();
-
- /* call registered callback functions */
-restart:
- unregistered_count = 0;
- llist_for_each_entry_safe(ufd, tmp, &osmo_fds, list) {
- int flags = 0;
-
- if (FD_ISSET(ufd->fd, &readset)) {
- flags |= BSC_FD_READ;
- FD_CLR(ufd->fd, &readset);
- }
-
- if (FD_ISSET(ufd->fd, &writeset)) {
- flags |= BSC_FD_WRITE;
- FD_CLR(ufd->fd, &writeset);
- }
-
- if (FD_ISSET(ufd->fd, &exceptset)) {
- flags |= BSC_FD_EXCEPT;
- FD_CLR(ufd->fd, &exceptset);
- }
-
- if (flags) {
- work = 1;
- ufd->cb(ufd, flags);
- }
- /* ugly, ugly hack. If more than one filedescriptors were
- * unregistered, they might have been consecutive and
- * llist_for_each_entry_safe() is no longer safe */
- /* this seems to happen with the last element of the list as well */
- if (unregistered_count >= 1)
- goto restart;
- }
- return work;
-}
-
-#endif /* _HAVE_SYS_SELECT_H */
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/signal.c b/Src/osmoconbb/src/shared/libosmocore/src/signal.c
deleted file mode 100644
index bc339bb..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/signal.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/* Generic signalling/notification infrastructure */
-/* (C) 2009 by Holger Hans Peter Freyther <zecke@selfish.org>
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <osmocom/core/signal.h>
-#include <osmocom/core/talloc.h>
-#include <osmocom/core/linuxlist.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-
-void *tall_sigh_ctx;
-static LLIST_HEAD(signal_handler_list);
-
-struct signal_handler {
- struct llist_head entry;
- unsigned int subsys;
- osmo_signal_cbfn *cbfn;
- void *data;
-};
-
-
-int osmo_signal_register_handler(unsigned int subsys,
- osmo_signal_cbfn *cbfn, void *data)
-{
- struct signal_handler *sig_data;
-
- sig_data = talloc(tall_sigh_ctx, struct signal_handler);
- if (!sig_data)
- return -ENOMEM;
-
- memset(sig_data, 0, sizeof(*sig_data));
-
- sig_data->subsys = subsys;
- sig_data->data = data;
- sig_data->cbfn = cbfn;
-
- /* FIXME: check if we already have a handler for this subsys/cbfn/data */
-
- llist_add_tail(&sig_data->entry, &signal_handler_list);
-
- return 0;
-}
-
-void osmo_signal_unregister_handler(unsigned int subsys,
- osmo_signal_cbfn *cbfn, void *data)
-{
- struct signal_handler *handler;
-
- llist_for_each_entry(handler, &signal_handler_list, entry) {
- if (handler->cbfn == cbfn && handler->data == data
- && subsys == handler->subsys) {
- llist_del(&handler->entry);
- talloc_free(handler);
- break;
- }
- }
-}
-
-
-void osmo_signal_dispatch(unsigned int subsys, unsigned int signal,
- void *signal_data)
-{
- struct signal_handler *handler;
-
- llist_for_each_entry(handler, &signal_handler_list, entry) {
- if (handler->subsys != subsys)
- continue;
- (*handler->cbfn)(subsys, signal, handler->data, signal_data);
- }
-}
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/socket.c b/Src/osmoconbb/src/shared/libosmocore/src/socket.c
deleted file mode 100644
index f1fcccd..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/socket.c
+++ /dev/null
@@ -1,200 +0,0 @@
-#include "../config.h"
-
-#ifdef HAVE_SYS_SOCKET_H
-
-#include <osmocom/core/logging.h>
-#include <osmocom/core/select.h>
-#include <osmocom/core/socket.h>
-
-#include <sys/ioctl.h>
-#include <sys/socket.h>
-#include <sys/types.h>
-
-#include <stdio.h>
-#include <unistd.h>
-#include <stdint.h>
-#include <string.h>
-#include <errno.h>
-#include <netdb.h>
-#include <ifaddrs.h>
-
-int osmo_sock_init(uint16_t family, uint16_t type, uint8_t proto,
- const char *host, uint16_t port, unsigned int flags)
-{
- struct addrinfo hints, *result, *rp;
- int sfd, rc, on = 1;
- char portbuf[16];
-
- if ((flags & (OSMO_SOCK_F_BIND | OSMO_SOCK_F_CONNECT)) ==
- (OSMO_SOCK_F_BIND | OSMO_SOCK_F_CONNECT))
- return -EINVAL;
-
- sprintf(portbuf, "%u", port);
- memset(&hints, 0, sizeof(struct addrinfo));
- hints.ai_family = family;
- hints.ai_socktype = type;
- hints.ai_flags = 0;
- hints.ai_protocol = proto;
-
- if (flags & OSMO_SOCK_F_BIND)
- hints.ai_flags |= AI_PASSIVE;
-
- rc = getaddrinfo(host, portbuf, &hints, &result);
- if (rc != 0) {
- perror("getaddrinfo returned NULL");
- return -EINVAL;
- }
-
- for (rp = result; rp != NULL; rp = rp->ai_next) {
- sfd = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol);
- if (sfd == -1)
- continue;
- if (flags & OSMO_SOCK_F_NONBLOCK) {
- if (ioctl(sfd, FIONBIO, (unsigned char *)&on) < 0) {
- perror("cannot set this socket unblocking");
- close(sfd);
- return -EINVAL;
- }
- }
- if (flags & OSMO_SOCK_F_CONNECT) {
- rc = connect(sfd, rp->ai_addr, rp->ai_addrlen);
- if (rc != -1 || (rc == -1 && errno == EINPROGRESS))
- break;
- } else {
- rc = setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR,
- &on, sizeof(on));
- if (rc < 0) {
- perror("cannot setsockopt socket");
- break;
- }
- if (bind(sfd, rp->ai_addr, rp->ai_addrlen) != -1)
- break;
- }
- close(sfd);
- }
- freeaddrinfo(result);
-
- if (rp == NULL) {
- perror("unable to connect/bind socket");
- return -ENODEV;
- }
-
- setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
-
- /* Make sure to call 'listen' on a bound, connection-oriented sock */
- if (flags & OSMO_SOCK_F_BIND) {
- switch (type) {
- case SOCK_STREAM:
- case SOCK_SEQPACKET:
- listen(sfd, 10);
- break;
- }
- }
- return sfd;
-}
-
-int osmo_sock_init_ofd(struct osmo_fd *ofd, int family, int type, int proto,
- const char *host, uint16_t port, unsigned int flags)
-{
- int sfd, rc;
-
- sfd = osmo_sock_init(family, type, proto, host, port, flags);
- if (sfd < 0)
- return sfd;
-
- ofd->fd = sfd;
- ofd->when = BSC_FD_READ;
-
- rc = osmo_fd_register(ofd);
- if (rc < 0) {
- close(sfd);
- return rc;
- }
-
- return sfd;
-}
-
-int osmo_sock_init_sa(struct sockaddr *ss, uint16_t type,
- uint8_t proto, unsigned int flags)
-{
- char host[NI_MAXHOST];
- uint16_t port;
- struct sockaddr_in *sin;
- struct sockaddr_in6 *sin6;
- int s, sa_len;
-
- /* determine port and host from ss */
- switch (ss->sa_family) {
- case AF_INET:
- sin = (struct sockaddr_in *) ss;
- sa_len = sizeof(struct sockaddr_in);
- port = ntohs(sin->sin_port);
- break;
- case AF_INET6:
- sin6 = (struct sockaddr_in6 *) ss;
- sa_len = sizeof(struct sockaddr_in6);
- port = ntohs(sin6->sin6_port);
- break;
- default:
- return -EINVAL;
- }
-
- s = getnameinfo(ss, sa_len, host, NI_MAXHOST,
- NULL, 0, NI_NUMERICHOST);
- if (s != 0) {
- perror("getnameinfo failed");
- return s;
- }
-
- return osmo_sock_init(ss->sa_family, type, proto, host, port, flags);
-}
-
-static int sockaddr_equal(const struct sockaddr *a,
- const struct sockaddr *b, unsigned int len)
-{
- struct sockaddr_in *sin_a, *sin_b;
- struct sockaddr_in6 *sin6_a, *sin6_b;
-
- if (a->sa_family != b->sa_family)
- return 0;
-
- switch (a->sa_family) {
- case AF_INET:
- sin_a = (struct sockaddr_in *)a;
- sin_b = (struct sockaddr_in *)b;
- if (!memcmp(&sin_a->sin_addr, &sin_b->sin_addr,
- sizeof(struct in_addr)))
- return 1;
- break;
- case AF_INET6:
- sin6_a = (struct sockaddr_in6 *)a;
- sin6_b = (struct sockaddr_in6 *)b;
- if (!memcmp(&sin6_a->sin6_addr, &sin6_b->sin6_addr,
- sizeof(struct in6_addr)))
- return 1;
- break;
- }
- return 0;
-}
-
-/* determine if the given address is a local address */
-int osmo_sockaddr_is_local(struct sockaddr *addr, socklen_t addrlen)
-{
- struct ifaddrs *ifaddr, *ifa;
-
- if (getifaddrs(&ifaddr) == -1) {
- perror("getifaddrs");
- return -EIO;
- }
-
- for (ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next) {
- if (!ifa->ifa_addr)
- continue;
- if (sockaddr_equal(ifa->ifa_addr, addr, addrlen))
- return 1;
- }
-
- return 0;
-}
-
-#endif /* HAVE_SYS_SOCKET_H */
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/statistics.c b/Src/osmoconbb/src/shared/libosmocore/src/statistics.c
deleted file mode 100644
index e28541b..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/statistics.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/* utility routines for keeping some statistics */
-
-/* (C) 2009 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <string.h>
-
-#include <osmocom/core/linuxlist.h>
-#include <osmocom/core/talloc.h>
-#include <osmocom/core/statistics.h>
-
-static LLIST_HEAD(counters);
-
-void *tall_ctr_ctx;
-
-struct osmo_counter *osmo_counter_alloc(const char *name)
-{
- struct osmo_counter *ctr = talloc_zero(tall_ctr_ctx, struct osmo_counter);
-
- if (!ctr)
- return NULL;
-
- ctr->name = name;
- llist_add_tail(&ctr->list, &counters);
-
- return ctr;
-}
-
-void osmo_counter_free(struct osmo_counter *ctr)
-{
- llist_del(&ctr->list);
- talloc_free(ctr);
-}
-
-int osmo_counters_for_each(int (*handle_counter)(struct osmo_counter *, void *),
- void *data)
-{
- struct osmo_counter *ctr;
- int rc = 0;
-
- llist_for_each_entry(ctr, &counters, list) {
- rc = handle_counter(ctr, data);
- if (rc < 0)
- return rc;
- }
-
- return rc;
-}
-
-struct osmo_counter *osmo_counter_get_by_name(const char *name)
-{
- struct osmo_counter *ctr;
-
- llist_for_each_entry(ctr, &counters, list) {
- if (!strcmp(ctr->name, name))
- return ctr;
- }
- return NULL;
-}
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/talloc.c b/Src/osmoconbb/src/shared/libosmocore/src/talloc.c
deleted file mode 100644
index d3a0690..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/talloc.c
+++ /dev/null
@@ -1,1804 +0,0 @@
-/*
- Samba Unix SMB/CIFS implementation.
-
- Samba trivial allocation library - new interface
-
- NOTE: Please read talloc_guide.txt for full documentation
-
- Copyright (C) Andrew Tridgell 2004
- Copyright (C) Stefan Metzmacher 2006
-
- ** NOTE! The following LGPL license applies to the talloc
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 3 of the License, or (at your option) any later version.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, see <http://www.gnu.org/licenses/>.
-*/
-
-/*
- inspired by http://swapped.cc/halloc/
-*/
-
-#ifdef _SAMBA_BUILD_
-#include "version.h"
-#if (SAMBA_VERSION_MAJOR<4)
-#include "includes.h"
-/* This is to circumvent SAMBA3's paranoid malloc checker. Here in this file
- * we trust ourselves... */
-#ifdef malloc
-#undef malloc
-#endif
-#ifdef realloc
-#undef realloc
-#endif
-#define _TALLOC_SAMBA3
-#endif /* (SAMBA_VERSION_MAJOR<4) */
-#endif /* _SAMBA_BUILD_ */
-
-#ifndef _TALLOC_SAMBA3
-//#include "replace.h"
-#include <unistd.h>
-#include <stdio.h>
-#include <stdbool.h>
-#define __USE_GNU
-#include <string.h>
-#undef __USE_GNU
-#include <osmocom/core/talloc.h>
-#define MIN(x,y) ((x) < (y) ? (x) : (y))
-#endif /* not _TALLOC_SAMBA3 */
-
-/* use this to force every realloc to change the pointer, to stress test
- code that might not cope */
-#define ALWAYS_REALLOC 0
-
-
-#define MAX_TALLOC_SIZE 0x10000000
-#define TALLOC_MAGIC 0xe814ec70
-#define TALLOC_FLAG_FREE 0x01
-#define TALLOC_FLAG_LOOP 0x02
-#define TALLOC_FLAG_POOL 0x04 /* This is a talloc pool */
-#define TALLOC_FLAG_POOLMEM 0x08 /* This is allocated in a pool */
-#define TALLOC_MAGIC_REFERENCE ((const char *)1)
-
-/* by default we abort when given a bad pointer (such as when talloc_free() is called
- on a pointer that came from malloc() */
-#ifndef TALLOC_ABORT
-#define TALLOC_ABORT(reason) abort()
-#endif
-
-#ifndef discard_const_p
-#if defined(__intptr_t_defined) || defined(HAVE_INTPTR_T)
-# define discard_const_p(type, ptr) ((type *)((intptr_t)(ptr)))
-#else
-# define discard_const_p(type, ptr) ((type *)(ptr))
-#endif
-#endif
-
-/* these macros gain us a few percent of speed on gcc */
-#if (__GNUC__ >= 3)
-/* the strange !! is to ensure that __builtin_expect() takes either 0 or 1
- as its first argument */
-#ifndef likely
-#define likely(x) __builtin_expect(!!(x), 1)
-#endif
-#ifndef unlikely
-#define unlikely(x) __builtin_expect(!!(x), 0)
-#endif
-#else
-#ifndef likely
-#define likely(x) (x)
-#endif
-#ifndef unlikely
-#define unlikely(x) (x)
-#endif
-#endif
-
-#ifdef __APPLE__
-/* taken from http://insanecoding.blogspot.com/2007/03/methods-for-safe-string-handling.html */
-size_t strnlen(const char *s, size_t n)
-{
- const char *p = (const char *)memchr(s, 0, n);
- return(p ? p-s : n);
-}
-#endif
-
-/* this null_context is only used if talloc_enable_leak_report() or
- talloc_enable_leak_report_full() is called, otherwise it remains
- NULL
-*/
-static void *null_context;
-static void *autofree_context;
-
-struct talloc_reference_handle {
- struct talloc_reference_handle *next, *prev;
- void *ptr;
-};
-
-typedef int (*talloc_destructor_t)(void *);
-
-struct talloc_chunk {
- struct talloc_chunk *next, *prev;
- struct talloc_chunk *parent, *child;
- struct talloc_reference_handle *refs;
- talloc_destructor_t destructor;
- const char *name;
- size_t size;
- unsigned flags;
-
- /*
- * "pool" has dual use:
- *
- * For the talloc pool itself (i.e. TALLOC_FLAG_POOL is set), "pool"
- * marks the end of the currently allocated area.
- *
- * For members of the pool (i.e. TALLOC_FLAG_POOLMEM is set), "pool"
- * is a pointer to the struct talloc_chunk of the pool that it was
- * allocated from. This way children can quickly find the pool to chew
- * from.
- */
- void *pool;
-};
-
-/* 16 byte alignment seems to keep everyone happy */
-#define TC_HDR_SIZE ((sizeof(struct talloc_chunk)+15)&~15)
-#define TC_PTR_FROM_CHUNK(tc) ((void *)(TC_HDR_SIZE + (char*)tc))
-
-static void (*talloc_abort_fn)(const char *reason);
-
-void talloc_set_abort_fn(void (*abort_fn)(const char *reason))
-{
- talloc_abort_fn = abort_fn;
-}
-
-static void talloc_abort(const char *reason)
-{
- if (!talloc_abort_fn) {
- TALLOC_ABORT(reason);
- }
-
- talloc_abort_fn(reason);
-}
-
-static void talloc_abort_double_free(void)
-{
- talloc_abort("Bad talloc magic value - double free");
-}
-
-static void talloc_abort_unknown_value(void)
-{
- talloc_abort("Bad talloc magic value - unknown value");
-}
-
-/* panic if we get a bad magic value */
-static inline struct talloc_chunk *talloc_chunk_from_ptr(const void *ptr)
-{
- const char *pp = (const char *)ptr;
- struct talloc_chunk *tc = discard_const_p(struct talloc_chunk, pp - TC_HDR_SIZE);
- if (unlikely((tc->flags & (TALLOC_FLAG_FREE | ~0xF)) != TALLOC_MAGIC)) {
- if (tc->flags & TALLOC_FLAG_FREE) {
- talloc_abort_double_free();
- } else {
- talloc_abort_unknown_value();
- }
- }
- return tc;
-}
-
-/* hook into the front of the list */
-#define _TLIST_ADD(list, p) \
-do { \
- if (!(list)) { \
- (list) = (p); \
- (p)->next = (p)->prev = NULL; \
- } else { \
- (list)->prev = (p); \
- (p)->next = (list); \
- (p)->prev = NULL; \
- (list) = (p); \
- }\
-} while (0)
-
-/* remove an element from a list - element doesn't have to be in list. */
-#define _TLIST_REMOVE(list, p) \
-do { \
- if ((p) == (list)) { \
- (list) = (p)->next; \
- if (list) (list)->prev = NULL; \
- } else { \
- if ((p)->prev) (p)->prev->next = (p)->next; \
- if ((p)->next) (p)->next->prev = (p)->prev; \
- } \
- if ((p) && ((p) != (list))) (p)->next = (p)->prev = NULL; \
-} while (0)
-
-
-/*
- return the parent chunk of a pointer
-*/
-static inline struct talloc_chunk *talloc_parent_chunk(const void *ptr)
-{
- struct talloc_chunk *tc;
-
- if (unlikely(ptr == NULL)) {
- return NULL;
- }
-
- tc = talloc_chunk_from_ptr(ptr);
- while (tc->prev) tc=tc->prev;
-
- return tc->parent;
-}
-
-void *talloc_parent(const void *ptr)
-{
- struct talloc_chunk *tc = talloc_parent_chunk(ptr);
- return tc? TC_PTR_FROM_CHUNK(tc) : NULL;
-}
-
-/*
- find parents name
-*/
-const char *talloc_parent_name(const void *ptr)
-{
- struct talloc_chunk *tc = talloc_parent_chunk(ptr);
- return tc? tc->name : NULL;
-}
-
-/*
- A pool carries an in-pool object count count in the first 16 bytes.
- bytes. This is done to support talloc_steal() to a parent outside of the
- pool. The count includes the pool itself, so a talloc_free() on a pool will
- only destroy the pool if the count has dropped to zero. A talloc_free() of a
- pool member will reduce the count, and eventually also call free(3) on the
- pool memory.
-
- The object count is not put into "struct talloc_chunk" because it is only
- relevant for talloc pools and the alignment to 16 bytes would increase the
- memory footprint of each talloc chunk by those 16 bytes.
-*/
-
-#define TALLOC_POOL_HDR_SIZE 16
-
-static unsigned int *talloc_pool_objectcount(struct talloc_chunk *tc)
-{
- return (unsigned int *)((char *)tc + sizeof(struct talloc_chunk));
-}
-
-/*
- Allocate from a pool
-*/
-
-static struct talloc_chunk *talloc_alloc_pool(struct talloc_chunk *parent,
- size_t size)
-{
- struct talloc_chunk *pool_ctx = NULL;
- size_t space_left;
- struct talloc_chunk *result;
- size_t chunk_size;
-
- if (parent == NULL) {
- return NULL;
- }
-
- if (parent->flags & TALLOC_FLAG_POOL) {
- pool_ctx = parent;
- }
- else if (parent->flags & TALLOC_FLAG_POOLMEM) {
- pool_ctx = (struct talloc_chunk *)parent->pool;
- }
-
- if (pool_ctx == NULL) {
- return NULL;
- }
-
- space_left = ((char *)pool_ctx + TC_HDR_SIZE + pool_ctx->size)
- - ((char *)pool_ctx->pool);
-
- /*
- * Align size to 16 bytes
- */
- chunk_size = ((size + 15) & ~15);
-
- if (space_left < chunk_size) {
- return NULL;
- }
-
- result = (struct talloc_chunk *)pool_ctx->pool;
-
-#if defined(DEVELOPER) && defined(VALGRIND_MAKE_MEM_UNDEFINED)
- VALGRIND_MAKE_MEM_UNDEFINED(result, size);
-#endif
-
- pool_ctx->pool = (void *)((char *)result + chunk_size);
-
- result->flags = TALLOC_MAGIC | TALLOC_FLAG_POOLMEM;
- result->pool = pool_ctx;
-
- *talloc_pool_objectcount(pool_ctx) += 1;
-
- return result;
-}
-
-/*
- Allocate a bit of memory as a child of an existing pointer
-*/
-static inline void *__talloc(const void *context, size_t size)
-{
- struct talloc_chunk *tc = NULL;
-
- if (unlikely(context == NULL)) {
- context = null_context;
- }
-
- if (unlikely(size >= MAX_TALLOC_SIZE)) {
- return NULL;
- }
-
- if (context != NULL) {
- tc = talloc_alloc_pool(talloc_chunk_from_ptr(context),
- TC_HDR_SIZE+size);
- }
-
- if (tc == NULL) {
- tc = (struct talloc_chunk *)malloc(TC_HDR_SIZE+size);
- if (unlikely(tc == NULL)) return NULL;
- tc->flags = TALLOC_MAGIC;
- tc->pool = NULL;
- }
-
- tc->size = size;
- tc->destructor = NULL;
- tc->child = NULL;
- tc->name = NULL;
- tc->refs = NULL;
-
- if (likely(context)) {
- struct talloc_chunk *parent = talloc_chunk_from_ptr(context);
-
- if (parent->child) {
- parent->child->parent = NULL;
- tc->next = parent->child;
- tc->next->prev = tc;
- } else {
- tc->next = NULL;
- }
- tc->parent = parent;
- tc->prev = NULL;
- parent->child = tc;
- } else {
- tc->next = tc->prev = tc->parent = NULL;
- }
-
- return TC_PTR_FROM_CHUNK(tc);
-}
-
-/*
- * Create a talloc pool
- */
-
-void *talloc_pool(const void *context, size_t size)
-{
- void *result = __talloc(context, size + TALLOC_POOL_HDR_SIZE);
- struct talloc_chunk *tc;
-
- if (unlikely(result == NULL)) {
- return NULL;
- }
-
- tc = talloc_chunk_from_ptr(result);
-
- tc->flags |= TALLOC_FLAG_POOL;
- tc->pool = (char *)result + TALLOC_POOL_HDR_SIZE;
-
- *talloc_pool_objectcount(tc) = 1;
-
-#if defined(DEVELOPER) && defined(VALGRIND_MAKE_MEM_NOACCESS)
- VALGRIND_MAKE_MEM_NOACCESS(tc->pool, size);
-#endif
-
- return result;
-}
-
-/*
- setup a destructor to be called on free of a pointer
- the destructor should return 0 on success, or -1 on failure.
- if the destructor fails then the free is failed, and the memory can
- be continued to be used
-*/
-void _talloc_set_destructor(const void *ptr, int (*destructor)(void *))
-{
- struct talloc_chunk *tc = talloc_chunk_from_ptr(ptr);
- tc->destructor = destructor;
-}
-
-/*
- increase the reference count on a piece of memory.
-*/
-int talloc_increase_ref_count(const void *ptr)
-{
- if (unlikely(!talloc_reference(null_context, ptr))) {
- return -1;
- }
- return 0;
-}
-
-/*
- helper for talloc_reference()
-
- this is referenced by a function pointer and should not be inline
-*/
-static int talloc_reference_destructor(struct talloc_reference_handle *handle)
-{
- struct talloc_chunk *ptr_tc = talloc_chunk_from_ptr(handle->ptr);
- _TLIST_REMOVE(ptr_tc->refs, handle);
- return 0;
-}
-
-/*
- more efficient way to add a name to a pointer - the name must point to a
- true string constant
-*/
-static inline void _talloc_set_name_const(const void *ptr, const char *name)
-{
- struct talloc_chunk *tc = talloc_chunk_from_ptr(ptr);
- tc->name = name;
-}
-
-/*
- internal talloc_named_const()
-*/
-static inline void *_talloc_named_const(const void *context, size_t size, const char *name)
-{
- void *ptr;
-
- ptr = __talloc(context, size);
- if (unlikely(ptr == NULL)) {
- return NULL;
- }
-
- _talloc_set_name_const(ptr, name);
-
- return ptr;
-}
-
-/*
- make a secondary reference to a pointer, hanging off the given context.
- the pointer remains valid until both the original caller and this given
- context are freed.
-
- the major use for this is when two different structures need to reference the
- same underlying data, and you want to be able to free the two instances separately,
- and in either order
-*/
-void *_talloc_reference(const void *context, const void *ptr)
-{
- struct talloc_chunk *tc;
- struct talloc_reference_handle *handle;
- if (unlikely(ptr == NULL)) return NULL;
-
- tc = talloc_chunk_from_ptr(ptr);
- handle = (struct talloc_reference_handle *)_talloc_named_const(context,
- sizeof(struct talloc_reference_handle),
- TALLOC_MAGIC_REFERENCE);
- if (unlikely(handle == NULL)) return NULL;
-
- /* note that we hang the destructor off the handle, not the
- main context as that allows the caller to still setup their
- own destructor on the context if they want to */
- talloc_set_destructor(handle, talloc_reference_destructor);
- handle->ptr = discard_const_p(void, ptr);
- _TLIST_ADD(tc->refs, handle);
- return handle->ptr;
-}
-
-
-/*
- internal talloc_free call
-*/
-static inline int _talloc_free(void *ptr)
-{
- struct talloc_chunk *tc;
-
- if (unlikely(ptr == NULL)) {
- return -1;
- }
-
- tc = talloc_chunk_from_ptr(ptr);
-
- if (unlikely(tc->refs)) {
- int is_child;
- /* check this is a reference from a child or grantchild
- * back to it's parent or grantparent
- *
- * in that case we need to remove the reference and
- * call another instance of talloc_free() on the current
- * pointer.
- */
- is_child = talloc_is_parent(tc->refs, ptr);
- _talloc_free(tc->refs);
- if (is_child) {
- return _talloc_free(ptr);
- }
- return -1;
- }
-
- if (unlikely(tc->flags & TALLOC_FLAG_LOOP)) {
- /* we have a free loop - stop looping */
- return 0;
- }
-
- if (unlikely(tc->destructor)) {
- talloc_destructor_t d = tc->destructor;
- if (d == (talloc_destructor_t)-1) {
- return -1;
- }
- tc->destructor = (talloc_destructor_t)-1;
- if (d(ptr) == -1) {
- tc->destructor = d;
- return -1;
- }
- tc->destructor = NULL;
- }
-
- if (tc->parent) {
- _TLIST_REMOVE(tc->parent->child, tc);
- if (tc->parent->child) {
- tc->parent->child->parent = tc->parent;
- }
- } else {
- if (tc->prev) tc->prev->next = tc->next;
- if (tc->next) tc->next->prev = tc->prev;
- }
-
- tc->flags |= TALLOC_FLAG_LOOP;
-
- while (tc->child) {
- /* we need to work out who will own an abandoned child
- if it cannot be freed. In priority order, the first
- choice is owner of any remaining reference to this
- pointer, the second choice is our parent, and the
- final choice is the null context. */
- void *child = TC_PTR_FROM_CHUNK(tc->child);
- const void *new_parent = null_context;
- if (unlikely(tc->child->refs)) {
- struct talloc_chunk *p = talloc_parent_chunk(tc->child->refs);
- if (p) new_parent = TC_PTR_FROM_CHUNK(p);
- }
- if (unlikely(_talloc_free(child) == -1)) {
- if (new_parent == null_context) {
- struct talloc_chunk *p = talloc_parent_chunk(ptr);
- if (p) new_parent = TC_PTR_FROM_CHUNK(p);
- }
- talloc_steal(new_parent, child);
- }
- }
-
- tc->flags |= TALLOC_FLAG_FREE;
-
- if (tc->flags & (TALLOC_FLAG_POOL|TALLOC_FLAG_POOLMEM)) {
- struct talloc_chunk *pool;
- unsigned int *pool_object_count;
-
- pool = (tc->flags & TALLOC_FLAG_POOL)
- ? tc : (struct talloc_chunk *)tc->pool;
-
- pool_object_count = talloc_pool_objectcount(pool);
-
- if (*pool_object_count == 0) {
- talloc_abort("Pool object count zero!");
- }
-
- *pool_object_count -= 1;
-
- if (*pool_object_count == 0) {
- free(pool);
- }
- }
- else {
- free(tc);
- }
- return 0;
-}
-
-/*
- move a lump of memory from one talloc context to another return the
- ptr on success, or NULL if it could not be transferred.
- passing NULL as ptr will always return NULL with no side effects.
-*/
-void *_talloc_steal(const void *new_ctx, const void *ptr)
-{
- struct talloc_chunk *tc, *new_tc;
-
- if (unlikely(!ptr)) {
- return NULL;
- }
-
- if (unlikely(new_ctx == NULL)) {
- new_ctx = null_context;
- }
-
- tc = talloc_chunk_from_ptr(ptr);
-
- if (unlikely(new_ctx == NULL)) {
- if (tc->parent) {
- _TLIST_REMOVE(tc->parent->child, tc);
- if (tc->parent->child) {
- tc->parent->child->parent = tc->parent;
- }
- } else {
- if (tc->prev) tc->prev->next = tc->next;
- if (tc->next) tc->next->prev = tc->prev;
- }
-
- tc->parent = tc->next = tc->prev = NULL;
- return discard_const_p(void, ptr);
- }
-
- new_tc = talloc_chunk_from_ptr(new_ctx);
-
- if (unlikely(tc == new_tc || tc->parent == new_tc)) {
- return discard_const_p(void, ptr);
- }
-
- if (tc->parent) {
- _TLIST_REMOVE(tc->parent->child, tc);
- if (tc->parent->child) {
- tc->parent->child->parent = tc->parent;
- }
- } else {
- if (tc->prev) tc->prev->next = tc->next;
- if (tc->next) tc->next->prev = tc->prev;
- }
-
- tc->parent = new_tc;
- if (new_tc->child) new_tc->child->parent = NULL;
- _TLIST_ADD(new_tc->child, tc);
-
- return discard_const_p(void, ptr);
-}
-
-
-
-/*
- remove a secondary reference to a pointer. This undo's what
- talloc_reference() has done. The context and pointer arguments
- must match those given to a talloc_reference()
-*/
-static inline int talloc_unreference(const void *context, const void *ptr)
-{
- struct talloc_chunk *tc = talloc_chunk_from_ptr(ptr);
- struct talloc_reference_handle *h;
-
- if (unlikely(context == NULL)) {
- context = null_context;
- }
-
- for (h=tc->refs;h;h=h->next) {
- struct talloc_chunk *p = talloc_parent_chunk(h);
- if (p == NULL) {
- if (context == NULL) break;
- } else if (TC_PTR_FROM_CHUNK(p) == context) {
- break;
- }
- }
- if (h == NULL) {
- return -1;
- }
-
- return _talloc_free(h);
-}
-
-/*
- remove a specific parent context from a pointer. This is a more
- controlled varient of talloc_free()
-*/
-int talloc_unlink(const void *context, void *ptr)
-{
- struct talloc_chunk *tc_p, *new_p;
- void *new_parent;
-
- if (ptr == NULL) {
- return -1;
- }
-
- if (context == NULL) {
- context = null_context;
- }
-
- if (talloc_unreference(context, ptr) == 0) {
- return 0;
- }
-
- if (context == NULL) {
- if (talloc_parent_chunk(ptr) != NULL) {
- return -1;
- }
- } else {
- if (talloc_chunk_from_ptr(context) != talloc_parent_chunk(ptr)) {
- return -1;
- }
- }
-
- tc_p = talloc_chunk_from_ptr(ptr);
-
- if (tc_p->refs == NULL) {
- return _talloc_free(ptr);
- }
-
- new_p = talloc_parent_chunk(tc_p->refs);
- if (new_p) {
- new_parent = TC_PTR_FROM_CHUNK(new_p);
- } else {
- new_parent = NULL;
- }
-
- if (talloc_unreference(new_parent, ptr) != 0) {
- return -1;
- }
-
- talloc_steal(new_parent, ptr);
-
- return 0;
-}
-
-/*
- add a name to an existing pointer - va_list version
-*/
-static inline const char *talloc_set_name_v(const void *ptr, const char *fmt, va_list ap) PRINTF_ATTRIBUTE(2,0);
-
-static inline const char *talloc_set_name_v(const void *ptr, const char *fmt, va_list ap)
-{
- struct talloc_chunk *tc = talloc_chunk_from_ptr(ptr);
- tc->name = talloc_vasprintf(ptr, fmt, ap);
- if (likely(tc->name)) {
- _talloc_set_name_const(tc->name, ".name");
- }
- return tc->name;
-}
-
-/*
- add a name to an existing pointer
-*/
-const char *talloc_set_name(const void *ptr, const char *fmt, ...)
-{
- const char *name;
- va_list ap;
- va_start(ap, fmt);
- name = talloc_set_name_v(ptr, fmt, ap);
- va_end(ap);
- return name;
-}
-
-
-/*
- create a named talloc pointer. Any talloc pointer can be named, and
- talloc_named() operates just like talloc() except that it allows you
- to name the pointer.
-*/
-void *talloc_named(const void *context, size_t size, const char *fmt, ...)
-{
- va_list ap;
- void *ptr;
- const char *name;
-
- ptr = __talloc(context, size);
- if (unlikely(ptr == NULL)) return NULL;
-
- va_start(ap, fmt);
- name = talloc_set_name_v(ptr, fmt, ap);
- va_end(ap);
-
- if (unlikely(name == NULL)) {
- _talloc_free(ptr);
- return NULL;
- }
-
- return ptr;
-}
-
-/*
- return the name of a talloc ptr, or "UNNAMED"
-*/
-const char *talloc_get_name(const void *ptr)
-{
- struct talloc_chunk *tc = talloc_chunk_from_ptr(ptr);
- if (unlikely(tc->name == TALLOC_MAGIC_REFERENCE)) {
- return ".reference";
- }
- if (likely(tc->name)) {
- return tc->name;
- }
- return "UNNAMED";
-}
-
-
-/*
- check if a pointer has the given name. If it does, return the pointer,
- otherwise return NULL
-*/
-void *talloc_check_name(const void *ptr, const char *name)
-{
- const char *pname;
- if (unlikely(ptr == NULL)) return NULL;
- pname = talloc_get_name(ptr);
- if (likely(pname == name || strcmp(pname, name) == 0)) {
- return discard_const_p(void, ptr);
- }
- return NULL;
-}
-
-static void talloc_abort_type_missmatch(const char *location,
- const char *name,
- const char *expected)
-{
- const char *reason;
-
- reason = talloc_asprintf(NULL,
- "%s: Type mismatch: name[%s] expected[%s]",
- location,
- name?name:"NULL",
- expected);
- if (!reason) {
- reason = "Type mismatch";
- }
-
- talloc_abort(reason);
-}
-
-void *_talloc_get_type_abort(const void *ptr, const char *name, const char *location)
-{
- const char *pname;
-
- if (unlikely(ptr == NULL)) {
- talloc_abort_type_missmatch(location, NULL, name);
- return NULL;
- }
-
- pname = talloc_get_name(ptr);
- if (likely(pname == name || strcmp(pname, name) == 0)) {
- return discard_const_p(void, ptr);
- }
-
- talloc_abort_type_missmatch(location, pname, name);
- return NULL;
-}
-
-/*
- this is for compatibility with older versions of talloc
-*/
-void *talloc_init(const char *fmt, ...)
-{
- va_list ap;
- void *ptr;
- const char *name;
-
- /*
- * samba3 expects talloc_report_depth_cb(NULL, ...)
- * reports all talloc'ed memory, so we need to enable
- * null_tracking
- */
- talloc_enable_null_tracking();
-
- ptr = __talloc(NULL, 0);
- if (unlikely(ptr == NULL)) return NULL;
-
- va_start(ap, fmt);
- name = talloc_set_name_v(ptr, fmt, ap);
- va_end(ap);
-
- if (unlikely(name == NULL)) {
- _talloc_free(ptr);
- return NULL;
- }
-
- return ptr;
-}
-
-/*
- this is a replacement for the Samba3 talloc_destroy_pool functionality. It
- should probably not be used in new code. It's in here to keep the talloc
- code consistent across Samba 3 and 4.
-*/
-void talloc_free_children(void *ptr)
-{
- struct talloc_chunk *tc;
-
- if (unlikely(ptr == NULL)) {
- return;
- }
-
- tc = talloc_chunk_from_ptr(ptr);
-
- while (tc->child) {
- /* we need to work out who will own an abandoned child
- if it cannot be freed. In priority order, the first
- choice is owner of any remaining reference to this
- pointer, the second choice is our parent, and the
- final choice is the null context. */
- void *child = TC_PTR_FROM_CHUNK(tc->child);
- const void *new_parent = null_context;
- if (unlikely(tc->child->refs)) {
- struct talloc_chunk *p = talloc_parent_chunk(tc->child->refs);
- if (p) new_parent = TC_PTR_FROM_CHUNK(p);
- }
- if (unlikely(_talloc_free(child) == -1)) {
- if (new_parent == null_context) {
- struct talloc_chunk *p = talloc_parent_chunk(ptr);
- if (p) new_parent = TC_PTR_FROM_CHUNK(p);
- }
- talloc_steal(new_parent, child);
- }
- }
-
- if ((tc->flags & TALLOC_FLAG_POOL)
- && (*talloc_pool_objectcount(tc) == 1)) {
- tc->pool = ((char *)tc + TC_HDR_SIZE + TALLOC_POOL_HDR_SIZE);
-#if defined(DEVELOPER) && defined(VALGRIND_MAKE_MEM_NOACCESS)
- VALGRIND_MAKE_MEM_NOACCESS(
- tc->pool, tc->size - TALLOC_POOL_HDR_SIZE);
-#endif
- }
-}
-
-/*
- Allocate a bit of memory as a child of an existing pointer
-*/
-void *_talloc(const void *context, size_t size)
-{
- return __talloc(context, size);
-}
-
-/*
- externally callable talloc_set_name_const()
-*/
-void talloc_set_name_const(const void *ptr, const char *name)
-{
- _talloc_set_name_const(ptr, name);
-}
-
-/*
- create a named talloc pointer. Any talloc pointer can be named, and
- talloc_named() operates just like talloc() except that it allows you
- to name the pointer.
-*/
-void *talloc_named_const(const void *context, size_t size, const char *name)
-{
- return _talloc_named_const(context, size, name);
-}
-
-/*
- free a talloc pointer. This also frees all child pointers of this
- pointer recursively
-
- return 0 if the memory is actually freed, otherwise -1. The memory
- will not be freed if the ref_count is > 1 or the destructor (if
- any) returns non-zero
-*/
-int talloc_free(void *ptr)
-{
- return _talloc_free(ptr);
-}
-
-
-
-/*
- A talloc version of realloc. The context argument is only used if
- ptr is NULL
-*/
-void *_talloc_realloc(const void *context, void *ptr, size_t size, const char *name)
-{
- struct talloc_chunk *tc;
- void *new_ptr;
- bool malloced = false;
-
- /* size zero is equivalent to free() */
- if (unlikely(size == 0)) {
- _talloc_free(ptr);
- return NULL;
- }
-
- if (unlikely(size >= MAX_TALLOC_SIZE)) {
- return NULL;
- }
-
- /* realloc(NULL) is equivalent to malloc() */
- if (ptr == NULL) {
- return _talloc_named_const(context, size, name);
- }
-
- tc = talloc_chunk_from_ptr(ptr);
-
- /* don't allow realloc on referenced pointers */
- if (unlikely(tc->refs)) {
- return NULL;
- }
-
- /* don't let anybody try to realloc a talloc_pool */
- if (unlikely(tc->flags & TALLOC_FLAG_POOL)) {
- return NULL;
- }
-
- /* don't shrink if we have less than 1k to gain */
- if ((size < tc->size) && ((tc->size - size) < 1024)) {
- tc->size = size;
- return ptr;
- }
-
- /* by resetting magic we catch users of the old memory */
- tc->flags |= TALLOC_FLAG_FREE;
-
-#if ALWAYS_REALLOC
- new_ptr = malloc(size + TC_HDR_SIZE);
- if (new_ptr) {
- memcpy(new_ptr, tc, tc->size + TC_HDR_SIZE);
- free(tc);
- }
-#else
- if (tc->flags & TALLOC_FLAG_POOLMEM) {
-
- new_ptr = talloc_alloc_pool(tc, size + TC_HDR_SIZE);
- *talloc_pool_objectcount((struct talloc_chunk *)
- (tc->pool)) -= 1;
-
- if (new_ptr == NULL) {
- new_ptr = malloc(TC_HDR_SIZE+size);
- malloced = true;
- }
-
- if (new_ptr) {
- memcpy(new_ptr, tc, MIN(tc->size,size) + TC_HDR_SIZE);
- }
- }
- else {
- new_ptr = realloc(tc, size + TC_HDR_SIZE);
- }
-#endif
- if (unlikely(!new_ptr)) {
- tc->flags &= ~TALLOC_FLAG_FREE;
- return NULL;
- }
-
- tc = (struct talloc_chunk *)new_ptr;
- tc->flags &= ~TALLOC_FLAG_FREE;
- if (malloced) {
- tc->flags &= ~TALLOC_FLAG_POOLMEM;
- }
- if (tc->parent) {
- tc->parent->child = tc;
- }
- if (tc->child) {
- tc->child->parent = tc;
- }
-
- if (tc->prev) {
- tc->prev->next = tc;
- }
- if (tc->next) {
- tc->next->prev = tc;
- }
-
- tc->size = size;
- _talloc_set_name_const(TC_PTR_FROM_CHUNK(tc), name);
-
- return TC_PTR_FROM_CHUNK(tc);
-}
-
-/*
- a wrapper around talloc_steal() for situations where you are moving a pointer
- between two structures, and want the old pointer to be set to NULL
-*/
-void *_talloc_move(const void *new_ctx, const void *_pptr)
-{
- const void **pptr = discard_const_p(const void *,_pptr);
- void *ret = _talloc_steal(new_ctx, *pptr);
- (*pptr) = NULL;
- return ret;
-}
-
-/*
- return the total size of a talloc pool (subtree)
-*/
-size_t talloc_total_size(const void *ptr)
-{
- size_t total = 0;
- struct talloc_chunk *c, *tc;
-
- if (ptr == NULL) {
- ptr = null_context;
- }
- if (ptr == NULL) {
- return 0;
- }
-
- tc = talloc_chunk_from_ptr(ptr);
-
- if (tc->flags & TALLOC_FLAG_LOOP) {
- return 0;
- }
-
- tc->flags |= TALLOC_FLAG_LOOP;
-
- total = tc->size;
- for (c=tc->child;c;c=c->next) {
- total += talloc_total_size(TC_PTR_FROM_CHUNK(c));
- }
-
- tc->flags &= ~TALLOC_FLAG_LOOP;
-
- return total;
-}
-
-/*
- return the total number of blocks in a talloc pool (subtree)
-*/
-size_t talloc_total_blocks(const void *ptr)
-{
- size_t total = 0;
- struct talloc_chunk *c, *tc = talloc_chunk_from_ptr(ptr);
-
- if (tc->flags & TALLOC_FLAG_LOOP) {
- return 0;
- }
-
- tc->flags |= TALLOC_FLAG_LOOP;
-
- total++;
- for (c=tc->child;c;c=c->next) {
- total += talloc_total_blocks(TC_PTR_FROM_CHUNK(c));
- }
-
- tc->flags &= ~TALLOC_FLAG_LOOP;
-
- return total;
-}
-
-/*
- return the number of external references to a pointer
-*/
-size_t talloc_reference_count(const void *ptr)
-{
- struct talloc_chunk *tc = talloc_chunk_from_ptr(ptr);
- struct talloc_reference_handle *h;
- size_t ret = 0;
-
- for (h=tc->refs;h;h=h->next) {
- ret++;
- }
- return ret;
-}
-
-/*
- report on memory usage by all children of a pointer, giving a full tree view
-*/
-void talloc_report_depth_cb(const void *ptr, int depth, int max_depth,
- void (*callback)(const void *ptr,
- int depth, int max_depth,
- int is_ref,
- void *private_data),
- void *private_data)
-{
- struct talloc_chunk *c, *tc;
-
- if (ptr == NULL) {
- ptr = null_context;
- }
- if (ptr == NULL) return;
-
- tc = talloc_chunk_from_ptr(ptr);
-
- if (tc->flags & TALLOC_FLAG_LOOP) {
- return;
- }
-
- callback(ptr, depth, max_depth, 0, private_data);
-
- if (max_depth >= 0 && depth >= max_depth) {
- return;
- }
-
- tc->flags |= TALLOC_FLAG_LOOP;
- for (c=tc->child;c;c=c->next) {
- if (c->name == TALLOC_MAGIC_REFERENCE) {
- struct talloc_reference_handle *h = (struct talloc_reference_handle *)TC_PTR_FROM_CHUNK(c);
- callback(h->ptr, depth + 1, max_depth, 1, private_data);
- } else {
- talloc_report_depth_cb(TC_PTR_FROM_CHUNK(c), depth + 1, max_depth, callback, private_data);
- }
- }
- tc->flags &= ~TALLOC_FLAG_LOOP;
-}
-
-static void talloc_report_depth_FILE_helper(const void *ptr, int depth, int max_depth, int is_ref, void *_f)
-{
- const char *name = talloc_get_name(ptr);
- FILE *f = (FILE *)_f;
-
- if (is_ref) {
- fprintf(f, "%*sreference to: %s\n", depth*4, "", name);
- return;
- }
-
- if (depth == 0) {
- fprintf(f,"%stalloc report on '%s' (total %6lu bytes in %3lu blocks)\n",
- (max_depth < 0 ? "full " :""), name,
- (unsigned long)talloc_total_size(ptr),
- (unsigned long)talloc_total_blocks(ptr));
- return;
- }
-
- fprintf(f, "%*s%-30s contains %6lu bytes in %3lu blocks (ref %d) %p\n",
- depth*4, "",
- name,
- (unsigned long)talloc_total_size(ptr),
- (unsigned long)talloc_total_blocks(ptr),
- (int)talloc_reference_count(ptr), ptr);
-
-#if 0
- fprintf(f, "content: ");
- if (talloc_total_size(ptr)) {
- int tot = talloc_total_size(ptr);
- int i;
-
- for (i = 0; i < tot; i++) {
- if ((((char *)ptr)[i] > 31) && (((char *)ptr)[i] < 126)) {
- fprintf(f, "%c", ((char *)ptr)[i]);
- } else {
- fprintf(f, "~%02x", ((char *)ptr)[i]);
- }
- }
- }
- fprintf(f, "\n");
-#endif
-}
-
-/*
- report on memory usage by all children of a pointer, giving a full tree view
-*/
-void talloc_report_depth_file(const void *ptr, int depth, int max_depth, FILE *f)
-{
- talloc_report_depth_cb(ptr, depth, max_depth, talloc_report_depth_FILE_helper, f);
- fflush(f);
-}
-
-/*
- report on memory usage by all children of a pointer, giving a full tree view
-*/
-void talloc_report_full(const void *ptr, FILE *f)
-{
- talloc_report_depth_file(ptr, 0, -1, f);
-}
-
-/*
- report on memory usage by all children of a pointer
-*/
-void talloc_report(const void *ptr, FILE *f)
-{
- talloc_report_depth_file(ptr, 0, 1, f);
-}
-
-/*
- report on any memory hanging off the null context
-*/
-static void talloc_report_null(void)
-{
- if (talloc_total_size(null_context) != 0) {
- talloc_report(null_context, stderr);
- }
-}
-
-/*
- report on any memory hanging off the null context
-*/
-static void talloc_report_null_full(void)
-{
- if (talloc_total_size(null_context) != 0) {
- talloc_report_full(null_context, stderr);
- }
-}
-
-/*
- enable tracking of the NULL context
-*/
-void talloc_enable_null_tracking(void)
-{
- if (null_context == NULL) {
- null_context = _talloc_named_const(NULL, 0, "null_context");
- }
-}
-
-/*
- disable tracking of the NULL context
-*/
-void talloc_disable_null_tracking(void)
-{
- _talloc_free(null_context);
- null_context = NULL;
-}
-
-/*
- enable leak reporting on exit
-*/
-void talloc_enable_leak_report(void)
-{
- talloc_enable_null_tracking();
- atexit(talloc_report_null);
-}
-
-/*
- enable full leak reporting on exit
-*/
-void talloc_enable_leak_report_full(void)
-{
- talloc_enable_null_tracking();
- atexit(talloc_report_null_full);
-}
-
-/*
- talloc and zero memory.
-*/
-void *_talloc_zero(const void *ctx, size_t size, const char *name)
-{
- void *p = _talloc_named_const(ctx, size, name);
-
- if (p) {
- memset(p, '\0', size);
- }
-
- return p;
-}
-
-/*
- memdup with a talloc.
-*/
-void *_talloc_memdup(const void *t, const void *p, size_t size, const char *name)
-{
- void *newp = _talloc_named_const(t, size, name);
-
- if (likely(newp)) {
- memcpy(newp, p, size);
- }
-
- return newp;
-}
-
-static inline char *__talloc_strlendup(const void *t, const char *p, size_t len)
-{
- char *ret;
-
- ret = (char *)__talloc(t, len + 1);
- if (unlikely(!ret)) return NULL;
-
- memcpy(ret, p, len);
- ret[len] = 0;
-
- _talloc_set_name_const(ret, ret);
- return ret;
-}
-
-/*
- strdup with a talloc
-*/
-char *talloc_strdup(const void *t, const char *p)
-{
- if (unlikely(!p)) return NULL;
- return __talloc_strlendup(t, p, strlen(p));
-}
-
-/*
- strndup with a talloc
-*/
-char *talloc_strndup(const void *t, const char *p, size_t n)
-{
- if (unlikely(!p)) return NULL;
- return __talloc_strlendup(t, p, strnlen(p, n));
-}
-
-static inline char *__talloc_strlendup_append(char *s, size_t slen,
- const char *a, size_t alen)
-{
- char *ret;
-
- ret = talloc_realloc(NULL, s, char, slen + alen + 1);
- if (unlikely(!ret)) return NULL;
-
- /* append the string and the trailing \0 */
- memcpy(&ret[slen], a, alen);
- ret[slen+alen] = 0;
-
- _talloc_set_name_const(ret, ret);
- return ret;
-}
-
-/*
- * Appends at the end of the string.
- */
-char *talloc_strdup_append(char *s, const char *a)
-{
- if (unlikely(!s)) {
- return talloc_strdup(NULL, a);
- }
-
- if (unlikely(!a)) {
- return s;
- }
-
- return __talloc_strlendup_append(s, strlen(s), a, strlen(a));
-}
-
-/*
- * Appends at the end of the talloc'ed buffer,
- * not the end of the string.
- */
-char *talloc_strdup_append_buffer(char *s, const char *a)
-{
- size_t slen;
-
- if (unlikely(!s)) {
- return talloc_strdup(NULL, a);
- }
-
- if (unlikely(!a)) {
- return s;
- }
-
- slen = talloc_get_size(s);
- if (likely(slen > 0)) {
- slen--;
- }
-
- return __talloc_strlendup_append(s, slen, a, strlen(a));
-}
-
-/*
- * Appends at the end of the string.
- */
-char *talloc_strndup_append(char *s, const char *a, size_t n)
-{
- if (unlikely(!s)) {
- return talloc_strdup(NULL, a);
- }
-
- if (unlikely(!a)) {
- return s;
- }
-
- return __talloc_strlendup_append(s, strlen(s), a, strnlen(a, n));
-}
-
-/*
- * Appends at the end of the talloc'ed buffer,
- * not the end of the string.
- */
-char *talloc_strndup_append_buffer(char *s, const char *a, size_t n)
-{
- size_t slen;
-
- if (unlikely(!s)) {
- return talloc_strdup(NULL, a);
- }
-
- if (unlikely(!a)) {
- return s;
- }
-
- slen = talloc_get_size(s);
- if (likely(slen > 0)) {
- slen--;
- }
-
- return __talloc_strlendup_append(s, slen, a, strnlen(a, n));
-}
-
-#ifndef HAVE_VA_COPY
-#ifdef HAVE___VA_COPY
-#define va_copy(dest, src) __va_copy(dest, src)
-#else
-#define va_copy(dest, src) (dest) = (src)
-#endif
-#endif
-
-char *talloc_vasprintf(const void *t, const char *fmt, va_list ap)
-{
- int len;
- char *ret;
- va_list ap2;
- char c;
-
- /* this call looks strange, but it makes it work on older solaris boxes */
- va_copy(ap2, ap);
- len = vsnprintf(&c, 1, fmt, ap2);
- va_end(ap2);
- if (unlikely(len < 0)) {
- return NULL;
- }
-
- ret = (char *)__talloc(t, len+1);
- if (unlikely(!ret)) return NULL;
-
- va_copy(ap2, ap);
- vsnprintf(ret, len+1, fmt, ap2);
- va_end(ap2);
-
- _talloc_set_name_const(ret, ret);
- return ret;
-}
-
-
-/*
- Perform string formatting, and return a pointer to newly allocated
- memory holding the result, inside a memory pool.
- */
-char *talloc_asprintf(const void *t, const char *fmt, ...)
-{
- va_list ap;
- char *ret;
-
- va_start(ap, fmt);
- ret = talloc_vasprintf(t, fmt, ap);
- va_end(ap);
- return ret;
-}
-
-static inline char *__talloc_vaslenprintf_append(char *s, size_t slen,
- const char *fmt, va_list ap)
- PRINTF_ATTRIBUTE(3,0);
-
-static inline char *__talloc_vaslenprintf_append(char *s, size_t slen,
- const char *fmt, va_list ap)
-{
- ssize_t alen;
- va_list ap2;
- char c;
-
- va_copy(ap2, ap);
- alen = vsnprintf(&c, 1, fmt, ap2);
- va_end(ap2);
-
- if (alen <= 0) {
- /* Either the vsnprintf failed or the format resulted in
- * no characters being formatted. In the former case, we
- * ought to return NULL, in the latter we ought to return
- * the original string. Most current callers of this
- * function expect it to never return NULL.
- */
- return s;
- }
-
- s = talloc_realloc(NULL, s, char, slen + alen + 1);
- if (!s) return NULL;
-
- va_copy(ap2, ap);
- vsnprintf(s + slen, alen + 1, fmt, ap2);
- va_end(ap2);
-
- _talloc_set_name_const(s, s);
- return s;
-}
-
-/**
- * Realloc @p s to append the formatted result of @p fmt and @p ap,
- * and return @p s, which may have moved. Good for gradually
- * accumulating output into a string buffer. Appends at the end
- * of the string.
- **/
-char *talloc_vasprintf_append(char *s, const char *fmt, va_list ap)
-{
- if (unlikely(!s)) {
- return talloc_vasprintf(NULL, fmt, ap);
- }
-
- return __talloc_vaslenprintf_append(s, strlen(s), fmt, ap);
-}
-
-/**
- * Realloc @p s to append the formatted result of @p fmt and @p ap,
- * and return @p s, which may have moved. Always appends at the
- * end of the talloc'ed buffer, not the end of the string.
- **/
-char *talloc_vasprintf_append_buffer(char *s, const char *fmt, va_list ap)
-{
- size_t slen;
-
- if (unlikely(!s)) {
- return talloc_vasprintf(NULL, fmt, ap);
- }
-
- slen = talloc_get_size(s);
- if (likely(slen > 0)) {
- slen--;
- }
-
- return __talloc_vaslenprintf_append(s, slen, fmt, ap);
-}
-
-/*
- Realloc @p s to append the formatted result of @p fmt and return @p
- s, which may have moved. Good for gradually accumulating output
- into a string buffer.
- */
-char *talloc_asprintf_append(char *s, const char *fmt, ...)
-{
- va_list ap;
-
- va_start(ap, fmt);
- s = talloc_vasprintf_append(s, fmt, ap);
- va_end(ap);
- return s;
-}
-
-/*
- Realloc @p s to append the formatted result of @p fmt and return @p
- s, which may have moved. Good for gradually accumulating output
- into a buffer.
- */
-char *talloc_asprintf_append_buffer(char *s, const char *fmt, ...)
-{
- va_list ap;
-
- va_start(ap, fmt);
- s = talloc_vasprintf_append_buffer(s, fmt, ap);
- va_end(ap);
- return s;
-}
-
-/*
- alloc an array, checking for integer overflow in the array size
-*/
-void *_talloc_array(const void *ctx, size_t el_size, unsigned count, const char *name)
-{
- if (count >= MAX_TALLOC_SIZE/el_size) {
- return NULL;
- }
- return _talloc_named_const(ctx, el_size * count, name);
-}
-
-/*
- alloc an zero array, checking for integer overflow in the array size
-*/
-void *_talloc_zero_array(const void *ctx, size_t el_size, unsigned count, const char *name)
-{
- if (count >= MAX_TALLOC_SIZE/el_size) {
- return NULL;
- }
- return _talloc_zero(ctx, el_size * count, name);
-}
-
-/*
- realloc an array, checking for integer overflow in the array size
-*/
-void *_talloc_realloc_array(const void *ctx, void *ptr, size_t el_size, unsigned count, const char *name)
-{
- if (count >= MAX_TALLOC_SIZE/el_size) {
- return NULL;
- }
- return _talloc_realloc(ctx, ptr, el_size * count, name);
-}
-
-/*
- a function version of talloc_realloc(), so it can be passed as a function pointer
- to libraries that want a realloc function (a realloc function encapsulates
- all the basic capabilities of an allocation library, which is why this is useful)
-*/
-void *talloc_realloc_fn(const void *context, void *ptr, size_t size)
-{
- return _talloc_realloc(context, ptr, size, NULL);
-}
-
-
-static int talloc_autofree_destructor(void *ptr)
-{
- autofree_context = NULL;
- return 0;
-}
-
-static void talloc_autofree(void)
-{
- _talloc_free(autofree_context);
-}
-
-/*
- return a context which will be auto-freed on exit
- this is useful for reducing the noise in leak reports
-*/
-void *talloc_autofree_context(void)
-{
- if (autofree_context == NULL) {
- autofree_context = _talloc_named_const(NULL, 0, "autofree_context");
- talloc_set_destructor(autofree_context, talloc_autofree_destructor);
- atexit(talloc_autofree);
- }
- return autofree_context;
-}
-
-size_t talloc_get_size(const void *context)
-{
- struct talloc_chunk *tc;
-
- if (context == NULL)
- return 0;
-
- tc = talloc_chunk_from_ptr(context);
-
- return tc->size;
-}
-
-/*
- find a parent of this context that has the given name, if any
-*/
-void *talloc_find_parent_byname(const void *context, const char *name)
-{
- struct talloc_chunk *tc;
-
- if (context == NULL) {
- return NULL;
- }
-
- tc = talloc_chunk_from_ptr(context);
- while (tc) {
- if (tc->name && strcmp(tc->name, name) == 0) {
- return TC_PTR_FROM_CHUNK(tc);
- }
- while (tc && tc->prev) tc = tc->prev;
- if (tc) {
- tc = tc->parent;
- }
- }
- return NULL;
-}
-
-/*
- show the parentage of a context
-*/
-void talloc_show_parents(const void *context, FILE *file)
-{
- struct talloc_chunk *tc;
-
- if (context == NULL) {
- fprintf(file, "talloc no parents for NULL\n");
- return;
- }
-
- tc = talloc_chunk_from_ptr(context);
- fprintf(file, "talloc parents of '%s'\n", talloc_get_name(context));
- while (tc) {
- fprintf(file, "\t'%s'\n", talloc_get_name(TC_PTR_FROM_CHUNK(tc)));
- while (tc && tc->prev) tc = tc->prev;
- if (tc) {
- tc = tc->parent;
- }
- }
- fflush(file);
-}
-
-/*
- return 1 if ptr is a parent of context
-*/
-int talloc_is_parent(const void *context, const void *ptr)
-{
- struct talloc_chunk *tc;
-
- if (context == NULL) {
- return 0;
- }
-
- tc = talloc_chunk_from_ptr(context);
- while (tc) {
- if (TC_PTR_FROM_CHUNK(tc) == ptr) return 1;
- while (tc && tc->prev) tc = tc->prev;
- if (tc) {
- tc = tc->parent;
- }
- }
- return 0;
-}
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/timer.c b/Src/osmoconbb/src/shared/libosmocore/src/timer.c
deleted file mode 100644
index bd11a46..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/timer.c
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * (C) 2008,2009 by Holger Hans Peter Freyther <zecke@selfish.org>
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <assert.h>
-#include <string.h>
-#include <osmocom/core/timer.h>
-
-static LLIST_HEAD(timer_list);
-static struct timeval s_nearest_time;
-static struct timeval s_select_time;
-
-#define MICRO_SECONDS 1000000LL
-
-#define TIME_SMALLER(left, right) \
- (left.tv_sec*MICRO_SECONDS+left.tv_usec) <= (right.tv_sec*MICRO_SECONDS+right.tv_usec)
-
-void osmo_timer_add(struct osmo_timer_list *timer)
-{
- struct osmo_timer_list *list_timer;
-
- /* TODO: Optimize and remember the closest item... */
- timer->active = 1;
-
- /* this might be called from within update_timers */
- llist_for_each_entry(list_timer, &timer_list, entry)
- if (timer == list_timer)
- return;
-
- timer->in_list = 1;
- llist_add(&timer->entry, &timer_list);
-}
-
-void
-osmo_timer_schedule(struct osmo_timer_list *timer, int seconds, int microseconds)
-{
- struct timeval current_time;
-
- gettimeofday(&current_time, NULL);
- unsigned long long currentTime = current_time.tv_sec * MICRO_SECONDS + current_time.tv_usec;
- currentTime += seconds * MICRO_SECONDS + microseconds;
- timer->timeout.tv_sec = currentTime / MICRO_SECONDS;
- timer->timeout.tv_usec = currentTime % MICRO_SECONDS;
- osmo_timer_add(timer);
-}
-
-void osmo_timer_del(struct osmo_timer_list *timer)
-{
- if (timer->in_list) {
- timer->active = 0;
- timer->in_list = 0;
- llist_del(&timer->entry);
- }
-}
-
-int osmo_timer_pending(struct osmo_timer_list *timer)
-{
- return timer->active;
-}
-
-/*
- * if we have a nearest time return the delta between the current
- * time and the time of the nearest timer.
- * If the nearest timer timed out return NULL and then we will
- * dispatch everything after the select
- */
-struct timeval *osmo_timers_nearest(void)
-{
- struct timeval current_time;
-
- if (s_nearest_time.tv_sec == 0 && s_nearest_time.tv_usec == 0)
- return NULL;
-
- if (gettimeofday(&current_time, NULL) == -1)
- return NULL;
-
- unsigned long long nearestTime = s_nearest_time.tv_sec * MICRO_SECONDS + s_nearest_time.tv_usec;
- unsigned long long currentTime = current_time.tv_sec * MICRO_SECONDS + current_time.tv_usec;
-
- if (nearestTime < currentTime) {
- s_select_time.tv_sec = 0;
- s_select_time.tv_usec = 0;
- } else {
- s_select_time.tv_sec = (nearestTime - currentTime) / MICRO_SECONDS;
- s_select_time.tv_usec = (nearestTime - currentTime) % MICRO_SECONDS;
- }
-
- return &s_select_time;
-}
-
-/*
- * Find the nearest time and update s_nearest_time
- */
-void osmo_timers_prepare(void)
-{
- struct osmo_timer_list *timer, *nearest_timer = NULL;
- llist_for_each_entry(timer, &timer_list, entry) {
- if (!nearest_timer || TIME_SMALLER(timer->timeout, nearest_timer->timeout)) {
- nearest_timer = timer;
- }
- }
-
- if (nearest_timer) {
- s_nearest_time = nearest_timer->timeout;
- } else {
- memset(&s_nearest_time, 0, sizeof(struct timeval));
- }
-}
-
-/*
- * fire all timers... and remove them
- */
-int osmo_timers_update(void)
-{
- struct timeval current_time;
- struct osmo_timer_list *timer, *tmp;
- int work = 0;
-
- gettimeofday(&current_time, NULL);
-
- /*
- * The callbacks might mess with our list and in this case
- * even llist_for_each_entry_safe is not safe to use. To allow
- * del_timer, add_timer, schedule_timer to be called from within
- * the callback we jump through some loops.
- *
- * First we set the handled flag of each active timer to zero,
- * then we iterate over the list and execute the callbacks. As the
- * list might have been changed (specially the next) from within
- * the callback we have to start over again. Once every callback
- * is dispatched we will remove the non-active from the list.
- *
- * TODO: If this is a performance issue we can poison a global
- * variable in add_timer and del_timer and only then restart.
- */
- llist_for_each_entry(timer, &timer_list, entry) {
- timer->handled = 0;
- }
-
-restart:
- llist_for_each_entry(timer, &timer_list, entry) {
- if (!timer->handled && TIME_SMALLER(timer->timeout, current_time)) {
- timer->handled = 1;
- timer->active = 0;
- (*timer->cb)(timer->data);
- work = 1;
- goto restart;
- }
- }
-
- llist_for_each_entry_safe(timer, tmp, &timer_list, entry) {
- timer->handled = 0;
- if (!timer->active) {
- osmo_timer_del(timer);
- }
- }
-
- return work;
-}
-
-int osmo_timers_check(void)
-{
- struct osmo_timer_list *timer;
- int i = 0;
-
- llist_for_each_entry(timer, &timer_list, entry) {
- i++;
- }
- return i;
-}
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/utils.c b/Src/osmoconbb/src/shared/libosmocore/src/utils.c
deleted file mode 100644
index e1d4c89..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/utils.c
+++ /dev/null
@@ -1,160 +0,0 @@
-
-#include <string.h>
-#include <stdint.h>
-#include <errno.h>
-#include <stdio.h>
-
-#include <osmocom/core/utils.h>
-
-static char namebuf[255];
-const char *get_value_string(const struct value_string *vs, uint32_t val)
-{
- int i;
-
- for (i = 0;; i++) {
- if (vs[i].value == 0 && vs[i].str == NULL)
- break;
- if (vs[i].value == val)
- return vs[i].str;
- }
-
- snprintf(namebuf, sizeof(namebuf), "unknown 0x%x", val);
- return namebuf;
-}
-
-int get_string_value(const struct value_string *vs, const char *str)
-{
- int i;
-
- for (i = 0;; i++) {
- if (vs[i].value == 0 && vs[i].str == NULL)
- break;
- if (!strcasecmp(vs[i].str, str))
- return vs[i].value;
- }
- return -EINVAL;
-}
-
-char osmo_bcd2char(uint8_t bcd)
-{
- if (bcd < 0xa)
- return '0' + bcd;
- else
- return 'A' + (bcd - 0xa);
-}
-
-/* only works for numbers in ascii */
-uint8_t osmo_char2bcd(char c)
-{
- return c - 0x30;
-}
-
-int osmo_hexparse(const char *str, uint8_t *b, int max_len)
-
-{
- int i, l, v;
-
- l = strlen(str);
- if ((l&1) || ((l>>1) > max_len))
- return -1;
-
- memset(b, 0x00, max_len);
-
- for (i=0; i<l; i++) {
- char c = str[i];
- if (c >= '0' && c <= '9')
- v = c - '0';
- else if (c >= 'a' && c <= 'f')
- v = 10 + (c - 'a');
- else if (c >= 'A' && c <= 'F')
- v = 10 + (c - 'A');
- else
- return -1;
- b[i>>1] |= v << (i&1 ? 0 : 4);
- }
-
- return i>>1;
-}
-
-static char hexd_buff[4096];
-
-static char *_osmo_hexdump(const unsigned char *buf, int len, char *delim)
-{
- int i;
- char *cur = hexd_buff;
-
- hexd_buff[0] = 0;
- for (i = 0; i < len; i++) {
- int len_remain = sizeof(hexd_buff) - (cur - hexd_buff);
- if (len_remain <= 0)
- break;
- int rc = snprintf(cur, len_remain, "%02x%s", buf[i], delim);
- if (rc <= 0)
- break;
- cur += rc;
- }
- hexd_buff[sizeof(hexd_buff)-1] = 0;
- return hexd_buff;
-}
-
-char *osmo_ubit_dump(const uint8_t *bits, unsigned int len)
-{
- int i;
-
- if (len > sizeof(hexd_buff)-1)
- len = sizeof(hexd_buff)-1;
- memset(hexd_buff, 0, sizeof(hexd_buff));
-
- for (i = 0; i < len; i++) {
- char outch;
- switch (bits[i]) {
- case 0:
- outch = '0';
- break;
- case 0xff:
- outch = '?';
- break;
- case 1:
- outch = '1';
- break;
- default:
- outch = 'E';
- break;
- }
- hexd_buff[i] = outch;
- }
- hexd_buff[sizeof(hexd_buff)-1] = 0;
- return hexd_buff;
-}
-
-char *osmo_hexdump(const unsigned char *buf, int len)
-{
- return _osmo_hexdump(buf, len, " ");
-}
-
-char *osmo_osmo_hexdump_nospc(const unsigned char *buf, int len)
-{
- return _osmo_hexdump(buf, len, "");
-}
-
-#include "../config.h"
-#ifdef HAVE_CTYPE_H
-#include <ctype.h>
-void osmo_str2lower(char *out, const char *in)
-{
- unsigned int i;
-
- for (i = 0; i < strlen(in); i++)
- out[i] = tolower(in[i]);
- out[strlen(in)] = '\0';
-}
-
-void osmo_str2upper(char *out, const char *in)
-{
- unsigned int i;
-
- for (i = 0; i < strlen(in); i++)
- out[i] = toupper(in[i]);
- out[strlen(in)] = '\0';
-}
-#endif /* HAVE_CTYPE_H */
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/vty/Makefile.am b/Src/osmoconbb/src/shared/libosmocore/src/vty/Makefile.am
deleted file mode 100644
index b7be6f8..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/vty/Makefile.am
+++ /dev/null
@@ -1,15 +0,0 @@
-# This is _NOT_ the library release version, it's an API version.
-# Please read Chapter 6 "Library interface versions" of the libtool documentation before making any modification
-LIBVERSION=0:0:0
-
-INCLUDES = $(all_includes) -I$(top_srcdir)/include
-AM_CFLAGS = -fPIC -Wall
-
-if ENABLE_VTY
-lib_LTLIBRARIES = libosmovty.la
-
-libosmovty_la_SOURCES = buffer.c command.c vty.c vector.c utils.c \
- telnet_interface.c logging_vty.c
-libosmovty_la_LDFLAGS = -version-info $(LIBVERSION)
-libosmovty_la_LIBADD = $(top_builddir)/src/libosmocore.la
-endif
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/vty/buffer.c b/Src/osmoconbb/src/shared/libosmocore/src/vty/buffer.c
deleted file mode 100644
index e385f9f..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/vty/buffer.c
+++ /dev/null
@@ -1,463 +0,0 @@
-/*
- * Buffering of output and input.
- * Copyright (C) 1998 Kunihiro Ishiguro
- *
- * This file is part of GNU Zebra.
- *
- * GNU Zebra is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published
- * by the Free Software Foundation; either version 2, or (at your
- * option) any later version.
- *
- * GNU Zebra 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 GNU Zebra; see the file COPYING. If not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include <errno.h>
-#include <stddef.h>
-#include <sys/uio.h>
-
-#include <osmocom/core/talloc.h>
-#include <osmocom/vty/buffer.h>
-#include <osmocom/vty/vty.h>
-
-/* Buffer master. */
-struct buffer {
- /* Data list. */
- struct buffer_data *head;
- struct buffer_data *tail;
-
- /* Size of each buffer_data chunk. */
- size_t size;
-};
-
-/* Data container. */
-struct buffer_data {
- struct buffer_data *next;
-
- /* Location to add new data. */
- size_t cp;
-
- /* Pointer to data not yet flushed. */
- size_t sp;
-
- /* Actual data stream (variable length). */
- unsigned char data[0]; /* real dimension is buffer->size */
-};
-
-/* It should always be true that: 0 <= sp <= cp <= size */
-
-/* Default buffer size (used if none specified). It is rounded up to the
- next page boundery. */
-#define BUFFER_SIZE_DEFAULT 4096
-
-#define BUFFER_DATA_FREE(D) talloc_free((D))
-
-/* Make new buffer. */
-struct buffer *buffer_new(void *ctx, size_t size)
-{
- struct buffer *b;
-
- b = talloc_zero(ctx, struct buffer);
-
- if (size)
- b->size = size;
- else {
- static size_t default_size;
- if (!default_size) {
- long pgsz = sysconf(_SC_PAGESIZE);
- default_size =
- ((((BUFFER_SIZE_DEFAULT - 1) / pgsz) + 1) * pgsz);
- }
- b->size = default_size;
- }
-
- return b;
-}
-
-/* Free buffer. */
-void buffer_free(struct buffer *b)
-{
- buffer_reset(b);
- talloc_free(b);
-}
-
-/* Make string clone. */
-char *buffer_getstr(struct buffer *b)
-{
- size_t totlen = 0;
- struct buffer_data *data;
- char *s;
- char *p;
-
- for (data = b->head; data; data = data->next)
- totlen += data->cp - data->sp;
- if (!(s = _talloc_zero(tall_vty_ctx, (totlen + 1), "buffer_getstr")))
- return NULL;
- p = s;
- for (data = b->head; data; data = data->next) {
- memcpy(p, data->data + data->sp, data->cp - data->sp);
- p += data->cp - data->sp;
- }
- *p = '\0';
- return s;
-}
-
-/* Return 1 if buffer is empty. */
-int buffer_empty(struct buffer *b)
-{
- return (b->head == NULL);
-}
-
-/* Clear and free all allocated data. */
-void buffer_reset(struct buffer *b)
-{
- struct buffer_data *data;
- struct buffer_data *next;
-
- for (data = b->head; data; data = next) {
- next = data->next;
- BUFFER_DATA_FREE(data);
- }
- b->head = b->tail = NULL;
-}
-
-/* Add buffer_data to the end of buffer. */
-static struct buffer_data *buffer_add(struct buffer *b)
-{
- struct buffer_data *d;
-
- d = _talloc_zero(b,
- offsetof(struct buffer_data, data[b->size]),
- "buffer_add");
- if (!d)
- return NULL;
- d->cp = d->sp = 0;
- d->next = NULL;
-
- if (b->tail)
- b->tail->next = d;
- else
- b->head = d;
- b->tail = d;
-
- return d;
-}
-
-/* Write data to buffer. */
-void buffer_put(struct buffer *b, const void *p, size_t size)
-{
- struct buffer_data *data = b->tail;
- const char *ptr = p;
-
- /* We use even last one byte of data buffer. */
- while (size) {
- size_t chunk;
-
- /* If there is no data buffer add it. */
- if (data == NULL || data->cp == b->size)
- data = buffer_add(b);
-
- chunk =
- ((size <=
- (b->size - data->cp)) ? size : (b->size - data->cp));
- memcpy((data->data + data->cp), ptr, chunk);
- size -= chunk;
- ptr += chunk;
- data->cp += chunk;
- }
-}
-
-/* Insert character into the buffer. */
-void buffer_putc(struct buffer *b, u_char c)
-{
- buffer_put(b, &c, 1);
-}
-
-/* Put string to the buffer. */
-void buffer_putstr(struct buffer *b, const char *c)
-{
- buffer_put(b, c, strlen(c));
-}
-
-/* Keep flushing data to the fd until the buffer is empty or an error is
- encountered or the operation would block. */
-buffer_status_t buffer_flush_all(struct buffer *b, int fd)
-{
- buffer_status_t ret;
- struct buffer_data *head;
- size_t head_sp;
-
- if (!b->head)
- return BUFFER_EMPTY;
- head_sp = (head = b->head)->sp;
- /* Flush all data. */
- while ((ret = buffer_flush_available(b, fd)) == BUFFER_PENDING) {
- if ((b->head == head) && (head_sp == head->sp)
- && (errno != EINTR))
- /* No data was flushed, so kernel buffer must be full. */
- return ret;
- head_sp = (head = b->head)->sp;
- }
-
- return ret;
-}
-
-#if 0
-/* Flush enough data to fill a terminal window of the given scene (used only
- by vty telnet interface). */
-buffer_status_t
-buffer_flush_window(struct buffer * b, int fd, int width, int height,
- int erase_flag, int no_more_flag)
-{
- int nbytes;
- int iov_alloc;
- int iov_index;
- struct iovec *iov;
- struct iovec small_iov[3];
- char more[] = " --More-- ";
- char erase[] =
- { 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
- ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
- 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08
- };
- struct buffer_data *data;
- int column;
-
- if (!b->head)
- return BUFFER_EMPTY;
-
- if (height < 1) {
- zlog_warn
- ("%s called with non-positive window height %d, forcing to 1",
- __func__, height);
- height = 1;
- } else if (height >= 2)
- height--;
- if (width < 1) {
- zlog_warn
- ("%s called with non-positive window width %d, forcing to 1",
- __func__, width);
- width = 1;
- }
-
- /* For erase and more data add two to b's buffer_data count. */
- if (b->head->next == NULL) {
- iov_alloc = sizeof(small_iov) / sizeof(small_iov[0]);
- iov = small_iov;
- } else {
- iov_alloc = ((height * (width + 2)) / b->size) + 10;
- iov = XMALLOC(MTYPE_TMP, iov_alloc * sizeof(*iov));
- }
- iov_index = 0;
-
- /* Previously print out is performed. */
- if (erase_flag) {
- iov[iov_index].iov_base = erase;
- iov[iov_index].iov_len = sizeof erase;
- iov_index++;
- }
-
- /* Output data. */
- column = 1; /* Column position of next character displayed. */
- for (data = b->head; data && (height > 0); data = data->next) {
- size_t cp;
-
- cp = data->sp;
- while ((cp < data->cp) && (height > 0)) {
- /* Calculate lines remaining and column position after displaying
- this character. */
- if (data->data[cp] == '\r')
- column = 1;
- else if ((data->data[cp] == '\n') || (column == width)) {
- column = 1;
- height--;
- } else
- column++;
- cp++;
- }
- iov[iov_index].iov_base = (char *)(data->data + data->sp);
- iov[iov_index++].iov_len = cp - data->sp;
- data->sp = cp;
-
- if (iov_index == iov_alloc)
- /* This should not ordinarily happen. */
- {
- iov_alloc *= 2;
- if (iov != small_iov) {
- zlog_warn("%s: growing iov array to %d; "
- "width %d, height %d, size %lu",
- __func__, iov_alloc, width, height,
- (u_long) b->size);
- iov =
- XREALLOC(MTYPE_TMP, iov,
- iov_alloc * sizeof(*iov));
- } else {
- /* This should absolutely never occur. */
- zlog_err
- ("%s: corruption detected: iov_small overflowed; "
- "head %p, tail %p, head->next %p",
- __func__, b->head, b->tail, b->head->next);
- iov =
- XMALLOC(MTYPE_TMP,
- iov_alloc * sizeof(*iov));
- memcpy(iov, small_iov, sizeof(small_iov));
- }
- }
- }
-
- /* In case of `more' display need. */
- if (b->tail && (b->tail->sp < b->tail->cp) && !no_more_flag) {
- iov[iov_index].iov_base = more;
- iov[iov_index].iov_len = sizeof more;
- iov_index++;
- }
-#ifdef IOV_MAX
- /* IOV_MAX are normally defined in <sys/uio.h> , Posix.1g.
- example: Solaris2.6 are defined IOV_MAX size at 16. */
- {
- struct iovec *c_iov = iov;
- nbytes = 0; /* Make sure it's initialized. */
-
- while (iov_index > 0) {
- int iov_size;
-
- iov_size =
- ((iov_index > IOV_MAX) ? IOV_MAX : iov_index);
- if ((nbytes = writev(fd, c_iov, iov_size)) < 0) {
- zlog_warn("%s: writev to fd %d failed: %s",
- __func__, fd, safe_strerror(errno));
- break;
- }
-
- /* move pointer io-vector */
- c_iov += iov_size;
- iov_index -= iov_size;
- }
- }
-#else /* IOV_MAX */
- if ((nbytes = writev(fd, iov, iov_index)) < 0)
- zlog_warn("%s: writev to fd %d failed: %s",
- __func__, fd, safe_strerror(errno));
-#endif /* IOV_MAX */
-
- /* Free printed buffer data. */
- while (b->head && (b->head->sp == b->head->cp)) {
- struct buffer_data *del;
- if (!(b->head = (del = b->head)->next))
- b->tail = NULL;
- BUFFER_DATA_FREE(del);
- }
-
- if (iov != small_iov)
- XFREE(MTYPE_TMP, iov);
-
- return (nbytes < 0) ? BUFFER_ERROR :
- (b->head ? BUFFER_PENDING : BUFFER_EMPTY);
-}
-#endif
-
-/* This function (unlike other buffer_flush* functions above) is designed
-to work with non-blocking sockets. It does not attempt to write out
-all of the queued data, just a "big" chunk. It returns 0 if it was
-able to empty out the buffers completely, 1 if more flushing is
-required later, or -1 on a fatal write error. */
-buffer_status_t buffer_flush_available(struct buffer * b, int fd)
-{
-
-/* These are just reasonable values to make sure a significant amount of
-data is written. There's no need to go crazy and try to write it all
-in one shot. */
-#ifdef IOV_MAX
-#define MAX_CHUNKS ((IOV_MAX >= 16) ? 16 : IOV_MAX)
-#else
-#define MAX_CHUNKS 16
-#endif
-#define MAX_FLUSH 131072
-
- struct buffer_data *d;
- size_t written;
- struct iovec iov[MAX_CHUNKS];
- size_t iovcnt = 0;
- size_t nbyte = 0;
-
- for (d = b->head; d && (iovcnt < MAX_CHUNKS) && (nbyte < MAX_FLUSH);
- d = d->next, iovcnt++) {
- iov[iovcnt].iov_base = d->data + d->sp;
- nbyte += (iov[iovcnt].iov_len = d->cp - d->sp);
- }
-
- if (!nbyte)
- /* No data to flush: should we issue a warning message? */
- return BUFFER_EMPTY;
-
- /* only place where written should be sign compared */
- if ((ssize_t) (written = writev(fd, iov, iovcnt)) < 0) {
- if (ERRNO_IO_RETRY(errno))
- /* Calling code should try again later. */
- return BUFFER_PENDING;
- return BUFFER_ERROR;
- }
-
- /* Free printed buffer data. */
- while (written > 0) {
- struct buffer_data *d;
- if (!(d = b->head))
- break;
- if (written < d->cp - d->sp) {
- d->sp += written;
- return BUFFER_PENDING;
- }
-
- written -= (d->cp - d->sp);
- if (!(b->head = d->next))
- b->tail = NULL;
- BUFFER_DATA_FREE(d);
- }
-
- return b->head ? BUFFER_PENDING : BUFFER_EMPTY;
-
-#undef MAX_CHUNKS
-#undef MAX_FLUSH
-}
-
-buffer_status_t
-buffer_write(struct buffer * b, int fd, const void *p, size_t size)
-{
- ssize_t nbytes;
-
-#if 0
- /* Should we attempt to drain any previously buffered data? This could help reduce latency in pushing out the data if we are stuck in a long-running thread that is preventing the main select loop from calling the flush thread... */
-
- if (b->head && (buffer_flush_available(b, fd) == BUFFER_ERROR))
- return BUFFER_ERROR;
-#endif
- if (b->head)
- /* Buffer is not empty, so do not attempt to write the new data. */
- nbytes = 0;
- else if ((nbytes = write(fd, p, size)) < 0) {
- if (ERRNO_IO_RETRY(errno))
- nbytes = 0;
- else
- return BUFFER_ERROR;
- }
- /* Add any remaining data to the buffer. */
- {
- size_t written = nbytes;
- if (written < size)
- buffer_put(b, ((const char *)p) + written,
- size - written);
- }
- return b->head ? BUFFER_PENDING : BUFFER_EMPTY;
-}
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/vty/command.c b/Src/osmoconbb/src/shared/libosmocore/src/vty/command.c
deleted file mode 100644
index 1c8df61..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/vty/command.c
+++ /dev/null
@@ -1,3229 +0,0 @@
-/*
- $Id: command.c,v 1.47 2005/04/25 16:26:42 paul Exp $
-
- Command interpreter routine for virtual terminal [aka TeletYpe]
- Copyright (C) 1997, 98, 99 Kunihiro Ishiguro
-
-This file is part of GNU Zebra.
-
-GNU Zebra is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published
-by the Free Software Foundation; either version 2, or (at your
-option) any later version.
-
-GNU Zebra 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 GNU Zebra; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <syslog.h>
-#include <errno.h>
-#define _XOPEN_SOURCE
-#include <unistd.h>
-#include <assert.h>
-#include <ctype.h>
-#include <time.h>
-#include <sys/time.h>
-#include <sys/stat.h>
-
-#include <osmocom/vty/vector.h>
-#include <osmocom/vty/vty.h>
-#include <osmocom/vty/command.h>
-
-#include <osmocom/core/talloc.h>
-
-#define CONFIGFILE_MASK 022
-
-void *tall_vty_cmd_ctx;
-
-/* Command vector which includes some level of command lists. Normally
- each daemon maintains each own cmdvec. */
-vector cmdvec;
-
-/* Host information structure. */
-struct host host;
-
-/* Standard command node structures. */
-struct cmd_node auth_node = {
- AUTH_NODE,
- "Password: ",
-};
-
-struct cmd_node view_node = {
- VIEW_NODE,
- "%s> ",
-};
-
-struct cmd_node auth_enable_node = {
- AUTH_ENABLE_NODE,
- "Password: ",
-};
-
-struct cmd_node enable_node = {
- ENABLE_NODE,
- "%s# ",
-};
-
-struct cmd_node config_node = {
- CONFIG_NODE,
- "%s(config)# ",
- 1
-};
-
-/* Default motd string. */
-const char *default_motd = "";
-
-/* This is called from main when a daemon is invoked with -v or --version. */
-void print_version(int print_copyright)
-{
- printf("%s version %s\n", host.app_info->name, host.app_info->version);
- if (print_copyright)
- printf("\n%s\n", host.app_info->copyright);
-}
-
-/* Utility function to concatenate argv argument into a single string
- with inserting ' ' character between each argument. */
-char *argv_concat(const char **argv, int argc, int shift)
-{
- int i;
- size_t len;
- char *str;
- char *p;
-
- len = 0;
- for (i = shift; i < argc; i++)
- len += strlen(argv[i]) + 1;
- if (!len)
- return NULL;
- p = str = _talloc_zero(tall_vty_cmd_ctx, len, "arvg_concat");
- for (i = shift; i < argc; i++) {
- size_t arglen;
- memcpy(p, argv[i], (arglen = strlen(argv[i])));
- p += arglen;
- *p++ = ' ';
- }
- *(p - 1) = '\0';
- return str;
-}
-
-/* Install top node of command vector. */
-void install_node(struct cmd_node *node, int (*func) (struct vty *))
-{
- vector_set_index(cmdvec, node->node, node);
- node->func = func;
- node->cmd_vector = vector_init(VECTOR_MIN_SIZE);
-}
-
-/* Compare two command's string. Used in sort_node (). */
-static int cmp_node(const void *p, const void *q)
-{
- struct cmd_element *a = *(struct cmd_element **)p;
- struct cmd_element *b = *(struct cmd_element **)q;
-
- return strcmp(a->string, b->string);
-}
-
-static int cmp_desc(const void *p, const void *q)
-{
- struct desc *a = *(struct desc **)p;
- struct desc *b = *(struct desc **)q;
-
- return strcmp(a->cmd, b->cmd);
-}
-
-static int is_config(struct vty *vty)
-{
- if (vty->node <= CONFIG_NODE)
- return 0;
- else if (vty->node > CONFIG_NODE && vty->node < _LAST_OSMOVTY_NODE)
- return 1;
- else if (host.app_info->is_config_node)
- return host.app_info->is_config_node(vty, vty->node);
- else
- return vty->node > CONFIG_NODE;
-}
-
-/* Sort each node's command element according to command string. */
-void sort_node(void)
-{
- unsigned int i, j;
- struct cmd_node *cnode;
- vector descvec;
- struct cmd_element *cmd_element;
-
- for (i = 0; i < vector_active(cmdvec); i++)
- if ((cnode = vector_slot(cmdvec, i)) != NULL) {
- vector cmd_vector = cnode->cmd_vector;
- qsort(cmd_vector->index, vector_active(cmd_vector),
- sizeof(void *), cmp_node);
-
- for (j = 0; j < vector_active(cmd_vector); j++)
- if ((cmd_element =
- vector_slot(cmd_vector, j)) != NULL
- && vector_active(cmd_element->strvec)) {
- descvec =
- vector_slot(cmd_element->strvec,
- vector_active
- (cmd_element->strvec) -
- 1);
- qsort(descvec->index,
- vector_active(descvec),
- sizeof(void *), cmp_desc);
- }
- }
-}
-
-/* Breaking up string into each command piece. I assume given
- character is separated by a space character. Return value is a
- vector which includes char ** data element. */
-vector cmd_make_strvec(const char *string)
-{
- const char *cp, *start;
- char *token;
- int strlen;
- vector strvec;
-
- if (string == NULL)
- return NULL;
-
- cp = string;
-
- /* Skip white spaces. */
- while (isspace((int)*cp) && *cp != '\0')
- cp++;
-
- /* Return if there is only white spaces */
- if (*cp == '\0')
- return NULL;
-
- if (*cp == '!' || *cp == '#')
- return NULL;
-
- /* Prepare return vector. */
- strvec = vector_init(VECTOR_MIN_SIZE);
-
- /* Copy each command piece and set into vector. */
- while (1) {
- start = cp;
- while (!(isspace((int)*cp) || *cp == '\r' || *cp == '\n') &&
- *cp != '\0')
- cp++;
- strlen = cp - start;
- token = _talloc_zero(tall_vty_cmd_ctx, strlen + 1, "make_strvec");
- memcpy(token, start, strlen);
- *(token + strlen) = '\0';
- vector_set(strvec, token);
-
- while ((isspace((int)*cp) || *cp == '\n' || *cp == '\r') &&
- *cp != '\0')
- cp++;
-
- if (*cp == '\0')
- return strvec;
- }
-}
-
-/* Free allocated string vector. */
-void cmd_free_strvec(vector v)
-{
- unsigned int i;
- char *cp;
-
- if (!v)
- return;
-
- for (i = 0; i < vector_active(v); i++)
- if ((cp = vector_slot(v, i)) != NULL)
- talloc_free(cp);
-
- vector_free(v);
-}
-
-/* Fetch next description. Used in cmd_make_descvec(). */
-static char *cmd_desc_str(const char **string)
-{
- const char *cp, *start;
- char *token;
- int strlen;
-
- cp = *string;
-
- if (cp == NULL)
- return NULL;
-
- /* Skip white spaces. */
- while (isspace((int)*cp) && *cp != '\0')
- cp++;
-
- /* Return if there is only white spaces */
- if (*cp == '\0')
- return NULL;
-
- start = cp;
-
- while (!(*cp == '\r' || *cp == '\n') && *cp != '\0')
- cp++;
-
- strlen = cp - start;
- token = _talloc_zero(tall_vty_cmd_ctx, strlen + 1, "cmd_desc_str");
- memcpy(token, start, strlen);
- *(token + strlen) = '\0';
-
- *string = cp;
-
- return token;
-}
-
-/* New string vector. */
-static vector cmd_make_descvec(const char *string, const char *descstr)
-{
- int multiple = 0;
- const char *sp;
- char *token;
- int len;
- const char *cp;
- const char *dp;
- vector allvec;
- vector strvec = NULL;
- struct desc *desc;
-
- cp = string;
- dp = descstr;
-
- if (cp == NULL)
- return NULL;
-
- allvec = vector_init(VECTOR_MIN_SIZE);
-
- while (1) {
- while (isspace((int)*cp) && *cp != '\0')
- cp++;
-
- if (*cp == '(') {
- multiple = 1;
- cp++;
- }
- if (*cp == ')') {
- multiple = 0;
- cp++;
- }
- if (*cp == '|') {
- if (!multiple) {
- fprintf(stderr, "Command parse error!: %s\n",
- string);
- exit(1);
- }
- cp++;
- }
-
- while (isspace((int)*cp) && *cp != '\0')
- cp++;
-
- if (*cp == '(') {
- multiple = 1;
- cp++;
- }
-
- if (*cp == '\0')
- return allvec;
-
- sp = cp;
-
- while (!
- (isspace((int)*cp) || *cp == '\r' || *cp == '\n'
- || *cp == ')' || *cp == '|') && *cp != '\0')
- cp++;
-
- len = cp - sp;
-
- token = _talloc_zero(tall_vty_cmd_ctx, len + 1, "cmd_make_descvec");
- memcpy(token, sp, len);
- *(token + len) = '\0';
-
- desc = talloc_zero(tall_vty_cmd_ctx, struct desc);
- desc->cmd = token;
- desc->str = cmd_desc_str(&dp);
-
- if (multiple) {
- if (multiple == 1) {
- strvec = vector_init(VECTOR_MIN_SIZE);
- vector_set(allvec, strvec);
- }
- multiple++;
- } else {
- strvec = vector_init(VECTOR_MIN_SIZE);
- vector_set(allvec, strvec);
- }
- vector_set(strvec, desc);
- }
-}
-
-/* Count mandantory string vector size. This is to determine inputed
- command has enough command length. */
-static int cmd_cmdsize(vector strvec)
-{
- unsigned int i;
- int size = 0;
- vector descvec;
- struct desc *desc;
-
- for (i = 0; i < vector_active(strvec); i++)
- if ((descvec = vector_slot(strvec, i)) != NULL) {
- if ((vector_active(descvec)) == 1
- && (desc = vector_slot(descvec, 0)) != NULL) {
- if (desc->cmd == NULL || CMD_OPTION(desc->cmd))
- return size;
- else
- size++;
- } else
- size++;
- }
- return size;
-}
-
-/* Return prompt character of specified node. */
-const char *cmd_prompt(enum node_type node)
-{
- struct cmd_node *cnode;
-
- cnode = vector_slot(cmdvec, node);
- return cnode->prompt;
-}
-
-/* Install a command into a node. */
-void install_element(enum node_type ntype, struct cmd_element *cmd)
-{
- struct cmd_node *cnode;
-
- cnode = vector_slot(cmdvec, ntype);
-
- if (cnode == NULL) {
- fprintf(stderr,
- "Command node %d doesn't exist, please check it\n",
- ntype);
- exit(1);
- }
-
- vector_set(cnode->cmd_vector, cmd);
-
- cmd->strvec = cmd_make_descvec(cmd->string, cmd->doc);
- cmd->cmdsize = cmd_cmdsize(cmd->strvec);
-}
-
-/* Install a command into VIEW and ENABLE node */
-void install_element_ve(struct cmd_element *cmd)
-{
- install_element(VIEW_NODE, cmd);
- install_element(ENABLE_NODE, cmd);
-}
-
-#ifdef VTY_CRYPT_PW
-static unsigned char itoa64[] =
- "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
-
-static void to64(char *s, long v, int n)
-{
- while (--n >= 0) {
- *s++ = itoa64[v & 0x3f];
- v >>= 6;
- }
-}
-
-static char *zencrypt(const char *passwd)
-{
- char salt[6];
- struct timeval tv;
- char *crypt(const char *, const char *);
-
- gettimeofday(&tv, 0);
-
- to64(&salt[0], random(), 3);
- to64(&salt[3], tv.tv_usec, 3);
- salt[5] = '\0';
-
- return crypt(passwd, salt);
-}
-#endif
-
-/* This function write configuration of this host. */
-static int config_write_host(struct vty *vty)
-{
- if (host.name)
- vty_out(vty, "hostname %s%s", host.name, VTY_NEWLINE);
-
- if (host.encrypt) {
- if (host.password_encrypt)
- vty_out(vty, "password 8 %s%s", host.password_encrypt,
- VTY_NEWLINE);
- if (host.enable_encrypt)
- vty_out(vty, "enable password 8 %s%s",
- host.enable_encrypt, VTY_NEWLINE);
- } else {
- if (host.password)
- vty_out(vty, "password %s%s", host.password,
- VTY_NEWLINE);
- if (host.enable)
- vty_out(vty, "enable password %s%s", host.enable,
- VTY_NEWLINE);
- }
-
- if (host.advanced)
- vty_out(vty, "service advanced-vty%s", VTY_NEWLINE);
-
- if (host.encrypt)
- vty_out(vty, "service password-encryption%s", VTY_NEWLINE);
-
- if (host.lines >= 0)
- vty_out(vty, "service terminal-length %d%s", host.lines,
- VTY_NEWLINE);
-
- if (host.motdfile)
- vty_out(vty, "banner motd file %s%s", host.motdfile,
- VTY_NEWLINE);
- else if (!host.motd)
- vty_out(vty, "no banner motd%s", VTY_NEWLINE);
-
- return 1;
-}
-
-/* Utility function for getting command vector. */
-static vector cmd_node_vector(vector v, enum node_type ntype)
-{
- struct cmd_node *cnode = vector_slot(v, ntype);
- return cnode->cmd_vector;
-}
-
-/* Completion match types. */
-enum match_type {
- no_match,
- extend_match,
- ipv4_prefix_match,
- ipv4_match,
- ipv6_prefix_match,
- ipv6_match,
- range_match,
- vararg_match,
- partly_match,
- exact_match
-};
-
-static enum match_type cmd_ipv4_match(const char *str)
-{
- const char *sp;
- int dots = 0, nums = 0;
- char buf[4];
-
- if (str == NULL)
- return partly_match;
-
- for (;;) {
- memset(buf, 0, sizeof(buf));
- sp = str;
- while (*str != '\0') {
- if (*str == '.') {
- if (dots >= 3)
- return no_match;
-
- if (*(str + 1) == '.')
- return no_match;
-
- if (*(str + 1) == '\0')
- return partly_match;
-
- dots++;
- break;
- }
- if (!isdigit((int)*str))
- return no_match;
-
- str++;
- }
-
- if (str - sp > 3)
- return no_match;
-
- strncpy(buf, sp, str - sp);
- if (atoi(buf) > 255)
- return no_match;
-
- nums++;
-
- if (*str == '\0')
- break;
-
- str++;
- }
-
- if (nums < 4)
- return partly_match;
-
- return exact_match;
-}
-
-static enum match_type cmd_ipv4_prefix_match(const char *str)
-{
- const char *sp;
- int dots = 0;
- char buf[4];
-
- if (str == NULL)
- return partly_match;
-
- for (;;) {
- memset(buf, 0, sizeof(buf));
- sp = str;
- while (*str != '\0' && *str != '/') {
- if (*str == '.') {
- if (dots == 3)
- return no_match;
-
- if (*(str + 1) == '.' || *(str + 1) == '/')
- return no_match;
-
- if (*(str + 1) == '\0')
- return partly_match;
-
- dots++;
- break;
- }
-
- if (!isdigit((int)*str))
- return no_match;
-
- str++;
- }
-
- if (str - sp > 3)
- return no_match;
-
- strncpy(buf, sp, str - sp);
- if (atoi(buf) > 255)
- return no_match;
-
- if (dots == 3) {
- if (*str == '/') {
- if (*(str + 1) == '\0')
- return partly_match;
-
- str++;
- break;
- } else if (*str == '\0')
- return partly_match;
- }
-
- if (*str == '\0')
- return partly_match;
-
- str++;
- }
-
- sp = str;
- while (*str != '\0') {
- if (!isdigit((int)*str))
- return no_match;
-
- str++;
- }
-
- if (atoi(sp) > 32)
- return no_match;
-
- return exact_match;
-}
-
-#define IPV6_ADDR_STR "0123456789abcdefABCDEF:.%"
-#define IPV6_PREFIX_STR "0123456789abcdefABCDEF:.%/"
-#define STATE_START 1
-#define STATE_COLON 2
-#define STATE_DOUBLE 3
-#define STATE_ADDR 4
-#define STATE_DOT 5
-#define STATE_SLASH 6
-#define STATE_MASK 7
-
-#ifdef HAVE_IPV6
-
-static enum match_type cmd_ipv6_match(const char *str)
-{
- int state = STATE_START;
- int colons = 0, nums = 0, double_colon = 0;
- const char *sp = NULL;
- struct sockaddr_in6 sin6_dummy;
- int ret;
-
- if (str == NULL)
- return partly_match;
-
- if (strspn(str, IPV6_ADDR_STR) != strlen(str))
- return no_match;
-
- /* use inet_pton that has a better support,
- * for example inet_pton can support the automatic addresses:
- * ::1.2.3.4
- */
- ret = inet_pton(AF_INET6, str, &sin6_dummy.sin6_addr);
-
- if (ret == 1)
- return exact_match;
-
- while (*str != '\0') {
- switch (state) {
- case STATE_START:
- if (*str == ':') {
- if (*(str + 1) != ':' && *(str + 1) != '\0')
- return no_match;
- colons--;
- state = STATE_COLON;
- } else {
- sp = str;
- state = STATE_ADDR;
- }
-
- continue;
- case STATE_COLON:
- colons++;
- if (*(str + 1) == ':')
- state = STATE_DOUBLE;
- else {
- sp = str + 1;
- state = STATE_ADDR;
- }
- break;
- case STATE_DOUBLE:
- if (double_colon)
- return no_match;
-
- if (*(str + 1) == ':')
- return no_match;
- else {
- if (*(str + 1) != '\0')
- colons++;
- sp = str + 1;
- state = STATE_ADDR;
- }
-
- double_colon++;
- nums++;
- break;
- case STATE_ADDR:
- if (*(str + 1) == ':' || *(str + 1) == '\0') {
- if (str - sp > 3)
- return no_match;
-
- nums++;
- state = STATE_COLON;
- }
- if (*(str + 1) == '.')
- state = STATE_DOT;
- break;
- case STATE_DOT:
- state = STATE_ADDR;
- break;
- default:
- break;
- }
-
- if (nums > 8)
- return no_match;
-
- if (colons > 7)
- return no_match;
-
- str++;
- }
-
-#if 0
- if (nums < 11)
- return partly_match;
-#endif /* 0 */
-
- return exact_match;
-}
-
-static enum match_type cmd_ipv6_prefix_match(const char *str)
-{
- int state = STATE_START;
- int colons = 0, nums = 0, double_colon = 0;
- int mask;
- const char *sp = NULL;
- char *endptr = NULL;
-
- if (str == NULL)
- return partly_match;
-
- if (strspn(str, IPV6_PREFIX_STR) != strlen(str))
- return no_match;
-
- while (*str != '\0' && state != STATE_MASK) {
- switch (state) {
- case STATE_START:
- if (*str == ':') {
- if (*(str + 1) != ':' && *(str + 1) != '\0')
- return no_match;
- colons--;
- state = STATE_COLON;
- } else {
- sp = str;
- state = STATE_ADDR;
- }
-
- continue;
- case STATE_COLON:
- colons++;
- if (*(str + 1) == '/')
- return no_match;
- else if (*(str + 1) == ':')
- state = STATE_DOUBLE;
- else {
- sp = str + 1;
- state = STATE_ADDR;
- }
- break;
- case STATE_DOUBLE:
- if (double_colon)
- return no_match;
-
- if (*(str + 1) == ':')
- return no_match;
- else {
- if (*(str + 1) != '\0' && *(str + 1) != '/')
- colons++;
- sp = str + 1;
-
- if (*(str + 1) == '/')
- state = STATE_SLASH;
- else
- state = STATE_ADDR;
- }
-
- double_colon++;
- nums += 1;
- break;
- case STATE_ADDR:
- if (*(str + 1) == ':' || *(str + 1) == '.'
- || *(str + 1) == '\0' || *(str + 1) == '/') {
- if (str - sp > 3)
- return no_match;
-
- for (; sp <= str; sp++)
- if (*sp == '/')
- return no_match;
-
- nums++;
-
- if (*(str + 1) == ':')
- state = STATE_COLON;
- else if (*(str + 1) == '.')
- state = STATE_DOT;
- else if (*(str + 1) == '/')
- state = STATE_SLASH;
- }
- break;
- case STATE_DOT:
- state = STATE_ADDR;
- break;
- case STATE_SLASH:
- if (*(str + 1) == '\0')
- return partly_match;
-
- state = STATE_MASK;
- break;
- default:
- break;
- }
-
- if (nums > 11)
- return no_match;
-
- if (colons > 7)
- return no_match;
-
- str++;
- }
-
- if (state < STATE_MASK)
- return partly_match;
-
- mask = strtol(str, &endptr, 10);
- if (*endptr != '\0')
- return no_match;
-
- if (mask < 0 || mask > 128)
- return no_match;
-
-/* I don't know why mask < 13 makes command match partly.
- Forgive me to make this comments. I Want to set static default route
- because of lack of function to originate default in ospf6d; sorry
- yasu
- if (mask < 13)
- return partly_match;
-*/
-
- return exact_match;
-}
-
-#endif /* HAVE_IPV6 */
-
-#define DECIMAL_STRLEN_MAX 10
-
-static int cmd_range_match(const char *range, const char *str)
-{
- char *p;
- char buf[DECIMAL_STRLEN_MAX + 1];
- char *endptr = NULL;
-
- if (str == NULL)
- return 1;
-
- if (range[1] == '-') {
- signed long min = 0, max = 0, val;
-
- val = strtol(str, &endptr, 10);
- if (*endptr != '\0')
- return 0;
-
- range += 2;
- p = strchr(range, '-');
- if (p == NULL)
- return 0;
- if (p - range > DECIMAL_STRLEN_MAX)
- return 0;
- strncpy(buf, range, p - range);
- buf[p - range] = '\0';
- min = -strtol(buf, &endptr, 10);
- if (*endptr != '\0')
- return 0;
-
- range = p + 1;
- p = strchr(range, '>');
- if (p == NULL)
- return 0;
- if (p - range > DECIMAL_STRLEN_MAX)
- return 0;
- strncpy(buf, range, p - range);
- buf[p - range] = '\0';
- max = strtol(buf, &endptr, 10);
- if (*endptr != '\0')
- return 0;
-
- if (val < min || val > max)
- return 0;
- } else {
- unsigned long min, max, val;
-
- val = strtoul(str, &endptr, 10);
- if (*endptr != '\0')
- return 0;
-
- range++;
- p = strchr(range, '-');
- if (p == NULL)
- return 0;
- if (p - range > DECIMAL_STRLEN_MAX)
- return 0;
- strncpy(buf, range, p - range);
- buf[p - range] = '\0';
- min = strtoul(buf, &endptr, 10);
- if (*endptr != '\0')
- return 0;
-
- range = p + 1;
- p = strchr(range, '>');
- if (p == NULL)
- return 0;
- if (p - range > DECIMAL_STRLEN_MAX)
- return 0;
- strncpy(buf, range, p - range);
- buf[p - range] = '\0';
- max = strtoul(buf, &endptr, 10);
- if (*endptr != '\0')
- return 0;
-
- if (val < min || val > max)
- return 0;
- }
-
- return 1;
-}
-
-/* Make completion match and return match type flag. */
-static enum match_type
-cmd_filter_by_completion(char *command, vector v, unsigned int index)
-{
- unsigned int i;
- const char *str;
- struct cmd_element *cmd_element;
- enum match_type match_type;
- vector descvec;
- struct desc *desc;
-
- match_type = no_match;
-
- /* If command and cmd_element string does not match set NULL to vector */
- for (i = 0; i < vector_active(v); i++)
- if ((cmd_element = vector_slot(v, i)) != NULL) {
- if (index >= vector_active(cmd_element->strvec))
- vector_slot(v, i) = NULL;
- else {
- unsigned int j;
- int matched = 0;
-
- descvec =
- vector_slot(cmd_element->strvec, index);
-
- for (j = 0; j < vector_active(descvec); j++)
- if ((desc = vector_slot(descvec, j))) {
- str = desc->cmd;
-
- if (CMD_VARARG(str)) {
- if (match_type <
- vararg_match)
- match_type =
- vararg_match;
- matched++;
- } else if (CMD_RANGE(str)) {
- if (cmd_range_match
- (str, command)) {
- if (match_type <
- range_match)
- match_type
- =
- range_match;
-
- matched++;
- }
- }
-#ifdef HAVE_IPV6
- else if (CMD_IPV6(str)) {
- if (cmd_ipv6_match
- (command)) {
- if (match_type <
- ipv6_match)
- match_type
- =
- ipv6_match;
-
- matched++;
- }
- } else if (CMD_IPV6_PREFIX(str)) {
- if (cmd_ipv6_prefix_match(command)) {
- if (match_type <
- ipv6_prefix_match)
- match_type
- =
- ipv6_prefix_match;
-
- matched++;
- }
- }
-#endif /* HAVE_IPV6 */
- else if (CMD_IPV4(str)) {
- if (cmd_ipv4_match
- (command)) {
- if (match_type <
- ipv4_match)
- match_type
- =
- ipv4_match;
-
- matched++;
- }
- } else if (CMD_IPV4_PREFIX(str)) {
- if (cmd_ipv4_prefix_match(command)) {
- if (match_type <
- ipv4_prefix_match)
- match_type
- =
- ipv4_prefix_match;
- matched++;
- }
- } else
- /* Check is this point's argument optional ? */
- if (CMD_OPTION(str)
- ||
- CMD_VARIABLE(str)) {
- if (match_type <
- extend_match)
- match_type =
- extend_match;
- matched++;
- } else
- if (strncmp
- (command, str,
- strlen(command)) ==
- 0) {
- if (strcmp(command, str)
- == 0)
- match_type =
- exact_match;
- else {
- if (match_type <
- partly_match)
- match_type
- =
- partly_match;
- }
- matched++;
- }
- }
- if (!matched)
- vector_slot(v, i) = NULL;
- }
- }
- return match_type;
-}
-
-/* Filter vector by command character with index. */
-static enum match_type
-cmd_filter_by_string(char *command, vector v, unsigned int index)
-{
- unsigned int i;
- const char *str;
- struct cmd_element *cmd_element;
- enum match_type match_type;
- vector descvec;
- struct desc *desc;
-
- match_type = no_match;
-
- /* If command and cmd_element string does not match set NULL to vector */
- for (i = 0; i < vector_active(v); i++)
- if ((cmd_element = vector_slot(v, i)) != NULL) {
- /* If given index is bigger than max string vector of command,
- set NULL */
- if (index >= vector_active(cmd_element->strvec))
- vector_slot(v, i) = NULL;
- else {
- unsigned int j;
- int matched = 0;
-
- descvec =
- vector_slot(cmd_element->strvec, index);
-
- for (j = 0; j < vector_active(descvec); j++)
- if ((desc = vector_slot(descvec, j))) {
- str = desc->cmd;
-
- if (CMD_VARARG(str)) {
- if (match_type <
- vararg_match)
- match_type =
- vararg_match;
- matched++;
- } else if (CMD_RANGE(str)) {
- if (cmd_range_match
- (str, command)) {
- if (match_type <
- range_match)
- match_type
- =
- range_match;
- matched++;
- }
- }
-#ifdef HAVE_IPV6
- else if (CMD_IPV6(str)) {
- if (cmd_ipv6_match
- (command) ==
- exact_match) {
- if (match_type <
- ipv6_match)
- match_type
- =
- ipv6_match;
- matched++;
- }
- } else if (CMD_IPV6_PREFIX(str)) {
- if (cmd_ipv6_prefix_match(command) == exact_match) {
- if (match_type <
- ipv6_prefix_match)
- match_type
- =
- ipv6_prefix_match;
- matched++;
- }
- }
-#endif /* HAVE_IPV6 */
- else if (CMD_IPV4(str)) {
- if (cmd_ipv4_match
- (command) ==
- exact_match) {
- if (match_type <
- ipv4_match)
- match_type
- =
- ipv4_match;
- matched++;
- }
- } else if (CMD_IPV4_PREFIX(str)) {
- if (cmd_ipv4_prefix_match(command) == exact_match) {
- if (match_type <
- ipv4_prefix_match)
- match_type
- =
- ipv4_prefix_match;
- matched++;
- }
- } else if (CMD_OPTION(str)
- || CMD_VARIABLE(str))
- {
- if (match_type <
- extend_match)
- match_type =
- extend_match;
- matched++;
- } else {
- if (strcmp(command, str)
- == 0) {
- match_type =
- exact_match;
- matched++;
- }
- }
- }
- if (!matched)
- vector_slot(v, i) = NULL;
- }
- }
- return match_type;
-}
-
-/* Check ambiguous match */
-static int
-is_cmd_ambiguous(char *command, vector v, int index, enum match_type type)
-{
- unsigned int i;
- unsigned int j;
- const char *str = NULL;
- struct cmd_element *cmd_element;
- const char *matched = NULL;
- vector descvec;
- struct desc *desc;
-
- for (i = 0; i < vector_active(v); i++)
- if ((cmd_element = vector_slot(v, i)) != NULL) {
- int match = 0;
-
- descvec = vector_slot(cmd_element->strvec, index);
-
- for (j = 0; j < vector_active(descvec); j++)
- if ((desc = vector_slot(descvec, j))) {
- enum match_type ret;
-
- str = desc->cmd;
-
- switch (type) {
- case exact_match:
- if (!
- (CMD_OPTION(str)
- || CMD_VARIABLE(str))
-&& strcmp(command, str) == 0)
- match++;
- break;
- case partly_match:
- if (!
- (CMD_OPTION(str)
- || CMD_VARIABLE(str))
-&& strncmp(command, str, strlen(command)) == 0) {
- if (matched
- && strcmp(matched,
- str) != 0)
- return 1; /* There is ambiguous match. */
- else
- matched = str;
- match++;
- }
- break;
- case range_match:
- if (cmd_range_match
- (str, command)) {
- if (matched
- && strcmp(matched,
- str) != 0)
- return 1;
- else
- matched = str;
- match++;
- }
- break;
-#ifdef HAVE_IPV6
- case ipv6_match:
- if (CMD_IPV6(str))
- match++;
- break;
- case ipv6_prefix_match:
- if ((ret =
- cmd_ipv6_prefix_match
- (command)) != no_match) {
- if (ret == partly_match)
- return 2; /* There is incomplete match. */
-
- match++;
- }
- break;
-#endif /* HAVE_IPV6 */
- case ipv4_match:
- if (CMD_IPV4(str))
- match++;
- break;
- case ipv4_prefix_match:
- if ((ret =
- cmd_ipv4_prefix_match
- (command)) != no_match) {
- if (ret == partly_match)
- return 2; /* There is incomplete match. */
-
- match++;
- }
- break;
- case extend_match:
- if (CMD_OPTION(str)
- || CMD_VARIABLE(str))
- match++;
- break;
- case no_match:
- default:
- break;
- }
- }
- if (!match)
- vector_slot(v, i) = NULL;
- }
- return 0;
-}
-
-/* If src matches dst return dst string, otherwise return NULL */
-static const char *cmd_entry_function(const char *src, const char *dst)
-{
- /* Skip variable arguments. */
- if (CMD_OPTION(dst) || CMD_VARIABLE(dst) || CMD_VARARG(dst) ||
- CMD_IPV4(dst) || CMD_IPV4_PREFIX(dst) || CMD_RANGE(dst))
- return NULL;
-
- /* In case of 'command \t', given src is NULL string. */
- if (src == NULL)
- return dst;
-
- /* Matched with input string. */
- if (strncmp(src, dst, strlen(src)) == 0)
- return dst;
-
- return NULL;
-}
-
-/* If src matches dst return dst string, otherwise return NULL */
-/* This version will return the dst string always if it is
- CMD_VARIABLE for '?' key processing */
-static const char *cmd_entry_function_desc(const char *src, const char *dst)
-{
- if (CMD_VARARG(dst))
- return dst;
-
- if (CMD_RANGE(dst)) {
- if (cmd_range_match(dst, src))
- return dst;
- else
- return NULL;
- }
-#ifdef HAVE_IPV6
- if (CMD_IPV6(dst)) {
- if (cmd_ipv6_match(src))
- return dst;
- else
- return NULL;
- }
-
- if (CMD_IPV6_PREFIX(dst)) {
- if (cmd_ipv6_prefix_match(src))
- return dst;
- else
- return NULL;
- }
-#endif /* HAVE_IPV6 */
-
- if (CMD_IPV4(dst)) {
- if (cmd_ipv4_match(src))
- return dst;
- else
- return NULL;
- }
-
- if (CMD_IPV4_PREFIX(dst)) {
- if (cmd_ipv4_prefix_match(src))
- return dst;
- else
- return NULL;
- }
-
- /* Optional or variable commands always match on '?' */
- if (CMD_OPTION(dst) || CMD_VARIABLE(dst))
- return dst;
-
- /* In case of 'command \t', given src is NULL string. */
- if (src == NULL)
- return dst;
-
- if (strncmp(src, dst, strlen(src)) == 0)
- return dst;
- else
- return NULL;
-}
-
-/* Check same string element existence. If it isn't there return
- 1. */
-static int cmd_unique_string(vector v, const char *str)
-{
- unsigned int i;
- char *match;
-
- for (i = 0; i < vector_active(v); i++)
- if ((match = vector_slot(v, i)) != NULL)
- if (strcmp(match, str) == 0)
- return 0;
- return 1;
-}
-
-/* Compare string to description vector. If there is same string
- return 1 else return 0. */
-static int desc_unique_string(vector v, const char *str)
-{
- unsigned int i;
- struct desc *desc;
-
- for (i = 0; i < vector_active(v); i++)
- if ((desc = vector_slot(v, i)) != NULL)
- if (strcmp(desc->cmd, str) == 0)
- return 1;
- return 0;
-}
-
-static int cmd_try_do_shortcut(enum node_type node, char *first_word)
-{
- if (first_word != NULL &&
- node != AUTH_NODE &&
- node != VIEW_NODE &&
- node != AUTH_ENABLE_NODE &&
- node != ENABLE_NODE && 0 == strcmp("do", first_word))
- return 1;
- return 0;
-}
-
-/* '?' describe command support. */
-static vector
-cmd_describe_command_real(vector vline, struct vty *vty, int *status)
-{
- unsigned int i;
- vector cmd_vector;
-#define INIT_MATCHVEC_SIZE 10
- vector matchvec;
- struct cmd_element *cmd_element;
- unsigned int index;
- int ret;
- enum match_type match;
- char *command;
- static struct desc desc_cr = { "<cr>", "" };
-
- /* Set index. */
- if (vector_active(vline) == 0) {
- *status = CMD_ERR_NO_MATCH;
- return NULL;
- } else
- index = vector_active(vline) - 1;
-
- /* Make copy vector of current node's command vector. */
- cmd_vector = vector_copy(cmd_node_vector(cmdvec, vty->node));
-
- /* Prepare match vector */
- matchvec = vector_init(INIT_MATCHVEC_SIZE);
-
- /* Filter commands. */
- /* Only words precedes current word will be checked in this loop. */
- for (i = 0; i < index; i++)
- if ((command = vector_slot(vline, i))) {
- match =
- cmd_filter_by_completion(command, cmd_vector, i);
-
- if (match == vararg_match) {
- struct cmd_element *cmd_element;
- vector descvec;
- unsigned int j, k;
-
- for (j = 0; j < vector_active(cmd_vector); j++)
- if ((cmd_element =
- vector_slot(cmd_vector, j)) != NULL
- &&
- (vector_active
- (cmd_element->strvec))) {
- descvec =
- vector_slot(cmd_element->
- strvec,
- vector_active
- (cmd_element->
- strvec) - 1);
- for (k = 0;
- k < vector_active(descvec);
- k++) {
- struct desc *desc =
- vector_slot(descvec,
- k);
- vector_set(matchvec,
- desc);
- }
- }
-
- vector_set(matchvec, &desc_cr);
- vector_free(cmd_vector);
-
- return matchvec;
- }
-
- if ((ret =
- is_cmd_ambiguous(command, cmd_vector, i,
- match)) == 1) {
- vector_free(cmd_vector);
- *status = CMD_ERR_AMBIGUOUS;
- return NULL;
- } else if (ret == 2) {
- vector_free(cmd_vector);
- *status = CMD_ERR_NO_MATCH;
- return NULL;
- }
- }
-
- /* Prepare match vector */
- /* matchvec = vector_init (INIT_MATCHVEC_SIZE); */
-
- /* Make sure that cmd_vector is filtered based on current word */
- command = vector_slot(vline, index);
- if (command)
- match = cmd_filter_by_completion(command, cmd_vector, index);
-
- /* Make description vector. */
- for (i = 0; i < vector_active(cmd_vector); i++)
- if ((cmd_element = vector_slot(cmd_vector, i)) != NULL) {
- const char *string = NULL;
- vector strvec = cmd_element->strvec;
-
- /* if command is NULL, index may be equal to vector_active */
- if (command && index >= vector_active(strvec))
- vector_slot(cmd_vector, i) = NULL;
- else {
- /* Check if command is completed. */
- if (command == NULL
- && index == vector_active(strvec)) {
- string = "<cr>";
- if (!desc_unique_string
- (matchvec, string))
- vector_set(matchvec, &desc_cr);
- } else {
- unsigned int j;
- vector descvec =
- vector_slot(strvec, index);
- struct desc *desc;
-
- for (j = 0; j < vector_active(descvec);
- j++)
- if ((desc =
- vector_slot(descvec, j))) {
- string =
- cmd_entry_function_desc
- (command,
- desc->cmd);
- if (string) {
- /* Uniqueness check */
- if (!desc_unique_string(matchvec, string))
- vector_set
- (matchvec,
- desc);
- }
- }
- }
- }
- }
- vector_free(cmd_vector);
-
- if (vector_slot(matchvec, 0) == NULL) {
- vector_free(matchvec);
- *status = CMD_ERR_NO_MATCH;
- } else
- *status = CMD_SUCCESS;
-
- return matchvec;
-}
-
-vector cmd_describe_command(vector vline, struct vty * vty, int *status)
-{
- vector ret;
-
- if (cmd_try_do_shortcut(vty->node, vector_slot(vline, 0))) {
- enum node_type onode;
- vector shifted_vline;
- unsigned int index;
-
- onode = vty->node;
- vty->node = ENABLE_NODE;
- /* We can try it on enable node, cos' the vty is authenticated */
-
- shifted_vline = vector_init(vector_count(vline));
- /* use memcpy? */
- for (index = 1; index < vector_active(vline); index++) {
- vector_set_index(shifted_vline, index - 1,
- vector_lookup(vline, index));
- }
-
- ret = cmd_describe_command_real(shifted_vline, vty, status);
-
- vector_free(shifted_vline);
- vty->node = onode;
- return ret;
- }
-
- return cmd_describe_command_real(vline, vty, status);
-}
-
-/* Check LCD of matched command. */
-static int cmd_lcd(char **matched)
-{
- int i;
- int j;
- int lcd = -1;
- char *s1, *s2;
- char c1, c2;
-
- if (matched[0] == NULL || matched[1] == NULL)
- return 0;
-
- for (i = 1; matched[i] != NULL; i++) {
- s1 = matched[i - 1];
- s2 = matched[i];
-
- for (j = 0; (c1 = s1[j]) && (c2 = s2[j]); j++)
- if (c1 != c2)
- break;
-
- if (lcd < 0)
- lcd = j;
- else {
- if (lcd > j)
- lcd = j;
- }
- }
- return lcd;
-}
-
-/* Command line completion support. */
-static char **cmd_complete_command_real(vector vline, struct vty *vty,
- int *status)
-{
- unsigned int i;
- vector cmd_vector = vector_copy(cmd_node_vector(cmdvec, vty->node));
-#define INIT_MATCHVEC_SIZE 10
- vector matchvec;
- struct cmd_element *cmd_element;
- unsigned int index;
- char **match_str;
- struct desc *desc;
- vector descvec;
- char *command;
- int lcd;
-
- if (vector_active(vline) == 0) {
- *status = CMD_ERR_NO_MATCH;
- return NULL;
- } else
- index = vector_active(vline) - 1;
-
- /* First, filter by preceeding command string */
- for (i = 0; i < index; i++)
- if ((command = vector_slot(vline, i))) {
- enum match_type match;
- int ret;
-
- /* First try completion match, if there is exactly match return 1 */
- match =
- cmd_filter_by_completion(command, cmd_vector, i);
-
- /* If there is exact match then filter ambiguous match else check
- ambiguousness. */
- if ((ret =
- is_cmd_ambiguous(command, cmd_vector, i,
- match)) == 1) {
- vector_free(cmd_vector);
- *status = CMD_ERR_AMBIGUOUS;
- return NULL;
- }
- /*
- else if (ret == 2)
- {
- vector_free (cmd_vector);
- *status = CMD_ERR_NO_MATCH;
- return NULL;
- }
- */
- }
-
- /* Prepare match vector. */
- matchvec = vector_init(INIT_MATCHVEC_SIZE);
-
- /* Now we got into completion */
- for (i = 0; i < vector_active(cmd_vector); i++)
- if ((cmd_element = vector_slot(cmd_vector, i))) {
- const char *string;
- vector strvec = cmd_element->strvec;
-
- /* Check field length */
- if (index >= vector_active(strvec))
- vector_slot(cmd_vector, i) = NULL;
- else {
- unsigned int j;
-
- descvec = vector_slot(strvec, index);
- for (j = 0; j < vector_active(descvec); j++)
- if ((desc = vector_slot(descvec, j))) {
- if ((string = cmd_entry_function(vector_slot(vline, index), desc->cmd)))
- if (cmd_unique_string (matchvec, string))
- vector_set (matchvec, talloc_strdup(tall_vty_cmd_ctx, string));
- }
- }
- }
-
- /* We don't need cmd_vector any more. */
- vector_free(cmd_vector);
-
- /* No matched command */
- if (vector_slot(matchvec, 0) == NULL) {
- vector_free(matchvec);
-
- /* In case of 'command \t' pattern. Do you need '?' command at
- the end of the line. */
- if (vector_slot(vline, index) == '\0')
- *status = CMD_ERR_NOTHING_TODO;
- else
- *status = CMD_ERR_NO_MATCH;
- return NULL;
- }
-
- /* Only one matched */
- if (vector_slot(matchvec, 1) == NULL) {
- match_str = (char **)matchvec->index;
- vector_only_wrapper_free(matchvec);
- *status = CMD_COMPLETE_FULL_MATCH;
- return match_str;
- }
- /* Make it sure last element is NULL. */
- vector_set(matchvec, NULL);
-
- /* Check LCD of matched strings. */
- if (vector_slot(vline, index) != NULL) {
- lcd = cmd_lcd((char **)matchvec->index);
-
- if (lcd) {
- int len = strlen(vector_slot(vline, index));
-
- if (len < lcd) {
- char *lcdstr;
-
- lcdstr = _talloc_zero(tall_vty_cmd_ctx, lcd + 1,
- "complete-lcdstr");
- memcpy(lcdstr, matchvec->index[0], lcd);
- lcdstr[lcd] = '\0';
-
- /* match_str = (char **) &lcdstr; */
-
- /* Free matchvec. */
- for (i = 0; i < vector_active(matchvec); i++) {
- if (vector_slot(matchvec, i))
- talloc_free(vector_slot(matchvec, i));
- }
- vector_free(matchvec);
-
- /* Make new matchvec. */
- matchvec = vector_init(INIT_MATCHVEC_SIZE);
- vector_set(matchvec, lcdstr);
- match_str = (char **)matchvec->index;
- vector_only_wrapper_free(matchvec);
-
- *status = CMD_COMPLETE_MATCH;
- return match_str;
- }
- }
- }
-
- match_str = (char **)matchvec->index;
- vector_only_wrapper_free(matchvec);
- *status = CMD_COMPLETE_LIST_MATCH;
- return match_str;
-}
-
-char **cmd_complete_command(vector vline, struct vty *vty, int *status)
-{
- char **ret;
-
- if (cmd_try_do_shortcut(vty->node, vector_slot(vline, 0))) {
- enum node_type onode;
- vector shifted_vline;
- unsigned int index;
-
- onode = vty->node;
- vty->node = ENABLE_NODE;
- /* We can try it on enable node, cos' the vty is authenticated */
-
- shifted_vline = vector_init(vector_count(vline));
- /* use memcpy? */
- for (index = 1; index < vector_active(vline); index++) {
- vector_set_index(shifted_vline, index - 1,
- vector_lookup(vline, index));
- }
-
- ret = cmd_complete_command_real(shifted_vline, vty, status);
-
- vector_free(shifted_vline);
- vty->node = onode;
- return ret;
- }
-
- return cmd_complete_command_real(vline, vty, status);
-}
-
-/* return parent node */
-/* MUST eventually converge on CONFIG_NODE */
-enum node_type vty_go_parent(struct vty *vty)
-{
- assert(vty->node > CONFIG_NODE);
-
- if (host.app_info->go_parent_cb)
- host.app_info->go_parent_cb(vty);
- else
- vty->node = CONFIG_NODE;
-
- return vty->node;
-}
-
-/* Execute command by argument vline vector. */
-static int
-cmd_execute_command_real(vector vline, struct vty *vty,
- struct cmd_element **cmd)
-{
- unsigned int i;
- unsigned int index;
- vector cmd_vector;
- struct cmd_element *cmd_element;
- struct cmd_element *matched_element;
- unsigned int matched_count, incomplete_count;
- int argc;
- const char *argv[CMD_ARGC_MAX];
- enum match_type match = 0;
- int varflag;
- char *command;
-
- /* Make copy of command elements. */
- cmd_vector = vector_copy(cmd_node_vector(cmdvec, vty->node));
-
- for (index = 0; index < vector_active(vline); index++)
- if ((command = vector_slot(vline, index))) {
- int ret;
-
- match =
- cmd_filter_by_completion(command, cmd_vector,
- index);
-
- if (match == vararg_match)
- break;
-
- ret =
- is_cmd_ambiguous(command, cmd_vector, index, match);
-
- if (ret == 1) {
- vector_free(cmd_vector);
- return CMD_ERR_AMBIGUOUS;
- } else if (ret == 2) {
- vector_free(cmd_vector);
- return CMD_ERR_NO_MATCH;
- }
- }
-
- /* Check matched count. */
- matched_element = NULL;
- matched_count = 0;
- incomplete_count = 0;
-
- for (i = 0; i < vector_active(cmd_vector); i++)
- if ((cmd_element = vector_slot(cmd_vector, i))) {
- if (match == vararg_match
- || index >= cmd_element->cmdsize) {
- matched_element = cmd_element;
-#if 0
- printf("DEBUG: %s\n", cmd_element->string);
-#endif
- matched_count++;
- } else {
- incomplete_count++;
- }
- }
-
- /* Finish of using cmd_vector. */
- vector_free(cmd_vector);
-
- /* To execute command, matched_count must be 1. */
- if (matched_count == 0) {
- if (incomplete_count)
- return CMD_ERR_INCOMPLETE;
- else
- return CMD_ERR_NO_MATCH;
- }
-
- if (matched_count > 1)
- return CMD_ERR_AMBIGUOUS;
-
- /* Argument treatment */
- varflag = 0;
- argc = 0;
-
- for (i = 0; i < vector_active(vline); i++) {
- if (varflag)
- argv[argc++] = vector_slot(vline, i);
- else {
- vector descvec =
- vector_slot(matched_element->strvec, i);
-
- if (vector_active(descvec) == 1) {
- struct desc *desc = vector_slot(descvec, 0);
-
- if (CMD_VARARG(desc->cmd))
- varflag = 1;
-
- if (varflag || CMD_VARIABLE(desc->cmd)
- || CMD_OPTION(desc->cmd))
- argv[argc++] = vector_slot(vline, i);
- } else
- argv[argc++] = vector_slot(vline, i);
- }
-
- if (argc >= CMD_ARGC_MAX)
- return CMD_ERR_EXEED_ARGC_MAX;
- }
-
- /* For vtysh execution. */
- if (cmd)
- *cmd = matched_element;
-
- if (matched_element->daemon)
- return CMD_SUCCESS_DAEMON;
-
- /* Execute matched command. */
- return (*matched_element->func) (matched_element, vty, argc, argv);
-}
-
-int
-cmd_execute_command(vector vline, struct vty *vty, struct cmd_element **cmd,
- int vtysh)
-{
- int ret, saved_ret, tried = 0;
- enum node_type onode;
- void *oindex;
-
- onode = vty->node;
- oindex = vty->index;
-
- if (cmd_try_do_shortcut(vty->node, vector_slot(vline, 0))) {
- vector shifted_vline;
- unsigned int index;
-
- vty->node = ENABLE_NODE;
- /* We can try it on enable node, cos' the vty is authenticated */
-
- shifted_vline = vector_init(vector_count(vline));
- /* use memcpy? */
- for (index = 1; index < vector_active(vline); index++) {
- vector_set_index(shifted_vline, index - 1,
- vector_lookup(vline, index));
- }
-
- ret = cmd_execute_command_real(shifted_vline, vty, cmd);
-
- vector_free(shifted_vline);
- vty->node = onode;
- return ret;
- }
-
- saved_ret = ret = cmd_execute_command_real(vline, vty, cmd);
-
- if (vtysh)
- return saved_ret;
-
- /* Go to parent for config nodes to attempt to find the right command */
- while (ret != CMD_SUCCESS && ret != CMD_WARNING
- && is_config(vty)) {
- vty_go_parent(vty);
- ret = cmd_execute_command_real(vline, vty, cmd);
- tried = 1;
- if (ret == CMD_SUCCESS || ret == CMD_WARNING) {
- /* succesfull command, leave the node as is */
- return ret;
- }
- }
- /* no command succeeded, reset the vty to the original node and
- return the error for this node */
- if (tried) {
- vty->node = onode;
- vty->index = oindex;
- }
- return saved_ret;
-}
-
-/* Execute command by argument readline. */
-int
-cmd_execute_command_strict(vector vline, struct vty *vty,
- struct cmd_element **cmd)
-{
- unsigned int i;
- unsigned int index;
- vector cmd_vector;
- struct cmd_element *cmd_element;
- struct cmd_element *matched_element;
- unsigned int matched_count, incomplete_count;
- int argc;
- const char *argv[CMD_ARGC_MAX];
- int varflag;
- enum match_type match = 0;
- char *command;
-
- /* Make copy of command element */
- cmd_vector = vector_copy(cmd_node_vector(cmdvec, vty->node));
-
- for (index = 0; index < vector_active(vline); index++)
- if ((command = vector_slot(vline, index))) {
- int ret;
-
- match = cmd_filter_by_string(vector_slot(vline, index),
- cmd_vector, index);
-
- /* If command meets '.VARARG' then finish matching. */
- if (match == vararg_match)
- break;
-
- ret =
- is_cmd_ambiguous(command, cmd_vector, index, match);
- if (ret == 1) {
- vector_free(cmd_vector);
- return CMD_ERR_AMBIGUOUS;
- }
- if (ret == 2) {
- vector_free(cmd_vector);
- return CMD_ERR_NO_MATCH;
- }
- }
-
- /* Check matched count. */
- matched_element = NULL;
- matched_count = 0;
- incomplete_count = 0;
- for (i = 0; i < vector_active(cmd_vector); i++)
- if (vector_slot(cmd_vector, i) != NULL) {
- cmd_element = vector_slot(cmd_vector, i);
-
- if (match == vararg_match
- || index >= cmd_element->cmdsize) {
- matched_element = cmd_element;
- matched_count++;
- } else
- incomplete_count++;
- }
-
- /* Finish of using cmd_vector. */
- vector_free(cmd_vector);
-
- /* To execute command, matched_count must be 1. */
- if (matched_count == 0) {
- if (incomplete_count)
- return CMD_ERR_INCOMPLETE;
- else
- return CMD_ERR_NO_MATCH;
- }
-
- if (matched_count > 1)
- return CMD_ERR_AMBIGUOUS;
-
- /* Argument treatment */
- varflag = 0;
- argc = 0;
-
- for (i = 0; i < vector_active(vline); i++) {
- if (varflag)
- argv[argc++] = vector_slot(vline, i);
- else {
- vector descvec =
- vector_slot(matched_element->strvec, i);
-
- if (vector_active(descvec) == 1) {
- struct desc *desc = vector_slot(descvec, 0);
-
- if (CMD_VARARG(desc->cmd))
- varflag = 1;
-
- if (varflag || CMD_VARIABLE(desc->cmd)
- || CMD_OPTION(desc->cmd))
- argv[argc++] = vector_slot(vline, i);
- } else
- argv[argc++] = vector_slot(vline, i);
- }
-
- if (argc >= CMD_ARGC_MAX)
- return CMD_ERR_EXEED_ARGC_MAX;
- }
-
- /* For vtysh execution. */
- if (cmd)
- *cmd = matched_element;
-
- if (matched_element->daemon)
- return CMD_SUCCESS_DAEMON;
-
- /* Now execute matched command */
- return (*matched_element->func) (matched_element, vty, argc, argv);
-}
-
-/* Configration make from file. */
-int config_from_file(struct vty *vty, FILE * fp)
-{
- int ret;
- vector vline;
-
- while (fgets(vty->buf, VTY_BUFSIZ, fp)) {
- vline = cmd_make_strvec(vty->buf);
-
- /* In case of comment line */
- if (vline == NULL)
- continue;
- /* Execute configuration command : this is strict match */
- ret = cmd_execute_command_strict(vline, vty, NULL);
-
- /* Try again with setting node to CONFIG_NODE */
- while (ret != CMD_SUCCESS && ret != CMD_WARNING
- && ret != CMD_ERR_NOTHING_TODO
- && vty->node != CONFIG_NODE && is_config(vty)) {
- vty_go_parent(vty);
- ret = cmd_execute_command_strict(vline, vty, NULL);
- }
-
- cmd_free_strvec(vline);
-
- if (ret != CMD_SUCCESS && ret != CMD_WARNING
- && ret != CMD_ERR_NOTHING_TODO)
- return ret;
- }
- return CMD_SUCCESS;
-}
-
-/* Configration from terminal */
-DEFUN(config_terminal,
- config_terminal_cmd,
- "configure terminal",
- "Configuration from vty interface\n" "Configuration terminal\n")
-{
- if (vty_config_lock(vty))
- vty->node = CONFIG_NODE;
- else {
- vty_out(vty, "VTY configuration is locked by other VTY%s",
- VTY_NEWLINE);
- return CMD_WARNING;
- }
- return CMD_SUCCESS;
-}
-
-/* Enable command */
-DEFUN(enable, config_enable_cmd, "enable", "Turn on privileged mode command\n")
-{
- /* If enable password is NULL, change to ENABLE_NODE */
- if ((host.enable == NULL && host.enable_encrypt == NULL) ||
- vty->type == VTY_SHELL_SERV)
- vty->node = ENABLE_NODE;
- else
- vty->node = AUTH_ENABLE_NODE;
-
- return CMD_SUCCESS;
-}
-
-/* Disable command */
-DEFUN(disable,
- config_disable_cmd, "disable", "Turn off privileged mode command\n")
-{
- if (vty->node == ENABLE_NODE)
- vty->node = VIEW_NODE;
- return CMD_SUCCESS;
-}
-
-/* Down vty node level. */
-gDEFUN(config_exit,
- config_exit_cmd, "exit", "Exit current mode and down to previous mode\n")
-{
- switch (vty->node) {
- case VIEW_NODE:
- case ENABLE_NODE:
- if (0) //vty_shell (vty))
- exit(0);
- else
- vty->status = VTY_CLOSE;
- break;
- case CONFIG_NODE:
- vty->node = ENABLE_NODE;
- vty_config_unlock(vty);
- break;
- case VTY_NODE:
- vty->node = CONFIG_NODE;
- break;
- case CFG_LOG_NODE:
- vty->node = CONFIG_NODE;
- break;
- default:
- break;
- }
- return CMD_SUCCESS;
-}
-
-/* End of configuration. */
- gDEFUN(config_end,
- config_end_cmd, "end", "End current mode and change to enable mode.")
-{
- switch (vty->node) {
- case VIEW_NODE:
- case ENABLE_NODE:
- /* Nothing to do. */
- break;
- case CFG_LOG_NODE:
- case CONFIG_NODE:
- case VTY_NODE:
- vty_config_unlock(vty);
- vty->node = ENABLE_NODE;
- break;
- default:
- break;
- }
- return CMD_SUCCESS;
-}
-
-/* Show version. */
-DEFUN(show_version,
- show_version_cmd, "show version", SHOW_STR "Displays program version\n")
-{
- vty_out(vty, "%s %s (%s).%s", host.app_info->name,
- host.app_info->version,
- host.app_info->name ? host.app_info->name : "", VTY_NEWLINE);
- vty_out(vty, "%s%s", host.app_info->copyright, VTY_NEWLINE);
-
- return CMD_SUCCESS;
-}
-
-/* Help display function for all node. */
-gDEFUN(config_help,
- config_help_cmd, "help", "Description of the interactive help system\n")
-{
- vty_out(vty,
- "This VTY provides advanced help features. When you need help,%s\
-anytime at the command line please press '?'.%s\
-%s\
-If nothing matches, the help list will be empty and you must backup%s\
- until entering a '?' shows the available options.%s\
-Two styles of help are provided:%s\
-1. Full help is available when you are ready to enter a%s\
-command argument (e.g. 'show ?') and describes each possible%s\
-argument.%s\
-2. Partial help is provided when an abbreviated argument is entered%s\
- and you want to know what arguments match the input%s\
- (e.g. 'show me?'.)%s%s", VTY_NEWLINE, VTY_NEWLINE, VTY_NEWLINE,
- VTY_NEWLINE, VTY_NEWLINE, VTY_NEWLINE, VTY_NEWLINE, VTY_NEWLINE, VTY_NEWLINE, VTY_NEWLINE, VTY_NEWLINE, VTY_NEWLINE, VTY_NEWLINE);
- return CMD_SUCCESS;
-}
-
-/* Help display function for all node. */
-gDEFUN(config_list, config_list_cmd, "list", "Print command list\n")
-{
- unsigned int i;
- struct cmd_node *cnode = vector_slot(cmdvec, vty->node);
- struct cmd_element *cmd;
-
- for (i = 0; i < vector_active(cnode->cmd_vector); i++)
- if ((cmd = vector_slot(cnode->cmd_vector, i)) != NULL
- && !(cmd->attr == CMD_ATTR_DEPRECATED
- || cmd->attr == CMD_ATTR_HIDDEN))
- vty_out(vty, " %s%s", cmd->string, VTY_NEWLINE);
- return CMD_SUCCESS;
-}
-
-/* Write current configuration into file. */
-DEFUN(config_write_file,
- config_write_file_cmd,
- "write file",
- "Write running configuration to memory, network, or terminal\n"
- "Write to configuration file\n")
-{
- unsigned int i;
- int fd;
- struct cmd_node *node;
- char *config_file;
- char *config_file_tmp = NULL;
- char *config_file_sav = NULL;
- struct vty *file_vty;
-
- /* Check and see if we are operating under vtysh configuration */
- if (host.config == NULL) {
- vty_out(vty, "Can't save to configuration file, using vtysh.%s",
- VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- /* Get filename. */
- config_file = host.config;
-
- config_file_sav =
- _talloc_zero(tall_vty_cmd_ctx,
- strlen(config_file) + strlen(CONF_BACKUP_EXT) + 1,
- "config_file_sav");
- strcpy(config_file_sav, config_file);
- strcat(config_file_sav, CONF_BACKUP_EXT);
-
- config_file_tmp = _talloc_zero(tall_vty_cmd_ctx, strlen(config_file) + 8,
- "config_file_tmp");
- sprintf(config_file_tmp, "%s.XXXXXX", config_file);
-
- /* Open file to configuration write. */
- fd = mkstemp(config_file_tmp);
- if (fd < 0) {
- vty_out(vty, "Can't open configuration file %s.%s",
- config_file_tmp, VTY_NEWLINE);
- talloc_free(config_file_tmp);
- talloc_free(config_file_sav);
- return CMD_WARNING;
- }
-
- /* Make vty for configuration file. */
- file_vty = vty_new();
- file_vty->fd = fd;
- file_vty->type = VTY_FILE;
-
- /* Config file header print. */
- vty_out(file_vty, "!\n! %s (%s) configuration saved from vty\n!",
- host.app_info->name, host.app_info->version);
- //vty_time_print (file_vty, 1);
- vty_out(file_vty, "!\n");
-
- for (i = 0; i < vector_active(cmdvec); i++)
- if ((node = vector_slot(cmdvec, i)) && node->func) {
- if ((*node->func) (file_vty))
- vty_out(file_vty, "!\n");
- }
- vty_close(file_vty);
-
- if (unlink(config_file_sav) != 0)
- if (errno != ENOENT) {
- vty_out(vty,
- "Can't unlink backup configuration file %s.%s",
- config_file_sav, VTY_NEWLINE);
- talloc_free(config_file_sav);
- talloc_free(config_file_tmp);
- unlink(config_file_tmp);
- return CMD_WARNING;
- }
- if (link(config_file, config_file_sav) != 0) {
- vty_out(vty, "Can't backup old configuration file %s.%s",
- config_file_sav, VTY_NEWLINE);
- talloc_free(config_file_sav);
- talloc_free(config_file_tmp);
- unlink(config_file_tmp);
- return CMD_WARNING;
- }
- sync();
- if (unlink(config_file) != 0) {
- vty_out(vty, "Can't unlink configuration file %s.%s",
- config_file, VTY_NEWLINE);
- talloc_free(config_file_sav);
- talloc_free(config_file_tmp);
- unlink(config_file_tmp);
- return CMD_WARNING;
- }
- if (link(config_file_tmp, config_file) != 0) {
- vty_out(vty, "Can't save configuration file %s.%s", config_file,
- VTY_NEWLINE);
- talloc_free(config_file_sav);
- talloc_free(config_file_tmp);
- unlink(config_file_tmp);
- return CMD_WARNING;
- }
- unlink(config_file_tmp);
- sync();
-
- talloc_free(config_file_sav);
- talloc_free(config_file_tmp);
-
- if (chmod(config_file, 0666 & ~CONFIGFILE_MASK) != 0) {
- vty_out(vty, "Can't chmod configuration file %s: %s (%d).%s",
- config_file, strerror(errno), errno, VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- vty_out(vty, "Configuration saved to %s%s", config_file, VTY_NEWLINE);
- return CMD_SUCCESS;
-}
-
-ALIAS(config_write_file,
- config_write_cmd,
- "write", "Write running configuration to memory, network, or terminal\n")
-
- ALIAS(config_write_file,
- config_write_memory_cmd,
- "write memory",
- "Write running configuration to memory, network, or terminal\n"
- "Write configuration to the file (same as write file)\n")
-
- ALIAS(config_write_file,
- copy_runningconfig_startupconfig_cmd,
- "copy running-config startup-config",
- "Copy configuration\n"
- "Copy running config to... \n"
- "Copy running config to startup config (same as write file)\n")
-
-/* Write current configuration into the terminal. */
- DEFUN(config_write_terminal,
- config_write_terminal_cmd,
- "write terminal",
- "Write running configuration to memory, network, or terminal\n"
- "Write to terminal\n")
-{
- unsigned int i;
- struct cmd_node *node;
-
- if (vty->type == VTY_SHELL_SERV) {
- for (i = 0; i < vector_active(cmdvec); i++)
- if ((node = vector_slot(cmdvec, i)) && node->func
- && node->vtysh) {
- if ((*node->func) (vty))
- vty_out(vty, "!%s", VTY_NEWLINE);
- }
- } else {
- vty_out(vty, "%sCurrent configuration:%s", VTY_NEWLINE,
- VTY_NEWLINE);
- vty_out(vty, "!%s", VTY_NEWLINE);
-
- for (i = 0; i < vector_active(cmdvec); i++)
- if ((node = vector_slot(cmdvec, i)) && node->func) {
- if ((*node->func) (vty))
- vty_out(vty, "!%s", VTY_NEWLINE);
- }
- vty_out(vty, "end%s", VTY_NEWLINE);
- }
- return CMD_SUCCESS;
-}
-
-/* Write current configuration into the terminal. */
-ALIAS(config_write_terminal,
- show_running_config_cmd,
- "show running-config", SHOW_STR "running configuration\n")
-
-/* Write startup configuration into the terminal. */
- DEFUN(show_startup_config,
- show_startup_config_cmd,
- "show startup-config", SHOW_STR "Contentes of startup configuration\n")
-{
- char buf[BUFSIZ];
- FILE *confp;
-
- confp = fopen(host.config, "r");
- if (confp == NULL) {
- vty_out(vty, "Can't open configuration file [%s]%s",
- host.config, VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- while (fgets(buf, BUFSIZ, confp)) {
- char *cp = buf;
-
- while (*cp != '\r' && *cp != '\n' && *cp != '\0')
- cp++;
- *cp = '\0';
-
- vty_out(vty, "%s%s", buf, VTY_NEWLINE);
- }
-
- fclose(confp);
-
- return CMD_SUCCESS;
-}
-
-/* Hostname configuration */
-DEFUN(config_hostname,
- hostname_cmd,
- "hostname WORD",
- "Set system's network name\n" "This system's network name\n")
-{
- if (!isalpha((int)*argv[0])) {
- vty_out(vty, "Please specify string starting with alphabet%s",
- VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- if (host.name)
- talloc_free(host.name);
-
- host.name = talloc_strdup(tall_vty_cmd_ctx, argv[0]);
- return CMD_SUCCESS;
-}
-
-DEFUN(config_no_hostname,
- no_hostname_cmd,
- "no hostname [HOSTNAME]",
- NO_STR "Reset system's network name\n" "Host name of this router\n")
-{
- if (host.name)
- talloc_free(host.name);
- host.name = NULL;
- return CMD_SUCCESS;
-}
-
-/* VTY interface password set. */
-DEFUN(config_password, password_cmd,
- "password (8|) WORD",
- "Assign the terminal connection password\n"
- "Specifies a HIDDEN password will follow\n"
- "dummy string \n" "The HIDDEN line password string\n")
-{
- /* Argument check. */
- if (argc == 0) {
- vty_out(vty, "Please specify password.%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- if (argc == 2) {
- if (*argv[0] == '8') {
- if (host.password)
- talloc_free(host.password);
- host.password = NULL;
- if (host.password_encrypt)
- talloc_free(host.password_encrypt);
- host.password_encrypt = talloc_strdup(tall_vty_cmd_ctx, argv[1]);
- return CMD_SUCCESS;
- } else {
- vty_out(vty, "Unknown encryption type.%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
- }
-
- if (!isalnum((int)*argv[0])) {
- vty_out(vty,
- "Please specify string starting with alphanumeric%s",
- VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- if (host.password)
- talloc_free(host.password);
- host.password = NULL;
-
-#ifdef VTY_CRYPT_PW
- if (host.encrypt) {
- if (host.password_encrypt)
- talloc_free(host.password_encrypt);
- host.password_encrypt = talloc_strdup(tall_vty_cmd_ctx, zencrypt(argv[0]));
- } else
-#endif
- host.password = talloc_strdup(tall_vty_cmd_ctx, argv[0]);
-
- return CMD_SUCCESS;
-}
-
-ALIAS(config_password, password_text_cmd,
- "password LINE",
- "Assign the terminal connection password\n"
- "The UNENCRYPTED (cleartext) line password\n")
-
-/* VTY enable password set. */
- DEFUN(config_enable_password, enable_password_cmd,
- "enable password (8|) WORD",
- "Modify enable password parameters\n"
- "Assign the privileged level password\n"
- "Specifies a HIDDEN password will follow\n"
- "dummy string \n" "The HIDDEN 'enable' password string\n")
-{
- /* Argument check. */
- if (argc == 0) {
- vty_out(vty, "Please specify password.%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- /* Crypt type is specified. */
- if (argc == 2) {
- if (*argv[0] == '8') {
- if (host.enable)
- talloc_free(host.enable);
- host.enable = NULL;
-
- if (host.enable_encrypt)
- talloc_free(host.enable_encrypt);
- host.enable_encrypt = talloc_strdup(tall_vty_cmd_ctx, argv[1]);
-
- return CMD_SUCCESS;
- } else {
- vty_out(vty, "Unknown encryption type.%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
- }
-
- if (!isalnum((int)*argv[0])) {
- vty_out(vty,
- "Please specify string starting with alphanumeric%s",
- VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- if (host.enable)
- talloc_free(host.enable);
- host.enable = NULL;
-
- /* Plain password input. */
-#ifdef VTY_CRYPT_PW
- if (host.encrypt) {
- if (host.enable_encrypt)
- talloc_free(host.enable_encrypt);
- host.enable_encrypt = talloc_strdup(tall_vty_cmd_ctx, zencrypt(argv[0]));
- } else
-#endif
- host.enable = talloc_strdup(tall_vty_cmd_ctx, argv[0]);
-
- return CMD_SUCCESS;
-}
-
-ALIAS(config_enable_password,
- enable_password_text_cmd,
- "enable password LINE",
- "Modify enable password parameters\n"
- "Assign the privileged level password\n"
- "The UNENCRYPTED (cleartext) 'enable' password\n")
-
-/* VTY enable password delete. */
- DEFUN(no_config_enable_password, no_enable_password_cmd,
- "no enable password",
- NO_STR
- "Modify enable password parameters\n"
- "Assign the privileged level password\n")
-{
- if (host.enable)
- talloc_free(host.enable);
- host.enable = NULL;
-
- if (host.enable_encrypt)
- talloc_free(host.enable_encrypt);
- host.enable_encrypt = NULL;
-
- return CMD_SUCCESS;
-}
-
-#ifdef VTY_CRYPT_PW
-DEFUN(service_password_encrypt,
- service_password_encrypt_cmd,
- "service password-encryption",
- "Set up miscellaneous service\n" "Enable encrypted passwords\n")
-{
- if (host.encrypt)
- return CMD_SUCCESS;
-
- host.encrypt = 1;
-
- if (host.password) {
- if (host.password_encrypt)
- talloc_free(host.password_encrypt);
- host.password_encrypt = talloc_strdup(tall_vty_cmd_ctx, zencrypt(host.password));
- }
- if (host.enable) {
- if (host.enable_encrypt)
- talloc_free(host.enable_encrypt);
- host.enable_encrypt = talloc_strdup(tall_vty_cmd_ctx, zencrypt(host.enable));
- }
-
- return CMD_SUCCESS;
-}
-
-DEFUN(no_service_password_encrypt,
- no_service_password_encrypt_cmd,
- "no service password-encryption",
- NO_STR "Set up miscellaneous service\n" "Enable encrypted passwords\n")
-{
- if (!host.encrypt)
- return CMD_SUCCESS;
-
- host.encrypt = 0;
-
- if (host.password_encrypt)
- talloc_free(host.password_encrypt);
- host.password_encrypt = NULL;
-
- if (host.enable_encrypt)
- talloc_free(host.enable_encrypt);
- host.enable_encrypt = NULL;
-
- return CMD_SUCCESS;
-}
-#endif
-
-DEFUN(config_terminal_length, config_terminal_length_cmd,
- "terminal length <0-512>",
- "Set terminal line parameters\n"
- "Set number of lines on a screen\n"
- "Number of lines on screen (0 for no pausing)\n")
-{
- int lines;
- char *endptr = NULL;
-
- lines = strtol(argv[0], &endptr, 10);
- if (lines < 0 || lines > 512 || *endptr != '\0') {
- vty_out(vty, "length is malformed%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
- vty->lines = lines;
-
- return CMD_SUCCESS;
-}
-
-DEFUN(config_terminal_no_length, config_terminal_no_length_cmd,
- "terminal no length",
- "Set terminal line parameters\n"
- NO_STR "Set number of lines on a screen\n")
-{
- vty->lines = -1;
- return CMD_SUCCESS;
-}
-
-DEFUN(service_terminal_length, service_terminal_length_cmd,
- "service terminal-length <0-512>",
- "Set up miscellaneous service\n"
- "System wide terminal length configuration\n"
- "Number of lines of VTY (0 means no line control)\n")
-{
- int lines;
- char *endptr = NULL;
-
- lines = strtol(argv[0], &endptr, 10);
- if (lines < 0 || lines > 512 || *endptr != '\0') {
- vty_out(vty, "length is malformed%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
- host.lines = lines;
-
- return CMD_SUCCESS;
-}
-
-DEFUN(no_service_terminal_length, no_service_terminal_length_cmd,
- "no service terminal-length [<0-512>]",
- NO_STR
- "Set up miscellaneous service\n"
- "System wide terminal length configuration\n"
- "Number of lines of VTY (0 means no line control)\n")
-{
- host.lines = -1;
- return CMD_SUCCESS;
-}
-
-DEFUN_HIDDEN(do_echo,
- echo_cmd,
- "echo .MESSAGE",
- "Echo a message back to the vty\n" "The message to echo\n")
-{
- char *message;
-
- vty_out(vty, "%s%s",
- ((message =
- argv_concat(argv, argc, 0)) ? message : ""), VTY_NEWLINE);
- if (message)
- talloc_free(message);
- return CMD_SUCCESS;
-}
-
-#if 0
-DEFUN(config_logmsg,
- config_logmsg_cmd,
- "logmsg " LOG_LEVELS " .MESSAGE",
- "Send a message to enabled logging destinations\n"
- LOG_LEVEL_DESC "The message to send\n")
-{
- int level;
- char *message;
-
- if ((level = level_match(argv[0])) == ZLOG_DISABLED)
- return CMD_ERR_NO_MATCH;
-
- zlog(NULL, level,
- ((message = argv_concat(argv, argc, 1)) ? message : ""));
- if (message)
- talloc_free(message);
- return CMD_SUCCESS;
-}
-
-DEFUN(show_logging,
- show_logging_cmd,
- "show logging", SHOW_STR "Show current logging configuration\n")
-{
- struct zlog *zl = zlog_default;
-
- vty_out(vty, "Syslog logging: ");
- if (zl->maxlvl[ZLOG_DEST_SYSLOG] == ZLOG_DISABLED)
- vty_out(vty, "disabled");
- else
- vty_out(vty, "level %s, facility %s, ident %s",
- zlog_priority[zl->maxlvl[ZLOG_DEST_SYSLOG]],
- facility_name(zl->facility), zl->ident);
- vty_out(vty, "%s", VTY_NEWLINE);
-
- vty_out(vty, "Stdout logging: ");
- if (zl->maxlvl[ZLOG_DEST_STDOUT] == ZLOG_DISABLED)
- vty_out(vty, "disabled");
- else
- vty_out(vty, "level %s",
- zlog_priority[zl->maxlvl[ZLOG_DEST_STDOUT]]);
- vty_out(vty, "%s", VTY_NEWLINE);
-
- vty_out(vty, "Monitor logging: ");
- if (zl->maxlvl[ZLOG_DEST_MONITOR] == ZLOG_DISABLED)
- vty_out(vty, "disabled");
- else
- vty_out(vty, "level %s",
- zlog_priority[zl->maxlvl[ZLOG_DEST_MONITOR]]);
- vty_out(vty, "%s", VTY_NEWLINE);
-
- vty_out(vty, "File logging: ");
- if ((zl->maxlvl[ZLOG_DEST_FILE] == ZLOG_DISABLED) || !zl->fp)
- vty_out(vty, "disabled");
- else
- vty_out(vty, "level %s, filename %s",
- zlog_priority[zl->maxlvl[ZLOG_DEST_FILE]],
- zl->filename);
- vty_out(vty, "%s", VTY_NEWLINE);
-
- vty_out(vty, "Protocol name: %s%s",
- zlog_proto_names[zl->protocol], VTY_NEWLINE);
- vty_out(vty, "Record priority: %s%s",
- (zl->record_priority ? "enabled" : "disabled"), VTY_NEWLINE);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(config_log_stdout,
- config_log_stdout_cmd,
- "log stdout", "Logging control\n" "Set stdout logging level\n")
-{
- zlog_set_level(NULL, ZLOG_DEST_STDOUT, zlog_default->default_lvl);
- return CMD_SUCCESS;
-}
-
-DEFUN(config_log_stdout_level,
- config_log_stdout_level_cmd,
- "log stdout " LOG_LEVELS,
- "Logging control\n" "Set stdout logging level\n" LOG_LEVEL_DESC)
-{
- int level;
-
- if ((level = level_match(argv[0])) == ZLOG_DISABLED)
- return CMD_ERR_NO_MATCH;
- zlog_set_level(NULL, ZLOG_DEST_STDOUT, level);
- return CMD_SUCCESS;
-}
-
-DEFUN(no_config_log_stdout,
- no_config_log_stdout_cmd,
- "no log stdout [LEVEL]",
- NO_STR "Logging control\n" "Cancel logging to stdout\n" "Logging level\n")
-{
- zlog_set_level(NULL, ZLOG_DEST_STDOUT, ZLOG_DISABLED);
- return CMD_SUCCESS;
-}
-
-DEFUN(config_log_monitor,
- config_log_monitor_cmd,
- "log monitor",
- "Logging control\n" "Set terminal line (monitor) logging level\n")
-{
- zlog_set_level(NULL, ZLOG_DEST_MONITOR, zlog_default->default_lvl);
- return CMD_SUCCESS;
-}
-
-DEFUN(config_log_monitor_level,
- config_log_monitor_level_cmd,
- "log monitor " LOG_LEVELS,
- "Logging control\n"
- "Set terminal line (monitor) logging level\n" LOG_LEVEL_DESC)
-{
- int level;
-
- if ((level = level_match(argv[0])) == ZLOG_DISABLED)
- return CMD_ERR_NO_MATCH;
- zlog_set_level(NULL, ZLOG_DEST_MONITOR, level);
- return CMD_SUCCESS;
-}
-
-DEFUN(no_config_log_monitor,
- no_config_log_monitor_cmd,
- "no log monitor [LEVEL]",
- NO_STR
- "Logging control\n"
- "Disable terminal line (monitor) logging\n" "Logging level\n")
-{
- zlog_set_level(NULL, ZLOG_DEST_MONITOR, ZLOG_DISABLED);
- return CMD_SUCCESS;
-}
-
-static int set_log_file(struct vty *vty, const char *fname, int loglevel)
-{
- int ret;
- char *p = NULL;
- const char *fullpath;
-
- /* Path detection. */
- if (!IS_DIRECTORY_SEP(*fname)) {
- char cwd[MAXPATHLEN + 1];
- cwd[MAXPATHLEN] = '\0';
-
- if (getcwd(cwd, MAXPATHLEN) == NULL) {
- zlog_err("config_log_file: Unable to alloc mem!");
- return CMD_WARNING;
- }
-
- if ((p = _talloc_zero(tall_vcmd_ctx,
- strlen(cwd) + strlen(fname) + 2),
- "set_log_file")
- == NULL) {
- zlog_err("config_log_file: Unable to alloc mem!");
- return CMD_WARNING;
- }
- sprintf(p, "%s/%s", cwd, fname);
- fullpath = p;
- } else
- fullpath = fname;
-
- ret = zlog_set_file(NULL, fullpath, loglevel);
-
- if (p)
- talloc_free(p);
-
- if (!ret) {
- vty_out(vty, "can't open logfile %s\n", fname);
- return CMD_WARNING;
- }
-
- if (host.logfile)
- talloc_free(host.logfile);
-
- host.logfile = talloc_strdup(tall_vty_cmd_ctx, fname);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(config_log_file,
- config_log_file_cmd,
- "log file FILENAME",
- "Logging control\n" "Logging to file\n" "Logging filename\n")
-{
- return set_log_file(vty, argv[0], zlog_default->default_lvl);
-}
-
-DEFUN(config_log_file_level,
- config_log_file_level_cmd,
- "log file FILENAME " LOG_LEVELS,
- "Logging control\n"
- "Logging to file\n" "Logging filename\n" LOG_LEVEL_DESC)
-{
- int level;
-
- if ((level = level_match(argv[1])) == ZLOG_DISABLED)
- return CMD_ERR_NO_MATCH;
- return set_log_file(vty, argv[0], level);
-}
-
-DEFUN(no_config_log_file,
- no_config_log_file_cmd,
- "no log file [FILENAME]",
- NO_STR
- "Logging control\n" "Cancel logging to file\n" "Logging file name\n")
-{
- zlog_reset_file(NULL);
-
- if (host.logfile)
- talloc_free(host.logfile);
-
- host.logfile = NULL;
-
- return CMD_SUCCESS;
-}
-
-ALIAS(no_config_log_file,
- no_config_log_file_level_cmd,
- "no log file FILENAME LEVEL",
- NO_STR
- "Logging control\n"
- "Cancel logging to file\n" "Logging file name\n" "Logging level\n")
-
- DEFUN(config_log_syslog,
- config_log_syslog_cmd,
- "log syslog", "Logging control\n" "Set syslog logging level\n")
-{
- zlog_set_level(NULL, ZLOG_DEST_SYSLOG, zlog_default->default_lvl);
- return CMD_SUCCESS;
-}
-
-DEFUN(config_log_syslog_level,
- config_log_syslog_level_cmd,
- "log syslog " LOG_LEVELS,
- "Logging control\n" "Set syslog logging level\n" LOG_LEVEL_DESC)
-{
- int level;
-
- if ((level = level_match(argv[0])) == ZLOG_DISABLED)
- return CMD_ERR_NO_MATCH;
- zlog_set_level(NULL, ZLOG_DEST_SYSLOG, level);
- return CMD_SUCCESS;
-}
-
-DEFUN_DEPRECATED(config_log_syslog_facility,
- config_log_syslog_facility_cmd,
- "log syslog facility " LOG_FACILITIES,
- "Logging control\n"
- "Logging goes to syslog\n"
- "(Deprecated) Facility parameter for syslog messages\n"
- LOG_FACILITY_DESC)
-{
- int facility;
-
- if ((facility = facility_match(argv[0])) < 0)
- return CMD_ERR_NO_MATCH;
-
- zlog_set_level(NULL, ZLOG_DEST_SYSLOG, zlog_default->default_lvl);
- zlog_default->facility = facility;
- return CMD_SUCCESS;
-}
-
-DEFUN(no_config_log_syslog,
- no_config_log_syslog_cmd,
- "no log syslog [LEVEL]",
- NO_STR "Logging control\n" "Cancel logging to syslog\n" "Logging level\n")
-{
- zlog_set_level(NULL, ZLOG_DEST_SYSLOG, ZLOG_DISABLED);
- return CMD_SUCCESS;
-}
-
-ALIAS(no_config_log_syslog,
- no_config_log_syslog_facility_cmd,
- "no log syslog facility " LOG_FACILITIES,
- NO_STR
- "Logging control\n"
- "Logging goes to syslog\n"
- "Facility parameter for syslog messages\n" LOG_FACILITY_DESC)
-
- DEFUN(config_log_facility,
- config_log_facility_cmd,
- "log facility " LOG_FACILITIES,
- "Logging control\n"
- "Facility parameter for syslog messages\n" LOG_FACILITY_DESC)
-{
- int facility;
-
- if ((facility = facility_match(argv[0])) < 0)
- return CMD_ERR_NO_MATCH;
- zlog_default->facility = facility;
- return CMD_SUCCESS;
-}
-
-DEFUN(no_config_log_facility,
- no_config_log_facility_cmd,
- "no log facility [FACILITY]",
- NO_STR
- "Logging control\n"
- "Reset syslog facility to default (daemon)\n" "Syslog facility\n")
-{
- zlog_default->facility = LOG_DAEMON;
- return CMD_SUCCESS;
-}
-
-DEFUN_DEPRECATED(config_log_trap,
- config_log_trap_cmd,
- "log trap " LOG_LEVELS,
- "Logging control\n"
- "(Deprecated) Set logging level and default for all destinations\n"
- LOG_LEVEL_DESC)
-{
- int new_level;
- int i;
-
- if ((new_level = level_match(argv[0])) == ZLOG_DISABLED)
- return CMD_ERR_NO_MATCH;
-
- zlog_default->default_lvl = new_level;
- for (i = 0; i < ZLOG_NUM_DESTS; i++)
- if (zlog_default->maxlvl[i] != ZLOG_DISABLED)
- zlog_default->maxlvl[i] = new_level;
- return CMD_SUCCESS;
-}
-
-DEFUN_DEPRECATED(no_config_log_trap,
- no_config_log_trap_cmd,
- "no log trap [LEVEL]",
- NO_STR
- "Logging control\n"
- "Permit all logging information\n" "Logging level\n")
-{
- zlog_default->default_lvl = LOG_DEBUG;
- return CMD_SUCCESS;
-}
-
-DEFUN(config_log_record_priority,
- config_log_record_priority_cmd,
- "log record-priority",
- "Logging control\n"
- "Log the priority of the message within the message\n")
-{
- zlog_default->record_priority = 1;
- return CMD_SUCCESS;
-}
-
-DEFUN(no_config_log_record_priority,
- no_config_log_record_priority_cmd,
- "no log record-priority",
- NO_STR
- "Logging control\n"
- "Do not log the priority of the message within the message\n")
-{
- zlog_default->record_priority = 0;
- return CMD_SUCCESS;
-}
-#endif
-
-DEFUN(banner_motd_file,
- banner_motd_file_cmd,
- "banner motd file [FILE]",
- "Set banner\n" "Banner for motd\n" "Banner from a file\n" "Filename\n")
-{
- if (host.motdfile)
- talloc_free(host.motdfile);
- host.motdfile = talloc_strdup(tall_vty_cmd_ctx, argv[0]);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(banner_motd_default,
- banner_motd_default_cmd,
- "banner motd default",
- "Set banner string\n" "Strings for motd\n" "Default string\n")
-{
- host.motd = default_motd;
- return CMD_SUCCESS;
-}
-
-DEFUN(no_banner_motd,
- no_banner_motd_cmd,
- "no banner motd", NO_STR "Set banner string\n" "Strings for motd\n")
-{
- host.motd = NULL;
- if (host.motdfile)
- talloc_free(host.motdfile);
- host.motdfile = NULL;
- return CMD_SUCCESS;
-}
-
-/* Set config filename. Called from vty.c */
-void host_config_set(const char *filename)
-{
- host.config = talloc_strdup(tall_vty_cmd_ctx, filename);
-}
-
-void install_default(enum node_type node)
-{
- install_element(node, &config_help_cmd);
- install_element(node, &config_list_cmd);
-
- install_element(node, &config_write_terminal_cmd);
- install_element(node, &config_write_file_cmd);
- install_element(node, &config_write_memory_cmd);
- install_element(node, &config_write_cmd);
- install_element(node, &show_running_config_cmd);
-}
-
-/* Initialize command interface. Install basic nodes and commands. */
-void cmd_init(int terminal)
-{
- /* Allocate initial top vector of commands. */
- cmdvec = vector_init(VECTOR_MIN_SIZE);
-
- /* Default host value settings. */
- host.name = NULL;
- host.password = NULL;
- host.enable = NULL;
- host.logfile = NULL;
- host.config = NULL;
- host.lines = -1;
- host.motd = default_motd;
- host.motdfile = NULL;
-
- /* Install top nodes. */
- install_node(&view_node, NULL);
- install_node(&enable_node, NULL);
- install_node(&auth_node, NULL);
- install_node(&auth_enable_node, NULL);
- install_node(&config_node, config_write_host);
-
- /* Each node's basic commands. */
- install_element(VIEW_NODE, &show_version_cmd);
- if (terminal) {
- install_element(VIEW_NODE, &config_list_cmd);
- install_element(VIEW_NODE, &config_exit_cmd);
- install_element(VIEW_NODE, &config_help_cmd);
- install_element(VIEW_NODE, &config_enable_cmd);
- install_element(VIEW_NODE, &config_terminal_length_cmd);
- install_element(VIEW_NODE, &config_terminal_no_length_cmd);
- install_element(VIEW_NODE, &echo_cmd);
- }
-
- if (terminal) {
- install_element(ENABLE_NODE, &config_exit_cmd);
- install_default(ENABLE_NODE);
- install_element(ENABLE_NODE, &config_disable_cmd);
- install_element(ENABLE_NODE, &config_terminal_cmd);
- install_element (ENABLE_NODE, &copy_runningconfig_startupconfig_cmd);
- }
- install_element (ENABLE_NODE, &show_startup_config_cmd);
- install_element(ENABLE_NODE, &show_version_cmd);
-
- if (terminal) {
- install_element(ENABLE_NODE, &config_terminal_length_cmd);
- install_element(ENABLE_NODE, &config_terminal_no_length_cmd);
- install_element(ENABLE_NODE, &echo_cmd);
-
- install_default(CONFIG_NODE);
- install_element(CONFIG_NODE, &config_exit_cmd);
- }
-
- install_element(CONFIG_NODE, &hostname_cmd);
- install_element(CONFIG_NODE, &no_hostname_cmd);
-
- if (terminal) {
- install_element(CONFIG_NODE, &password_cmd);
- install_element(CONFIG_NODE, &password_text_cmd);
- install_element(CONFIG_NODE, &enable_password_cmd);
- install_element(CONFIG_NODE, &enable_password_text_cmd);
- install_element(CONFIG_NODE, &no_enable_password_cmd);
-
-#ifdef VTY_CRYPT_PW
- install_element(CONFIG_NODE, &service_password_encrypt_cmd);
- install_element(CONFIG_NODE, &no_service_password_encrypt_cmd);
-#endif
- install_element(CONFIG_NODE, &banner_motd_default_cmd);
- install_element(CONFIG_NODE, &banner_motd_file_cmd);
- install_element(CONFIG_NODE, &no_banner_motd_cmd);
- install_element(CONFIG_NODE, &service_terminal_length_cmd);
- install_element(CONFIG_NODE, &no_service_terminal_length_cmd);
-
- }
- srand(time(NULL));
-}
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/vty/logging_vty.c b/Src/osmoconbb/src/shared/libosmocore/src/vty/logging_vty.c
deleted file mode 100644
index b037a5b..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/vty/logging_vty.c
+++ /dev/null
@@ -1,585 +0,0 @@
-/* OpenBSC logging helper for the VTY */
-/* (C) 2009-2010 by Harald Welte <laforge@gnumonks.org>
- * (C) 2009-2010 by Holger Hans Peter Freyther
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdlib.h>
-#include <string.h>
-
-#include "../../config.h"
-
-#include <osmocom/core/talloc.h>
-#include <osmocom/core/logging.h>
-#include <osmocom/core/utils.h>
-
-//#include <openbsc/vty.h>
-
-#include <osmocom/vty/command.h>
-#include <osmocom/vty/buffer.h>
-#include <osmocom/vty/vty.h>
-#include <osmocom/vty/telnet_interface.h>
-#include <osmocom/vty/logging.h>
-
-#define LOG_STR "Configure logging sub-system\n"
-
-extern const struct log_info *osmo_log_info;
-
-static void _vty_output(struct log_target *tgt,
- unsigned int level, const char *line)
-{
- struct vty *vty = tgt->tgt_vty.vty;
- vty_out(vty, "%s", line);
- /* This is an ugly hack, but there is no easy way... */
- if (strchr(line, '\n'))
- vty_out(vty, "\r");
-}
-
-struct log_target *log_target_create_vty(struct vty *vty)
-{
- struct log_target *target;
-
- target = log_target_create();
- if (!target)
- return NULL;
-
- target->tgt_vty.vty = vty;
- target->output = _vty_output;
- return target;
-}
-
-DEFUN(enable_logging,
- enable_logging_cmd,
- "logging enable",
- LOGGING_STR
- "Enables logging to this vty\n")
-{
- struct telnet_connection *conn;
-
- conn = (struct telnet_connection *) vty->priv;
- if (conn->dbg) {
- vty_out(vty, "Logging already enabled.%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- conn->dbg = log_target_create_vty(vty);
- if (!conn->dbg)
- return CMD_WARNING;
-
- log_add_target(conn->dbg);
- return CMD_SUCCESS;
-}
-
-struct log_target *osmo_log_vty2tgt(struct vty *vty)
-{
- struct telnet_connection *conn;
-
- if (vty->node == CFG_LOG_NODE)
- return vty->index;
-
-
- conn = (struct telnet_connection *) vty->priv;
- if (!conn->dbg)
- vty_out(vty, "Logging was not enabled.%s", VTY_NEWLINE);
-
- return conn->dbg;
-}
-
-DEFUN(logging_fltr_all,
- logging_fltr_all_cmd,
- "logging filter all (0|1)",
- LOGGING_STR FILTER_STR
- "Do you want to log all messages?\n"
- "Only print messages matched by other filters\n"
- "Bypass filter and print all messages\n")
-{
- struct log_target *tgt = osmo_log_vty2tgt(vty);
-
- if (!tgt)
- return CMD_WARNING;
-
- log_set_all_filter(tgt, atoi(argv[0]));
- return CMD_SUCCESS;
-}
-
-DEFUN(logging_use_clr,
- logging_use_clr_cmd,
- "logging color (0|1)",
- LOGGING_STR "Configure color-printing for log messages\n"
- "Don't use color for printing messages\n"
- "Use color for printing messages\n")
-{
- struct log_target *tgt = osmo_log_vty2tgt(vty);
-
- if (!tgt)
- return CMD_WARNING;
-
- log_set_use_color(tgt, atoi(argv[0]));
- return CMD_SUCCESS;
-}
-
-DEFUN(logging_prnt_timestamp,
- logging_prnt_timestamp_cmd,
- "logging timestamp (0|1)",
- LOGGING_STR "Configure log message timestamping\n"
- "Don't prefix each log message\n"
- "Prefix each log message with current timestamp\n")
-{
- struct log_target *tgt = osmo_log_vty2tgt(vty);
-
- if (!tgt)
- return CMD_WARNING;
-
- log_set_print_timestamp(tgt, atoi(argv[0]));
- return CMD_SUCCESS;
-}
-
-DEFUN(logging_level,
- logging_level_cmd,
- NULL, /* cmdstr is dynamically set in logging_vty_add_cmds(). */
- NULL) /* same thing for helpstr. */
-{
- int category = log_parse_category(argv[0]);
- int level = log_parse_level(argv[1]);
- struct log_target *tgt = osmo_log_vty2tgt(vty);
-
- if (!tgt)
- return CMD_WARNING;
-
- if (level < 0) {
- vty_out(vty, "Invalid level `%s'%s", argv[1], VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- /* Check for special case where we want to set global log level */
- if (!strcmp(argv[0], "all")) {
- log_set_log_level(tgt, level);
- return CMD_SUCCESS;
- }
-
- if (category < 0) {
- vty_out(vty, "Invalid category `%s'%s", argv[0], VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- tgt->categories[category].enabled = 1;
- tgt->categories[category].loglevel = level;
-
- return CMD_SUCCESS;
-}
-
-DEFUN(logging_set_category_mask,
- logging_set_category_mask_cmd,
- "logging set log mask MASK",
- LOGGING_STR
- "Decide which categories to output.\n")
-{
- struct log_target *tgt = osmo_log_vty2tgt(vty);
-
- if (!tgt)
- return CMD_WARNING;
-
- log_parse_category_mask(tgt, argv[0]);
- return CMD_SUCCESS;
-}
-
-DEFUN(diable_logging,
- disable_logging_cmd,
- "logging disable",
- LOGGING_STR
- "Disables logging to this vty\n")
-{
- struct log_target *tgt = osmo_log_vty2tgt(vty);
- struct telnet_connection *conn = (struct telnet_connection *) vty->priv;
-
- if (!tgt)
- return CMD_WARNING;
-
- log_del_target(tgt);
- talloc_free(tgt);
- conn->dbg = NULL;
-
- return CMD_SUCCESS;
-}
-
-static void vty_print_logtarget(struct vty *vty, const struct log_info *info,
- const struct log_target *tgt)
-{
- unsigned int i;
-
- vty_out(vty, " Global Loglevel: %s%s",
- log_level_str(tgt->loglevel), VTY_NEWLINE);
- vty_out(vty, " Use color: %s, Print Timestamp: %s%s",
- tgt->use_color ? "On" : "Off",
- tgt->print_timestamp ? "On" : "Off", VTY_NEWLINE);
-
- vty_out(vty, " Log Level specific information:%s", VTY_NEWLINE);
-
- for (i = 0; i < info->num_cat; i++) {
- const struct log_category *cat = &tgt->categories[i];
- vty_out(vty, " %-10s %-10s %-8s %s%s",
- info->cat[i].name+1, log_level_str(cat->loglevel),
- cat->enabled ? "Enabled" : "Disabled",
- info->cat[i].description,
- VTY_NEWLINE);
- }
-}
-
-#define SHOW_LOG_STR "Show current logging configuration\n"
-
-DEFUN(show_logging_vty,
- show_logging_vty_cmd,
- "show logging vty",
- SHOW_STR SHOW_LOG_STR
- "Show current logging configuration for this vty\n")
-{
- struct log_target *tgt = osmo_log_vty2tgt(vty);
-
- if (!tgt)
- return CMD_WARNING;
-
- vty_print_logtarget(vty, osmo_log_info, tgt);
-
- return CMD_SUCCESS;
-}
-
-gDEFUN(cfg_description, cfg_description_cmd,
- "description .TEXT",
- "Save human-readable decription of the object\n")
-{
- char **dptr = vty->index_sub;
-
- if (!dptr) {
- vty_out(vty, "vty->index_sub == NULL%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- if (*dptr)
- talloc_free(*dptr);
- *dptr = argv_concat(argv, argc, 0);
- if (!dptr)
- return CMD_WARNING;
-
- return CMD_SUCCESS;
-}
-
-gDEFUN(cfg_no_description, cfg_no_description_cmd,
- "no description",
- NO_STR
- "Remove description of the object\n")
-{
- char **dptr = vty->index_sub;
-
- if (!dptr) {
- vty_out(vty, "vty->index_sub == NULL%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- if (*dptr) {
- talloc_free(*dptr);
- *dptr = NULL;
- }
-
- return CMD_SUCCESS;
-}
-
-/* Support for configuration of log targets != the current vty */
-
-struct cmd_node cfg_log_node = {
- CFG_LOG_NODE,
- "%s(config-log)# ",
- 1
-};
-
-#ifdef HAVE_SYSLOG_H
-
-#include <syslog.h>
-
-static const int local_sysl_map[] = {
- [0] = LOG_LOCAL0,
- [1] = LOG_LOCAL1,
- [2] = LOG_LOCAL2,
- [3] = LOG_LOCAL3,
- [4] = LOG_LOCAL4,
- [5] = LOG_LOCAL5,
- [6] = LOG_LOCAL6,
- [7] = LOG_LOCAL7
-};
-
-/* From VTY core code */
-extern struct host host;
-
-static int _cfg_log_syslog(struct vty *vty, int facility)
-{
- struct log_target *tgt;
-
- /* First delete the old syslog target, if any */
- tgt = log_target_find(LOG_TGT_TYPE_SYSLOG, NULL);
- if (tgt)
- log_target_destroy(tgt);
-
- tgt = log_target_create_syslog(host.app_info->name, 0, facility);
- if (!tgt) {
- vty_out(vty, "%% Unable to open syslog%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
- log_add_target(tgt);
-
- vty->index = tgt;
- vty->node = CFG_LOG_NODE;
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_log_syslog_local, cfg_log_syslog_local_cmd,
- "log syslog local <0-7>",
- LOG_STR "Logging via syslog\n" "Syslog LOCAL facility\n"
- "Local facility number\n")
-{
- int local = atoi(argv[0]);
- int facility = local_sysl_map[local];
-
- return _cfg_log_syslog(vty, facility);
-}
-
-static struct value_string sysl_level_names[] = {
- { LOG_AUTHPRIV, "authpriv" },
- { LOG_CRON, "cron" },
- { LOG_DAEMON, "daemon" },
- { LOG_FTP, "ftp" },
- { LOG_LPR, "lpr" },
- { LOG_MAIL, "mail" },
- { LOG_NEWS, "news" },
- { LOG_USER, "user" },
- { LOG_UUCP, "uucp" },
- /* only for value -> string conversion */
- { LOG_LOCAL0, "local 0" },
- { LOG_LOCAL1, "local 1" },
- { LOG_LOCAL2, "local 2" },
- { LOG_LOCAL3, "local 3" },
- { LOG_LOCAL4, "local 4" },
- { LOG_LOCAL5, "local 5" },
- { LOG_LOCAL6, "local 6" },
- { LOG_LOCAL7, "local 7" },
- { 0, NULL }
-};
-
-DEFUN(cfg_log_syslog, cfg_log_syslog_cmd,
- "log syslog (authpriv|cron|daemon|ftp|lpr|mail|news|user|uucp)",
- LOG_STR "Logging via syslog\n")
-{
- int facility = get_string_value(sysl_level_names, argv[0]);
-
- return _cfg_log_syslog(vty, facility);
-}
-
-DEFUN(cfg_no_log_syslog, cfg_no_log_syslog_cmd,
- "no log syslog",
- NO_STR LOG_STR "Logging via syslog\n")
-{
- struct log_target *tgt;
-
- tgt = log_target_find(LOG_TGT_TYPE_SYSLOG, NULL);
- if (!tgt) {
- vty_out(vty, "%% No syslog target found%s",
- VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- log_target_destroy(tgt);
-
- return CMD_SUCCESS;
-}
-#endif /* HAVE_SYSLOG_H */
-
-DEFUN(cfg_log_stderr, cfg_log_stderr_cmd,
- "log stderr",
- LOG_STR "Logging via STDERR of the process\n")
-{
- struct log_target *tgt;
-
- tgt = log_target_find(LOG_TGT_TYPE_STDERR, NULL);
- if (!tgt) {
- tgt = log_target_create_stderr();
- if (!tgt) {
- vty_out(vty, "%% Unable to create stderr log%s",
- VTY_NEWLINE);
- return CMD_WARNING;
- }
- log_add_target(tgt);
- }
-
- vty->index = tgt;
- vty->node = CFG_LOG_NODE;
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_no_log_stderr, cfg_no_log_stderr_cmd,
- "no log stderr",
- NO_STR LOG_STR "Logging via STDERR of the process\n")
-{
- struct log_target *tgt;
-
- tgt = log_target_find(LOG_TGT_TYPE_STDERR, NULL);
- if (!tgt) {
- vty_out(vty, "%% No stderr logging active%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- log_target_destroy(tgt);
-
- return CMD_SUCCESS;
-}
-
-DEFUN(cfg_log_file, cfg_log_file_cmd,
- "log file .FILENAME",
- LOG_STR "Logging to text file\n" "Filename\n")
-{
- const char *fname = argv[0];
- struct log_target *tgt;
-
- tgt = log_target_find(LOG_TGT_TYPE_FILE, fname);
- if (!tgt) {
- tgt = log_target_create_file(fname);
- if (!tgt) {
- vty_out(vty, "%% Unable to create file `%s'%s",
- fname, VTY_NEWLINE);
- return CMD_WARNING;
- }
- log_add_target(tgt);
- }
-
- vty->index = tgt;
- vty->node = CFG_LOG_NODE;
-
- return CMD_SUCCESS;
-}
-
-
-DEFUN(cfg_no_log_file, cfg_no_log_file_cmd,
- "no log file .FILENAME",
- NO_STR LOG_STR "Logging to text file\n" "Filename\n")
-{
- const char *fname = argv[0];
- struct log_target *tgt;
-
- tgt = log_target_find(LOG_TGT_TYPE_FILE, fname);
- if (!tgt) {
- vty_out(vty, "%% No such log file `%s'%s",
- fname, VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- log_target_destroy(tgt);
-
- return CMD_SUCCESS;
-}
-
-static int config_write_log_single(struct vty *vty, struct log_target *tgt)
-{
- int i;
- char level_lower[32];
-
- switch (tgt->type) {
- case LOG_TGT_TYPE_VTY:
- return 1;
- break;
- case LOG_TGT_TYPE_STDERR:
- vty_out(vty, "log stderr%s", VTY_NEWLINE);
- break;
- case LOG_TGT_TYPE_SYSLOG:
-#ifdef HAVE_SYSLOG_H
- vty_out(vty, "log syslog %s%s",
- get_value_string(sysl_level_names,
- tgt->tgt_syslog.facility),
- VTY_NEWLINE);
-#endif
- break;
- case LOG_TGT_TYPE_FILE:
- vty_out(vty, "log file %s%s", tgt->tgt_file.fname, VTY_NEWLINE);
- break;
- }
-
- vty_out(vty, " logging color %u%s", tgt->use_color ? 1 : 0,
- VTY_NEWLINE);
- vty_out(vty, " logging timestamp %u%s", tgt->print_timestamp ? 1 : 0,
- VTY_NEWLINE);
-
- /* stupid old osmo logging API uses uppercase strings... */
- osmo_str2lower(level_lower, log_level_str(tgt->loglevel));
- vty_out(vty, " logging level all %s%s", level_lower, VTY_NEWLINE);
-
- for (i = 0; i < osmo_log_info->num_cat; i++) {
- const struct log_category *cat = &tgt->categories[i];
- char cat_lower[32];
-
- /* stupid old osmo logging API uses uppercase strings... */
- osmo_str2lower(cat_lower, osmo_log_info->cat[i].name+1);
- osmo_str2lower(level_lower, log_level_str(cat->loglevel));
-
- vty_out(vty, " logging level %s %s%s", cat_lower, level_lower,
- VTY_NEWLINE);
- }
-
- /* FIXME: levels */
-
- return 1;
-}
-
-static int config_write_log(struct vty *vty)
-{
- struct log_target *dbg = vty->index;
-
- llist_for_each_entry(dbg, &osmo_log_target_list, entry)
- config_write_log_single(vty, dbg);
-
- return 1;
-}
-
-void logging_vty_add_cmds(const struct log_info *cat)
-{
- install_element_ve(&enable_logging_cmd);
- install_element_ve(&disable_logging_cmd);
- install_element_ve(&logging_fltr_all_cmd);
- install_element_ve(&logging_use_clr_cmd);
- install_element_ve(&logging_prnt_timestamp_cmd);
- install_element_ve(&logging_set_category_mask_cmd);
-
- /* Logging level strings are generated dynamically. */
- logging_level_cmd.string = log_vty_command_string(cat);
- logging_level_cmd.doc = log_vty_command_description(cat);
- install_element_ve(&logging_level_cmd);
- install_element_ve(&show_logging_vty_cmd);
-
- install_node(&cfg_log_node, config_write_log);
- install_element(CFG_LOG_NODE, &logging_fltr_all_cmd);
- install_element(CFG_LOG_NODE, &logging_use_clr_cmd);
- install_element(CFG_LOG_NODE, &logging_prnt_timestamp_cmd);
- install_element(CFG_LOG_NODE, &logging_level_cmd);
-
- install_element(CONFIG_NODE, &cfg_log_stderr_cmd);
- install_element(CONFIG_NODE, &cfg_no_log_stderr_cmd);
- install_element(CONFIG_NODE, &cfg_log_file_cmd);
- install_element(CONFIG_NODE, &cfg_no_log_file_cmd);
-#ifdef HAVE_SYSLOG_H
- install_element(CONFIG_NODE, &cfg_log_syslog_cmd);
- install_element(CONFIG_NODE, &cfg_log_syslog_local_cmd);
- install_element(CONFIG_NODE, &cfg_no_log_syslog_cmd);
-#endif
-}
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/vty/telnet_interface.c b/Src/osmoconbb/src/shared/libosmocore/src/vty/telnet_interface.c
deleted file mode 100644
index 1a28510..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/vty/telnet_interface.c
+++ /dev/null
@@ -1,211 +0,0 @@
-/* minimalistic telnet/network interface it might turn into a wire interface */
-/* (C) 2009 by Holger Hans Peter Freyther <zecke@selfish.org>
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-
-#include <osmocom/core/msgb.h>
-#include <osmocom/core/talloc.h>
-#include <osmocom/core/logging.h>
-
-#include <osmocom/vty/telnet_interface.h>
-#include <osmocom/vty/buffer.h>
-#include <osmocom/vty/command.h>
-
-/* per connection data */
-LLIST_HEAD(active_connections);
-
-static void *tall_telnet_ctx;
-
-/* per network data */
-static int telnet_new_connection(struct osmo_fd *fd, unsigned int what);
-
-static struct osmo_fd server_socket = {
- .when = BSC_FD_READ,
- .cb = telnet_new_connection,
- .priv_nr = 0,
-};
-
-int telnet_init(void *tall_ctx, void *priv, int port)
-{
- struct sockaddr_in sock_addr;
- int fd, rc, on = 1;
-
- tall_telnet_ctx = talloc_named_const(tall_ctx, 1,
- "telnet_connection");
-
- fd = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
-
- if (fd < 0) {
- LOGP(0, LOGL_ERROR, "Telnet interface socket creation failed\n");
- return fd;
- }
-
- setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
-
- memset(&sock_addr, 0, sizeof(sock_addr));
- sock_addr.sin_family = AF_INET;
- sock_addr.sin_port = htons(port);
- sock_addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
-
- rc = bind(fd, (struct sockaddr*)&sock_addr, sizeof(sock_addr));
- if (rc < 0) {
- LOGP(0, LOGL_ERROR, "Telnet interface failed to bind\n");
- close(fd);
- return rc;
- }
-
- rc = listen(fd, 0);
- if (rc < 0) {
- LOGP(0, LOGL_ERROR, "Telnet interface failed to listen\n");
- close(fd);
- return rc;
- }
-
- server_socket.data = priv;
- server_socket.fd = fd;
- osmo_fd_register(&server_socket);
-
- return 0;
-}
-
-extern struct host host;
-
-static void print_welcome(int fd)
-{
- static const char *msg1 = "Welcome to the ";
- static const char *msg2 = " control interface\r\n";
- const char *app_name = "<unnamed>";
-
- if (host.app_info->name)
- app_name = host.app_info->name;
-
- write(fd, msg1, strlen(msg1));
- write(fd, app_name, strlen(app_name));
- write(fd, msg2, strlen(msg2));
-
- if (host.app_info->copyright)
- write(fd, host.app_info->copyright, strlen(host.app_info->copyright));
-}
-
-int telnet_close_client(struct osmo_fd *fd)
-{
- struct telnet_connection *conn = (struct telnet_connection*)fd->data;
-
- close(fd->fd);
- osmo_fd_unregister(fd);
-
- if (conn->dbg) {
- log_del_target(conn->dbg);
- talloc_free(conn->dbg);
- }
-
- llist_del(&conn->entry);
- talloc_free(conn);
- return 0;
-}
-
-static int client_data(struct osmo_fd *fd, unsigned int what)
-{
- struct telnet_connection *conn = fd->data;
- int rc = 0;
-
- if (what & BSC_FD_READ) {
- conn->fd.when &= ~BSC_FD_READ;
- rc = vty_read(conn->vty);
- }
-
- /* vty might have been closed from vithin vty_read() */
- if (!conn->vty)
- return rc;
-
- if (what & BSC_FD_WRITE) {
- rc = buffer_flush_all(conn->vty->obuf, fd->fd);
- if (rc == BUFFER_EMPTY)
- conn->fd.when &= ~BSC_FD_WRITE;
- }
-
- return rc;
-}
-
-static int telnet_new_connection(struct osmo_fd *fd, unsigned int what)
-{
- struct telnet_connection *connection;
- struct sockaddr_in sockaddr;
- socklen_t len = sizeof(sockaddr);
- int new_connection = accept(fd->fd, (struct sockaddr*)&sockaddr, &len);
-
- if (new_connection < 0) {
- LOGP(0, LOGL_ERROR, "telnet accept failed\n");
- return new_connection;
- }
-
- connection = talloc_zero(tall_telnet_ctx, struct telnet_connection);
- connection->priv = fd->data;
- connection->fd.data = connection;
- connection->fd.fd = new_connection;
- connection->fd.when = BSC_FD_READ;
- connection->fd.cb = client_data;
- osmo_fd_register(&connection->fd);
- llist_add_tail(&connection->entry, &active_connections);
-
- print_welcome(new_connection);
-
- connection->vty = vty_create(new_connection, connection);
- if (!connection->vty) {
- LOGP(0, LOGL_ERROR, "couldn't create VTY\n");
- close(new_connection);
- talloc_free(connection);
- return -1;
- }
-
- return 0;
-}
-
-/* callback from VTY code */
-void vty_event(enum event event, int sock, struct vty *vty)
-{
- struct telnet_connection *connection = vty->priv;
- struct osmo_fd *bfd = &connection->fd;
-
- if (vty->type != VTY_TERM)
- return;
-
- switch (event) {
- case VTY_READ:
- bfd->when |= BSC_FD_READ;
- break;
- case VTY_WRITE:
- bfd->when |= BSC_FD_WRITE;
- break;
- case VTY_CLOSED:
- /* vty layer is about to free() vty */
- connection->vty = NULL;
- telnet_close_client(bfd);
- break;
- default:
- break;
- }
-}
-
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/vty/utils.c b/Src/osmoconbb/src/shared/libosmocore/src/vty/utils.c
deleted file mode 100644
index 7797e62..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/vty/utils.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* utility routines for printing common objects in the Osmocom world */
-
-/* (C) 2009-2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <inttypes.h>
-
-#include <osmocom/core/linuxlist.h>
-#include <osmocom/core/talloc.h>
-#include <osmocom/core/timer.h>
-#include <osmocom/core/rate_ctr.h>
-
-#include <osmocom/vty/vty.h>
-
-void vty_out_rate_ctr_group(struct vty *vty, const char *prefix,
- struct rate_ctr_group *ctrg)
-{
- unsigned int i;
-
- vty_out(vty, "%s%s:%s", prefix, ctrg->desc->group_description, VTY_NEWLINE);
- for (i = 0; i < ctrg->desc->num_ctr; i++) {
- struct rate_ctr *ctr = &ctrg->ctr[i];
- vty_out(vty, " %s%s: %8" PRIu64 " "
- "(%" PRIu64 "/s %" PRIu64 "/m %" PRIu64 "/h %" PRIu64 "/d)%s",
- prefix, ctrg->desc->ctr_desc[i].description, ctr->current,
- ctr->intv[RATE_CTR_INTV_SEC].rate,
- ctr->intv[RATE_CTR_INTV_MIN].rate,
- ctr->intv[RATE_CTR_INTV_HOUR].rate,
- ctr->intv[RATE_CTR_INTV_DAY].rate,
- VTY_NEWLINE);
- };
-}
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/vty/vector.c b/Src/osmoconbb/src/shared/libosmocore/src/vty/vector.c
deleted file mode 100644
index 4012f24..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/vty/vector.c
+++ /dev/null
@@ -1,192 +0,0 @@
-/* Generic vector interface routine
- * Copyright (C) 1997 Kunihiro Ishiguro
- *
- * This file is part of GNU Zebra.
- *
- * GNU Zebra is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2, or (at your option) any
- * later version.
- *
- * GNU Zebra 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 GNU Zebra; see the file COPYING. If not, write to the Free
- * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
- * 02111-1307, USA.
- */
-
-#include <stdlib.h>
-#include <unistd.h>
-
-#include <osmocom/vty/vector.h>
-#include <osmocom/vty/vty.h>
-#include <osmocom/core/talloc.h>
-#include <memory.h>
-
-void *tall_vty_vec_ctx;
-
-/* Initialize vector : allocate memory and return vector. */
-vector vector_init(unsigned int size)
-{
- vector v = talloc_zero(tall_vty_vec_ctx, struct _vector);
- if (!v)
- return NULL;
-
- /* allocate at least one slot */
- if (size == 0)
- size = 1;
-
- v->alloced = size;
- v->active = 0;
- v->index = _talloc_zero(tall_vty_vec_ctx, sizeof(void *) * size,
- "vector_init:index");
- if (!v->index) {
- talloc_free(v);
- return NULL;
- }
- return v;
-}
-
-void vector_only_wrapper_free(vector v)
-{
- talloc_free(v);
-}
-
-void vector_only_index_free(void *index)
-{
- talloc_free(index);
-}
-
-void vector_free(vector v)
-{
- talloc_free(v->index);
- talloc_free(v);
-}
-
-vector vector_copy(vector v)
-{
- unsigned int size;
- vector new = talloc_zero(tall_vty_vec_ctx, struct _vector);
- if (!new)
- return NULL;
-
- new->active = v->active;
- new->alloced = v->alloced;
-
- size = sizeof(void *) * (v->alloced);
- new->index = _talloc_zero(tall_vty_vec_ctx, size, "vector_copy:index");
- if (!new->index) {
- talloc_free(new);
- return NULL;
- }
- memcpy(new->index, v->index, size);
-
- return new;
-}
-
-/* Check assigned index, and if it runs short double index pointer */
-void vector_ensure(vector v, unsigned int num)
-{
- if (v->alloced > num)
- return;
-
- v->index = talloc_realloc_size(tall_vty_vec_ctx, v->index,
- sizeof(void *) * (v->alloced * 2));
- memset(&v->index[v->alloced], 0, sizeof(void *) * v->alloced);
- v->alloced *= 2;
-
- if (v->alloced <= num)
- vector_ensure(v, num);
-}
-
-/* This function only returns next empty slot index. It dose not mean
- the slot's index memory is assigned, please call vector_ensure()
- after calling this function. */
-int vector_empty_slot(vector v)
-{
- unsigned int i;
-
- if (v->active == 0)
- return 0;
-
- for (i = 0; i < v->active; i++)
- if (v->index[i] == 0)
- return i;
-
- return i;
-}
-
-/* Set value to the smallest empty slot. */
-int vector_set(vector v, void *val)
-{
- unsigned int i;
-
- i = vector_empty_slot(v);
- vector_ensure(v, i);
-
- v->index[i] = val;
-
- if (v->active <= i)
- v->active = i + 1;
-
- return i;
-}
-
-/* Set value to specified index slot. */
-int vector_set_index(vector v, unsigned int i, void *val)
-{
- vector_ensure(v, i);
-
- v->index[i] = val;
-
- if (v->active <= i)
- v->active = i + 1;
-
- return i;
-}
-
-/* Look up vector. */
-void *vector_lookup(vector v, unsigned int i)
-{
- if (i >= v->active)
- return NULL;
- return v->index[i];
-}
-
-/* Lookup vector, ensure it. */
-void *vector_lookup_ensure(vector v, unsigned int i)
-{
- vector_ensure(v, i);
- return v->index[i];
-}
-
-/* Unset value at specified index slot. */
-void vector_unset(vector v, unsigned int i)
-{
- if (i >= v->alloced)
- return;
-
- v->index[i] = NULL;
-
- if (i + 1 == v->active) {
- v->active--;
- while (i && v->index[--i] == NULL && v->active--) ; /* Is this ugly ? */
- }
-}
-
-/* Count the number of not emplty slot. */
-unsigned int vector_count(vector v)
-{
- unsigned int i;
- unsigned count = 0;
-
- for (i = 0; i < v->active; i++)
- if (v->index[i] != NULL)
- count++;
-
- return count;
-}
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/vty/vty.c b/Src/osmoconbb/src/shared/libosmocore/src/vty/vty.c
deleted file mode 100644
index 1f3237a..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/vty/vty.c
+++ /dev/null
@@ -1,1698 +0,0 @@
-
-#include <stdio.h>
-#include <stdarg.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include <errno.h>
-#include <ctype.h>
-#include <termios.h>
-
-#include <sys/utsname.h>
-#include <sys/param.h>
-
-#include <arpa/telnet.h>
-
-#include <osmocom/vty/vty.h>
-#include <osmocom/vty/command.h>
-#include <osmocom/vty/buffer.h>
-#include <osmocom/core/talloc.h>
-
-#define SYSCONFDIR "/usr/local/etc"
-
-/* our callback, located in telnet_interface.c */
-void vty_event(enum event event, int sock, struct vty *vty);
-
-extern struct host host;
-
-/* Vector which store each vty structure. */
-static vector vtyvec;
-
-vector Vvty_serv_thread;
-
-char *vty_cwd = NULL;
-
-/* Configure lock. */
-static int vty_config;
-
-static int no_password_check = 1;
-
-void *tall_vty_ctx;
-
-static void vty_clear_buf(struct vty *vty)
-{
- memset(vty->buf, 0, vty->max);
-}
-
-/* Allocate new vty struct. */
-struct vty *vty_new(void)
-{
- struct vty *new = talloc_zero(tall_vty_ctx, struct vty);
-
- if (!new)
- goto out;
-
- new->obuf = buffer_new(new, 0); /* Use default buffer size. */
- if (!new->obuf)
- goto out_new;
- new->buf = _talloc_zero(new, VTY_BUFSIZ, "vty_new->buf");
- if (!new->buf)
- goto out_obuf;
-
- new->max = VTY_BUFSIZ;
-
- return new;
-
-out_obuf:
- buffer_free(new->obuf);
-out_new:
- talloc_free(new);
- new = NULL;
-out:
- return new;
-}
-
-/* Authentication of vty */
-static void vty_auth(struct vty *vty, char *buf)
-{
- char *passwd = NULL;
- enum node_type next_node = 0;
- int fail;
- char *crypt(const char *, const char *);
-
- switch (vty->node) {
- case AUTH_NODE:
-#ifdef VTY_CRYPT_PW
- if (host.encrypt)
- passwd = host.password_encrypt;
- else
-#endif
- passwd = host.password;
- if (host.advanced)
- next_node = host.enable ? VIEW_NODE : ENABLE_NODE;
- else
- next_node = VIEW_NODE;
- break;
- case AUTH_ENABLE_NODE:
-#ifdef VTY_CRYPT_PW
- if (host.encrypt)
- passwd = host.enable_encrypt;
- else
-#endif
- passwd = host.enable;
- next_node = ENABLE_NODE;
- break;
- }
-
- if (passwd) {
-#ifdef VTY_CRYPT_PW
- if (host.encrypt)
- fail = strcmp(crypt(buf, passwd), passwd);
- else
-#endif
- fail = strcmp(buf, passwd);
- } else
- fail = 1;
-
- if (!fail) {
- vty->fail = 0;
- vty->node = next_node; /* Success ! */
- } else {
- vty->fail++;
- if (vty->fail >= 3) {
- if (vty->node == AUTH_NODE) {
- vty_out(vty,
- "%% Bad passwords, too many failures!%s",
- VTY_NEWLINE);
- vty->status = VTY_CLOSE;
- } else {
- /* AUTH_ENABLE_NODE */
- vty->fail = 0;
- vty_out(vty,
- "%% Bad enable passwords, too many failures!%s",
- VTY_NEWLINE);
- vty->node = VIEW_NODE;
- }
- }
- }
-}
-
-/* Close vty interface. */
-void vty_close(struct vty *vty)
-{
- int i;
-
- if (vty->obuf) {
- /* Flush buffer. */
- buffer_flush_all(vty->obuf, vty->fd);
-
- /* Free input buffer. */
- buffer_free(vty->obuf);
- vty->obuf = NULL;
- }
-
- /* Free command history. */
- for (i = 0; i < VTY_MAXHIST; i++)
- if (vty->hist[i])
- talloc_free(vty->hist[i]);
-
- /* Unset vector. */
- vector_unset(vtyvec, vty->fd);
-
- /* Close socket. */
- if (vty->fd > 0)
- close(vty->fd);
-
- if (vty->buf) {
- talloc_free(vty->buf);
- vty->buf = NULL;
- }
-
- /* Check configure. */
- vty_config_unlock(vty);
-
- /* VTY_CLOSED is handled by the telnet_interface */
- vty_event(VTY_CLOSED, vty->fd, vty);
-
- /* OK free vty. */
- talloc_free(vty);
-}
-
-int vty_shell(struct vty *vty)
-{
- return vty->type == VTY_SHELL ? 1 : 0;
-}
-
-
-/* VTY standard output function. */
-int vty_out(struct vty *vty, const char *format, ...)
-{
- va_list args;
- int len = 0;
- int size = 1024;
- char buf[1024];
- char *p = NULL;
-
- if (vty_shell(vty)) {
- va_start(args, format);
- vprintf(format, args);
- va_end(args);
- } else {
- /* Try to write to initial buffer. */
- va_start(args, format);
- len = vsnprintf(buf, sizeof buf, format, args);
- va_end(args);
-
- /* Initial buffer is not enough. */
- if (len < 0 || len >= size) {
- while (1) {
- if (len > -1)
- size = len + 1;
- else
- size = size * 2;
-
- p = talloc_realloc_size(vty, p, size);
- if (!p)
- return -1;
-
- va_start(args, format);
- len = vsnprintf(p, size, format, args);
- va_end(args);
-
- if (len > -1 && len < size)
- break;
- }
- }
-
- /* When initial buffer is enough to store all output. */
- if (!p)
- p = buf;
-
- /* Pointer p must point out buffer. */
- buffer_put(vty->obuf, (u_char *) p, len);
-
- /* If p is not different with buf, it is allocated buffer. */
- if (p != buf)
- talloc_free(p);
- }
-
- vty_event(VTY_WRITE, vty->fd, vty);
-
- return len;
-}
-
-int vty_out_newline(struct vty *vty)
-{
- char *p = vty_newline(vty);
- buffer_put(vty->obuf, p, strlen(p));
- return 0;
-}
-
-void *vty_current_index(struct vty *vty)
-{
- return vty->index;
-}
-int vty_current_node(struct vty *vty)
-{
- return vty->node;
-}
-
-int vty_config_lock(struct vty *vty)
-{
- if (vty_config == 0) {
- vty->config = 1;
- vty_config = 1;
- }
- return vty->config;
-}
-
-int vty_config_unlock(struct vty *vty)
-{
- if (vty_config == 1 && vty->config == 1) {
- vty->config = 0;
- vty_config = 0;
- }
- return vty->config;
-}
-
-/* Say hello to vty interface. */
-void vty_hello(struct vty *vty)
-{
- if (host.motdfile) {
- FILE *f;
- char buf[4096];
-
- f = fopen(host.motdfile, "r");
- if (f) {
- while (fgets(buf, sizeof(buf), f)) {
- char *s;
- /* work backwards to ignore trailling isspace() */
- for (s = buf + strlen(buf);
- (s > buf) && isspace(*(s - 1)); s--) ;
- *s = '\0';
- vty_out(vty, "%s%s", buf, VTY_NEWLINE);
- }
- fclose(f);
- } else
- vty_out(vty, "MOTD file not found%s", VTY_NEWLINE);
- } else if (host.motd)
- vty_out(vty, "%s", host.motd);
-}
-
-/* Put out prompt and wait input from user. */
-static void vty_prompt(struct vty *vty)
-{
- struct utsname names;
- const char *hostname;
-
- if (vty->type == VTY_TERM) {
- hostname = host.app_info->name;
- if (!hostname) {
- uname(&names);
- hostname = names.nodename;
- }
- vty_out(vty, cmd_prompt(vty->node), hostname);
- }
-}
-
-/* Command execution over the vty interface. */
-static int vty_command(struct vty *vty, char *buf)
-{
- int ret;
- vector vline;
-
- /* Split readline string up into the vector */
- vline = cmd_make_strvec(buf);
-
- if (vline == NULL)
- return CMD_SUCCESS;
-
- ret = cmd_execute_command(vline, vty, NULL, 0);
- if (ret != CMD_SUCCESS)
- switch (ret) {
- case CMD_WARNING:
- if (vty->type == VTY_FILE)
- vty_out(vty, "Warning...%s", VTY_NEWLINE);
- break;
- case CMD_ERR_AMBIGUOUS:
- vty_out(vty, "%% Ambiguous command.%s", VTY_NEWLINE);
- break;
- case CMD_ERR_NO_MATCH:
- vty_out(vty, "%% Unknown command.%s", VTY_NEWLINE);
- break;
- case CMD_ERR_INCOMPLETE:
- vty_out(vty, "%% Command incomplete.%s", VTY_NEWLINE);
- break;
- }
- cmd_free_strvec(vline);
-
- return ret;
-}
-
-static const char telnet_backward_char = 0x08;
-static const char telnet_space_char = ' ';
-
-/* Basic function to write buffer to vty. */
-static void vty_write(struct vty *vty, const char *buf, size_t nbytes)
-{
- if ((vty->node == AUTH_NODE) || (vty->node == AUTH_ENABLE_NODE))
- return;
-
- /* Should we do buffering here ? And make vty_flush (vty) ? */
- buffer_put(vty->obuf, buf, nbytes);
-}
-
-/* Ensure length of input buffer. Is buffer is short, double it. */
-static void vty_ensure(struct vty *vty, int length)
-{
- if (vty->max <= length) {
- vty->max *= 2;
- vty->buf = talloc_realloc_size(vty, vty->buf, vty->max);
- // FIXME: check return
- }
-}
-
-/* Basic function to insert character into vty. */
-static void vty_self_insert(struct vty *vty, char c)
-{
- int i;
- int length;
-
- vty_ensure(vty, vty->length + 1);
- length = vty->length - vty->cp;
- memmove(&vty->buf[vty->cp + 1], &vty->buf[vty->cp], length);
- vty->buf[vty->cp] = c;
-
- vty_write(vty, &vty->buf[vty->cp], length + 1);
- for (i = 0; i < length; i++)
- vty_write(vty, &telnet_backward_char, 1);
-
- vty->cp++;
- vty->length++;
-}
-
-/* Self insert character 'c' in overwrite mode. */
-static void vty_self_insert_overwrite(struct vty *vty, char c)
-{
- vty_ensure(vty, vty->length + 1);
- vty->buf[vty->cp++] = c;
-
- if (vty->cp > vty->length)
- vty->length++;
-
- if ((vty->node == AUTH_NODE) || (vty->node == AUTH_ENABLE_NODE))
- return;
-
- vty_write(vty, &c, 1);
-}
-
-/* Insert a word into vty interface with overwrite mode. */
-static void vty_insert_word_overwrite(struct vty *vty, char *str)
-{
- int len = strlen(str);
- vty_write(vty, str, len);
- strcpy(&vty->buf[vty->cp], str);
- vty->cp += len;
- vty->length = vty->cp;
-}
-
-/* Forward character. */
-static void vty_forward_char(struct vty *vty)
-{
- if (vty->cp < vty->length) {
- vty_write(vty, &vty->buf[vty->cp], 1);
- vty->cp++;
- }
-}
-
-/* Backward character. */
-static void vty_backward_char(struct vty *vty)
-{
- if (vty->cp > 0) {
- vty->cp--;
- vty_write(vty, &telnet_backward_char, 1);
- }
-}
-
-/* Move to the beginning of the line. */
-static void vty_beginning_of_line(struct vty *vty)
-{
- while (vty->cp)
- vty_backward_char(vty);
-}
-
-/* Move to the end of the line. */
-static void vty_end_of_line(struct vty *vty)
-{
- while (vty->cp < vty->length)
- vty_forward_char(vty);
-}
-
-/* Add current command line to the history buffer. */
-static void vty_hist_add(struct vty *vty)
-{
- int index;
-
- if (vty->length == 0)
- return;
-
- index = vty->hindex ? vty->hindex - 1 : VTY_MAXHIST - 1;
-
- /* Ignore the same string as previous one. */
- if (vty->hist[index])
- if (strcmp(vty->buf, vty->hist[index]) == 0) {
- vty->hp = vty->hindex;
- return;
- }
-
- /* Insert history entry. */
- if (vty->hist[vty->hindex])
- talloc_free(vty->hist[vty->hindex]);
- vty->hist[vty->hindex] = talloc_strdup(vty, vty->buf);
-
- /* History index rotation. */
- vty->hindex++;
- if (vty->hindex == VTY_MAXHIST)
- vty->hindex = 0;
-
- vty->hp = vty->hindex;
-}
-
-/* Get telnet window size. */
-static int
-vty_telnet_option (struct vty *vty, unsigned char *buf, int nbytes)
-{
-#ifdef TELNET_OPTION_DEBUG
- int i;
-
- for (i = 0; i < nbytes; i++)
- {
- switch (buf[i])
- {
- case IAC:
- vty_out (vty, "IAC ");
- break;
- case WILL:
- vty_out (vty, "WILL ");
- break;
- case WONT:
- vty_out (vty, "WONT ");
- break;
- case DO:
- vty_out (vty, "DO ");
- break;
- case DONT:
- vty_out (vty, "DONT ");
- break;
- case SB:
- vty_out (vty, "SB ");
- break;
- case SE:
- vty_out (vty, "SE ");
- break;
- case TELOPT_ECHO:
- vty_out (vty, "TELOPT_ECHO %s", VTY_NEWLINE);
- break;
- case TELOPT_SGA:
- vty_out (vty, "TELOPT_SGA %s", VTY_NEWLINE);
- break;
- case TELOPT_NAWS:
- vty_out (vty, "TELOPT_NAWS %s", VTY_NEWLINE);
- break;
- default:
- vty_out (vty, "%x ", buf[i]);
- break;
- }
- }
- vty_out (vty, "%s", VTY_NEWLINE);
-
-#endif /* TELNET_OPTION_DEBUG */
-
- switch (buf[0])
- {
- case SB:
- vty->sb_len = 0;
- vty->iac_sb_in_progress = 1;
- return 0;
- break;
- case SE:
- {
- if (!vty->iac_sb_in_progress)
- return 0;
-
- if ((vty->sb_len == 0) || (vty->sb_buf[0] == '\0'))
- {
- vty->iac_sb_in_progress = 0;
- return 0;
- }
- switch (vty->sb_buf[0])
- {
- case TELOPT_NAWS:
- if (vty->sb_len != TELNET_NAWS_SB_LEN)
- vty_out(vty,"RFC 1073 violation detected: telnet NAWS option "
- "should send %d characters, but we received %lu",
- TELNET_NAWS_SB_LEN, (u_long)vty->sb_len);
- else if (sizeof(vty->sb_buf) < TELNET_NAWS_SB_LEN)
- vty_out(vty, "Bug detected: sizeof(vty->sb_buf) %lu < %d, "
- "too small to handle the telnet NAWS option",
- (u_long)sizeof(vty->sb_buf), TELNET_NAWS_SB_LEN);
- else
- {
- vty->width = ((vty->sb_buf[1] << 8)|vty->sb_buf[2]);
- vty->height = ((vty->sb_buf[3] << 8)|vty->sb_buf[4]);
-#ifdef TELNET_OPTION_DEBUG
- vty_out(vty, "TELNET NAWS window size negotiation completed: "
- "width %d, height %d%s",
- vty->width, vty->height, VTY_NEWLINE);
-#endif
- }
- break;
- }
- vty->iac_sb_in_progress = 0;
- return 0;
- break;
- }
- default:
- break;
- }
- return 1;
-}
-
-/* Execute current command line. */
-static int vty_execute(struct vty *vty)
-{
- int ret;
-
- ret = CMD_SUCCESS;
-
- switch (vty->node) {
- case AUTH_NODE:
- case AUTH_ENABLE_NODE:
- vty_auth(vty, vty->buf);
- break;
- default:
- ret = vty_command(vty, vty->buf);
- if (vty->type == VTY_TERM)
- vty_hist_add(vty);
- break;
- }
-
- /* Clear command line buffer. */
- vty->cp = vty->length = 0;
- vty_clear_buf(vty);
-
- if (vty->status != VTY_CLOSE)
- vty_prompt(vty);
-
- return ret;
-}
-
-/* Send WILL TELOPT_ECHO to remote server. */
-static void
-vty_will_echo (struct vty *vty)
-{
- unsigned char cmd[] = { IAC, WILL, TELOPT_ECHO, '\0' };
- vty_out (vty, "%s", cmd);
-}
-
-/* Make suppress Go-Ahead telnet option. */
-static void
-vty_will_suppress_go_ahead (struct vty *vty)
-{
- unsigned char cmd[] = { IAC, WILL, TELOPT_SGA, '\0' };
- vty_out (vty, "%s", cmd);
-}
-
-/* Make don't use linemode over telnet. */
-static void
-vty_dont_linemode (struct vty *vty)
-{
- unsigned char cmd[] = { IAC, DONT, TELOPT_LINEMODE, '\0' };
- vty_out (vty, "%s", cmd);
-}
-
-/* Use window size. */
-static void
-vty_do_window_size (struct vty *vty)
-{
- unsigned char cmd[] = { IAC, DO, TELOPT_NAWS, '\0' };
- vty_out (vty, "%s", cmd);
-}
-
-static void vty_kill_line_from_beginning(struct vty *);
-static void vty_redraw_line(struct vty *);
-
-/* Print command line history. This function is called from
- vty_next_line and vty_previous_line. */
-static void vty_history_print(struct vty *vty)
-{
- int length;
-
- vty_kill_line_from_beginning(vty);
-
- /* Get previous line from history buffer */
- length = strlen(vty->hist[vty->hp]);
- memcpy(vty->buf, vty->hist[vty->hp], length);
- vty->cp = vty->length = length;
-
- /* Redraw current line */
- vty_redraw_line(vty);
-}
-
-/* Show next command line history. */
-static void vty_next_line(struct vty *vty)
-{
- int try_index;
-
- if (vty->hp == vty->hindex)
- return;
-
- /* Try is there history exist or not. */
- try_index = vty->hp;
- if (try_index == (VTY_MAXHIST - 1))
- try_index = 0;
- else
- try_index++;
-
- /* If there is not history return. */
- if (vty->hist[try_index] == NULL)
- return;
- else
- vty->hp = try_index;
-
- vty_history_print(vty);
-}
-
-/* Show previous command line history. */
-static void vty_previous_line(struct vty *vty)
-{
- int try_index;
-
- try_index = vty->hp;
- if (try_index == 0)
- try_index = VTY_MAXHIST - 1;
- else
- try_index--;
-
- if (vty->hist[try_index] == NULL)
- return;
- else
- vty->hp = try_index;
-
- vty_history_print(vty);
-}
-
-/* This function redraw all of the command line character. */
-static void vty_redraw_line(struct vty *vty)
-{
- vty_write(vty, vty->buf, vty->length);
- vty->cp = vty->length;
-}
-
-/* Forward word. */
-static void vty_forward_word(struct vty *vty)
-{
- while (vty->cp != vty->length && vty->buf[vty->cp] != ' ')
- vty_forward_char(vty);
-
- while (vty->cp != vty->length && vty->buf[vty->cp] == ' ')
- vty_forward_char(vty);
-}
-
-/* Backward word without skipping training space. */
-static void vty_backward_pure_word(struct vty *vty)
-{
- while (vty->cp > 0 && vty->buf[vty->cp - 1] != ' ')
- vty_backward_char(vty);
-}
-
-/* Backward word. */
-static void vty_backward_word(struct vty *vty)
-{
- while (vty->cp > 0 && vty->buf[vty->cp - 1] == ' ')
- vty_backward_char(vty);
-
- while (vty->cp > 0 && vty->buf[vty->cp - 1] != ' ')
- vty_backward_char(vty);
-}
-
-/* When '^D' is typed at the beginning of the line we move to the down
- level. */
-static void vty_down_level(struct vty *vty)
-{
- vty_out(vty, "%s", VTY_NEWLINE);
- /* FIXME: we need to call the exit function of the specific node
- * in question, not this generic one that doesn't know all nodes */
- (*config_exit_cmd.func) (NULL, vty, 0, NULL);
- vty_prompt(vty);
- vty->cp = 0;
-}
-
-/* When '^Z' is received from vty, move down to the enable mode. */
-static void vty_end_config(struct vty *vty)
-{
- vty_out(vty, "%s", VTY_NEWLINE);
-
- /* FIXME: we need to call the exit function of the specific node
- * in question, not this generic one that doesn't know all nodes */
- switch (vty->node) {
- case VIEW_NODE:
- case ENABLE_NODE:
- /* Nothing to do. */
- break;
- case CONFIG_NODE:
- case VTY_NODE:
- vty_config_unlock(vty);
- vty->node = ENABLE_NODE;
- break;
- case CFG_LOG_NODE:
- vty->node = CONFIG_NODE;
- break;
- default:
- /* Unknown node, we have to ignore it. */
- break;
- }
-
- vty_prompt(vty);
- vty->cp = 0;
-}
-
-/* Delete a charcter at the current point. */
-static void vty_delete_char(struct vty *vty)
-{
- int i;
- int size;
-
- if (vty->node == AUTH_NODE || vty->node == AUTH_ENABLE_NODE)
- return;
-
- if (vty->length == 0) {
- vty_down_level(vty);
- return;
- }
-
- if (vty->cp == vty->length)
- return; /* completion need here? */
-
- size = vty->length - vty->cp;
-
- vty->length--;
- memmove(&vty->buf[vty->cp], &vty->buf[vty->cp + 1], size - 1);
- vty->buf[vty->length] = '\0';
-
- vty_write(vty, &vty->buf[vty->cp], size - 1);
- vty_write(vty, &telnet_space_char, 1);
-
- for (i = 0; i < size; i++)
- vty_write(vty, &telnet_backward_char, 1);
-}
-
-/* Delete a character before the point. */
-static void vty_delete_backward_char(struct vty *vty)
-{
- if (vty->cp == 0)
- return;
-
- vty_backward_char(vty);
- vty_delete_char(vty);
-}
-
-/* Kill rest of line from current point. */
-static void vty_kill_line(struct vty *vty)
-{
- int i;
- int size;
-
- size = vty->length - vty->cp;
-
- if (size == 0)
- return;
-
- for (i = 0; i < size; i++)
- vty_write(vty, &telnet_space_char, 1);
- for (i = 0; i < size; i++)
- vty_write(vty, &telnet_backward_char, 1);
-
- memset(&vty->buf[vty->cp], 0, size);
- vty->length = vty->cp;
-}
-
-/* Kill line from the beginning. */
-static void vty_kill_line_from_beginning(struct vty *vty)
-{
- vty_beginning_of_line(vty);
- vty_kill_line(vty);
-}
-
-/* Delete a word before the point. */
-static void vty_forward_kill_word(struct vty *vty)
-{
- while (vty->cp != vty->length && vty->buf[vty->cp] == ' ')
- vty_delete_char(vty);
- while (vty->cp != vty->length && vty->buf[vty->cp] != ' ')
- vty_delete_char(vty);
-}
-
-/* Delete a word before the point. */
-static void vty_backward_kill_word(struct vty *vty)
-{
- while (vty->cp > 0 && vty->buf[vty->cp - 1] == ' ')
- vty_delete_backward_char(vty);
- while (vty->cp > 0 && vty->buf[vty->cp - 1] != ' ')
- vty_delete_backward_char(vty);
-}
-
-/* Transpose chars before or at the point. */
-static void vty_transpose_chars(struct vty *vty)
-{
- char c1, c2;
-
- /* If length is short or point is near by the beginning of line then
- return. */
- if (vty->length < 2 || vty->cp < 1)
- return;
-
- /* In case of point is located at the end of the line. */
- if (vty->cp == vty->length) {
- c1 = vty->buf[vty->cp - 1];
- c2 = vty->buf[vty->cp - 2];
-
- vty_backward_char(vty);
- vty_backward_char(vty);
- vty_self_insert_overwrite(vty, c1);
- vty_self_insert_overwrite(vty, c2);
- } else {
- c1 = vty->buf[vty->cp];
- c2 = vty->buf[vty->cp - 1];
-
- vty_backward_char(vty);
- vty_self_insert_overwrite(vty, c1);
- vty_self_insert_overwrite(vty, c2);
- }
-}
-
-/* Do completion at vty interface. */
-static void vty_complete_command(struct vty *vty)
-{
- int i;
- int ret;
- char **matched = NULL;
- vector vline;
-
- if (vty->node == AUTH_NODE || vty->node == AUTH_ENABLE_NODE)
- return;
-
- vline = cmd_make_strvec(vty->buf);
- if (vline == NULL)
- return;
-
- /* In case of 'help \t'. */
- if (isspace((int)vty->buf[vty->length - 1]))
- vector_set(vline, '\0');
-
- matched = cmd_complete_command(vline, vty, &ret);
-
- cmd_free_strvec(vline);
-
- vty_out(vty, "%s", VTY_NEWLINE);
- switch (ret) {
- case CMD_ERR_AMBIGUOUS:
- vty_out(vty, "%% Ambiguous command.%s", VTY_NEWLINE);
- vty_prompt(vty);
- vty_redraw_line(vty);
- break;
- case CMD_ERR_NO_MATCH:
- /* vty_out (vty, "%% There is no matched command.%s", VTY_NEWLINE); */
- vty_prompt(vty);
- vty_redraw_line(vty);
- break;
- case CMD_COMPLETE_FULL_MATCH:
- vty_prompt(vty);
- vty_redraw_line(vty);
- vty_backward_pure_word(vty);
- vty_insert_word_overwrite(vty, matched[0]);
- vty_self_insert(vty, ' ');
- talloc_free(matched[0]);
- break;
- case CMD_COMPLETE_MATCH:
- vty_prompt(vty);
- vty_redraw_line(vty);
- vty_backward_pure_word(vty);
- vty_insert_word_overwrite(vty, matched[0]);
- talloc_free(matched[0]);
- break;
- case CMD_COMPLETE_LIST_MATCH:
- for (i = 0; matched[i] != NULL; i++) {
- if (i != 0 && ((i % 6) == 0))
- vty_out(vty, "%s", VTY_NEWLINE);
- vty_out(vty, "%-10s ", matched[i]);
- talloc_free(matched[i]);
- }
- vty_out(vty, "%s", VTY_NEWLINE);
-
- vty_prompt(vty);
- vty_redraw_line(vty);
- break;
- case CMD_ERR_NOTHING_TODO:
- vty_prompt(vty);
- vty_redraw_line(vty);
- break;
- default:
- break;
- }
- if (matched)
- vector_only_index_free(matched);
-}
-
-static void
-vty_describe_fold(struct vty *vty, int cmd_width,
- unsigned int desc_width, struct desc *desc)
-{
- char *buf;
- const char *cmd, *p;
- int pos;
-
- cmd = desc->cmd[0] == '.' ? desc->cmd + 1 : desc->cmd;
-
- if (desc_width <= 0) {
- vty_out(vty, " %-*s %s%s", cmd_width, cmd, desc->str,
- VTY_NEWLINE);
- return;
- }
-
- buf = _talloc_zero(vty, strlen(desc->str) + 1, "describe_fold");
- if (!buf)
- return;
-
- for (p = desc->str; strlen(p) > desc_width; p += pos + 1) {
- for (pos = desc_width; pos > 0; pos--)
- if (*(p + pos) == ' ')
- break;
-
- if (pos == 0)
- break;
-
- strncpy(buf, p, pos);
- buf[pos] = '\0';
- vty_out(vty, " %-*s %s%s", cmd_width, cmd, buf, VTY_NEWLINE);
-
- cmd = "";
- }
-
- vty_out(vty, " %-*s %s%s", cmd_width, cmd, p, VTY_NEWLINE);
-
- talloc_free(buf);
-}
-
-/* Describe matched command function. */
-static void vty_describe_command(struct vty *vty)
-{
- int ret;
- vector vline;
- vector describe;
- unsigned int i, width, desc_width;
- struct desc *desc, *desc_cr = NULL;
-
- vline = cmd_make_strvec(vty->buf);
-
- /* In case of '> ?'. */
- if (vline == NULL) {
- vline = vector_init(1);
- vector_set(vline, '\0');
- } else if (isspace((int)vty->buf[vty->length - 1]))
- vector_set(vline, '\0');
-
- describe = cmd_describe_command(vline, vty, &ret);
-
- vty_out(vty, "%s", VTY_NEWLINE);
-
- /* Ambiguous error. */
- switch (ret) {
- case CMD_ERR_AMBIGUOUS:
- cmd_free_strvec(vline);
- vty_out(vty, "%% Ambiguous command.%s", VTY_NEWLINE);
- vty_prompt(vty);
- vty_redraw_line(vty);
- return;
- break;
- case CMD_ERR_NO_MATCH:
- cmd_free_strvec(vline);
- vty_out(vty, "%% There is no matched command.%s", VTY_NEWLINE);
- vty_prompt(vty);
- vty_redraw_line(vty);
- return;
- break;
- }
-
- /* Get width of command string. */
- width = 0;
- for (i = 0; i < vector_active(describe); i++)
- if ((desc = vector_slot(describe, i)) != NULL) {
- unsigned int len;
-
- if (desc->cmd[0] == '\0')
- continue;
-
- len = strlen(desc->cmd);
- if (desc->cmd[0] == '.')
- len--;
-
- if (width < len)
- width = len;
- }
-
- /* Get width of description string. */
- desc_width = vty->width - (width + 6);
-
- /* Print out description. */
- for (i = 0; i < vector_active(describe); i++)
- if ((desc = vector_slot(describe, i)) != NULL) {
- if (desc->cmd[0] == '\0')
- continue;
-
- if (strcmp(desc->cmd, "<cr>") == 0) {
- desc_cr = desc;
- continue;
- }
-
- if (!desc->str)
- vty_out(vty, " %-s%s",
- desc->cmd[0] ==
- '.' ? desc->cmd + 1 : desc->cmd,
- VTY_NEWLINE);
- else if (desc_width >= strlen(desc->str))
- vty_out(vty, " %-*s %s%s", width,
- desc->cmd[0] ==
- '.' ? desc->cmd + 1 : desc->cmd,
- desc->str, VTY_NEWLINE);
- else
- vty_describe_fold(vty, width, desc_width, desc);
-
-#if 0
- vty_out(vty, " %-*s %s%s", width
- desc->cmd[0] == '.' ? desc->cmd + 1 : desc->cmd,
- desc->str ? desc->str : "", VTY_NEWLINE);
-#endif /* 0 */
- }
-
- if ((desc = desc_cr)) {
- if (!desc->str)
- vty_out(vty, " %-s%s",
- desc->cmd[0] == '.' ? desc->cmd + 1 : desc->cmd,
- VTY_NEWLINE);
- else if (desc_width >= strlen(desc->str))
- vty_out(vty, " %-*s %s%s", width,
- desc->cmd[0] == '.' ? desc->cmd + 1 : desc->cmd,
- desc->str, VTY_NEWLINE);
- else
- vty_describe_fold(vty, width, desc_width, desc);
- }
-
- cmd_free_strvec(vline);
- vector_free(describe);
-
- vty_prompt(vty);
- vty_redraw_line(vty);
-}
-
-/* ^C stop current input and do not add command line to the history. */
-static void vty_stop_input(struct vty *vty)
-{
- vty->cp = vty->length = 0;
- vty_clear_buf(vty);
- vty_out(vty, "%s", VTY_NEWLINE);
-
- switch (vty->node) {
- case VIEW_NODE:
- case ENABLE_NODE:
- /* Nothing to do. */
- break;
- case CONFIG_NODE:
- case VTY_NODE:
- vty_config_unlock(vty);
- vty->node = ENABLE_NODE;
- break;
- case CFG_LOG_NODE:
- vty->node = CONFIG_NODE;
- break;
- default:
- /* Unknown node, we have to ignore it. */
- break;
- }
- vty_prompt(vty);
-
- /* Set history pointer to the latest one. */
- vty->hp = vty->hindex;
-}
-
-#define CONTROL(X) ((X) - '@')
-#define VTY_NORMAL 0
-#define VTY_PRE_ESCAPE 1
-#define VTY_ESCAPE 2
-
-/* Escape character command map. */
-static void vty_escape_map(unsigned char c, struct vty *vty)
-{
- switch (c) {
- case ('A'):
- vty_previous_line(vty);
- break;
- case ('B'):
- vty_next_line(vty);
- break;
- case ('C'):
- vty_forward_char(vty);
- break;
- case ('D'):
- vty_backward_char(vty);
- break;
- default:
- break;
- }
-
- /* Go back to normal mode. */
- vty->escape = VTY_NORMAL;
-}
-
-/* Quit print out to the buffer. */
-static void vty_buffer_reset(struct vty *vty)
-{
- buffer_reset(vty->obuf);
- vty_prompt(vty);
- vty_redraw_line(vty);
-}
-
-/* Read data via vty socket. */
-int vty_read(struct vty *vty)
-{
- int i;
- int nbytes;
- unsigned char buf[VTY_READ_BUFSIZ];
-
- int vty_sock = vty->fd;
-
- /* Read raw data from socket */
- if ((nbytes = read(vty->fd, buf, VTY_READ_BUFSIZ)) <= 0) {
- if (nbytes < 0) {
- if (ERRNO_IO_RETRY(errno)) {
- vty_event(VTY_READ, vty_sock, vty);
- return 0;
- }
- }
- buffer_reset(vty->obuf);
- vty->status = VTY_CLOSE;
- }
-
- for (i = 0; i < nbytes; i++) {
- if (buf[i] == IAC) {
- if (!vty->iac) {
- vty->iac = 1;
- continue;
- } else {
- vty->iac = 0;
- }
- }
-
- if (vty->iac_sb_in_progress && !vty->iac) {
- if (vty->sb_len < sizeof(vty->sb_buf))
- vty->sb_buf[vty->sb_len] = buf[i];
- vty->sb_len++;
- continue;
- }
-
- if (vty->iac) {
- /* In case of telnet command */
- int ret = 0;
- ret = vty_telnet_option(vty, buf + i, nbytes - i);
- vty->iac = 0;
- i += ret;
- continue;
- }
-
- if (vty->status == VTY_MORE) {
- switch (buf[i]) {
- case CONTROL('C'):
- case 'q':
- case 'Q':
- vty_buffer_reset(vty);
- break;
-#if 0 /* More line does not work for "show ip bgp". */
- case '\n':
- case '\r':
- vty->status = VTY_MORELINE;
- break;
-#endif
- default:
- break;
- }
- continue;
- }
-
- /* Escape character. */
- if (vty->escape == VTY_ESCAPE) {
- vty_escape_map(buf[i], vty);
- continue;
- }
-
- /* Pre-escape status. */
- if (vty->escape == VTY_PRE_ESCAPE) {
- switch (buf[i]) {
- case '[':
- vty->escape = VTY_ESCAPE;
- break;
- case 'b':
- vty_backward_word(vty);
- vty->escape = VTY_NORMAL;
- break;
- case 'f':
- vty_forward_word(vty);
- vty->escape = VTY_NORMAL;
- break;
- case 'd':
- vty_forward_kill_word(vty);
- vty->escape = VTY_NORMAL;
- break;
- case CONTROL('H'):
- case 0x7f:
- vty_backward_kill_word(vty);
- vty->escape = VTY_NORMAL;
- break;
- default:
- vty->escape = VTY_NORMAL;
- break;
- }
- continue;
- }
-
- switch (buf[i]) {
- case CONTROL('A'):
- vty_beginning_of_line(vty);
- break;
- case CONTROL('B'):
- vty_backward_char(vty);
- break;
- case CONTROL('C'):
- vty_stop_input(vty);
- break;
- case CONTROL('D'):
- vty_delete_char(vty);
- break;
- case CONTROL('E'):
- vty_end_of_line(vty);
- break;
- case CONTROL('F'):
- vty_forward_char(vty);
- break;
- case CONTROL('H'):
- case 0x7f:
- vty_delete_backward_char(vty);
- break;
- case CONTROL('K'):
- vty_kill_line(vty);
- break;
- case CONTROL('N'):
- vty_next_line(vty);
- break;
- case CONTROL('P'):
- vty_previous_line(vty);
- break;
- case CONTROL('T'):
- vty_transpose_chars(vty);
- break;
- case CONTROL('U'):
- vty_kill_line_from_beginning(vty);
- break;
- case CONTROL('W'):
- vty_backward_kill_word(vty);
- break;
- case CONTROL('Z'):
- vty_end_config(vty);
- break;
- case '\n':
- case '\r':
- vty_out(vty, "%s", VTY_NEWLINE);
- vty_execute(vty);
- break;
- case '\t':
- vty_complete_command(vty);
- break;
- case '?':
- if (vty->node == AUTH_NODE
- || vty->node == AUTH_ENABLE_NODE)
- vty_self_insert(vty, buf[i]);
- else
- vty_describe_command(vty);
- break;
- case '\033':
- if (i + 1 < nbytes && buf[i + 1] == '[') {
- vty->escape = VTY_ESCAPE;
- i++;
- } else
- vty->escape = VTY_PRE_ESCAPE;
- break;
- default:
- if (buf[i] > 31 && buf[i] < 127)
- vty_self_insert(vty, buf[i]);
- break;
- }
- }
-
- /* Check status. */
- if (vty->status == VTY_CLOSE)
- vty_close(vty);
- else {
- vty_event(VTY_WRITE, vty_sock, vty);
- vty_event(VTY_READ, vty_sock, vty);
- }
- return 0;
-}
-
-/* Read up configuration file */
-static int
-vty_read_file(FILE *confp, void *priv)
-{
- int ret;
- struct vty *vty;
-
- vty = vty_new();
- vty->fd = 0;
- vty->type = VTY_FILE;
- vty->node = CONFIG_NODE;
- vty->priv = priv;
-
- ret = config_from_file(vty, confp);
-
- if (ret != CMD_SUCCESS) {
- switch (ret) {
- case CMD_ERR_AMBIGUOUS:
- fprintf(stderr, "Ambiguous command.\n");
- break;
- case CMD_ERR_NO_MATCH:
- fprintf(stderr, "There is no such command.\n");
- break;
- }
- fprintf(stderr, "Error occurred during reading below "
- "line:\n%s\n", vty->buf);
- vty_close(vty);
- return -EINVAL;
- }
-
- vty_close(vty);
- return 0;
-}
-
-/* Create new vty structure. */
-struct vty *
-vty_create (int vty_sock, void *priv)
-{
- struct vty *vty;
-
- struct termios t;
-
- tcgetattr(vty_sock, &t);
- cfmakeraw(&t);
- tcsetattr(vty_sock, TCSANOW, &t);
-
- /* Allocate new vty structure and set up default values. */
- vty = vty_new ();
- vty->fd = vty_sock;
- vty->priv = priv;
- vty->type = VTY_TERM;
- if (no_password_check)
- {
- if (host.advanced)
- vty->node = ENABLE_NODE;
- else
- vty->node = VIEW_NODE;
- }
- else
- vty->node = AUTH_NODE;
- vty->fail = 0;
- vty->cp = 0;
- vty_clear_buf (vty);
- vty->length = 0;
- memset (vty->hist, 0, sizeof (vty->hist));
- vty->hp = 0;
- vty->hindex = 0;
- vector_set_index (vtyvec, vty_sock, vty);
- vty->status = VTY_NORMAL;
- if (host.lines >= 0)
- vty->lines = host.lines;
- else
- vty->lines = -1;
-
- if (! no_password_check)
- {
- /* Vty is not available if password isn't set. */
- if (host.password == NULL && host.password_encrypt == NULL)
- {
- vty_out (vty, "Vty password is not set.%s", VTY_NEWLINE);
- vty->status = VTY_CLOSE;
- vty_close (vty);
- return NULL;
- }
- }
-
- /* Say hello to the world. */
- vty_hello (vty);
- if (! no_password_check)
- vty_out (vty, "%sUser Access Verification%s%s", VTY_NEWLINE, VTY_NEWLINE, VTY_NEWLINE);
-
- /* Setting up terminal. */
- vty_will_echo (vty);
- vty_will_suppress_go_ahead (vty);
-
- vty_dont_linemode (vty);
- vty_do_window_size (vty);
- /* vty_dont_lflow_ahead (vty); */
-
- vty_prompt (vty);
-
- /* Add read/write thread. */
- vty_event (VTY_WRITE, vty_sock, vty);
- vty_event (VTY_READ, vty_sock, vty);
-
- return vty;
-}
-
-DEFUN(config_who, config_who_cmd, "who", "Display who is on vty\n")
-{
- unsigned int i;
- struct vty *v;
-
- for (i = 0; i < vector_active(vtyvec); i++)
- if ((v = vector_slot(vtyvec, i)) != NULL)
- vty_out(vty, "%svty[%d] %s",
- v->config ? "*" : " ", i, VTY_NEWLINE);
- return CMD_SUCCESS;
-}
-
-/* Move to vty configuration mode. */
-DEFUN(line_vty,
- line_vty_cmd,
- "line vty", "Configure a terminal line\n" "Virtual terminal\n")
-{
- vty->node = VTY_NODE;
- return CMD_SUCCESS;
-}
-
-/* vty login. */
-DEFUN(vty_login, vty_login_cmd, "login", "Enable password checking\n")
-{
- no_password_check = 0;
- return CMD_SUCCESS;
-}
-
-DEFUN(no_vty_login,
- no_vty_login_cmd, "no login", NO_STR "Enable password checking\n")
-{
- no_password_check = 1;
- return CMD_SUCCESS;
-}
-
-DEFUN(service_advanced_vty,
- service_advanced_vty_cmd,
- "service advanced-vty",
- "Set up miscellaneous service\n" "Enable advanced mode vty interface\n")
-{
- host.advanced = 1;
- return CMD_SUCCESS;
-}
-
-DEFUN(no_service_advanced_vty,
- no_service_advanced_vty_cmd,
- "no service advanced-vty",
- NO_STR
- "Set up miscellaneous service\n" "Enable advanced mode vty interface\n")
-{
- host.advanced = 0;
- return CMD_SUCCESS;
-}
-
-DEFUN(terminal_monitor,
- terminal_monitor_cmd,
- "terminal monitor",
- "Set terminal line parameters\n"
- "Copy debug output to the current terminal line\n")
-{
- vty->monitor = 1;
- return CMD_SUCCESS;
-}
-
-DEFUN(terminal_no_monitor,
- terminal_no_monitor_cmd,
- "terminal no monitor",
- "Set terminal line parameters\n"
- NO_STR "Copy debug output to the current terminal line\n")
-{
- vty->monitor = 0;
- return CMD_SUCCESS;
-}
-
-DEFUN(show_history,
- show_history_cmd,
- "show history", SHOW_STR "Display the session command history\n")
-{
- int index;
-
- for (index = vty->hindex + 1; index != vty->hindex;) {
- if (index == VTY_MAXHIST) {
- index = 0;
- continue;
- }
-
- if (vty->hist[index] != NULL)
- vty_out(vty, " %s%s", vty->hist[index], VTY_NEWLINE);
-
- index++;
- }
-
- return CMD_SUCCESS;
-}
-
-/* Display current configuration. */
-static int vty_config_write(struct vty *vty)
-{
- vty_out(vty, "line vty%s", VTY_NEWLINE);
-
- /* login */
- if (no_password_check)
- vty_out(vty, " no login%s", VTY_NEWLINE);
-
- vty_out(vty, "!%s", VTY_NEWLINE);
-
- return CMD_SUCCESS;
-}
-
-struct cmd_node vty_node = {
- VTY_NODE,
- "%s(config-line)# ",
- 1,
-};
-
-/* Reset all VTY status. */
-void vty_reset(void)
-{
- unsigned int i;
- struct vty *vty;
- struct thread *vty_serv_thread;
-
- for (i = 0; i < vector_active(vtyvec); i++)
- if ((vty = vector_slot(vtyvec, i)) != NULL) {
- buffer_reset(vty->obuf);
- vty->status = VTY_CLOSE;
- vty_close(vty);
- }
-
- for (i = 0; i < vector_active(Vvty_serv_thread); i++)
- if ((vty_serv_thread =
- vector_slot(Vvty_serv_thread, i)) != NULL) {
- //thread_cancel (vty_serv_thread);
- vector_slot(Vvty_serv_thread, i) = NULL;
- close(i);
- }
-}
-
-static void vty_save_cwd(void)
-{
- char cwd[MAXPATHLEN];
- char *c ;
-
- c = getcwd(cwd, MAXPATHLEN);
-
- if (!c) {
- if (chdir(SYSCONFDIR) != 0)
- perror("chdir failed");
- if (getcwd(cwd, MAXPATHLEN) == NULL)
- perror("getcwd failed");
- }
-
- vty_cwd = _talloc_zero(tall_vty_ctx, strlen(cwd) + 1, "save_cwd");
- strcpy(vty_cwd, cwd);
-}
-
-char *vty_get_cwd(void)
-{
- return vty_cwd;
-}
-
-int vty_shell_serv(struct vty *vty)
-{
- return vty->type == VTY_SHELL_SERV ? 1 : 0;
-}
-
-void vty_init_vtysh(void)
-{
- vtyvec = vector_init(VECTOR_MIN_SIZE);
-}
-
-extern void *tall_bsc_ctx;
-/* Install vty's own commands like `who' command. */
-void vty_init(struct vty_app_info *app_info)
-{
- tall_vty_ctx = talloc_named_const(app_info->tall_ctx, 0, "vty");
- tall_vty_vec_ctx = talloc_named_const(tall_vty_ctx, 0, "vty_vector");
- tall_vty_cmd_ctx = talloc_named_const(tall_vty_ctx, 0, "vty_command");
-
- cmd_init(1);
-
- host.app_info = app_info;
-
- /* For further configuration read, preserve current directory. */
- vty_save_cwd();
-
- vtyvec = vector_init(VECTOR_MIN_SIZE);
-
- /* Install bgp top node. */
- install_node(&vty_node, vty_config_write);
-
- install_element_ve(&config_who_cmd);
- install_element_ve(&show_history_cmd);
- install_element(CONFIG_NODE, &line_vty_cmd);
- install_element(CONFIG_NODE, &service_advanced_vty_cmd);
- install_element(CONFIG_NODE, &no_service_advanced_vty_cmd);
- install_element(CONFIG_NODE, &show_history_cmd);
- install_element(ENABLE_NODE, &terminal_monitor_cmd);
- install_element(ENABLE_NODE, &terminal_no_monitor_cmd);
-
- install_default(VTY_NODE);
- install_element(VTY_NODE, &vty_login_cmd);
- install_element(VTY_NODE, &no_vty_login_cmd);
-}
-
-int vty_read_config_file(const char *file_name, void *priv)
-{
- FILE *cfile;
- int rc;
-
- cfile = fopen(file_name, "r");
- if (!cfile)
- return -ENOENT;
-
- rc = vty_read_file(cfile, priv);
- fclose(cfile);
-
- host_config_set(file_name);
-
- return rc;
-}
diff --git a/Src/osmoconbb/src/shared/libosmocore/src/write_queue.c b/Src/osmoconbb/src/shared/libosmocore/src/write_queue.c
deleted file mode 100644
index a592104..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/src/write_queue.c
+++ /dev/null
@@ -1,90 +0,0 @@
-/* Generic write queue implementation */
-/*
- * (C) 2010 by Holger Hans Peter Freyther
- * (C) 2010 by On-Waves
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <osmocom/core/write_queue.h>
-
-int osmo_wqueue_bfd_cb(struct osmo_fd *fd, unsigned int what)
-{
- struct osmo_wqueue *queue;
-
- queue = container_of(fd, struct osmo_wqueue, bfd);
-
- if (what & BSC_FD_READ)
- queue->read_cb(fd);
-
- if (what & BSC_FD_EXCEPT)
- queue->except_cb(fd);
-
- if (what & BSC_FD_WRITE) {
- struct msgb *msg;
-
- fd->when &= ~BSC_FD_WRITE;
-
- /* the queue might have been emptied */
- if (!llist_empty(&queue->msg_queue)) {
- --queue->current_length;
-
- msg = msgb_dequeue(&queue->msg_queue);
- queue->write_cb(fd, msg);
- msgb_free(msg);
-
- if (!llist_empty(&queue->msg_queue))
- fd->when |= BSC_FD_WRITE;
- }
- }
-
- return 0;
-}
-
-void osmo_wqueue_init(struct osmo_wqueue *queue, int max_length)
-{
- queue->max_length = max_length;
- queue->current_length = 0;
- queue->read_cb = NULL;
- queue->write_cb = NULL;
- queue->bfd.cb = osmo_wqueue_bfd_cb;
- INIT_LLIST_HEAD(&queue->msg_queue);
-}
-
-int osmo_wqueue_enqueue(struct osmo_wqueue *queue, struct msgb *data)
-{
-// if (queue->current_length + 1 >= queue->max_length)
-// LOGP(DMSC, LOGL_ERROR, "The queue is full. Dropping not yet implemented.\n");
-
- ++queue->current_length;
- msgb_enqueue(&queue->msg_queue, data);
- queue->bfd.when |= BSC_FD_WRITE;
-
- return 0;
-}
-
-void osmo_wqueue_clear(struct osmo_wqueue *queue)
-{
- while (!llist_empty(&queue->msg_queue)) {
- struct msgb *msg = msgb_dequeue(&queue->msg_queue);
- msgb_free(msg);
- }
-
- queue->current_length = 0;
- queue->bfd.when &= ~BSC_FD_WRITE;
-}
diff --git a/Src/osmoconbb/src/shared/libosmocore/tests/Makefile.am b/Src/osmoconbb/src/shared/libosmocore/tests/Makefile.am
deleted file mode 100644
index 2b4ac6e..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/tests/Makefile.am
+++ /dev/null
@@ -1,6 +0,0 @@
-if ENABLE_TESTS
-SUBDIRS = timer sms ussd smscb
-if ENABLE_MSGFILE
-SUBDIRS += msgfile
-endif
-endif
diff --git a/Src/osmoconbb/src/shared/libosmocore/tests/msgfile/Makefile.am b/Src/osmoconbb/src/shared/libosmocore/tests/msgfile/Makefile.am
deleted file mode 100644
index c9f4bec..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/tests/msgfile/Makefile.am
+++ /dev/null
@@ -1,5 +0,0 @@
-INCLUDES = $(all_includes) -I$(top_srcdir)/include
-noinst_PROGRAMS = msgfile_test
-
-msgfile_test_SOURCES = msgfile_test.c
-msgfile_test_LDADD = $(top_builddir)/src/libosmocore.la
diff --git a/Src/osmoconbb/src/shared/libosmocore/tests/msgfile/msgconfig.cfg b/Src/osmoconbb/src/shared/libosmocore/tests/msgfile/msgconfig.cfg
deleted file mode 100644
index 28d7432..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/tests/msgfile/msgconfig.cfg
+++ /dev/null
@@ -1,2 +0,0 @@
-# This is a comment
-*:*::Hello Welt
diff --git a/Src/osmoconbb/src/shared/libosmocore/tests/msgfile/msgfile_test.c b/Src/osmoconbb/src/shared/libosmocore/tests/msgfile/msgfile_test.c
deleted file mode 100644
index ed7aa97..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/tests/msgfile/msgfile_test.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * (C) 2010 by Holger Hans Peter Freyther
- * (C) 2010 by On-Waves
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <osmocom/core/msgfile.h>
-
-#include <stdio.h>
-
-static void dump_entries(struct osmo_config_list *entries)
-{
- struct osmo_config_entry *entry;
-
- if (!entries) {
- fprintf(stderr, "Failed to parse the file\n");
- return;
- }
-
- llist_for_each_entry(entry, &entries->entry, list) {
- printf("Entry '%s:%s:%s:%s'\n",
- entry->mcc, entry->mnc, entry->option, entry->text);
- }
-}
-
-int main(int argc, char **argv)
-{
- struct osmo_config_list *entries;
-
- /* todo use msgfile_test.c.in and replace the path */
- entries = osmo_config_list_parse(NULL, "msgconfig.cfg");
- dump_entries(entries);
-
- return 0;
-}
diff --git a/Src/osmoconbb/src/shared/libosmocore/tests/sms/Makefile.am b/Src/osmoconbb/src/shared/libosmocore/tests/sms/Makefile.am
deleted file mode 100644
index fa4e387..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/tests/sms/Makefile.am
+++ /dev/null
@@ -1,5 +0,0 @@
-INCLUDES = $(all_includes) -I$(top_srcdir)/include
-noinst_PROGRAMS = sms_test
-
-sms_test_SOURCES = sms_test.c
-sms_test_LDADD = $(top_builddir)/src/libosmocore.la $(top_builddir)/src/gsm/libosmogsm.la
diff --git a/Src/osmoconbb/src/shared/libosmocore/tests/sms/sms_test.c b/Src/osmoconbb/src/shared/libosmocore/tests/sms/sms_test.c
deleted file mode 100644
index 6df4b62..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/tests/sms/sms_test.c
+++ /dev/null
@@ -1,319 +0,0 @@
-/*
- * (C) 2008 by Daniel Willmann <daniel@totalueberwachung.de>
- * (C) 2010 by Nico Golde <nico@ngolde.de>
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <osmocom/core/msgb.h>
-#include <osmocom/gsm/gsm_utils.h>
-#include <osmocom/core/utils.h>
-
-struct test_case {
- const uint8_t *input;
- const uint16_t input_length;
-
- const uint8_t *expected;
- const uint16_t expected_octet_length;
- const uint16_t expected_septet_length;
- const uint8_t ud_hdr_ind;
-};
-
-static const char simple_text[] = "test text";
-#define simple_septet_length 9
-static const uint8_t simple_enc[] = {
- 0xf4, 0xf2, 0x9c, 0x0e, 0xa2, 0x97, 0xf1, 0x74
-};
-
-static const char escape_text[] = "!$ a more#^- complicated test@@?_%! case";
-#define escape_septet_length 41 /* note: the ^ counts as two, because it is a extension character */
-static const uint8_t escape_enc[] = {
- 0x21, 0x01, 0x28, 0x0c, 0x6a, 0xbf, 0xe5, 0xe5, 0xd1,
- 0x86, 0xd2, 0x02, 0x8d, 0xdf, 0x6d, 0x38, 0x3b, 0x3d,
- 0x0e, 0xd3, 0xcb, 0x64, 0x10, 0xbd, 0x3c, 0xa7, 0x03,
- 0x00, 0xbf, 0x48, 0x29, 0x04, 0x1a, 0x87, 0xe7, 0x65,
-};
-
-static const char enhanced_text[] = "enhanced ^ {][} test |+~ ^ test";
-#define enhanced_septet_length 39 /* note: the characters { } [ ] ^ | ~ count as two (each of them), because they are extension characters */
-static const uint8_t enhanced_enc[] = {
- 0x65, 0x37, 0x3A, 0xEC, 0x1E, 0x97, 0xC9, 0xA0, 0x0D,
- 0x05, 0xB4, 0x41, 0x6D, 0x7C, 0x1B, 0xDE, 0x26, 0x05,
- 0xA2, 0x97, 0xE7, 0x74, 0xD0, 0x06, 0xB8, 0xDA, 0xF4,
- 0x40, 0x1B, 0x0A, 0x88, 0x5E, 0x9E, 0xD3, 0x01,
-};
-
-static const char enhancedV2_text[] = "enhanced ^ {][} test |+~ ^ tests";
-#define enhancedV2_septet_length 40 /* note: number of octets are equal to the enhanced_text! */
-static const uint8_t enhancedV2_enc[] = {
- 0x65, 0x37, 0x3A, 0xEC, 0x1E, 0x97, 0xC9, 0xA0, 0x0D,
- 0x05, 0xB4, 0x41, 0x6D, 0x7C, 0x1B, 0xDE, 0x26, 0x05,
- 0xA2, 0x97, 0xE7, 0x74, 0xD0, 0x06, 0xB8, 0xDA, 0xF4,
- 0x40, 0x1B, 0x0A, 0x88, 0x5E, 0x9E, 0xD3, 0xE7,
-};
-
-
-
-static const char concatenated_text[] =
- "this is a testmessage. this is a testmessage. this is a testmessage. this is a testmessage. "
- "this is a testmessage. this is a testmessage. cut here .....: this is a second testmessage. end here.";
-
-static const char splitted_text_part1[] =
- "this is a testmessage. this is a testmessage. this is a testmessage. this is a testmessage. "
- "this is a testmessage. this is a testmessage. cut here .....:";
-#define concatenated_part1_septet_length_with_header 160
-#define concatenated_part1_septet_length 153
-static const uint8_t concatenated_part1_enc[] = {
- 0x05, 0x00, 0x03, 0x6f, 0x02, 0x01,
- 0xe8, 0xe8, 0xf4, 0x1c, 0x94, 0x9e, 0x83, 0xc2,
- 0x20, 0x7a, 0x79, 0x4e, 0x6f, 0x97, 0xe7, 0xf3,
- 0xf0, 0xb9, 0xec, 0x02, 0xd1, 0xd1, 0xe9, 0x39,
- 0x28, 0x3d, 0x07, 0x85, 0x41, 0xf4, 0xf2, 0x9c,
- 0xde, 0x2e, 0xcf, 0xe7, 0xe1, 0x73, 0xd9, 0x05,
- 0xa2, 0xa3, 0xd3, 0x73, 0x50, 0x7a, 0x0e, 0x0a,
- 0x83, 0xe8, 0xe5, 0x39, 0xbd, 0x5d, 0x9e, 0xcf,
- 0xc3, 0xe7, 0xb2, 0x0b, 0x44, 0x47, 0xa7, 0xe7,
- 0xa0, 0xf4, 0x1c, 0x14, 0x06, 0xd1, 0xcb, 0x73,
- 0x7a, 0xbb, 0x3c, 0x9f, 0x87, 0xcf, 0x65, 0x17,
- 0x88, 0x8e, 0x4e, 0xcf, 0x41, 0xe9, 0x39, 0x28,
- 0x0c, 0xa2, 0x97, 0xe7, 0xf4, 0x76, 0x79, 0x3e,
- 0x0f, 0x9f, 0xcb, 0x2e, 0x10, 0x1d, 0x9d, 0x9e,
- 0x83, 0xd2, 0x73, 0x50, 0x18, 0x44, 0x2f, 0xcf,
- 0xe9, 0xed, 0xf2, 0x7c, 0x1e, 0x3e, 0x97, 0x5d,
- 0xa0, 0x71, 0x9d, 0x0e, 0x42, 0x97, 0xe5, 0x65,
- 0x90, 0xcb, 0xe5, 0x72, 0xb9, 0x74,
-};
-
-static const char splitted_text_part2[] = " this is a second testmessage. end here.";
-#define concatenated_part2_septet_length_with_header 47
-#define concatenated_part2_septet_length 40
-static const uint8_t concatenated_part2_enc[] = {
- 0x05, 0x00, 0x03, 0x6f, 0x02, 0x02,
- 0x40, 0x74, 0x74, 0x7a, 0x0e, 0x4a, 0xcf, 0x41,
- 0x61, 0xd0, 0xbc, 0x3c, 0x7e, 0xbb, 0xc9, 0x20,
- 0x7a, 0x79, 0x4e, 0x6f, 0x97, 0xe7, 0xf3, 0xf0,
- 0xb9, 0xec, 0x02, 0x95, 0xdd, 0x64, 0x10, 0xba,
- 0x2c, 0x2f, 0xbb, 0x00,
-};
-
-static const struct test_case test_multiple_encode[] =
-{
- {
- .input = concatenated_text,
- .expected = concatenated_part1_enc,
- .expected_octet_length = sizeof(concatenated_part1_enc),
- .expected_septet_length = concatenated_part1_septet_length,
- .ud_hdr_ind = 1,
- },
- {
- .input = concatenated_text,
- .expected = concatenated_part2_enc,
- .expected_octet_length = sizeof(concatenated_part2_enc),
- .expected_septet_length = concatenated_part2_septet_length,
- .ud_hdr_ind = 1,
- },
-};
-
-static const struct test_case test_encode[] =
-{
- {
- .input = simple_text,
- .expected = simple_enc,
- .expected_octet_length = sizeof(simple_enc),
- .expected_septet_length = simple_septet_length,
- .ud_hdr_ind = 0,
- },
- {
- .input = escape_text,
- .expected = escape_enc,
- .expected_octet_length = sizeof(escape_enc),
- .expected_septet_length = escape_septet_length,
- .ud_hdr_ind = 0,
- },
- {
- .input = enhanced_text,
- .expected = enhanced_enc,
- .expected_octet_length = sizeof(enhanced_enc),
- .expected_septet_length = enhanced_septet_length,
- .ud_hdr_ind = 0,
- },
- {
- .input = enhancedV2_text,
- .expected = enhancedV2_enc,
- .expected_octet_length = sizeof(enhancedV2_enc),
- .expected_septet_length = enhancedV2_septet_length,
- .ud_hdr_ind = 0,
- },
-};
-
-static const struct test_case test_decode[] =
-{
- {
- .input = simple_enc,
- .input_length = sizeof(simple_enc),
- .expected = simple_text,
- .expected_septet_length = simple_septet_length,
- .ud_hdr_ind = 0,
- },
- {
- .input = escape_enc,
- .input_length = sizeof(escape_enc),
- .expected = escape_text,
- .expected_septet_length = escape_septet_length,
- .ud_hdr_ind = 0,
- },
- {
- .input = enhanced_enc,
- .input_length = sizeof(enhanced_enc),
- .expected = enhanced_text,
- .expected_septet_length = enhanced_septet_length,
- .ud_hdr_ind = 0,
- },
- {
- .input = enhancedV2_enc,
- .input_length = sizeof(enhancedV2_enc),
- .expected = enhancedV2_text,
- .expected_septet_length = enhancedV2_septet_length,
- .ud_hdr_ind = 0,
- },
- {
- .input = concatenated_part1_enc,
- .input_length = sizeof(concatenated_part1_enc),
- .expected = splitted_text_part1,
- .expected_septet_length = concatenated_part1_septet_length_with_header,
- .ud_hdr_ind = 1,
- },
- {
- .input = concatenated_part2_enc,
- .input_length = sizeof(concatenated_part2_enc),
- .expected = splitted_text_part2,
- .expected_septet_length = concatenated_part2_septet_length_with_header,
- .ud_hdr_ind = 1,
- },
-};
-
-int main(int argc, char** argv)
-{
- printf("SMS testing\n");
- struct msgb *msg;
- uint8_t i;
-
- uint8_t octet_length;
- uint8_t septet_length;
- uint8_t gsm_septet_length;
- uint8_t coded[256];
- uint8_t tmp[160];
- uint8_t septet_data[256];
- uint8_t ud_header[6];
- char result[256];
-
- /* test 7-bit encoding */
- for (i = 0; i < ARRAY_SIZE(test_encode); ++i) {
- memset(coded, 0x42, sizeof(coded));
- septet_length = gsm_7bit_encode(coded, test_encode[i].input);
- octet_length = gsm_get_octet_len(septet_length);
- if (octet_length != test_encode[i].expected_octet_length) {
- fprintf(stderr, "Encode case %d: Octet length failure. Got %d, expected %d\n",
- i, octet_length, test_encode[i].expected_octet_length);
- return -1;
- }
-
- if (septet_length != test_encode[i].expected_septet_length){
- fprintf(stderr, "Encode case %d: Septet length failure. Got %d, expected %d\n",
- i, septet_length, test_encode[i].expected_septet_length);
- return -1;
- }
-
- if (memcmp(coded, test_encode[i].expected, octet_length) != 0) {
- fprintf(stderr, "Encoded content does not match for case %d\n",
- i);
- return -1;
- }
- }
-
-
- /* Test: encode multiple SMS */
- int number_of_septets = gsm_septet_encode(septet_data, test_multiple_encode[0].input);
-
- /* SMS part 1 */
- memset(tmp, 0x42, sizeof(tmp));
- memset(coded, 0x42, sizeof(coded));
- memcpy(tmp, septet_data, concatenated_part1_septet_length);
-
- /* In our case: test_multiple_decode[0].ud_hdr_ind equals number of padding bits*/
- octet_length = gsm_septets2octets(coded, tmp, concatenated_part1_septet_length, test_multiple_encode[0].ud_hdr_ind);
-
- /* copy header */
- memset(tmp, 0x42, sizeof(tmp));
- int udh_length = test_multiple_encode[0].expected[0] + 1;
- memcpy(tmp, test_multiple_encode[0].expected, udh_length);
- memcpy(tmp + udh_length, coded, octet_length);
- memset(coded, 0x42, sizeof(coded));
- memcpy(coded, tmp, octet_length + 6);
-
- if (memcmp(coded, test_multiple_encode[0].expected, octet_length) != 0) {
- fprintf(stderr, "Multiple-SMS encoded content does not match for part 1\n");
- return -1;
- }
-
-
- /* SMS part 2 */
- memset(tmp, 0x42, sizeof(tmp));
- memset(coded, 0x42, sizeof(coded));
- memcpy(tmp, septet_data + concatenated_part1_septet_length, concatenated_part2_septet_length);
-
- /* In our case: test_multiple_decode[1].ud_hdr_ind equals number of padding bits*/
- octet_length = gsm_septets2octets(coded, tmp, concatenated_part2_septet_length, test_multiple_encode[1].ud_hdr_ind);
-
- /* copy header */
- memset(tmp, 0x42, sizeof(tmp));
- udh_length = test_multiple_encode[1].expected[0] + 1;
- memcpy(tmp, test_multiple_encode[1].expected, udh_length);
- memcpy(tmp + udh_length, coded, octet_length);
- memset(coded, 0x42, sizeof(coded));
- memcpy(coded, tmp, octet_length + 6);
-
- if (memcmp(coded, test_multiple_encode[1].expected, octet_length) != 0) {
- fprintf(stderr, "Multiple-SMS encoded content does not match for part 2\n");
- return -1;
- }
-
-
-
- /* test 7-bit decoding */
- for (i = 0; i < ARRAY_SIZE(test_decode); ++i) {
- memset(result, 0x42, sizeof(coded));
- septet_length = gsm_7bit_decode_hdr(result, test_decode[i].input,
- test_decode[i].expected_septet_length, test_decode[i].ud_hdr_ind);
-
- if (strcmp(result, test_decode[i].expected) != 0) {
- fprintf(stderr, "Test case %d failed to decode.\n", i);
- return -1;
- }
- if (septet_length != test_decode[i].expected_septet_length) {
- fprintf(stderr, "Decode case %d: Septet length failure. Got %d, expected %d\n",
- i, septet_length, test_decode[i].expected_septet_length);
- return -1;
- }
- }
-
- printf("OK\n");
- return 0;
-}
diff --git a/Src/osmoconbb/src/shared/libosmocore/tests/smscb/Makefile.am b/Src/osmoconbb/src/shared/libosmocore/tests/smscb/Makefile.am
deleted file mode 100644
index 9a6fb4f..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/tests/smscb/Makefile.am
+++ /dev/null
@@ -1,5 +0,0 @@
-INCLUDES = $(all_includes) -I$(top_srcdir)/include
-noinst_PROGRAMS = smscb_test
-
-smscb_test_SOURCES = smscb_test.c
-smscb_test_LDADD = $(top_builddir)/src/libosmocore.la $(top_builddir)/src/gsm/libosmogsm.la
diff --git a/Src/osmoconbb/src/shared/libosmocore/tests/smscb/smscb_test.c b/Src/osmoconbb/src/shared/libosmocore/tests/smscb/smscb_test.c
deleted file mode 100644
index e10e12d..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/tests/smscb/smscb_test.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * (C) 2010 Holger Hans Peter Freyther
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <osmocom/gsm/protocol/gsm_03_41.h>
-
-#include <stdio.h>
-
-static uint8_t smscb_msg[] = { 0x40, 0x10, 0x05, 0x0d, 0x01, 0x11 };
-
-int main(int argc, char **argv)
-{
- struct gsm341_ms_message *msg;
-
- msg = (struct gsm341_ms_message *) smscb_msg;
- printf("(srl) GS: %d MSG_CODE: %d UPDATE: %d\n",
- msg->serial.gs, GSM341_MSG_CODE(msg), msg->serial.update);
- printf("(msg) msg_id: %d\n", htons(msg->msg_id));
- printf("(dcs) group: %d language: %d\n",
- msg->dcs.language, msg->dcs.group);
- printf("(pge) page total: %d current: %d\n",
- msg->page.total, msg->page.current);
-
- return 0;
-}
diff --git a/Src/osmoconbb/src/shared/libosmocore/tests/timer/Makefile.am b/Src/osmoconbb/src/shared/libosmocore/tests/timer/Makefile.am
deleted file mode 100644
index d3decf5..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/tests/timer/Makefile.am
+++ /dev/null
@@ -1,6 +0,0 @@
-INCLUDES = $(all_includes) -I$(top_srcdir)/include
-noinst_PROGRAMS = timer_test
-
-timer_test_SOURCES = timer_test.c
-timer_test_LDADD = $(top_builddir)/src/libosmocore.la
-
diff --git a/Src/osmoconbb/src/shared/libosmocore/tests/timer/timer_test.c b/Src/osmoconbb/src/shared/libosmocore/tests/timer/timer_test.c
deleted file mode 100644
index 240bc48..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/tests/timer/timer_test.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * (C) 2008 by Holger Hans Peter Freyther <zecke@selfish.org>
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdio.h>
-
-#include <osmocom/core/timer.h>
-#include <osmocom/core/select.h>
-
-#include "../../config.h"
-
-static void timer_fired(void *data);
-
-static struct osmo_timer_list timer_one = {
- .cb = timer_fired,
- .data = (void*)1,
-};
-
-static struct osmo_timer_list timer_two = {
- .cb = timer_fired,
- .data = (void*)2,
-};
-
-static struct osmo_timer_list timer_three = {
- .cb = timer_fired,
- .data = (void*)3,
-};
-
-static void timer_fired(void *_data)
-{
- unsigned long data = (unsigned long) _data;
- printf("Fired timer: %lu\n", data);
-
- if (data == 1) {
- osmo_timer_schedule(&timer_one, 3, 0);
- osmo_timer_del(&timer_two);
- } else if (data == 2) {
- printf("Should not be fired... bug in del_timer\n");
- } else if (data == 3) {
- printf("Timer fired not registering again\n");
- } else {
- printf("wtf... wrong data\n");
- }
-}
-
-int main(int argc, char** argv)
-{
- printf("Starting... timer\n");
-
- osmo_timer_schedule(&timer_one, 3, 0);
- osmo_timer_schedule(&timer_two, 5, 0);
- osmo_timer_schedule(&timer_three, 4, 0);
-
-#ifdef HAVE_SYS_SELECT_H
- while (1) {
- osmo_select_main(0);
- }
-#else
- printf("Select not supported on this platform!\n");
-#endif
-}
diff --git a/Src/osmoconbb/src/shared/libosmocore/tests/ussd/Makefile.am b/Src/osmoconbb/src/shared/libosmocore/tests/ussd/Makefile.am
deleted file mode 100644
index ef9aa49..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/tests/ussd/Makefile.am
+++ /dev/null
@@ -1,5 +0,0 @@
-INCLUDES = $(all_includes) -I$(top_srcdir)/include
-noinst_PROGRAMS = ussd_test
-
-ussd_test_SOURCES = ussd_test.c
-ussd_test_LDADD = $(top_builddir)/src/libosmocore.la $(top_builddir)/src/gsm/libosmogsm.la
diff --git a/Src/osmoconbb/src/shared/libosmocore/tests/ussd/ussd_test.c b/Src/osmoconbb/src/shared/libosmocore/tests/ussd/ussd_test.c
deleted file mode 100644
index 6d2a8c9..0000000
--- a/Src/osmoconbb/src/shared/libosmocore/tests/ussd/ussd_test.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * (C) 2010 by Holger Hans Peter Freyther
- * (C) 2010 by On-Waves
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <osmocom/gsm/gsm0480.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-static const uint8_t ussd_request[] = {
- 0x0b, 0x7b, 0x1c, 0x15, 0xa1, 0x13, 0x02, 0x01,
- 0x03, 0x02, 0x01, 0x3b, 0x30, 0x0b, 0x04, 0x01,
- 0x0f, 0x04, 0x06, 0x2a, 0xd5, 0x4c, 0x16, 0x1b,
- 0x01, 0x7f, 0x01, 0x00
-};
-
-static int parse_ussd(const uint8_t *_data, int len)
-{
- uint8_t *data;
- int rc;
- struct ussd_request req;
- struct gsm48_hdr *hdr;
-
- data = malloc(len);
- memcpy(data, _data, len);
- hdr = (struct gsm48_hdr *) &data[0];
- rc = gsm0480_decode_ussd_request(hdr, len, &req);
- free(data);
-
- return rc;
-}
-
-static int parse_mangle_ussd(const uint8_t *_data, int len)
-{
- uint8_t *data;
- int rc;
- struct ussd_request req;
- struct gsm48_hdr *hdr;
-
- data = malloc(len);
- memcpy(data, _data, len);
- hdr = (struct gsm48_hdr *) &data[0];
- hdr->data[1] = len - sizeof(*hdr) - 2;
- rc = gsm0480_decode_ussd_request(hdr, len, &req);
- free(data);
-
- return rc;
-}
-
-int main(int argc, char **argv)
-{
- struct ussd_request req;
- const int size = sizeof(ussd_request);
- int i;
-
- gsm0480_decode_ussd_request((struct gsm48_hdr *) ussd_request, size, &req);
- printf("Tested if it still works. Text was: %s\n", req.text);
-
-
- printf("Testing parsing a USSD request and truncated versions\n");
-
- for (i = size; i > sizeof(struct gsm48_hdr); --i) {
- int rc = parse_ussd(&ussd_request[0], i);
- printf("Result for %d is %d\n", rc, i);
- }
-
- printf("Mangling the container now\n");
- for (i = size; i > sizeof(struct gsm48_hdr) + 2; --i) {
- int rc = parse_mangle_ussd(&ussd_request[0], i);
- printf("Result for %d is %d\n", rc, i);
- }
-
- return 0;
-}
diff --git a/Src/osmoconbb/src/shared/update-libosmocore.sh b/Src/osmoconbb/src/shared/update-libosmocore.sh
deleted file mode 100755
index e7940c3..0000000
--- a/Src/osmoconbb/src/shared/update-libosmocore.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-(cd ../.. && git-subtree pull --prefix=src/shared/libosmocore git://git.osmocom.org/libosmocore.git master)
diff --git a/Src/osmoconbb/src/target/firmware/.gitignore b/Src/osmoconbb/src/target/firmware/.gitignore
deleted file mode 100644
index 79e98df..0000000
--- a/Src/osmoconbb/src/target/firmware/.gitignore
+++ /dev/null
@@ -1,9 +0,0 @@
-*.o
-*.p
-*.a
-*.lst
-*.bin
-*.elf
-*.map
-*.size
-*~
diff --git a/Src/osmoconbb/src/target/firmware/COPYING b/Src/osmoconbb/src/target/firmware/COPYING
deleted file mode 100644
index d511905..0000000
--- a/Src/osmoconbb/src/target/firmware/COPYING
+++ /dev/null
@@ -1,339 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.
diff --git a/Src/osmoconbb/src/target/firmware/Makefile b/Src/osmoconbb/src/target/firmware/Makefile
deleted file mode 100644
index 301bb31..0000000
--- a/Src/osmoconbb/src/target/firmware/Makefile
+++ /dev/null
@@ -1,89 +0,0 @@
-
-
-# List of all supported boards (meant to be overridden on command line)
-BOARDS?=compal_e88 compal_e86 compal_e99 gta0x pirelli_dpl10
-
-# List of all applications (meant to be overridden on command line)
-APPLICATIONS?=hello_world compal_dsp_dump layer1 loader simtest chainload
-
-
-# TI Calypso
-
-calypso_COMMON_OBJS=board/common/calypso_uart.o board/common/calypso_pwl.o
-
-# OpenMoko GTA0x
-
-gta0x_OBJS=$(calypso_COMMON_OBJS) board/gta0x/rffe_gta0x_triband.o board/gta0x/init.o board/gta0x/rf_power.o
-gta0x_ENVIRONMENTS=highram
-
-# Pirelli DP-L10
-
-pirelli_dpl10_OBJS=$(calypso_COMMON_OBJS) board/pirelli_dpl10/rffe_dpl10_triband.o board/pirelli_dpl10/init.o board/pirelli_dpl10/rf_power.o
-pirelli_dpl10_ENVIRONMENTS=highram
-
-# Compal Generic
-
-compal_COMMON_OBJS=$(calypso_COMMON_OBJS) board/compal/rffe_dualband.o board/compal/rf_power.o
-compal_COMMON_ENVIRONMENTS=compalram highram
-
-compalram_LDS=board/compal/ram.lds
-compalram_OBJS=board/compal/start.ram.o board/compal/exceptions_redirected.o board/compal/handlers.o
-
-highram_LDS=board/compal/highram.lds
-highram_OBJS=board/compal/start.ram.o board/compal/exceptions_redirected.o board/compal/handlers.o
-
-# Compal E88
-
-compal_e88_OBJS=$(compal_COMMON_OBJS) board/compal_e88/init.o
-compal_e88_ENVIRONMENTS=$(compal_COMMON_ENVIRONMENTS) e88loader e88flash
-
-e88loader_LDS=board/compal_e88/loader.lds
-e88loader_OBJS=board/compal/start.rom.o board/compal/header.o board/compal/exceptions_redirect.o
-
-e88flash_LDS=board/compal_e88/flash.lds
-e88flash_OBJS=board/compal/start.rom.o board/compal/header.o board/compal/exceptions_redirected.o board/compal/handlers.o
-
-# Compal E86
-
-compal_e86_OBJS=$(compal_COMMON_OBJS) board/compal_e86/init.o
-compal_e86_ENVIRONMENTS=$(compal_COMMON_ENVIRONMENTS)
-
-# Compal E99
-
-compal_e99_OBJS=$(compal_COMMON_OBJS) board/compal_e99/init.o
-compal_e99_ENVIRONMENTS=$(compal_COMMON_ENVIRONMENTS)
-
-e99loader_LDS=board/compal_e99/loader.lds
-e99loader_OBJS=board/compal/header.o
-e99flash_LDS=board/compal_e99/flash.lds
-
-# Global include path
-INCLUDES=-Iinclude/ -I../../../include -I../../shared/libosmocore/include
-
-# Various objects that are currently linked into all applications
-FLASH_OBJS=flash/cfi_flash.o
-DISPLAY_OBJS=display/font_r8x8.o display/font_r8x8_horiz.o display/st7558.o display/td014.o display/ssd1783.o display/display.o
-ABB_OBJS=abb/twl3025.o
-RF_OBJS=rf/trf6151.o
-
-# Objects that go in all applications
-ANY_APP_OBJS+=$(ABB_OBJS) $(RF_OBJS) $(DISPLAY_OBJS) $(FLASH_OBJS)
-ANY_APP_LIBS+=calypso/libcalypso.a layer1/liblayer1.a lib/libmini.a comm/libcomm.a ../../shared/libosmocore/build-target/src/.libs/libosmocore.a ../../shared/libosmocore/build-target/src/gsm/.libs/libosmogsm.a
-
-# Libraries are defined in subdirectories
--include calypso/Makefile
--include layer1/Makefile
--include comm/Makefile
--include lib/Makefile
-
-# Include rules
--include Makefile.inc
-
-# Uncomment this line if you want to enable Tx (Transmit) Support.
-#CFLAGS += -DCONFIG_TX_ENABLE
-
-# Uncomment this line if you want to write to flash.
-#CFLAGS += -DCONFIG_FLASH_WRITE
-
-# Uncomment this line if you want to write to flash, including the bootloader.
-#CFLAGS += -DCONFIG_FLASH_WRITE_LOADER
diff --git a/Src/osmoconbb/src/target/firmware/Makefile.inc b/Src/osmoconbb/src/target/firmware/Makefile.inc
deleted file mode 100644
index 1f54031..0000000
--- a/Src/osmoconbb/src/target/firmware/Makefile.inc
+++ /dev/null
@@ -1,208 +0,0 @@
-
-#### TOOLCHAIN CONFIGURATION ####
-
-CROSS_COMPILE?=arm-elf-
-
-CC=gcc
-LD=ld
-AR=ar
-SIZE=size
-OBJCOPY=objcopy
-
-DEBUGF=dwarf-2
-
-CFLAGS=-mcpu=arm7tdmi $(INCLUDES)
-CFLAGS += -Wall -Wextra -Wcast-align -Wimplicit -Wunused
-CFLAGS += -Wswitch -Wredundant-decls -Wreturn-type -Wshadow -Wnested-externs
-CFLAGS += -Wbad-function-cast -Wsign-compare -Waggregate-return
-CFLAGS += -Os -ffunction-sections
-CFLAGS += -g$(DEBUGF)
-
-# some older toolchains don't support this, ignore it for now
-#ASFLAGS=--g$(DEBUGF) $(INCLUDES) -D__ASSEMBLY__
-ASFLAGS=$(INCLUDES) -D__ASSEMBLY__
-
-LDFLAGS = -nostartfiles -nostdlib -nodefaultlibs --gc-sections --cref
-
-#### QUIET OUTPUT ####
-
-ifndef V
- V = 0
-endif
-
-Q_CC = $(if $(V:1=),@echo " CC $@";)
-Q_LD = $(if $(V:1=),@echo " LD $@";)
-Q_AR = $(if $(V:1=),@echo " AR $@";)
-Q_OBJ = $(if $(V:1=),@echo " OBJ $@";)
-
-#### GIT VERSION ####
-
-GIT_COMMIT:=$(shell git describe --always)
-GIT_MODIFIED:=$(shell (git status | grep "modified:\|added:\|deleted:" -q) && echo "-modified")
-
-GIT_REVISION:=$(GIT_COMMIT)$(GIT_MODIFIED)
-
-ASFLAGS += -DGIT_REVISION=\"$(GIT_REVISION)\"
-CFLAGS += -DGIT_REVISION=\"$(GIT_REVISION)\"
-
-#### GLOBAL DATA ####
-
-ALL_OBJS=
-
-ALL_LSTS=$(ALL_OBJS:.o=.lst)
-ALL_DEPS=$(ALL_OBJS:.o=.p)
-
-#### APPLICATION DATA ####
-
-ALL_APPS=
-
-ALL_APP_TARGETS=$(ALL_APPS:.elf=.bin) $(ALL_APPS:.elf=.size) $(ALL_APPS) $(ALL_APPS:.elf=.map)
-
-#### LIBRARY DATA ####
-
-ALL_LIBS=
-
-ALL_LIB_TARGETS=$(ALL_LIBS)
-
-
-#### DEFAULT RULE ####
-
-.PHONY: default
-default: all
-
-
-#### APPLICATION RULES ####
-
-# template for application rules
-define APPLICATION_BOARD_ENVIRONMENT_template
-
-# define set of objects for this binary
-$(1)_$(2)_$(3)_OBJS := apps/$(1)/main.o $(ANY_APP_OBJS) $$($(2)_OBJS)
-$(1)_$(2)_$(3)_LIBS := $(ANY_APP_LIBS)
-
-# define manifest compilation
-board/$(2)/$(1).$(3).manifest.o: board/manifest.c
- $$(Q_CC)$(CROSS_COMPILE)$(CC) $(CFLAGS) -DAPPLICATION=\"$(1)\" -DBOARD=\"$(2)\" -DENVIRONMENT=\"$(3)\" -c -o $$@ $$<
-
-# generate dummy dependencies for manifest
-board/$(2)/$(1).$(3).manifest.p: board/manifest.c
- @touch board/$(2)/$(1).$(3).manifest.p
-
-# add manifest object to object list
-$(1)_$(2)_$(3)_OBJS+=board/$(2)/$(1).$(3).manifest.o $$($(3)_OBJS)
-
-# define compilation rule, also generates map file
-board/$(2)/$(1).$(3).elf board/$(2)/$(1).$(3).map: $$($(1)_$(2)_$(3)_OBJS) $$($(1)_$(2)_$(3)_LIBS) $$($(3)_LDS)
- $$(Q_LD)$(CROSS_COMPILE)$(LD) $(LDFLAGS) -T $$($(3)_LDS) -Bstatic \
- -Map board/$(2)/$(1).$(3).map -o board/$(2)/$(1).$(3).elf \
- --start-group $$($(1)_$(2)_$(3)_OBJS) $$($(1)_$(2)_$(3)_LIBS) --end-group
-
-# define size rule
-board/$(2)/$(1).$(3).size: board/$(2)/$(1).$(3).elf
- $(CROSS_COMPILE)$(SIZE) board/$(2)/$(1).$(3).elf | tee board/$(2)/$(1).$(3).size
-
-ALL_APPS+=board/$(2)/$(1).$(3).elf
-ALL_OBJS+=board/$(2)/$(1).$(3).manifest.o
-
-endef
-
-define BOARD_template
-ALL_OBJS+=$$($(1)_OBJS)
-endef
-
-define BOARD_ENVIRONMENT_template
-ALL_OBJS+=$$($(1)_OBJS)
-endef
-
-define APPLICATION_template
-$(1)_SRCS_REL=$$(patsubst %,$$($(1)_DIR)/%,$$($(1)_SRCS))
-$(1)_OBJS:=$$($(1)_SRCS_REL:.c=.o)
-$(1)_OBJS:=$$($(1)_OBJS:.S=.o)
-
-ALL_OBJS+=$$($(1)_OBJS) apps/$(1)/main.o
-endef
-
-# define rules for all defined applications
-$(foreach app,$(APPLICATIONS), \
- $(foreach brd,$(BOARDS), \
- $(foreach env,$($(brd)_ENVIRONMENTS), \
- $(eval $(call APPLICATION_BOARD_ENVIRONMENT_template,$(app),$(brd),$(env))))))
-
-$(foreach brd,$(BOARDS), \
- $(eval $(call BOARD_template,$(brd)) \
- $(foreach env,$($(brd)_ENVIRONMENTS), \
- $(eval $(call BOARD_ENVIRONMENT_template,$(env))))))
-
-$(foreach app,$(APPLICATIONS), \
- $(eval $(call APPLICATION_template,$(app))))
-
-
-# add common things to global lists
-ALL_OBJS+=$(ANY_APP_OBJS)
-
-#### LIBRARY RULES ####
-
-# template for library rules
-define LIBRARY_template
-
-$(1)_SRCS_REL=$$(patsubst %,$$($(1)_DIR)/%,$$($(1)_SRCS))
-$(1)_OBJS:=$$($(1)_SRCS_REL:.c=.o)
-$(1)_OBJS:=$$($(1)_OBJS:.S=.o)
-
-$$($(1)_DIR)/lib$(1).a: $$($(1)_OBJS)
- $$(Q_AR)$(CROSS_COMPILE)$(AR) cru $$($(1)_DIR)/lib$(1).a $$($(1)_OBJS)
-
-ALL_LIBS+=$$($(1)_DIR)/lib$(1).a
-
-ALL_OBJS+=$$($(1)_OBJS)
-
-endef
-
-# define rules for all defined libraries
-$(foreach lbr,$(LIBRARIES),$(eval $(call LIBRARY_template,$(lbr))))
-
-
-#### TOPLEVEL RULES ####
-
-.PHONY: all
-all: $(ALL_DEPS) $(ALL_APPS:.elf=.bin) $(ALL_APPS:.elf=.size)
-
-.PHONY: depend
-depend: $(ALL_DEPS)
-
-
-#### COMPILATION RULES ####
-
-%.p: %.c
- @$(CROSS_COMPILE)$(CC) $(CFLAGS) -M -o $(*).d $(<)
- @sed 's|.*\.o:|$(@:.p=.o): |g' < $*.d > $@; rm -f $*.d; [ -s $@ ] || rm -f $@
-
-%.p: %.S
- @$(CROSS_COMPILE)$(CC) $(ASFLAGS) -M -o $(*).d $(<)
- @sed 's|.*\.o:|$(@:.p=.o): |g' < $*.d > $@; rm -f $*.d; [ -s $@ ] || rm -f $@
-
-%.o: %.c
- $(Q_CC)$(CROSS_COMPILE)$(CC) $(CFLAGS) -Wa,-adhlns=$(@:.o=.lst) -c -o $@ $<
-
-%.o: %.S
- $(Q_CC)$(CROSS_COMPILE)$(CC) $(ASFLAGS) -Wa,-adhlns=$(@:.o=.lst) -c -o $@ $<
-
-
-%.bin: %.elf
- $(Q_OBJ)$(CROSS_COMPILE)objcopy --gap-fill=0xff -O binary $^ $@
-
-
-#### CLEANUP RULES ####
-
-.PHONY: clean
-clean:
- rm -f $(ALL_APP_TARGETS) $(ALL_LIB_TARGETS) $(ALL_OBJS) $(ALL_DEPS) $(ALL_LSTS)
-
-.PHONY: distclean
-distclean: clean
- find . -name '*.o' -or -name '*.bin' -or -name '*.map' -or -name '*.lst' -or -name '*.p' -exec rm '{}' ';'
-
-
-#### DEPENDENCY LOAD ####
-
--include $(ALL_DEPS)
diff --git a/Src/osmoconbb/src/target/firmware/Makefile.mtk b/Src/osmoconbb/src/target/firmware/Makefile.mtk
deleted file mode 100644
index 30fa2fc..0000000
--- a/Src/osmoconbb/src/target/firmware/Makefile.mtk
+++ /dev/null
@@ -1,32 +0,0 @@
-# List of all supported boards (meant to be overridden on command line)
-BOARDS?=mt62xx
-
-# List of all applications (meant to be overridden on command line)
-APPLICATIONS?=loader_mtk
-
-mtkram_LDS=board/mediatek/ram.lds
-mtkram_OBJS=board/mediatek/start.ram.o
-
-mtk_COMMON_OBJS=board/mediatek/uart.o
-
-# Mediatek MT62xx
-mt62xx_OBJS=$(mtk_COMMON_OBJS) board/mt62xx/init.o
-mt62xx_ENVIRONMENTS=mtkram
-
-# Global include path
-INCLUDES=-Iinclude/ -I../../../include -I../../shared/libosmocore/include
-
-FLASH_OBJS=flash/cfi_flash.o
-
-# Objects that go in all applications
-ANY_APP_OBJS+=$(FLASH_OBJS)
-
-# Various objects that are currently linked into all applications
-ANY_APP_LIBS+=lib/libmini.a comm/libcomm.a ../../shared/libosmocore/build-target/src/.libs/libosmocore.a
-
-# Libraries are defined in subdirectories
--include comm/Makefile
--include lib/Makefile
-
-# Include rules
--include Makefile.inc
diff --git a/Src/osmoconbb/src/target/firmware/abb/twl3025.c b/Src/osmoconbb/src/target/firmware/abb/twl3025.c
deleted file mode 100644
index 0181713..0000000
--- a/Src/osmoconbb/src/target/firmware/abb/twl3025.c
+++ /dev/null
@@ -1,356 +0,0 @@
-/* Driver for Analog Baseband Circuit (TWL3025) */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-
-#include <debug.h>
-#include <delay.h>
-#include <memory.h>
-#include <spi.h>
-#include <calypso/irq.h>
-#include <calypso/tsp.h>
-#include <calypso/tpu.h>
-#include <abb/twl3025.h>
-
-/* TWL3025 */
-#define REG_PAGE(n) (n >> 7)
-#define REG_ADDR(n) (n & 0x3f)
-
-#define TWL3025_DEV_IDX 0 /* On the SPI bus */
-#define TWL3025_TSP_DEV_IDX 0 /* On the TSP bus */
-
-/* values encountered on a GTA-02 for GSM900 (the same for GSM1800!?) */
-const uint16_t twl3025_default_ramp[16] = {
- ABB_RAMP_VAL( 0, 0),
- ABB_RAMP_VAL( 0, 11),
- ABB_RAMP_VAL( 0, 31),
- ABB_RAMP_VAL( 0, 31),
- ABB_RAMP_VAL( 0, 31),
- ABB_RAMP_VAL( 0, 24),
- ABB_RAMP_VAL( 0, 0),
- ABB_RAMP_VAL( 0, 0),
- ABB_RAMP_VAL( 9, 0),
- ABB_RAMP_VAL(18, 0),
- ABB_RAMP_VAL(25, 0),
- ABB_RAMP_VAL(31, 0),
- ABB_RAMP_VAL(30, 0),
- ABB_RAMP_VAL(15, 0),
- ABB_RAMP_VAL( 0, 0),
- ABB_RAMP_VAL( 0, 0),
-};
-
-struct twl3025 {
- uint8_t page;
-};
-static struct twl3025 twl3025_state;
-
-/* Switch the register page of the TWL3025 */
-static void twl3025_switch_page(uint8_t page)
-{
- if (page == 0)
- twl3025_reg_write(PAGEREG, 1 << 0);
- else
- twl3025_reg_write(PAGEREG, 1 << 1);
-
- twl3025_state.page = page;
-}
-
-static void handle_charger(void)
-{
- uint16_t status;
- printd("handle_charger();");
-
- status = twl3025_reg_read(VRPCSTS);
-// printd("\nvrpcsts: 0x%02x", status);
-
- if (status & 0x40) {
- printd(" inserted\n");
- } else {
- printd(" removed\n");
- }
-
-// twl3025_dump_madc();
-}
-
-static void handle_adc_done(void)
-{
- printd("handle_adc_done();");
-}
-
-static void twl3025_irq(enum irq_nr nr)
-{
- uint16_t src;
- printd("twl3025_irq: 0x%02x\n",nr);
- switch (nr){
- case IRQ_EXTERNAL: // charger in/out, pwrbtn, adc done
- src = twl3025_reg_read(ITSTATREG);
-// printd("itstatreg 0x%02x\n", src);
- if (src & 0x08)
- handle_charger();
- if (src & 0x20)
- handle_adc_done();
- break;
- case IRQ_EXTERNAL_FIQ: // vcc <2.8V emergency power off
- puts("\nBROWNOUT!1!");
- twl3025_power_off();
- break;
- default:
- return;
- }
-}
-
-void twl3025_init(void)
-{
- spi_init();
- twl3025_switch_page(0);
- twl3025_clk13m(1);
- twl3025_reg_write(AFCCTLADD, 0x01); /* AFCCK(1:0) must not be zero! */
- twl3025_unit_enable(TWL3025_UNIT_AFC, 1);
-
- irq_register_handler(IRQ_EXTERNAL, &twl3025_irq);
- irq_config(IRQ_EXTERNAL, 0, 0, 0);
- irq_enable(IRQ_EXTERNAL);
-
- irq_register_handler(IRQ_EXTERNAL_FIQ, &twl3025_irq);
- irq_config(IRQ_EXTERNAL_FIQ, 1, 0, 0);
- irq_enable(IRQ_EXTERNAL_FIQ);
-}
-
-void twl3025_reg_write(uint8_t reg, uint16_t data)
-{
- uint16_t tx;
-
- printd("tw3025_reg_write(%u,%u)=0x%04x\n", REG_PAGE(reg),
- REG_ADDR(reg), data);
-
- if (reg != PAGEREG && REG_PAGE(reg) != twl3025_state.page)
- twl3025_switch_page(REG_PAGE(reg));
-
- tx = ((data & 0x3ff) << 6) | (REG_ADDR(reg) << 1);
-
- spi_xfer(TWL3025_DEV_IDX, 16, &tx, NULL);
-}
-
-void twl3025_tsp_write(uint8_t data)
-{
- tsp_write(TWL3025_TSP_DEV_IDX, 7, data);
-}
-
-uint16_t twl3025_reg_read(uint8_t reg)
-{
- uint16_t tx, rx;
-
- if (REG_PAGE(reg) != twl3025_state.page)
- twl3025_switch_page(REG_PAGE(reg));
-
- tx = (REG_ADDR(reg) << 1) | 1;
-
- /* A read cycle contains two SPI transfers */
- spi_xfer(TWL3025_DEV_IDX, 16, &tx, &rx);
- delay_ms(1);
- spi_xfer(TWL3025_DEV_IDX, 16, &tx, &rx);
-
- rx >>= 6;
-
- printd("tw3025_reg_read(%u,%u)=0x%04x\n", REG_PAGE(reg),
- REG_ADDR(reg), rx);
-
- return rx;
-}
-
-static void twl3025_wait_ibic_access(void)
-{
- /* Wait 6 * 32kHz clock cycles for first IBIC access (187us + 10% = 210us) */
- delay_ms(1);
-}
-
-void twl3025_power_off(void)
-{
- twl3025_reg_write(VRPCDEV, 0x01);
-}
-
-void twl3025_clk13m(int enable)
-{
- if (enable) {
- twl3025_reg_write(TOGBR2, TOGBR2_ACTS);
- twl3025_wait_ibic_access();
- /* for whatever reason we need to do this twice */
- twl3025_reg_write(TOGBR2, TOGBR2_ACTS);
- twl3025_wait_ibic_access();
- } else {
- twl3025_reg_write(TOGBR2, TOGBR2_ACTR);
- twl3025_wait_ibic_access();
- }
-}
-
-#define TSP_DELAY 6 /* 13* Tclk6M5 = ~ 3 GSM Qbits + 3 TPU instructions */
-#define BDLON_TO_BDLCAL 6
-#define BDLCAL_DURATION 66
-#define BDLON_TO_BDLENA 7
-#define BULON_TO_BULENA 16
-#define BULON_TO_BULCAL 17
-#define BULCAL_DURATION 143 /* really that long? */
-
-/* bdl_ena - TSP_DELAY - BDLCAL_DURATION - TSP_DELAY - BDLON_TO_BDLCAL - TSP_DELAY */
-#define DOWNLINK_DELAY (3 * TSP_DELAY + BDLCAL_DURATION + BDLON_TO_BDLCAL)
-
-/* Enqueue a series of TSP commands in the TPU to (de)activate the downlink path */
-void twl3025_downlink(int on, int16_t at)
-{
- int16_t bdl_ena = at - TSP_DELAY - 6;
-
- if (on) {
- if (bdl_ena < 0)
- printf("BDLENA time negative (%d)\n", bdl_ena);
- /* calibration should be done just before BDLENA */
- tpu_enq_at(bdl_ena - DOWNLINK_DELAY);
- /* bdl_ena - TSP_DELAY - BDLCAL_DURATION - TSP_DELAY - BDLON_TO_BDLCAL - TSP_DELAY */
- twl3025_tsp_write(BDLON);
- /* bdl_ena - TSP_DELAY - BDLCAL_DURATION - TSP_DELAY - BDLON_TO_BDLCAL */
- tpu_enq_wait(BDLON_TO_BDLCAL - TSP_DELAY);
- /* bdl_ena - TSP_DELAY - BDLCAL_DURATION - TSP_DELAY */
- twl3025_tsp_write(BDLON | BDLCAL);
- /* bdl_ena - TSP_DELAY - BDLCAL_DURATION */
- tpu_enq_wait(BDLCAL_DURATION - TSP_DELAY);
- /* bdl_ena - TSP_DELAY */
- twl3025_tsp_write(BDLON);
- //tpu_enq_wait(BDLCAL_TO_BDLENA) this is only 3.7us == 4 qbits, i.e. less than the TSP_DELAY
- tpu_enq_at(bdl_ena);
- twl3025_tsp_write(BDLON | BDLENA);
- } else {
- tpu_enq_at(bdl_ena);
- twl3025_tsp_write(BDLON);
- //tpu_enq_wait(nBDLENA_TO_nBDLON) this is only 3.7us == 4 qbits, i.e. less than the TSP_DELAY
- twl3025_tsp_write(0);
- }
-}
-
-/* bdl_ena - 35 - TSP_DELAY - BULCAL_DURATION - TSP_DELAY - BULON_TO_BULCAL - TSP_DELAY */
-#define UPLINK_DELAY (3 * TSP_DELAY + BULCAL_DURATION + BULON_TO_BULCAL + 35)
-
-void twl3025_uplink(int on, int16_t at)
-{
- int16_t bul_ena = at - TSP_DELAY - 6;
-
- if (bul_ena < 0)
- printf("BULENA time negative (%d)\n", bul_ena);
- if (on) {
- /* calibration should be done just before BULENA */
- tpu_enq_at(bul_ena - UPLINK_DELAY);
- /* bdl_ena - 35 - TSP_DELAY - BULCAL_DURATION - TSP_DELAY - BULON_TO_BULCAL - TSP_DELAY */
- twl3025_tsp_write(BULON);
- /* bdl_ena - 35 - TSP_DELAY - BULCAL_DURATION - TSP_DELAY - BULON_TO_BULCAL */
- tpu_enq_wait(BULON_TO_BULCAL - TSP_DELAY);
- /* bdl_ena - 35 - TSP_DELAY - BULCAL_DURATION - TSP_DELAY */
- twl3025_tsp_write(BULON | BULCAL);
- /* bdl_ena - 35 - TSP_DELAY - BULCAL_DURATION */
- tpu_enq_wait(BULCAL_DURATION - TSP_DELAY);
- /* bdl_ena - 35 - TSP_DELAY */
- twl3025_tsp_write(BULON);
- /* bdl_ena - 35 */
- tpu_enq_wait(35); /* minimum time required to bring the ramp up (really needed?) */
- tpu_enq_at(bul_ena);
- twl3025_tsp_write(BULON | BULENA);
- } else {
- tpu_enq_at(bul_ena);
- twl3025_tsp_write(BULON);
- tpu_enq_wait(35); /* minimum time required to bring the ramp down (needed!) */
- twl3025_tsp_write(0);
- }
-}
-
-void twl3025_afc_set(int16_t val)
-{
- printf("twl3025_afc_set(%d)\n", val);
-
- if (val > 4095)
- val = 4095;
- else if (val <= -4096)
- val = -4096;
-
- /* FIXME: we currently write from the USP rather than BSP */
- twl3025_reg_write(AUXAFC2, val >> 10);
- twl3025_reg_write(AUXAFC1, val & 0x3ff);
-}
-
-int16_t twl3025_afc_get(void)
-{
- int16_t val;
-
- val = (twl3025_reg_read(AUXAFC2) & 0x7);
- val = val << 10;
- val = val | (twl3025_reg_read(AUXAFC1) & 0x3ff);
-
- if (val > 4095)
- val = -(8192 - val);
- return val;
-}
-
-void twl3025_unit_enable(enum twl3025_unit unit, int on)
-{
- uint16_t togbr1 = 0;
-
- switch (unit) {
- case TWL3025_UNIT_AFC:
- if (on)
- togbr1 = (1 << 7);
- else
- togbr1 = (1 << 6);
- break;
- case TWL3025_UNIT_MAD:
- if (on)
- togbr1 = (1 << 9);
- else
- togbr1 = (1 << 8);
- break;
- case TWL3025_UNIT_ADA:
- if (on)
- togbr1 = (1 << 5);
- else
- togbr1 = (1 << 4);
- case TWL3025_UNIT_VDL:
- if (on)
- togbr1 = (1 << 3);
- else
- togbr1 = (1 << 2);
- break;
- case TWL3025_UNIT_VUL:
- if (on)
- togbr1 = (1 << 1);
- else
- togbr1 = (1 << 0);
- break;
- }
- twl3025_reg_write(TOGBR1, togbr1);
-}
-
-uint8_t twl3025_afcout_get(void)
-{
- return twl3025_reg_read(AFCOUT) & 0xff;
-}
-
-void twl3025_afcout_set(uint8_t val)
-{
- twl3025_reg_write(AFCCTLADD, 0x05);
- twl3025_reg_write(AFCOUT, val);
-}
diff --git a/Src/osmoconbb/src/target/firmware/apps/chainload/main.c b/Src/osmoconbb/src/target/firmware/apps/chainload/main.c
deleted file mode 100644
index 5121837..0000000
--- a/Src/osmoconbb/src/target/firmware/apps/chainload/main.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/* Compal ramloader -> Calypso romloader Chainloading application */
-
-/* (C) 2010 by Steve Markgraf <steve@steve-m.de>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-#include <string.h>
-
-#include <debug.h>
-#include <memory.h>
-#include <delay.h>
-
-#include <calypso/clock.h>
-
-/* Main Program */
-
-static void device_enter_loader(unsigned char bootrom) {
- calypso_bootrom(bootrom);
- void (*entry)( void ) = (void (*)(void))0;
- entry();
-}
-
-int main(void)
-{
- /* Always disable wdt (some platforms enable it on boot) */
- wdog_enable(0);
-
- /* enable Calypso romloader mapping and jump there */
- delay_ms(200);
- device_enter_loader(1);
-
- /* Not reached */
- while(1) {
- }
-}
diff --git a/Src/osmoconbb/src/target/firmware/apps/compal_dsp_dump/main.c b/Src/osmoconbb/src/target/firmware/apps/compal_dsp_dump/main.c
deleted file mode 100644
index c823d0a..0000000
--- a/Src/osmoconbb/src/target/firmware/apps/compal_dsp_dump/main.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/* main program of Free Software for Calypso Phone */
-
-/* (C) 2010 Harald Welte <laforge@gnumonks.org>
- * (C) 2010 Sylvain Munaut <tnt@246tNt.com>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <memory.h>
-#include <delay.h>
-#include <stdio.h>
-#include <stdint.h>
-#include <rffe.h>
-#include <keypad.h>
-#include <board.h>
-#include <abb/twl3025.h>
-#include <rf/trf6151.h>
-#include <calypso/clock.h>
-#include <calypso/tpu.h>
-#include <calypso/tsp.h>
-#include <calypso/dsp.h>
-#include <calypso/irq.h>
-#include <calypso/misc.h>
-#include <comm/timer.h>
-
-/* Main Program */
-const char *hr = "======================================================================\n";
-
-int main(void)
-{
- board_init();
-
- puts("\n\nOSMOCOM Compal DSP Dumper (revision " GIT_REVISION ")\n");
- puts(hr);
-
- /* Dump device identification */
- dump_dev_id();
- puts(hr);
-
- /* Dump DSP content */
- dsp_dump();
-
- while (1) {
- update_timers();
- }
-}
-
diff --git a/Src/osmoconbb/src/target/firmware/apps/hello_world/main.c b/Src/osmoconbb/src/target/firmware/apps/hello_world/main.c
deleted file mode 100644
index 5e3ed85..0000000
--- a/Src/osmoconbb/src/target/firmware/apps/hello_world/main.c
+++ /dev/null
@@ -1,149 +0,0 @@
-/* main program of Free Software for Calypso Phone */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-#include <string.h>
-
-#include <debug.h>
-#include <memory.h>
-#include <delay.h>
-#include <rffe.h>
-#include <keypad.h>
-#include <board.h>
-#include <abb/twl3025.h>
-#include <display.h>
-#include <rf/trf6151.h>
-#include <calypso/clock.h>
-#include <calypso/tpu.h>
-#include <calypso/tsp.h>
-#include <calypso/dsp.h>
-#include <calypso/irq.h>
-#include <calypso/misc.h>
-#include <comm/sercomm.h>
-#include <comm/timer.h>
-
-/* Main Program */
-const char *hr = "======================================================================\n";
-
-void key_handler(enum key_codes code, enum key_states state);
-
-static void console_rx_cb(uint8_t dlci, struct msgb *msg)
-{
- if (dlci != SC_DLCI_CONSOLE) {
- printf("Message for unknown DLCI %u\n", dlci);
- return;
- }
-
- printf("Message on console DLCI: '%s'\n", msg->data);
- display_puts((char *) msg->data);
- msgb_free(msg);
-}
-
-static void l1a_l23_rx_cb(uint8_t dlci, struct msgb *msg)
-{
- int i;
- puts("l1a_l23_rx_cb: ");
- for (i = 0; i < msg->len; i++)
- printf("%02x ", msg->data[i]);
- puts("\n");
-}
-
-int main(void)
-{
- board_init();
-
- puts("\n\nOSMOCOM Hello World (revision " GIT_REVISION ")\n");
- puts(hr);
-
- /* Dump device identification */
- dump_dev_id();
- puts(hr);
-
- /* Dump clock config before PLL set */
- calypso_clk_dump();
- puts(hr);
-
- keypad_set_handler(&key_handler);
-
- /* Dump clock config after PLL set */
- calypso_clk_dump();
- puts(hr);
-
- /* Dump all memory */
- //dump_mem();
-#if 0
- /* Dump Bootloader */
- memdump_range((void *)0x00000000, 0x2000);
- puts(hr);
-#endif
-
- display_set_attr(DISP_ATTR_INVERT);
- display_puts("Hello World");
-
- sercomm_register_rx_cb(SC_DLCI_CONSOLE, console_rx_cb);
- sercomm_register_rx_cb(SC_DLCI_L1A_L23, l1a_l23_rx_cb);
-
- /* beyond this point we only react to interrupts */
- puts("entering interrupt loop\n");
- while (1) {
- update_timers();
- }
-
- twl3025_power_off();
-
- while (1) {}
-}
-
-void key_handler(enum key_codes code, enum key_states state)
-{
- char test[16];
-
- if (state != PRESSED)
- return;
-
- switch (code) {
- case KEY_0:
- case KEY_1:
- case KEY_2:
- case KEY_3:
- case KEY_4:
- case KEY_5:
- case KEY_6:
- case KEY_7:
- case KEY_8:
- case KEY_9:
- sprintf(test, "%d", code - KEY_0);
- display_puts(test);
- break;
- case KEY_STAR:
- sprintf(test, "*", 0);
- display_puts(test);
- break;
- case KEY_HASH:
- sprintf(test, "#", 0);
- display_puts(test);
- break;
- default:
- break;
- }
-}
diff --git a/Src/osmoconbb/src/target/firmware/apps/l1test/main.c b/Src/osmoconbb/src/target/firmware/apps/l1test/main.c
deleted file mode 100644
index d1ca3d6..0000000
--- a/Src/osmoconbb/src/target/firmware/apps/l1test/main.c
+++ /dev/null
@@ -1,249 +0,0 @@
-/* main program of Free Software for Calypso Phone */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-
-#include <debug.h>
-#include <memory.h>
-#include <delay.h>
-#include <rffe.h>
-#include <keypad.h>
-#include <board.h>
-
-#include <abb/twl3025.h>
-#include <display.h>
-#include <rf/trf6151.h>
-
-#include <comm/sercomm.h>
-#include <comm/timer.h>
-
-#include <calypso/clock.h>
-#include <calypso/tpu.h>
-#include <calypso/tsp.h>
-#include <calypso/irq.h>
-#include <calypso/misc.h>
-
-#include <layer1/sync.h>
-#include <layer1/tpu_window.h>
-
-#define SCAN
-
-#ifdef SCAN
-/* if scanning is enabled, scan from 0 ... 124 */
-#define BASE_ARFCN 0
-#else
-/* fixed ARFCN in GSM1800 at which Harald has his GSM test license */
-#define BASE_ARFCN 871
-#endif
-
-/* Main Program */
-const char *hr = "======================================================================\n";
-
-/* Best ARFCN MAP ************************************************************/
-
-struct arfcn_map {
- uint16_t arfcn;
- int16_t dbm8;
-};
-
-static struct arfcn_map best_arfcn_map[10];
-static void best_arfcn_update(uint16_t arfcn, int16_t dbm8)
-{
- unsigned int i;
- for (i = 0; i < ARRAY_SIZE(best_arfcn_map); i++) {
- if (best_arfcn_map[i].dbm8 < dbm8 ||
- best_arfcn_map[i].dbm8 == 0) {
- best_arfcn_map[i].dbm8 = dbm8;
- best_arfcn_map[i].arfcn = arfcn;
- return;
- }
- }
-}
-
-static void best_arfcn_dump(void)
-{
- unsigned int i;
-
- for (i = 0; i < ARRAY_SIZE(best_arfcn_map); i++) {
- if (best_arfcn_map[i].dbm8 == 0)
- continue;
- printf("ARFCN %3d: %d dBm\n",
- best_arfcn_map[i].arfcn,
- best_arfcn_map[i].dbm8/8);
- }
-}
-
-
-/* MAIN program **************************************************************/
-
-enum l1test_state {
- STATE_NONE,
- STATE_PM,
- STATE_FB,
-};
-
-static void l1test_state_change(enum l1test_state new_state)
-{
- switch (new_state) {
- case STATE_PM:
- puts("Performing power measurement over GSM900\n");
- l1s_pm_test(1, BASE_ARFCN);
- break;
- case STATE_FB:
- puts("Starting FCCH Recognition\n");
- l1s_fb_test(1, 0);
- break;
- case STATE_NONE:
- /* disable frame interrupts */
- tpu_frame_irq_en(0, 0);
- break;
- }
-}
-
-/* completion call-back for the L1 Sync Power Measurement */
-static void l1s_signal_cb(struct l1_signal *sig)
-{
- uint16_t i, next_arfcn;
-
- switch (sig->signum) {
- case L1_SIG_PM:
- best_arfcn_update(sig->arfcn, sig->pm.dbm8[0]);
- next_arfcn = sig->arfcn + 1;
-
- if (next_arfcn >= 124) {
- puts("ARFCN Top 10 Rx Level\n");
- best_arfcn_dump();
-
- trf6151_rx_window(0, best_arfcn_map[0].arfcn, 40, 0);
- tpu_end_scenario();
-
- /* PM phase completed, do FB det */
- l1test_state_change(STATE_FB);
-
- break;
- }
-
- /* restart Power Measurement */
- l1s_pm_test(1, next_arfcn);
- break;
- case L1_SIG_NB:
- puts("NB SNR ");
- for (i = 0; i < 4; i++) {
- uint16_t snr = sig->nb.meas[i].snr;
- printf("%d.%03u ", l1s_snr_int(snr), l1s_snr_fract(snr));
- }
- putchar('\n');
- printf("--> Frame %d %d 0x%04X ", sig->nb.fire, sig->nb.crc, sig->nb.num_biterr);
- for (i = 0; i < ARRAY_SIZE(sig->nb.frame); i++)
- printf("%02X ", sig->nb.frame[i]);
- putchar('\n');
- break;
- }
-}
-
-static void key_handler(enum key_codes code, enum key_states state);
-
-int main(void)
-{
- board_init();
-
- puts("\n\nHello World from " __FILE__ " program code\n");
-
- puts(hr);
- /* Dump device identification */
- dump_dev_id();
- puts(hr);
-
- keypad_set_handler(&key_handler);
-
- /* Dump clock config after PLL set */
- calypso_clk_dump();
- puts(hr);
-
- display_set_attr(DISP_ATTR_INVERT);
- display_puts("l1test.bin");
-
- layer1_init();
- l1s_set_handler(&l1s_signal_cb);
-
- //dsp_checksum_task();
-#ifdef SCAN
- l1test_state_change(STATE_PM);
-#else
- l1test_state_change(STATE_FB);
-#endif
- tpu_frame_irq_en(1, 1);
-
- while (1) {
- update_timers();
- }
-
- /* NOT REACHED */
-
- twl3025_power_off();
-}
-
-static int afcout = 0;
-
-static void tspact_toggle(uint8_t num)
-{
- printf("TSPACT%u toggle\n", num);
- tsp_act_toggle((1 << num));
- tpu_enq_sleep();
- tpu_enable(1);
- tpu_wait_idle();
-}
-
-static void key_handler(enum key_codes code, enum key_states state)
-{
- if (state != PRESSED)
- return;
-
- switch (code) {
- case KEY_4:
- tspact_toggle(6); /* TRENA (RFFE) */
- break;
- case KEY_5:
- tspact_toggle(8); /* GSM_TXEN (RFFE) */
- break;
- case KEY_6:
- tspact_toggle(1); /* PAENA (RFFE) */
- break;
- case KEY_7: /* decrement AFC OUT */
- afcout -= 100;
- if (afcout < -4096)
- afcout = -4096;
- twl3025_afc_set(afcout);
- printf("AFC OUT: %u\n", twl3025_afcout_get());
- break;
- case KEY_9: /* increase AFC OUT */
- afcout += 100;
- if (afcout > 4095)
- afcout = 4095;
- twl3025_afc_set(afcout);
- printf("AFC OUT: %u\n", twl3025_afcout_get());
- break;
- default:
- break;
- }
-}
diff --git a/Src/osmoconbb/src/target/firmware/apps/layer1/main.c b/Src/osmoconbb/src/target/firmware/apps/layer1/main.c
deleted file mode 100644
index 8eaf4a6..0000000
--- a/Src/osmoconbb/src/target/firmware/apps/layer1/main.c
+++ /dev/null
@@ -1,135 +0,0 @@
-/* main program of Free Software for Calypso Phone */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-
-#include <debug.h>
-#include <memory.h>
-#include <delay.h>
-#include <rffe.h>
-#include <keypad.h>
-#include <board.h>
-
-#include <abb/twl3025.h>
-#include <display.h>
-#include <rf/trf6151.h>
-
-#include <comm/sercomm.h>
-#include <comm/timer.h>
-
-#include <calypso/clock.h>
-#include <calypso/tpu.h>
-#include <calypso/tsp.h>
-#include <calypso/irq.h>
-#include <calypso/misc.h>
-
-#include <layer1/sync.h>
-#include <layer1/tpu_window.h>
-
-const char *hr = "======================================================================\n";
-
-/* MAIN program **************************************************************/
-
-static void key_handler(enum key_codes code, enum key_states state);
-
-int main(void)
-{
- board_init();
-
- puts("\n\nOSMOCOM Layer 1 (revision " GIT_REVISION ")\n");
- puts(hr);
-
- /* Dump device identification */
- dump_dev_id();
- puts(hr);
-
- keypad_set_handler(&key_handler);
-
- /* Dump clock config after PLL set */
- calypso_clk_dump();
- puts(hr);
-
- display_puts("layer1.bin");
-
- layer1_init();
-
- display_unset_attr(DISP_ATTR_INVERT);
-
- tpu_frame_irq_en(1, 1);
-
- while (1) {
- l1a_compl_execute();
- update_timers();
- }
-
- /* NOT REACHED */
-
- twl3025_power_off();
-}
-
-static int afcout = 0;
-
-static void tspact_toggle(uint8_t num)
-{
- printf("TSPACT%u toggle\n", num);
- tsp_act_toggle((1 << num));
- tpu_enq_sleep();
- tpu_enable(1);
- tpu_wait_idle();
-}
-
-static void key_handler(enum key_codes code, enum key_states state)
-{
- if (state != PRESSED)
- return;
-
- switch (code) {
- case KEY_4:
- tspact_toggle(6); /* TRENA (RFFE) */
- break;
- case KEY_5:
- tspact_toggle(8); /* GSM_TXEN (RFFE) */
- break;
- case KEY_6:
- tspact_toggle(1); /* PAENA (RFFE) */
- break;
- case KEY_7: /* decrement AFC OUT */
- afcout -= 100;
- if (afcout < -4096)
- afcout = -4096;
- twl3025_afc_set(afcout);
- printf("AFC OUT: %u\n", twl3025_afcout_get());
- break;
- case KEY_9: /* increase AFC OUT */
- afcout += 100;
- if (afcout > 4095)
- afcout = 4095;
- twl3025_afc_set(afcout);
- printf("AFC OUT: %u\n", twl3025_afcout_get());
- break;
- default:
- break;
- }
-}
-
-
diff --git a/Src/osmoconbb/src/target/firmware/apps/loader/main.c b/Src/osmoconbb/src/target/firmware/apps/loader/main.c
deleted file mode 100644
index 2ff6f9c..0000000
--- a/Src/osmoconbb/src/target/firmware/apps/loader/main.c
+++ /dev/null
@@ -1,444 +0,0 @@
-/* boot loader for Calypso phones */
-
-/* (C) 2010 by Ingo Albrecht <prom@berlin.ccc.de>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-#include <string.h>
-
-#include <debug.h>
-#include <memory.h>
-#include <delay.h>
-#include <rffe.h>
-#include <keypad.h>
-#include <board.h>
-#include <console.h>
-#include <manifest.h>
-
-#include <osmocom/core/crc16.h>
-
-#include <abb/twl3025.h>
-#include <rf/trf6151.h>
-
-#include <comm/sercomm.h>
-
-#include <calypso/clock.h>
-#include <calypso/tpu.h>
-#include <calypso/tsp.h>
-#include <calypso/irq.h>
-#include <calypso/misc.h>
-#include <uart.h>
-#include <calypso/timer.h>
-
-#include <flash/cfi_flash.h>
-
-#include "protocol.h"
-
-/* Main Program */
-const char *hr =
- "======================================================================\n";
-
-static void key_handler(enum key_codes code, enum key_states state);
-static void cmd_handler(uint8_t dlci, struct msgb *msg);
-
-int flag = 0;
-
-static void flush_uart(void)
-{
- unsigned i;
- for (i = 0; i < 500; i++) {
- uart_poll(SERCOMM_UART_NR);
- delay_ms(1);
- }
-}
-
-static void device_poweroff(void)
-{
- flush_uart();
- twl3025_power_off();
-}
-
-static void device_reset(void)
-{
- flush_uart();
- wdog_reset();
-}
-
-static void device_enter_loader(unsigned char bootrom)
-{
- flush_uart();
-
- calypso_bootrom(bootrom);
- void (*entry) (void) = (void (*)(void))0;
- entry();
-}
-
-static void device_jump(void *entry)
-{
- flush_uart();
-
- void (*f) (void) = (void (*)(void))entry;
- f();
-}
-
-static void loader_send_simple(struct msgb *msg, uint8_t dlci, uint8_t command)
-{
- msgb_put_u8(msg, command);
- sercomm_sendmsg(dlci, msg);
-}
-
-extern unsigned char _start;
-
-static void loader_send_init(uint8_t dlci)
-{
- struct msgb *msg = sercomm_alloc_msgb(9);
- msgb_put_u8(msg, LOADER_INIT);
- msgb_put_u32(msg, 0);
- msgb_put_u32(msg, &_start);
- sercomm_sendmsg(dlci, msg);
-}
-
-flash_t the_flash;
-
-extern void putchar_asm(uint32_t c);
-
-static const uint8_t phone_ack[] = { 0x1b, 0xf6, 0x02, 0x00, 0x41, 0x03, 0x42 };
-
-int main(void)
-{
- /* Simulate a compal loader saying "ACK" */
- int i = 0;
- for (i = 0; i < sizeof(phone_ack); i++) {
- putchar_asm(phone_ack[i]);
- }
-
- /* Always disable wdt (some platforms enable it on boot) */
- wdog_enable(0);
-
- /* Disable the bootrom mapping */
- calypso_bootrom(0);
-
- /* Initialize TWL3025 for power control */
- twl3025_init();
-
- /* Backlight */
- bl_mode_pwl(1);
- bl_level(50);
-
- /* Initialize UART without interrupts */
- uart_init(SERCOMM_UART_NR, 0);
- uart_baudrate(SERCOMM_UART_NR, UART_115200);
-
- /* Initialize HDLC subsystem */
- sercomm_init();
-
- /* Say hi */
- puts("\n\nOSMOCOM Loader (revision " GIT_REVISION ")\n");
- puts(hr);
-
- /* Identify environment */
- printf("Running on %s in environment %s\n", manifest_board,
- manifest_environment);
-
- /* Initialize flash driver */
- if (flash_init(&the_flash, 0)) {
- puts("Failed to initialize flash!\n");
- } else {
- printf("Found flash of %d bytes at 0x%x with %d regions\n",
- the_flash.f_size, the_flash.f_base,
- the_flash.f_nregions);
-
- int i;
- for (i = 0; i < the_flash.f_nregions; i++) {
- printf(" Region %d of %d pages with %d bytes each.\n",
- i,
- the_flash.f_regions[i].fr_bnum,
- the_flash.f_regions[i].fr_bsize);
- }
-
- }
-
- /* Set up a key handler for powering off */
- keypad_set_handler(&key_handler);
-
- /* Set up loader communications */
- sercomm_register_rx_cb(SC_DLCI_LOADER, &cmd_handler);
-
- /* Notify any running osmoload about our startup */
- loader_send_init(SC_DLCI_LOADER);
-
- /* Wait for events */
- while (1) {
- keypad_poll();
- uart_poll(SERCOMM_UART_NR);
- }
-
- /* NOT REACHED */
-
- twl3025_power_off();
-}
-
-static void cmd_handler(uint8_t dlci, struct msgb *msg)
-{
- if (msg->data_len < 1) {
- return;
- }
-
- uint8_t command = msgb_get_u8(msg);
-
- int res;
-
- flash_lock_t lock;
-
- void *data;
-
- uint8_t chip;
- uint8_t nbytes;
- uint16_t crc, mycrc;
- uint32_t address;
-
- struct msgb *reply = sercomm_alloc_msgb(256); // XXX
-
- if (!reply) {
- printf("Failed to allocate reply buffer!\n");
- goto out;
- }
-
- switch (command) {
-
- case LOADER_PING:
- loader_send_simple(reply, dlci, LOADER_PING);
- break;
-
- case LOADER_RESET:
- loader_send_simple(reply, dlci, LOADER_RESET);
- device_reset();
- break;
-
- case LOADER_POWEROFF:
- loader_send_simple(reply, dlci, LOADER_POWEROFF);
- device_poweroff();
- break;
-
- case LOADER_ENTER_ROM_LOADER:
- loader_send_simple(reply, dlci, LOADER_ENTER_ROM_LOADER);
- device_enter_loader(1);
- break;
-
- case LOADER_ENTER_FLASH_LOADER:
- loader_send_simple(reply, dlci, LOADER_ENTER_FLASH_LOADER);
- device_enter_loader(0);
- break;
-
- case LOADER_MEM_READ:
-
- nbytes = msgb_get_u8(msg);
- address = msgb_get_u32(msg);
-
- crc = osmo_crc16(0, (void *)address, nbytes);
-
- msgb_put_u8(reply, LOADER_MEM_READ);
- msgb_put_u8(reply, nbytes);
- msgb_put_u16(reply, crc);
- msgb_put_u32(reply, address);
-
- memcpy(msgb_put(reply, nbytes), (void *)address, nbytes);
-
- sercomm_sendmsg(dlci, reply);
-
- break;
-
- case LOADER_MEM_WRITE:
-
- nbytes = msgb_get_u8(msg);
- crc = msgb_get_u16(msg);
- address = msgb_get_u32(msg);
-
- data = msgb_get(msg, nbytes);
-
- mycrc = osmo_crc16(0, data, nbytes);
-
- if (mycrc == crc) {
- memcpy((void *)address, data, nbytes);
- }
-
- msgb_put_u8(reply, LOADER_MEM_WRITE);
- msgb_put_u8(reply, nbytes);
- msgb_put_u16(reply, mycrc);
- msgb_put_u32(reply, address);
-
- sercomm_sendmsg(dlci, reply);
-
- break;
-
- case LOADER_JUMP:
-
- address = msgb_get_u32(msg);
-
- msgb_put_u8(reply, LOADER_JUMP);
- msgb_put_u32(reply, address);
-
- sercomm_sendmsg(dlci, reply);
-
- device_jump((void *)address);
-
- break;
-
- case LOADER_FLASH_INFO:
-
- msgb_put_u8(reply, LOADER_FLASH_INFO);
- msgb_put_u8(reply, 1); // nchips
-
- // chip 1
- msgb_put_u32(reply, the_flash.f_base);
- msgb_put_u32(reply, the_flash.f_size);
- msgb_put_u8(reply, the_flash.f_nregions);
-
- int i;
- for (i = 0; i < the_flash.f_nregions; i++) {
- msgb_put_u32(reply, the_flash.f_regions[i].fr_bnum);
- msgb_put_u32(reply, the_flash.f_regions[i].fr_bsize);
- }
-
- sercomm_sendmsg(dlci, reply);
-
- break;
-
- case LOADER_FLASH_ERASE:
- case LOADER_FLASH_UNLOCK:
- case LOADER_FLASH_LOCK:
- case LOADER_FLASH_LOCKDOWN:
-
- chip = msgb_get_u8(msg);
- address = msgb_get_u32(msg);
-
- if (command == LOADER_FLASH_ERASE) {
- res = flash_block_erase(&the_flash, address);
- }
- if (command == LOADER_FLASH_UNLOCK) {
- res = flash_block_unlock(&the_flash, address);
- }
- if (command == LOADER_FLASH_LOCK) {
- res = flash_block_lock(&the_flash, address);
- }
- if (command == LOADER_FLASH_LOCKDOWN) {
- res = flash_block_lockdown(&the_flash, address);
- }
-
- msgb_put_u8(reply, command);
- msgb_put_u8(reply, chip);
- msgb_put_u32(reply, address);
- msgb_put_u32(reply, (res != 0));
-
- sercomm_sendmsg(dlci, reply);
-
- break;
-
- case LOADER_FLASH_GETLOCK:
-
- chip = msgb_get_u8(msg);
- address = msgb_get_u32(msg);
-
- lock = flash_block_getlock(&the_flash, address);
-
- msgb_put_u8(reply, command);
- msgb_put_u8(reply, chip);
- msgb_put_u32(reply, address);
-
- switch (lock) {
- case FLASH_UNLOCKED:
- msgb_put_u32(reply, LOADER_FLASH_UNLOCKED);
- break;
- case FLASH_LOCKED:
- msgb_put_u32(reply, LOADER_FLASH_LOCKED);
- break;
- case FLASH_LOCKED_DOWN:
- msgb_put_u32(reply, LOADER_FLASH_LOCKED_DOWN);
- break;
- default:
- msgb_put_u32(reply, 0xFFFFFFFF);
- break;
- }
-
- sercomm_sendmsg(dlci, reply);
-
- break;
-
- case LOADER_FLASH_PROGRAM:
-
- nbytes = msgb_get_u8(msg);
- crc = msgb_get_u16(msg);
- msgb_get_u8(msg); // XXX align
- chip = msgb_get_u8(msg);
- address = msgb_get_u32(msg);
-
- data = msgb_get(msg, nbytes);
-
- mycrc = osmo_crc16(0, data, nbytes);
-
- if (mycrc == crc) {
- res = flash_program(&the_flash, address, data, nbytes);
- }
-
- msgb_put_u8(reply, LOADER_FLASH_PROGRAM);
- msgb_put_u8(reply, nbytes);
- msgb_put_u16(reply, mycrc);
- msgb_put_u8(reply, 0); // XXX align
- msgb_put_u8(reply, chip);
- msgb_put_u32(reply, address);
-
- msgb_put_u32(reply, (uint32_t) res); // XXX
-
- sercomm_sendmsg(dlci, reply);
-
- break;
-
- default:
- printf("unknown command %d\n", command);
-
- msgb_free(reply);
-
- break;
- }
-
- out:
-
- msgb_free(msg);
-}
-
-static void key_handler(enum key_codes code, enum key_states state)
-{
- if (state != PRESSED)
- return;
-
- switch (code) {
- case KEY_POWER:
- puts("Powering off due to keypress.\n");
- device_poweroff();
- break;
- case KEY_OK:
- puts("Resetting due to keypress.\n");
- device_reset();
- break;
- default:
- break;
- }
-}
diff --git a/Src/osmoconbb/src/target/firmware/apps/loader/protocol.h b/Src/osmoconbb/src/target/firmware/apps/loader/protocol.h
deleted file mode 100644
index 0a61c89..0000000
--- a/Src/osmoconbb/src/target/firmware/apps/loader/protocol.h
+++ /dev/null
@@ -1,37 +0,0 @@
-
-enum loader_command {
- /* init message from loader */
- LOADER_INIT,
-
- /* ping / pong */
- LOADER_PING,
-
- /* lifecycle requests */
- LOADER_RESET,
- LOADER_POWEROFF,
-
- /* jumps */
- LOADER_JUMP,
- LOADER_ENTER_ROM_LOADER,
- LOADER_ENTER_FLASH_LOADER,
-
- /* generic memory ops */
- LOADER_MEM_READ,
- LOADER_MEM_WRITE,
-
- /* flash operations */
- LOADER_FLASH_INFO,
- LOADER_FLASH_ERASE,
- LOADER_FLASH_UNLOCK,
- LOADER_FLASH_LOCK,
- LOADER_FLASH_LOCKDOWN,
- LOADER_FLASH_GETLOCK,
- LOADER_FLASH_PROGRAM,
-
-};
-
-enum loader_flash_lock {
- LOADER_FLASH_UNLOCKED = 0,
- LOADER_FLASH_LOCKED,
- LOADER_FLASH_LOCKED_DOWN,
-};
diff --git a/Src/osmoconbb/src/target/firmware/apps/loader_mtk/main.c b/Src/osmoconbb/src/target/firmware/apps/loader_mtk/main.c
deleted file mode 100644
index 9bfaa7e..0000000
--- a/Src/osmoconbb/src/target/firmware/apps/loader_mtk/main.c
+++ /dev/null
@@ -1,366 +0,0 @@
-/*
- * boot loader for MTK phones (based on the calypso-version)
- *
- * (C) 2010 by Ingo Albrecht <prom@berlin.ccc.de>
- * (C) 2011 by Wolfram Sang <wolfram@the-dreams.de>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-#include <string.h>
-
-#include <debug.h>
-#include <memory.h>
-#include <delay.h>
-#include <keypad.h>
-#include <board.h>
-#include <console.h>
-#include <defines.h>
-#include <manifest.h>
-
-#include <osmocom/core/crc16.h>
-
-#include <comm/sercomm.h>
-
-#include <uart.h>
-
-#include <flash/cfi_flash.h>
-
-#include <mtk/emi.h>
-#include <mtk/mt6235.h>
-#include <mtk/system.h>
-
-#include "../loader/protocol.h"
-
-/* Main Program */
-const char *hr =
- "======================================================================\n";
-
-static void cmd_handler(uint8_t dlci, struct msgb *msg);
-
-int flag = 0;
-
-static void flush_uart(void)
-{
- unsigned i;
- for (i = 0; i < 500; i++) {
- uart_poll(SERCOMM_UART_NR);
- delay_ms(1);
- }
-}
-
-static void device_poweroff(void)
-{
- flush_uart();
- writew(BBPU_MAGIC | RTC_BBPU_WRITE_EN,
- MTK_RTC_BBPU);
- writew(1, MTK_RTC_WRTGR);
-}
-
-static void device_reset(void)
-{
- flush_uart();
-}
-
-static void device_enter_loader(__unused unsigned char bootrom)
-{
- flush_uart();
- delay_ms(2000);
- void (*entry)( void ) = (void (*)(void))0;
- entry();
-}
-
-static void device_jump(void *entry)
-{
- flush_uart();
-
- void (*f) (void) = (void (*)(void))entry;
- f();
-}
-
-static void loader_send_simple(struct msgb *msg, uint8_t dlci, uint8_t command)
-{
- msgb_put_u8(msg, command);
- sercomm_sendmsg(dlci, msg);
-}
-
-extern unsigned char _start;
-
-flash_t the_flash;
-
-extern void putchar_asm(uint32_t c);
-
-static const uint8_t phone_ack[] = { 0x1b, 0xf6, 0x02, 0x00, 0x41, 0x03, 0x42 };
-
-int main(void)
-{
- board_init ();
-
- /* Initialize HDLC subsystem */
- sercomm_init();
-
- /* Say hi */
- puts("\n\nOSMOCOM Loader (revision " GIT_REVISION ")\n");
- puts(hr);
-
- /* Identify environment */
- printf("\nRunning on %s in environment %s\n", manifest_board,
- manifest_environment);
-
- printf("\nHW_CODE = 0x%04x", readw(MTK_CONFG_HW_CODE));
-
- /* Set up loader communications */
- sercomm_register_rx_cb(SC_DLCI_LOADER, &cmd_handler);
-
- /* Wait for events */
-
- while (1) {
- uart_poll(SERCOMM_UART_NR);
- }
-
-}
-
-static void cmd_handler(uint8_t dlci, struct msgb *msg)
-{
- if (msg->data_len < 1) {
- return;
- }
-
- uint8_t command = msgb_get_u8(msg);
-
- int res;
-
- flash_lock_t lock;
-
- void *data;
-
- uint8_t chip;
- uint8_t nbytes;
- uint16_t crc, mycrc;
- uint32_t address;
-
- struct msgb *reply = sercomm_alloc_msgb(256); // XXX
-
- if (!reply) {
- printf("Failed to allocate reply buffer!\n");
- goto out;
- }
-
- switch (command) {
-
- case LOADER_PING:
- loader_send_simple(reply, dlci, LOADER_PING);
- break;
-
- case LOADER_RESET:
- loader_send_simple(reply, dlci, LOADER_RESET);
- device_reset();
- break;
-
- case LOADER_POWEROFF:
- loader_send_simple(reply, dlci, LOADER_POWEROFF);
- device_poweroff();
- break;
-
- case LOADER_ENTER_ROM_LOADER:
- loader_send_simple(reply, dlci, LOADER_ENTER_ROM_LOADER);
- device_enter_loader(1);
- break;
-
- case LOADER_ENTER_FLASH_LOADER:
- loader_send_simple(reply, dlci, LOADER_ENTER_FLASH_LOADER);
- device_enter_loader(0);
- break;
-
- case LOADER_MEM_READ:
-
- nbytes = msgb_get_u8(msg);
- address = msgb_get_u32(msg);
-
- crc = osmo_crc16(0, (void *)address, nbytes);
-
- msgb_put_u8(reply, LOADER_MEM_READ);
- msgb_put_u8(reply, nbytes);
- msgb_put_u16(reply, crc);
- msgb_put_u32(reply, address);
-
- memcpy(msgb_put(reply, nbytes), (void *)address, nbytes);
-
- sercomm_sendmsg(dlci, reply);
-
- break;
-
- case LOADER_MEM_WRITE:
-
- nbytes = msgb_get_u8(msg);
- crc = msgb_get_u16(msg);
- address = msgb_get_u32(msg);
-
- data = msgb_get(msg, nbytes);
-
- mycrc = osmo_crc16(0, data, nbytes);
-
- if (mycrc == crc) {
- memcpy((void *)address, data, nbytes);
- }
-
- msgb_put_u8(reply, LOADER_MEM_WRITE);
- msgb_put_u8(reply, nbytes);
- msgb_put_u16(reply, mycrc);
- msgb_put_u32(reply, address);
-
- sercomm_sendmsg(dlci, reply);
-
- break;
-
- case LOADER_JUMP:
-
- address = msgb_get_u32(msg);
-
- msgb_put_u8(reply, LOADER_JUMP);
- msgb_put_u32(reply, address);
-
- sercomm_sendmsg(dlci, reply);
-
- device_jump((void *)address);
-
- break;
-
- case LOADER_FLASH_INFO:
-
- msgb_put_u8(reply, LOADER_FLASH_INFO);
- msgb_put_u8(reply, 1); // nchips
-
- // chip 1
- msgb_put_u32(reply, the_flash.f_base);
- msgb_put_u32(reply, the_flash.f_size);
- msgb_put_u8(reply, the_flash.f_nregions);
-
- unsigned i;
- for (i = 0; i < the_flash.f_nregions; i++) {
- msgb_put_u32(reply, the_flash.f_regions[i].fr_bnum);
- msgb_put_u32(reply, the_flash.f_regions[i].fr_bsize);
- }
-
- sercomm_sendmsg(dlci, reply);
-
- break;
-
- case LOADER_FLASH_ERASE:
- case LOADER_FLASH_UNLOCK:
- case LOADER_FLASH_LOCK:
- case LOADER_FLASH_LOCKDOWN:
-
- chip = msgb_get_u8(msg);
- address = msgb_get_u32(msg);
-
- if (command == LOADER_FLASH_ERASE) {
- res = flash_block_erase(&the_flash, address);
- }
- if (command == LOADER_FLASH_UNLOCK) {
- res = flash_block_unlock(&the_flash, address);
- }
- if (command == LOADER_FLASH_LOCK) {
- res = flash_block_lock(&the_flash, address);
- }
- if (command == LOADER_FLASH_LOCKDOWN) {
- res = flash_block_lockdown(&the_flash, address);
- }
-
- msgb_put_u8(reply, command);
- msgb_put_u8(reply, chip);
- msgb_put_u32(reply, address);
- msgb_put_u32(reply, (res != 0));
-
- sercomm_sendmsg(dlci, reply);
-
- break;
-
- case LOADER_FLASH_GETLOCK:
-
- chip = msgb_get_u8(msg);
- address = msgb_get_u32(msg);
-
- lock = flash_block_getlock(&the_flash, address);
-
- msgb_put_u8(reply, command);
- msgb_put_u8(reply, chip);
- msgb_put_u32(reply, address);
-
- switch (lock) {
- case FLASH_UNLOCKED:
- msgb_put_u32(reply, LOADER_FLASH_UNLOCKED);
- break;
- case FLASH_LOCKED:
- msgb_put_u32(reply, LOADER_FLASH_LOCKED);
- break;
- case FLASH_LOCKED_DOWN:
- msgb_put_u32(reply, LOADER_FLASH_LOCKED_DOWN);
- break;
- default:
- msgb_put_u32(reply, 0xFFFFFFFF);
- break;
- }
-
- sercomm_sendmsg(dlci, reply);
-
- break;
-
- case LOADER_FLASH_PROGRAM:
-
- nbytes = msgb_get_u8(msg);
- crc = msgb_get_u16(msg);
- msgb_get_u8(msg); // XXX align
- chip = msgb_get_u8(msg);
- address = msgb_get_u32(msg);
-
- data = msgb_get(msg, nbytes);
-
- mycrc = osmo_crc16(0, data, nbytes);
-
- if (mycrc == crc) {
- res = flash_program(&the_flash, address, data, nbytes);
- }
-
- msgb_put_u8(reply, LOADER_FLASH_PROGRAM);
- msgb_put_u8(reply, nbytes);
- msgb_put_u16(reply, mycrc);
- msgb_put_u8(reply, 0); // XXX align
- msgb_put_u8(reply, chip);
- msgb_put_u32(reply, address);
-
- msgb_put_u32(reply, (uint32_t) res); // XXX
-
- sercomm_sendmsg(dlci, reply);
-
- break;
-
- default:
- printf("unknown command %d\n", command);
-
- msgb_free(reply);
-
- break;
- }
-
- out:
-
- msgb_free(msg);
-}
diff --git a/Src/osmoconbb/src/target/firmware/apps/simtest/main.c b/Src/osmoconbb/src/target/firmware/apps/simtest/main.c
deleted file mode 100755
index 83f708e..0000000
--- a/Src/osmoconbb/src/target/firmware/apps/simtest/main.c
+++ /dev/null
@@ -1,307 +0,0 @@
-/* SIM test application */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-#include <string.h>
-
-#include <debug.h>
-#include <memory.h>
-#include <delay.h>
-#include <rffe.h>
-#include <keypad.h>
-#include <board.h>
-#include <abb/twl3025.h>
-#include <display.h>
-#include <rf/trf6151.h>
-#include <calypso/clock.h>
-#include <calypso/tpu.h>
-#include <calypso/tsp.h>
-#include <calypso/dsp.h>
-#include <calypso/irq.h>
-#include <calypso/misc.h>
-#include <comm/sercomm.h>
-#include <comm/timer.h>
-
-#include <calypso/sim.h>
-
-#define DEBUG
-
-/* Dump bytes in hex on the console */
-static void myHexdump(uint8_t *data, int len)
-{
- int i;
-
- for(i=0;i<len;i++)
- printf("%x ",data[i]);
-
- printf("(%i bytes)\n", len);
-
- return;
-}
-
-/* SIM instructions
- All instructions a standard sim card must feature: */
-#define SIM_CLASS 0xA0 /* Class that contains the following instructions */
-#define SIM_SELECT 0xA4 /* Select a file on the card */
-#define SIM_STATUS 0xF2 /* Get the status of the currently selected file */
-#define SIM_READ_BINARY 0xB0 /* Read file in binary mode */
-#define SIM_UPDATE_BINARY 0xD6 /* Write file in binary mode */
-#define SIM_READ_RECORD 0xB2 /* Read record of a record based file */
-#define SIM_UPDATE_RECORD 0xDC /* Write record of a record based file */
-#define SIM_SEEK 0xA2 /* Seek in a record based file */
-#define SIM_INCREASE 0x32 /* Increase a record in a record based file */
-#define SIM_VERIFY_CHV 0x20 /* Authenticate with card (enter pin) */
-#define SIM_CHANGE_CHV 0x24 /* Change pin */
-#define SIM_DISABLE_CHV 0x26 /* Disable pin so that no authentication is needed anymore */
-#define SIM_ENABLE_CHV 0x28 /* Enable pin, authentication is now needed again */
-#define SIM_UNBLOCK_CHV 0x2C /* Unblock pin when it is blocked by entering a wrong pin three times */
-#define SIM_INVALIDATE 0x04 /* Invalidate the current elementry file (file in a subdirectory) */
-#define SIM_REHABILITATE 0x44 /* Rehabilitate the current elementry file (file in a subdirectory) */
-#define SIM_RUN_GSM_ALGORITHM 0x88 /* Run the GSM A3 authentication algorithm in the card */
-#define SIM_SLEEP 0xFA /* Sleep command (only used in Phase 1 GSM) */
-#define SIM_GET_RESPONSE 0xC0 /* Get the response of a command from the card */
-
-/* File identifiers (filenames)
- The file identifiers are the standardized file identifiers mentioned in the
- GSM-11-11 specification. */
-#define SIM_MF 0x3F00
-#define SIM_EF_ICCID 0x2FE2
-#define SIM_DF_TELECOM 0x7F10
-#define SIM_EF_ADN 0x6F3A
-#define SIM_EF_FDN 0x6F3B
-#define SIM_EF_SMS 0x6F3C
-#define SIM_EF_CCP 0x6F3D
-#define SIM_EF_MSISDN 0x6F40
-#define SIM_EF_SMSP 0x6F42
-#define SIM_EF_SMSS 0x6F43
-#define SIM_EF_LND 0x6F44
-#define SIM_EF_EXT1 0x6F4A
-#define SIM_EF_EXT2 0x6F4B
-#define SIM_DF_GSM 0x7F20
-#define SIM_EF_LP 0x6F05
-#define SIM_EF_IMSI 0x6F07
-#define SIM_EF_KC 0x6F20
-#define SIM_EF_PLMNsel 0x6F30
-#define SIM_EF_HPLMN 0x6F31
-#define SIM_EF_ACMmax 0x6F37
-#define SIM_EF_SST 0x6F38
-#define SIM_EF_ACM 0x6F39
-#define SIM_EF_GID1 0x6F3E
-#define SIM_EF_GID2 0x6F3F
-#define SIM_EF_PUCT 0x6F41
-#define SIM_EF_CBMI 0x6F45
-#define SIM_EF_SPN 0x6F46
-#define SIM_EF_BCCH 0x6F74
-#define SIM_EF_ACC 0x6F78
-#define SIM_EF_FPLMN 0x6F7B
-#define SIM_EF_LOCI 0x6F7E
-#define SIM_EF_AD 0x6FAD
-#define SIM_EF_PHASE 0x6FAE
-
-/* Select a file on the card */
-uint16_t sim_select(uint16_t fid)
-{
- uint8_t txBuffer[2];
- uint8_t status_word[2];
-
- txBuffer[1] = (uint8_t) fid;
- txBuffer[0] = (uint8_t) (fid >> 8);
-
- if(calypso_sim_transceive(SIM_CLASS, SIM_SELECT, 0x00, 0x00, 0x02,
- txBuffer, status_word, SIM_APDU_PUT) != 0)
- return 0xFFFF;
-
- return (status_word[0] << 8) | status_word[1];
-}
-
-/* Get the status of the currently selected file */
-uint16_t sim_status(void)
-{
- uint8_t status_word[2];
-
- if(calypso_sim_transceive(SIM_CLASS, SIM_STATUS, 0x00, 0x00, 0x00, 0,
- status_word, SIM_APDU_PUT) != 0)
- return 0xFFFF;
-
- return (status_word[0] << 8) | status_word[1];
-}
-
-/* Read file in binary mode */
-uint16_t sim_readbinary(uint8_t offset_high, uint8_t offset_low, uint8_t length, uint8_t *data)
-{
- uint8_t status_word[2];
- if(calypso_sim_transceive(SIM_CLASS, SIM_READ_BINARY, offset_high,
- offset_low, length, data ,status_word,
- SIM_APDU_GET) != 0)
- return 0xFFFF;
-
- return (status_word[0] << 8) | status_word[1];
-}
-
-/* Execute my (dexter's) personal test */
-void do_sim_test(void)
-{
- uint8_t testBuffer[20];
- uint8_t testtxBuffer[20];
-
- uint8_t testDataBody[257];
- uint8_t testStatusWord[2];
- int recivedChars;
- int i;
-
- uint8_t atr[20];
- uint8_t atrLength = 0;
-
- memset(atr,0,sizeof(atr));
-
-
-
- uint8_t buffer[20];
-
-
- memset(testtxBuffer,0,sizeof(testtxBuffer));
-
- puts("----------------SIMTEST----8<-----------------\n");
-
- /* Initialize Sim-Controller driver */
- puts("Initializing driver:\n");
- calypso_sim_init();
-
- /* Power up sim and display ATR */
- puts("Power up simcard:\n");
- memset(atr,0,sizeof(atr));
- atrLength = calypso_sim_powerup(atr);
- myHexdump(atr,atrLength);
-
- /* Reset sim and display ATR */
- puts("Reset simcard:\n");
- memset(atr,0,sizeof(atr));
- atrLength = calypso_sim_reset(atr);
- myHexdump(atr,atrLength);
-
-
-
- testDataBody[0] = 0x3F;
- testDataBody[1] = 0x00;
- calypso_sim_transceive(0xA0, 0xA4, 0x00, 0x00, 0x02, testDataBody,0, SIM_APDU_PUT);
- calypso_sim_transceive(0xA0, 0xC0, 0x00, 0x00, 0x0f, testDataBody,0, SIM_APDU_GET);
- myHexdump(testDataBody,0x0F);
-
- puts("Test Phase 1: Testing bare sim commands...\n");
-
- puts(" * Testing SELECT: Selecting MF\n");
- printf(" ==> Status word: %x\n", sim_select(SIM_MF));
-
- puts(" * Testing SELECT: Selecting DF_GSM\n");
- printf(" ==> Status word: %x\n", sim_select(SIM_DF_GSM));
-
- puts(" * Testing SELECT: Selecting EF_IMSI\n");
- printf(" ==> Status word: %x\n", sim_select(SIM_EF_IMSI));
-
- puts(" * Testing STATUS:\n");
- printf(" ==> Status word: %x\n", sim_status());
-
- memset(buffer,0,sizeof(buffer));
- puts(" * Testing READ BINARY:\n");
- printf(" ==> Status word: %x\n", sim_readbinary(0,0,9,buffer));
- printf(" Data: ");
- myHexdump(buffer,9);
-
- delay_ms(5000);
-
- calypso_sim_powerdown();
-
- puts("------------END SIMTEST----8<-----------------\n");
-}
-
-/* Main Program */
-const char *hr = "======================================================================\n";
-
-void key_handler(enum key_codes code, enum key_states state);
-
-static void *console_rx_cb(uint8_t dlci, struct msgb *msg)
-{
- if (dlci != SC_DLCI_CONSOLE) {
- printf("Message for unknown DLCI %u\n", dlci);
- return;
- }
-
- printf("Message on console DLCI: '%s'\n", msg->data);
- msgb_free(msg);
-}
-
-int main(void)
-{
- board_init();
-
- puts("\n\nOSMOCOM SIM Test (revision " GIT_REVISION ")\n");
- puts(hr);
-
- /* Dump device identification */
- dump_dev_id();
- puts(hr);
-
- /* Dump clock config before PLL set */
- calypso_clk_dump();
- puts(hr);
-
- keypad_set_handler(&key_handler);
-
- /* Dump clock config after PLL set */
- calypso_clk_dump();
- puts(hr);
-
- /* Dump all memory */
- //dump_mem();
-#if 0
- /* Dump Bootloader */
- memdump_range((void *)0x00000000, 0x2000);
- puts(hr);
-#endif
-
- display_set_attr(DISP_ATTR_INVERT);
- display_puts("SIM-TEST");
-
- sercomm_register_rx_cb(SC_DLCI_CONSOLE, console_rx_cb);
-
- do_sim_test();
-
- /* beyond this point we only react to interrupts */
- puts("entering interrupt loop\n");
- while (1) {
- }
-
- twl3025_power_off();
- while (1) {}
-}
-
-void key_handler(enum key_codes code, enum key_states state)
-{
- if (state != PRESSED)
- return;
-
- switch (code) {
- default:
- break;
- }
-}
diff --git a/Src/osmoconbb/src/target/firmware/board/common/calypso_pwl.S b/Src/osmoconbb/src/target/firmware/board/common/calypso_pwl.S
deleted file mode 100644
index 90e29bf..0000000
--- a/Src/osmoconbb/src/target/firmware/board/common/calypso_pwl.S
+++ /dev/null
@@ -1,21 +0,0 @@
-
-/* Calypso PWL driver */
-
-#define ASIC_CONF_REG 0xfffef008
-#define BA_PWL 0xfffe8000
-
-.globl pwl_init
-pwl_init: ldr r1, =ASIC_CONF_REG
- ldr r2, [r1]
- orr r2, r2, #0x10 @ set light output to PWL
- str r2, [r1]
- ldr r1, =BA_PWL
- mov r0, #1
- strb r0, [r1, #1] @ enable clock of PWL unut
- mov pc, lr
-
-.globl pwl_set_level
-pwl_set_level: ldr r1, =BA_PWL
- strb r0, [r1]
- mov pc, lr
-
diff --git a/Src/osmoconbb/src/target/firmware/board/common/calypso_uart.S b/Src/osmoconbb/src/target/firmware/board/common/calypso_uart.S
deleted file mode 100644
index 808cb05..0000000
--- a/Src/osmoconbb/src/target/firmware/board/common/calypso_uart.S
+++ /dev/null
@@ -1,92 +0,0 @@
-/* uart routines for early assembly code */
-
-#define BA_UART_MODEM 0xFFFF5800
-
-.macro senduart, rd, rx
- strb \rd, [\rx, #0]
-.endm
-
-.macro busyuart, rd, rx
-1001:
- @busy waiting until THR is empty
- ldrb \rd, [\rx, #5] @ read LSR register
- mov \rd, \rd, lsr #6
- tst \rd, #1
- beq 1001b
-.endm
-
-.macro loadsp, rd
- ldr \rd, =BA_UART_MODEM
-.endm
-
-.section .text
-
- .align 2
- .type phexbuf, #object
-phexbuf: .space 12
- .size phexubf, . - phexbuf
-
-.globl phex
-phex: adr r3, phexbuf
- mov r2, #0
- strb r2, [r3, r1]
-1: subs r1, r1, #1
- movmi r0, r3
- bmi puts_asm
- and r2, r0, #15
- mov r0, r0, lsr #4
- cmp r2, #10
- addge r2, r2, #7
- add r2, r2, #'0'
- strb r2, [r3, r1]
- b 1b
-
-.globl puts_asm
-puts_asm: loadsp r3
-1: ldrb r2, [r0], #1
- teq r2, #0
- moveq pc, lr
-2: senduart r2, r3
- busyuart r1, r3
- teq r2, #'\n'
- moveq r2, #'\r'
- beq 2b
- teq r0, #0
- bne 1b
- mov pc, lr
-
-.globl putchar_asm
-putchar_asm:
- mov r2, r0
- mov r0, #0
- loadsp r3
- b 2b
-
-.globl memdump_asm
-memdump_asm: mov r12, r0
- mov r10, lr
- mov r11, #0
-2: mov r0, r11, lsl #2
- add r0, r0, r12
- mov r1, #8
- bl phex
- mov r0, #':'
- bl putchar_asm
-1: mov r0, #' '
- bl putchar_asm
- ldr r0, [r12, r11, lsl #2]
- mov r1, #8
- bl phex
- and r0, r11, #7
- teq r0, #3
- moveq r0, #' '
- bleq putchar_asm
- and r0, r11, #7
- add r11, r11, #1
- teq r0, #7
- bne 1b
- mov r0, #'\n'
- bl putchar_asm
- cmp r11, #64
- blt 2b
- mov pc, r10
diff --git a/Src/osmoconbb/src/target/firmware/board/compal/LINKAGE.txt b/Src/osmoconbb/src/target/firmware/board/compal/LINKAGE.txt
deleted file mode 100644
index 1ae06fb..0000000
--- a/Src/osmoconbb/src/target/firmware/board/compal/LINKAGE.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-
-We provide the following common RAM linkages for all Compal phones:
-
-(both use the Calypso ROM loader for interrupt redirect, if required)
-
- compalram:
- Image for the Compal ramloader. Starts at a weird address and
- contains various ramloader specifics.
-
- highram:
- Image linked to 0x820000, used for various special purposes.
- This image is completely independent of the compal loader.
diff --git a/Src/osmoconbb/src/target/firmware/board/compal/exceptions_redirect.S b/Src/osmoconbb/src/target/firmware/board/compal/exceptions_redirect.S
deleted file mode 100644
index a216e60..0000000
--- a/Src/osmoconbb/src/target/firmware/board/compal/exceptions_redirect.S
+++ /dev/null
@@ -1,24 +0,0 @@
-
-.section .text.exceptions
-_undef_instr:
- ldr pc, _vec_undef_instr
-_sw_interr:
- ldr pc, _vec_sw_interr
-_prefetch_abort:
- ldr pc, _vec_prefetch_abort
-_data_abort:
- ldr pc, _vec_data_abort
-_reserved:
- ldr pc, _vec_reserved
-_irq:
- ldr pc, _vec_irq
-_fiq:
- ldr pc, _vec_fiq
-
-_vec_undef_instr: .word(0x80001c)
-_vec_sw_interr: .word(0x800020)
-_vec_prefetch_abort: .word(0x800024)
-_vec_data_abort: .word(0x800028)
-_vec_reserved: .word(0x80002c)
-_vec_irq: .word(0x800030)
-_vec_fiq: .word(0x800034)
diff --git a/Src/osmoconbb/src/target/firmware/board/compal/exceptions_redirected.S b/Src/osmoconbb/src/target/firmware/board/compal/exceptions_redirected.S
deleted file mode 100644
index 6908396..0000000
--- a/Src/osmoconbb/src/target/firmware/board/compal/exceptions_redirected.S
+++ /dev/null
@@ -1,20 +0,0 @@
-
-/* Exception Vectors like they are needed for the exception vector
- indirection of the internal boot ROM. The following section must be liked
- to appear at 0x80001c */
-.section .text.exceptions
-_undef_instr:
- b handle_abort
-_sw_interr:
- b _sw_interr
-_prefetch_abort:
- b handle_abort
-_data_abort:
- b handle_abort
-_reserved:
- b _reserved
-_irq:
- b irq_entry
-_fiq:
- b fiq_entry
-
diff --git a/Src/osmoconbb/src/target/firmware/board/compal/handlers.S b/Src/osmoconbb/src/target/firmware/board/compal/handlers.S
deleted file mode 100644
index ef044e3..0000000
--- a/Src/osmoconbb/src/target/firmware/board/compal/handlers.S
+++ /dev/null
@@ -1,79 +0,0 @@
-
- .EQU I_BIT, 0x80
- .EQU F_BIT, 0x40
-
-.section .text
-
-/* handler for all kinds of aborts */
-.global handle_abort
-handle_abort:
- @ print the PC we would jump back to...
- sub lr, lr, #4 @ we assume to be ARM32
-
- mov r0, lr
- mov r1, #8
- bl phex
-
- @ print abort message
- mov r0, #'A'
- bl putchar_asm
- mov r0, #'B'
- bl putchar_asm
- mov r0, #'O'
- bl putchar_asm
- mov r0, #'R'
- bl putchar_asm
- mov r0, #'T'
- bl putchar_asm
-
- @ disable IRQ and FIQ
- msr CPSR_c, #I_BIT | F_BIT
-
-0: @ dead
- b 0b
-
-/* entry point for IRQs */
-.global irq_entry
-irq_entry:
- /* Adjust and save LR_irq in IRQ stack */
- sub lr, lr, #4
- stmfd sp!, {lr}
-
- /* Save SPSR for nested interrupt */
- mrs r14, SPSR
- stmfd sp!, {r14}
-
- /* Call the interrupt handler C function */
- stmfd sp!, {r0-r4, r12}
- bl irq
- ldmfd sp!, {r0-r4, r12}
-
- /* Restore SPSR_irq from IRQ stack */
- ldmia sp!, {r14}
- msr SPSR_cxsf, r14
-
- /* Restore adjusted LR_irq from IRQ stack directly in the PC */
- ldmia sp!, {pc}^
-
-/* entry point for FIQs */
-.global fiq_entry
-fiq_entry:
- /* Adjust and save LR_irq in IRQ stack */
- sub lr, lr, #4
- stmfd sp!, {lr}
-
- /* Save SPSR for nested interrupt */
- mrs r14, SPSR
- stmfd sp!, {r14}
-
- /* Call the interrupt handler C function */
- stmfd sp!, {r0-r4, r12}
- bl fiq
- ldmfd sp!, {r0-r4, r12}
-
- /* Restore SPSR_irq from IRQ stack */
- ldmia sp!, {r14}
- msr SPSR_cxsf, r14
-
- /* Restore adjusted LR_irq from IRQ stack directly in the PC */
- ldmia sp!, {pc}^
diff --git a/Src/osmoconbb/src/target/firmware/board/compal/header.S b/Src/osmoconbb/src/target/firmware/board/compal/header.S
deleted file mode 100644
index 747f680..0000000
--- a/Src/osmoconbb/src/target/firmware/board/compal/header.S
+++ /dev/null
@@ -1,11 +0,0 @@
-/*
- * This is a textual header that is prepended to images where appropriate.
- *
- * It is meant to ease identification of our firmwares in dumps as well
- * as filling some space that is used for the same purpose by the vendor.
- *
- */
-.section .compal.header
-.ascii "OSMOCOM"
-. = 0x20
-.ascii GIT_REVISION
diff --git a/Src/osmoconbb/src/target/firmware/board/compal/highram.lds b/Src/osmoconbb/src/target/firmware/board/compal/highram.lds
deleted file mode 100644
index 1f0a5a6..0000000
--- a/Src/osmoconbb/src/target/firmware/board/compal/highram.lds
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Linker script for running from upper internal RAM on the TI Calypso
- *
- * This script creates a binary that can be loaded into high ram on
- * all Calypso devices. It can be jumped into directly at the load
- * address.
- *
- * This is used for debugging the loader and for general hacking purposes.
- *
- */
-OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-MEMORY
-{
- /* lowram: could be anything, we place exception vectors here */
- XRAM (rw) : ORIGIN = 0x00800000, LENGTH = 0x00020000
- /* highram binary: our text, initialized data */
- LRAM (rw) : ORIGIN = 0x00820000, LENGTH = 0x00010000
- /* highram binary: our unitialized data, stacks, heap */
- IRAM (rw) : ORIGIN = 0x00830000, LENGTH = 0x00010000
-}
-SECTIONS
-{
- . = 0x820000;
-
- /* initialization code */
- .text.start : {
- PROVIDE(_start = .);
- KEEP(*(.text.start))
- *(.text.start)
- } > LRAM
-
- /* exception vectors linked for 0x80001c to 0x800034 */
- .text.exceptions 0x80001c : AT (LOADADDR(.text.start) + SIZEOF(.text.start)) {
- KEEP(*(.text.exceptions))
- * (.text.exceptions)
- . = ALIGN(4);
- } > XRAM
- PROVIDE(_exceptions = LOADADDR(.text.exceptions));
-
- /* code */
- . = ALIGN(4);
- .text (LOADADDR(.text.exceptions) + SIZEOF(.text.exceptions)) :
- AT (LOADADDR(.text.exceptions) + SIZEOF(.text.exceptions)) {
- /* regular code */
- *(.text*)
- /* always-in-ram code */
- *(.ramtext*)
- /* gcc voodoo */
- *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx)
- . = ALIGN(4);
- } > LRAM
- PROVIDE(_text_start = LOADADDR(.text));
- PROVIDE(_text_end = LOADADDR(.text) + SIZEOF(.text));
-
- /* constructor pointers */
- .ctors : {
- /* ctor count */
- LONG(SIZEOF(.ctors) / 4 - 2)
- /* ctor pointers */
- KEEP(*(SORT(.ctors)))
- /* end of list */
- LONG(0)
- } > LRAM
- PROVIDE(_ctor_start = LOADADDR(.ctors));
- PROVIDE(_ctor_end = LOADADDR(.ctors) + SIZEOF(.ctors));
-
- /* destructor pointers */
- .dtors : {
- /* dtor count */
- LONG(SIZEOF(.dtors) / 4 - 2)
- /* dtor pointers */
- KEEP(*(SORT(.dtors)))
- /* end of list */
- LONG(0)
- } > LRAM
- PROVIDE(_dtor_start = LOADADDR(.dtors));
- PROVIDE(_dtor_end = LOADADDR(.dtors) + SIZEOF(.dtors));
-
- /* read-only data */
- . = ALIGN(4);
- .rodata : {
- *(.rodata*)
- } > LRAM
- PROVIDE(_rodata_start = LOADADDR(.rodata));
- PROVIDE(_rodata_end = LOADADDR(.rodata) + SIZEOF(.rodata));
-
- /* initialized data */
- . = ALIGN(4);
- .data : {
- *(.data)
- } > LRAM
- PROVIDE(_data_start = LOADADDR(.data));
- PROVIDE(_data_end = LOADADDR(.data) + SIZEOF(.data));
-
- /* pic offset tables */
- . = ALIGN(4);
- .got : {
- *(.got)
- *(.got.plt) *(.igot.plt) *(.got) *(.igot)
- } > LRAM
- PROVIDE(_got_start = LOADADDR(.got));
- PROVIDE(_got_end = LOADADDR(.got) + SIZEOF(.got));
-
- /* uninitialized data */
- .bss (NOLOAD) : {
- . = ALIGN(4);
- __bss_start = .;
- *(.bss)
- } > IRAM
- . = ALIGN(4);
- __bss_end = .;
- PROVIDE(_bss_start = __bss_start);
- PROVIDE(_bss_end = __bss_end);
-
- /* end of image */
- . = ALIGN(4);
- _end = .;
- PROVIDE(end = .);
-}
diff --git a/Src/osmoconbb/src/target/firmware/board/compal/macros.S b/Src/osmoconbb/src/target/firmware/board/compal/macros.S
deleted file mode 100644
index 613e6bd..0000000
--- a/Src/osmoconbb/src/target/firmware/board/compal/macros.S
+++ /dev/null
@@ -1,76 +0,0 @@
-
-.macro clear_bss
- mov r0, #0
- ldr r1, =__bss_start
- ldr r2, =__bss_end
-loop_bss:
- cmp r1, r2
- strlo r0, [r1], #4
- blo loop_bss
-.endm
-
-.macro copy_data
- ldr r0, =__data_start
- ldr r1, =_data_start
- ldr r2, =__data_end
- cmp r0, r2
- beq done_data
-loop_data:
- ldrb r4, [r0], #1
- strb r4, [r1], #1
- cmp r0, r2
- bne loop_data
-done_data:
-.endm
-
-.macro copy_ramtext
- ldr r0, =__ramtext_start
- ldr r1, =_ramtext_start
- ldr r2, =__ramtext_end
- cmp r0, r2
- beq done_ramtext
-loop_ramtext:
- ldrb r4, [r0], #1
- strb r4, [r1], #1
- cmp r0, r2
- bne loop_ramtext
-done_ramtext:
-.endm
-
- .EQU ARM_MODE_FIQ, 0x11
- .EQU ARM_MODE_IRQ, 0x12
- .EQU ARM_MODE_SVC, 0x13
-
- .EQU I_BIT, 0x80
- .EQU F_BIT, 0x40
-
-#define TOP_OF_RAM 0x083fff0
-#define FIQ_STACK_SIZE 1024
-#define IRQ_STACK_SIZE 1024
-
-.macro init_stacks
- /* initialize stacks, starting at TOP_OF_RAM */
- ldr r0, =TOP_OF_RAM
-
- /* initialize FIQ stack */
- msr CPSR_c, #ARM_MODE_FIQ | I_BIT | F_BIT
- mov r13, r0
- sub r0, r0, #FIQ_STACK_SIZE
-
- /* initialize IRQ stack */
- msr CPSR_c, #ARM_MODE_IRQ | I_BIT | F_BIT
- mov r13, r0
- sub r0, r0, #IRQ_STACK_SIZE
-
- /* initialize supervisor stack */
- msr CPSR_c, #ARM_MODE_SVC | I_BIT | F_BIT
- mov r13, r0
-.endm
-
-.macro call_ctors
- /* call constructor functions */
- ldr r0, =_ctor_start
- ldr r1, =_ctor_end
- bl do_global_ctors
-.endm
-
diff --git a/Src/osmoconbb/src/target/firmware/board/compal/ram.lds b/Src/osmoconbb/src/target/firmware/board/compal/ram.lds
deleted file mode 100644
index 342870d..0000000
--- a/Src/osmoconbb/src/target/firmware/board/compal/ram.lds
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Linker script for running from internal SRAM on Compal phones
- *
- * This script is tailored specifically to the requirements imposed
- * on us by the Compal bootloader.
- *
- */
-OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-MEMORY
-{
- /* compal-loaded binary: our text, initialized data */
- LRAM (rw) : ORIGIN = 0x00800000, LENGTH = 0x00010000
- /* compal-loaded binary: our unitialized data, stacks, heap */
- IRAM (rw) : ORIGIN = 0x00810000, LENGTH = 0x00010000
-}
-SECTIONS
-{
- . = 0x800000;
-
- /* romloader data section, contains passthru interrupt vectors */
- .compal.loader (NOLOAD) : { . = 0x100; } > LRAM
-
- /* image signature (prepended by osmocon according to phone type) */
- .compal.header (NOLOAD) : { . = 4; } > LRAM
-
- /* initialization code */
- . = ALIGN(4);
- .text.start : {
- PROVIDE(_start = .);
- KEEP(*(.text.start))
- *(.text.start)
- } > LRAM
-
- /* exception vectors from 0x80001c to 0x800034 */
- .text.exceptions 0x80001c : AT (LOADADDR(.text.start) + SIZEOF(.text.start)) {
- KEEP(*(.text.exceptions))
- * (.text.exceptions)
- . = ALIGN(4);
- } > LRAM
- PROVIDE(_exceptions = LOADADDR(.text.exceptions));
-
- /* code */
- . = ALIGN(4);
- .text (LOADADDR(.text.exceptions) + SIZEOF(.text.exceptions)) :
- AT (LOADADDR(.text.exceptions) + SIZEOF(.text.exceptions)) {
- /* regular code */
- *(.text*)
- /* always-in-ram code */
- *(.ramtext*)
- /* gcc voodoo */
- *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx)
- . = ALIGN(4);
- } > LRAM
- PROVIDE(_text_start = LOADADDR(.text));
- PROVIDE(_text_end = LOADADDR(.text) + SIZEOF(.text));
-
- /* constructor pointers */
- .ctors : {
- /* ctor count */
- LONG(SIZEOF(.ctors) / 4 - 2)
- /* ctor pointers */
- KEEP(*(SORT(.ctors)))
- /* end of list */
- LONG(0)
- } > LRAM
- PROVIDE(_ctor_start = LOADADDR(.ctors));
- PROVIDE(_ctor_end = LOADADDR(.ctors) + SIZEOF(.ctors));
-
- /* destructor pointers */
- .dtors : {
- /* dtor count */
- LONG(SIZEOF(.dtors) / 4 - 2)
- /* dtor pointers */
- KEEP(*(SORT(.dtors)))
- /* end of list */
- LONG(0)
- } > LRAM
- PROVIDE(_dtor_start = LOADADDR(.dtors));
- PROVIDE(_dtor_end = LOADADDR(.dtors) + SIZEOF(.dtors));
-
- /* read-only data */
- . = ALIGN(4);
- .rodata : {
- *(.rodata*)
- } > LRAM
- PROVIDE(_rodata_start = LOADADDR(.rodata));
- PROVIDE(_rodata_end = LOADADDR(.rodata) + SIZEOF(.rodata));
-
- /* initialized data */
- . = ALIGN(4);
- .data : {
- *(.data)
- } > LRAM
- PROVIDE(_data_start = LOADADDR(.data));
- PROVIDE(_data_end = LOADADDR(.data) + SIZEOF(.data));
-
- /* pic offset tables */
- . = ALIGN(4);
- .got : {
- *(.got)
- *(.got.plt) *(.igot.plt) *(.got) *(.igot)
- } > LRAM
- PROVIDE(_got_start = LOADADDR(.got));
- PROVIDE(_got_end = LOADADDR(.got) + SIZEOF(.got));
-
- /* uninitialized data */
- .bss (NOLOAD) : {
- . = ALIGN(4);
- __bss_start = .;
- *(.bss)
- } > IRAM
- . = ALIGN(4);
- __bss_end = .;
- PROVIDE(_bss_start = __bss_start);
- PROVIDE(_bss_end = __bss_end);
-
- /* end of image */
- . = ALIGN(4);
- _end = .;
- PROVIDE(end = .);
-}
diff --git a/Src/osmoconbb/src/target/firmware/board/compal/rf_power.c b/Src/osmoconbb/src/target/firmware/board/compal/rf_power.c
deleted file mode 100644
index fbbe65a..0000000
--- a/Src/osmoconbb/src/target/firmware/board/compal/rf_power.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/* Tx RF power calibration for the Compal/Motorola dualband phones */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <osmocom/core/utils.h>
-
-/* GSM900 ARFCN 33, Measurements by Steve Markgraf / May 2010 */
-const int16_t dbm2apc_gsm900[] = {
- [0] = 151,
- [1] = 152,
- [2] = 153,
- [3] = 155,
- [4] = 156,
- [5] = 158,
- [6] = 160,
- [7] = 162,
- [8] = 164,
- [9] = 167,
- [10] = 170,
- [11] = 173,
- [12] = 177,
- [13] = 182,
- [14] = 187,
- [15] = 192,
- [16] = 199,
- [17] = 206,
- [18] = 214,
- [19] = 223,
- [20] = 233,
- [21] = 244,
- [22] = 260,
- [23] = 271,
- [24] = 288,
- [25] = 307,
- [26] = 327,
- [27] = 350,
- [28] = 376,
- [29] = 407,
- [30] = 456,
- [31] = 575,
-};
-
-const int dbm2apc_gsm900_max = ARRAY_SIZE(dbm2apc_gsm900) - 1;
diff --git a/Src/osmoconbb/src/target/firmware/board/compal/rffe_dualband.c b/Src/osmoconbb/src/target/firmware/board/compal/rffe_dualband.c
deleted file mode 100644
index f4b7361..0000000
--- a/Src/osmoconbb/src/target/firmware/board/compal/rffe_dualband.c
+++ /dev/null
@@ -1,102 +0,0 @@
-#include <stdint.h>
-#include <stdio.h>
-
-#include <debug.h>
-#include <memory.h>
-#include <rffe.h>
-#include <calypso/tsp.h>
-#include <rf/trf6151.h>
-
-/* This is a value that has been measured on the C123 by Harald: 71dBm,
- it is the difference between the input level at the antenna and what
- the DSP reports, subtracted by the total gain of the TRF6151 */
-#define SYSTEM_INHERENT_GAIN 71
-
-/* describe how the RF frontend is wired on the Motorola E88 board (C117/C118/C121/C123) */
-
-#define RITA_RESET TSPACT(0) /* Reset of the Rita TRF6151 */
-#define PA_ENABLE TSPACT(1) /* Enable the Power Amplifier */
-#define TRENA TSPACT(6) /* Transmit Enable (Antenna Switch) */
-#define GSM_TXEN TSPACT(8) /* GSM (as opposed to DCS) Transmit */
-
-#define IOTA_STROBE TSPEN(0) /* Strobe for the Iota TSP */
-#define RITA_STROBE TSPEN(2) /* Strobe for the Rita TSP */
-
-/* switch RF Frontend Mode */
-void rffe_mode(enum gsm_band band, int tx)
-{
- uint16_t tspact = tsp_act_state();
-
- /* First we mask off all bits from the state cache */
- tspact &= ~PA_ENABLE;
- tspact |= TRENA | GSM_TXEN; /* low-active */
-
-#ifdef CONFIG_TX_ENABLE
- /* Then we selectively set the bits on, if required */
- if (tx) {
- tspact &= ~TRENA;
- if (band == GSM_BAND_850 || band == GSM_BAND_900)
- tspact &= ~GSM_TXEN;
- tspact |= PA_ENABLE;
- }
-#endif /* TRANSMIT_SUPPORT */
-
- tsp_act_update(tspact);
-}
-
-/* Returns RF wiring */
-uint32_t rffe_get_rx_ports(void)
-{
- return (1 << PORT_LO) | (1 << PORT_DCS1800);
-}
-
-uint32_t rffe_get_tx_ports(void)
-{
- return (1 << PORT_LO) | (1 << PORT_HI);
-}
-
-
-#define MCU_SW_TRACE 0xfffef00e
-#define ARM_CONF_REG 0xfffef006
-
-void rffe_init(void)
-{
- uint16_t reg;
-
- reg = readw(ARM_CONF_REG);
- reg &= ~ (1 << 5); /* TSPACT6 I/O function, not nCS6 */
- writew(reg, ARM_CONF_REG);
-
- reg = readw(MCU_SW_TRACE);
- reg &= ~(1 << 5); /* TSPACT8 I/O function, not nMREQ */
- writew(reg, MCU_SW_TRACE);
-
- /* Configure the TSPEN which is connected to the TWL3025 */
- tsp_setup(IOTA_STROBE, 1, 0, 0);
-
- trf6151_init(RITA_STROBE, RITA_RESET);
-}
-
-uint8_t rffe_get_gain(void)
-{
- return trf6151_get_gain();
-}
-
-void rffe_set_gain(uint8_t dbm)
-{
- trf6151_set_gain(dbm);
-}
-
-const uint8_t system_inherent_gain = SYSTEM_INHERENT_GAIN;
-
-/* Given the expected input level of exp_inp dBm/8 and the target of target_bb
- * dBm8, configure the RF Frontend with the respective gain */
-void rffe_compute_gain(int16_t exp_inp, int16_t target_bb)
-{
- trf6151_compute_gain(exp_inp, target_bb);
-}
-
-void rffe_rx_win_ctrl(int16_t exp_inp, int16_t target_bb)
-{
- /* FIXME */
-}
diff --git a/Src/osmoconbb/src/target/firmware/board/compal/start.ram.S b/Src/osmoconbb/src/target/firmware/board/compal/start.ram.S
deleted file mode 100644
index c8f242c..0000000
--- a/Src/osmoconbb/src/target/firmware/board/compal/start.ram.S
+++ /dev/null
@@ -1,26 +0,0 @@
-
-.section .text.start
-
-#include "macros.S"
-
-.globl _start
-_start:
- /* clear bss section */
- clear_bss
-
- /* initialize all stacks */
- init_stacks
-
- /* call constructors */
- call_ctors
-
- /* jump to main */
- ldr pc, _jump_main
-
- /* endless loop at end of program */
-_loop:
- b _loop
- b _start
-
-_jump_main:
- .word main
diff --git a/Src/osmoconbb/src/target/firmware/board/compal/start.rom.S b/Src/osmoconbb/src/target/firmware/board/compal/start.rom.S
deleted file mode 100644
index 211bea8..0000000
--- a/Src/osmoconbb/src/target/firmware/board/compal/start.rom.S
+++ /dev/null
@@ -1,32 +0,0 @@
-
-.section .text.start
-
-#include "macros.S"
-
-.globl _start
-_start:
- /* clear bss section */
- clear_bss
-
- /* copy data to ram */
- copy_data
-
- /* copy alway-in-ram code */
- copy_ramtext
-
- /* initialize all stacks */
- init_stacks
-
- /* call constructors */
- call_ctors
-
- /* jump to main */
- ldr pc, _jump_main
-
- /* endless loop at end of program */
-_loop:
- b _loop
- b _start
-
-_jump_main:
- .word main
diff --git a/Src/osmoconbb/src/target/firmware/board/compal_e86/init.c b/Src/osmoconbb/src/target/firmware/board/compal_e86/init.c
deleted file mode 100644
index 1de6193..0000000
--- a/Src/osmoconbb/src/target/firmware/board/compal_e86/init.c
+++ /dev/null
@@ -1,143 +0,0 @@
-/* Initialization for the Compal E86 (Motorola C139/C140) */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- * (C) 2010 by Steve Markgraf <steve@steve-m.de>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-
-#include <debug.h>
-#include <ctors.h>
-#include <memory.h>
-#include <board.h>
-#include <keypad.h>
-#include <console.h>
-#include <flash/cfi_flash.h>
-
-#include <calypso/irq.h>
-#include <calypso/clock.h>
-#include <calypso/dma.h>
-#include <calypso/rtc.h>
-#include <calypso/timer.h>
-#include <uart.h>
-#include <calypso/backlight.h>
-
-#include <comm/sercomm.h>
-
-#include <abb/twl3025.h>
-#include <rf/trf6151.h>
-#include <display.h>
-
-#define ARMIO_LATCH_OUT 0xfffe4802
-#define IO_CNTL_REG 0xfffe4804
-#define ASIC_CONF_REG 0xfffef008
-
-static void board_io_init(void)
-{
- uint16_t reg;
-
- reg = readw(ASIC_CONF_REG);
- /* LCD Set I/O(3) / SA0 to I/O(3) mode */
- reg &= ~( (1 << 12) | (1 << 10) | (1 << 7) | (1 << 1)) ;
- /* don't set function pins to I2C Mode, C155 uses UWire */
- /* TWL3025: Set SPI+RIF RX clock to rising edge */
- reg |= (1 << 13) | (1 << 14);
- writew(reg, ASIC_CONF_REG);
-
- /* LCD Set I/O(3) to output mode and enable C140 backlight (IO1) */
- /* FIXME: Put the display backlight control to backlight.c */
- reg = readw(IO_CNTL_REG);
- reg &= ~((1 << 3) | (1 << 1));
- writew(reg, IO_CNTL_REG);
-
- /* LCD Set I/O(3) output low */
- reg = readw(ARMIO_LATCH_OUT);
- reg &= ~(1 << 3);
- reg |= (1 << 1);
- writew(reg, ARMIO_LATCH_OUT);
-}
-
-void board_init(void)
-{
- /* Disable watchdog (compal loader leaves it enabled) */
- wdog_enable(0);
-
- /* Configure memory interface */
- calypso_mem_cfg(CALYPSO_nCS0, 3, CALYPSO_MEM_16bit, 1);
- calypso_mem_cfg(CALYPSO_nCS1, 3, CALYPSO_MEM_16bit, 1);
- calypso_mem_cfg(CALYPSO_nCS2, 5, CALYPSO_MEM_16bit, 1);
- calypso_mem_cfg(CALYPSO_nCS3, 5, CALYPSO_MEM_16bit, 1);
- calypso_mem_cfg(CALYPSO_CS4, 0, CALYPSO_MEM_8bit, 1);
- calypso_mem_cfg(CALYPSO_nCS6, 0, CALYPSO_MEM_32bit, 1);
- calypso_mem_cfg(CALYPSO_nCS7, 0, CALYPSO_MEM_32bit, 0);
-
- /* Set VTCXO_DIV2 = 1, configure PLL for 104 MHz and give ARM half of that */
- calypso_clock_set(2, CALYPSO_PLL13_104_MHZ, ARM_MCLK_DIV_2);
-
- /* Configure the RHEA bridge with some sane default values */
- calypso_rhea_cfg(0, 0, 0xff, 0, 1, 0, 0);
-
- /* Initialize board-specific GPIO */
- board_io_init();
-
- /* Enable bootrom mapping to route exception vectors to RAM */
- calypso_bootrom(1);
- calypso_exceptions_install();
-
- /* Initialize interrupt controller */
- irq_init();
-
- /* initialize MODEM UART to be used for sercomm*/
- uart_init(SERCOMM_UART_NR, 1);
- uart_baudrate(SERCOMM_UART_NR, UART_115200);
-
- /* initialize IRDA UART to be used for old-school console code.
- * note: IRDA uart only accessible on C115 and C117 PCB */
- uart_init(CONS_UART_NR, 1);
- uart_baudrate(CONS_UART_NR, UART_115200);
-
- /* Initialize hardware timers */
- hwtimer_init();
-
- /* Initialize DMA controller */
- dma_init();
-
- /* Initialize real time clock */
- rtc_init();
-
- /* Initialize system timers (uses hwtimer 2) */
- timer_init();
-
- /* Initialize LCD driver (uses UWire) */
- display = &td014_display;
- display_init();
- bl_mode_pwl(1);
- bl_level(0);
-
- /* Initialize keypad driver */
- keypad_init(1);
-
- /* Initialize ABB driver (uses SPI) */
- twl3025_init();
-
- /* enable LEDB driver of Iota for keypad backlight */
- twl3025_reg_write(AUXLED, 0x02);
-}
diff --git a/Src/osmoconbb/src/target/firmware/board/compal_e88/LINKAGE.txt b/Src/osmoconbb/src/target/firmware/board/compal_e88/LINKAGE.txt
deleted file mode 100644
index 8adaf86..0000000
--- a/Src/osmoconbb/src/target/firmware/board/compal_e88/LINKAGE.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-
-The Compal E88 supports the common Compal RAM linkages.
-These operate entirely from the Calypso internal RAM.
-
-Flash linkages are structured as follows:
-
- e88loader:
- Linked at address of original compal application (0x2000).
- Provides interrupt vectors as expected by compal loader.
- Allows interrupt redirection (XXX to where?).
-
- We introduce this for the following reasons:
- 1. We want to start our app at 0x10000, because that
- is the first flash page after the loader page, allowing
- us a higher degree of "unbrickability" by never reflashing
- the bootloader.
- 2. We want to keep the compal loader so we do not need even
- more boot options and to allow recovery of original firmware.
- 3. When there is a custom app in flash at 0xFFFF, just turning
- the phone on with the compal loader would jump into an incomplete
- motorola app. That might not even allow turning the phone off.
- The loader provides this functionality.
- 4. We do not want to patch the compal loader for interrupt
- redirect and entry vectors. So we need to place something between
- 0x2000 and 0x10000 anyway. And since there is space, why not put
- the whole loader in there.
- 5. This loader has a good chance of being able to read crash buffers.
- and examining RAM without it being clobbered by a ram upload.
-
- e88flash:
- Our main application linkage, starting at 0x10000 and going through
- all of flash. Data storage locations are still to be determined.
-
diff --git a/Src/osmoconbb/src/target/firmware/board/compal_e88/MEMORY_MAP.txt b/Src/osmoconbb/src/target/firmware/board/compal_e88/MEMORY_MAP.txt
deleted file mode 100644
index 6094aa9..0000000
--- a/Src/osmoconbb/src/target/firmware/board/compal_e88/MEMORY_MAP.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-The Compal E88 has the following physical memory map:
-
- /* 2 MBytes of external flash memory */
- FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 0x200000
- /* 256 kBytes of internal zero-waitstate sram */
- IRAM (rw) : ORIGIN = 0x00800000, LENGTH = 0x040000
- /* 256 kBytes of external slow sram */
- ERAM (rw) : ORIGIN = 0x01000000, LENGTH = 0x040000
-
-The flash layout, as distributed, is:
-
- 0x00000000 0x2000 Compal loader
- 0x00002000 >>>>>> Compal application and storage
-
-Our flash layout is:
-
- 0x00000000 0x2000 Compal loader
- 0x00002000 0xE000 OSMOCOM loader (see LINKAGE.txt for reasoning)
- 0x00010000 >>>>>> OSMOCOM application and storage
-
-(XXX: determine storage location / storage descriptor location)
diff --git a/Src/osmoconbb/src/target/firmware/board/compal_e88/flash.lds b/Src/osmoconbb/src/target/firmware/board/compal_e88/flash.lds
deleted file mode 100644
index cf0f6a4..0000000
--- a/Src/osmoconbb/src/target/firmware/board/compal_e88/flash.lds
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Linker script for flashed applications on the Compal E88
- *
- * This script creates a binary that can be linked at 0xFFFF, starting
- * with the second flash page. This is what a phone application or
- * pure layer1 device uses.
- *
- * XXX: interrupts?
- *
- */
-OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-MEMORY
-{
- LOADR (rx) : ORIGIN = 0x00000000, LENGTH = 0x10000
- /* 2 MBytes of external flash memory (minus loader) */
- FLASH (rx) : ORIGIN = 0x00010000, LENGTH = 0x1F0000
- /* 256 kBytes of internal zero-waitstate sram */
- IRAM (rw) : ORIGIN = 0x00800000, LENGTH = 0x040000
- /* 256 kBytes of external slow sram */
- ERAM (rw) : ORIGIN = 0x01000000, LENGTH = 0x040000
-}
-SECTIONS
-{
- /* entrypoint */
- .text.start : {
- PROVIDE(_start = .);
- KEEP(*(.text.start))
- *(.text.start)
- } > FLASH
-
- /* exception vectors from 0x80001c to 0x800034 */
- .text.exceptions 0x80001c : {
- KEEP(*(.text.exceptions))
- * (.text.exceptions)
- . = ALIGN(4);
- } > IRAM AT> FLASH
- PROVIDE(_exceptions = LOADADDR(.text.exceptions));
-
- /* code */
- .text : {
- /* regular code */
- *(.text*)
- /* gcc voodoo */
- *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx)
- } > FLASH
- PROVIDE(_text_start = ADDR(.text));
- PROVIDE(_text_end = ADDR(.text) + SIZEOF(.text));
-
- /* constructor pointers */
- .ctors : {
- /* ctor count */
- LONG(SIZEOF(.ctors) / 4 - 2)
- /* ctor pointers */
- KEEP(*(SORT(.ctors)))
- /* end of list */
- LONG(0)
- } > FLASH
- PROVIDE(_ctor_start = LOADADDR(.ctors));
- PROVIDE(_ctor_end = LOADADDR(.ctors) + SIZEOF(.ctors));
-
- /* destructor pointers */
- .dtors : {
- /* dtor count */
- LONG(SIZEOF(.dtors) / 4 - 2)
- /* dtor pointers */
- KEEP(*(SORT(.dtors)))
- /* end of list */
- LONG(0)
- } > FLASH
- PROVIDE(_dtor_start = LOADADDR(.dtors));
- PROVIDE(_dtor_end = LOADADDR(.dtors) + SIZEOF(.dtors));
-
- /* read-only data */
- .rodata : {
- *(.rodata*)
- } > FLASH
- PROVIDE(_rodata_start = ADDR(.rodata));
- PROVIDE(_rodata_end = ADDR(.rodata) + SIZEOF(.rodata));
-
- /* pic offset tables */
- .got : {
- . = ALIGN(4);
- *(.got)
- *(.got.plt) *(.igot.plt) *(.got) *(.igot)
- . = ALIGN(4);
- } > FLASH
- PROVIDE(_got_start = ADDR(.got));
- PROVIDE(_got_end = ADDR(.got) + SIZEOF(.got));
-
- /* reserved ram */
- .compal.reservedram 0x800000 (NOLOAD) : {
- . = 0xff;
- } > IRAM
-
- /* initialized data */
- .data : AT (LOADADDR(.got) + SIZEOF(.got)) {
- . = ALIGN(4);
- *(.data)
- . = ALIGN(4);
- } > IRAM
- PROVIDE(__data_start = LOADADDR(.data));
- PROVIDE(__data_end = LOADADDR(.data) + SIZEOF(.data));
- PROVIDE(_data_start = ADDR(.data));
- PROVIDE(_data_end = ADDR(.data) + SIZEOF(.data));
-
- /* ram code */
- .ramtext : AT (LOADADDR(.data) + SIZEOF(.data)) {
- . = ALIGN(4);
- *(.ramtext)
- . = ALIGN(4);
- } > IRAM
- PROVIDE(__ramtext_start = LOADADDR(.ramtext));
- PROVIDE(__ramtext_end = LOADADDR(.ramtext) + SIZEOF(.ramtext));
- PROVIDE(_ramtext_start = ADDR(.ramtext));
- PROVIDE(_ramtext_end = ADDR(.ramtext) + SIZEOF(.ramtext));
-
- /* uninitialized data */
- .bss (NOLOAD) : {
- . = ALIGN(4);
- *(.bss)
- . = ALIGN(4);
- } > IRAM
- PROVIDE(__bss_start = ADDR(.bss));
- PROVIDE(__bss_end = ADDR(.bss) + SIZEOF(.bss));
- PROVIDE(_bss_start = __bss_start);
- PROVIDE(_bss_end = __bss_end);
-
- /* end of image */
- . = ALIGN(4);
- _end = .;
- PROVIDE(end = .);
-}
diff --git a/Src/osmoconbb/src/target/firmware/board/compal_e88/init.c b/Src/osmoconbb/src/target/firmware/board/compal_e88/init.c
deleted file mode 100644
index a5bf880..0000000
--- a/Src/osmoconbb/src/target/firmware/board/compal_e88/init.c
+++ /dev/null
@@ -1,136 +0,0 @@
-/* Initialization for the Compal E88 (Motorola C115...C123) */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-
-#include <debug.h>
-#include <ctors.h>
-#include <memory.h>
-#include <board.h>
-#include <keypad.h>
-#include <console.h>
-#include <flash/cfi_flash.h>
-
-#include <calypso/irq.h>
-#include <calypso/clock.h>
-#include <calypso/dma.h>
-#include <calypso/rtc.h>
-#include <calypso/timer.h>
-#include <uart.h>
-#include <calypso/backlight.h>
-
-#include <comm/sercomm.h>
-#include <comm/timer.h>
-
-#include <abb/twl3025.h>
-#include <rf/trf6151.h>
-#include <display.h>
-
-#define ARMIO_LATCH_OUT 0xfffe4802
-#define IO_CNTL_REG 0xfffe4804
-#define ASIC_CONF_REG 0xfffef008
-
-static void board_io_init(void)
-{
- uint16_t reg;
-
- reg = readw(ASIC_CONF_REG);
- /* LCD Set I/O(3) / SA0 to I/O(3) mode */
- reg &= ~(1 << 10);
- /* Set function pins to I2C Mode */
- reg |= ((1 << 12) | (1 << 7)); /* SCL / SDA */
- /* TWL3025: Set SPI+RIF RX clock to rising edge */
- reg |= (1 << 13) | (1 << 14);
- writew(reg, ASIC_CONF_REG);
-
- /* LCD Set I/O(3) to output mode */
- reg = readw(IO_CNTL_REG);
- reg &= ~(1 << 3);
- writew(reg, IO_CNTL_REG);
-
- /* LCD Set I/O(3) output low */
- reg = readw(ARMIO_LATCH_OUT);
- reg &= ~(1 << 3);
- writew(reg, ARMIO_LATCH_OUT);
-}
-
-void board_init(void)
-{
- /* Configure the memory interface */
- calypso_mem_cfg(CALYPSO_nCS0, 3, CALYPSO_MEM_16bit, 1);
- calypso_mem_cfg(CALYPSO_nCS1, 3, CALYPSO_MEM_16bit, 1);
- calypso_mem_cfg(CALYPSO_nCS2, 5, CALYPSO_MEM_16bit, 1);
- calypso_mem_cfg(CALYPSO_nCS3, 5, CALYPSO_MEM_16bit, 1);
- calypso_mem_cfg(CALYPSO_CS4, 0, CALYPSO_MEM_8bit, 1);
- calypso_mem_cfg(CALYPSO_nCS6, 0, CALYPSO_MEM_32bit, 1);
- calypso_mem_cfg(CALYPSO_nCS7, 0, CALYPSO_MEM_32bit, 0);
-
- /* Set VTCXO_DIV2 = 1, configure PLL for 104 MHz and give ARM half of that */
- calypso_clock_set(2, CALYPSO_PLL13_104_MHZ, ARM_MCLK_DIV_2);
-
- /* Configure the RHEA bridge with some sane default values */
- calypso_rhea_cfg(0, 0, 0xff, 0, 1, 0, 0);
-
- /* Initialize board-specific GPIO */
- board_io_init();
-
- /* Enable bootrom mapping to route exception vectors to RAM */
- calypso_bootrom(1);
- calypso_exceptions_install();
-
- /* Initialize interrupt controller */
- irq_init();
-
- /* initialize MODEM UART to be used for sercomm*/
- uart_init(SERCOMM_UART_NR, 1);
- uart_baudrate(SERCOMM_UART_NR, UART_115200);
-
- /* Initialize IRDA UART to be used for old-school console code.
- * note: IRDA uart only accessible on C115 and C117 PCB */
- uart_init(CONS_UART_NR, 1);
- uart_baudrate(CONS_UART_NR, UART_115200);
-
- /* Initialize hardware timers */
- hwtimer_init();
-
- /* Initialize DMA controller */
- dma_init();
-
- /* Initialize real time clock */
- rtc_init();
-
- /* Initialize system timers (uses hwtimer 2) */
- timer_init();
-
- /* Initialize LCD driver (uses I2C) and backlight */
- display = &st7558_display;
- display_init();
- bl_mode_pwl(1);
- bl_level(50);
-
- /* Initialize keypad driver */
- keypad_init(1);
-
- /* Initialize ABB driver (uses SPI) */
- twl3025_init();
-}
diff --git a/Src/osmoconbb/src/target/firmware/board/compal_e88/loader.lds b/Src/osmoconbb/src/target/firmware/board/compal_e88/loader.lds
deleted file mode 100644
index a7a001f..0000000
--- a/Src/osmoconbb/src/target/firmware/board/compal_e88/loader.lds
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Linker script for flashed loader on the Compal E88
- *
- * This script creates a binary that can replace a standard firmware
- * located at 0x2000. It works in conjunction with the compal ramloader.
- *
- * The interrupt vectors and start address are at known, fixed offsets.
- *
- */
-OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-MEMORY
-{
- /* 2 MBytes of external flash memory */
- FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 0x200000
- /* 256 kBytes of internal zero-waitstate sram */
- IRAM (rw) : ORIGIN = 0x00800000, LENGTH = 0x040000
- /* 256 kBytes of external slow sram */
- ERAM (rw) : ORIGIN = 0x01000000, LENGTH = 0x040000
-}
-SECTIONS
-{
- /* Provide symbols for the compal loader */
- .compal.loader 0x00000000 (NOLOAD) : {
- _compal_loader_start = .;
- . = 0x2000;
- _compal_loader_end = .;
- } > FLASH
-
- /* Compal-style image header */
- .compal.header 0x00002000 : {
- _compal_header_start = .;
- KEEP(*(.compal.header))
- *(.compal.header)
- . = 0xA0;
- _compal_header_end = .;
- } > FLASH
-
- /* Compal-style vector table */
- .compal.vectors 0x000020A0 : {
- PROVIDE(_exceptions = .);
- KEEP(*(.text.exceptions))
- *(.text.exceptions)
- } > FLASH
-
- /* Compal-style entry point */
- .text.start 0x000020F8 : {
- PROVIDE(_start = .);
- KEEP(*(.text.start))
- *(.text.start)
- } > FLASH
-
- /* code */
- .text : {
- /* regular code */
- *(.text*)
- /* gcc voodoo */
- *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx)
- } > FLASH
- PROVIDE(_text_start = ADDR(.text));
- PROVIDE(_text_end = ADDR(.text) + SIZEOF(.text));
-
- /* constructor pointers */
- .ctors : {
- /* ctor count */
- LONG(SIZEOF(.ctors) / 4 - 2)
- /* ctor pointers */
- KEEP(*(SORT(.ctors)))
- /* end of list */
- LONG(0)
- } > FLASH
- PROVIDE(_ctor_start = LOADADDR(.ctors));
- PROVIDE(_ctor_end = LOADADDR(.ctors) + SIZEOF(.ctors));
-
- /* destructor pointers */
- .dtors : {
- /* dtor count */
- LONG(SIZEOF(.dtors) / 4 - 2)
- /* dtor pointers */
- KEEP(*(SORT(.dtors)))
- /* end of list */
- LONG(0)
- } > FLASH
- PROVIDE(_dtor_start = LOADADDR(.dtors));
- PROVIDE(_dtor_end = LOADADDR(.dtors) + SIZEOF(.dtors));
-
- /* read-only data */
- .rodata : {
- *(.rodata*)
- } > FLASH
- PROVIDE(_rodata_start = ADDR(.rodata));
- PROVIDE(_rodata_end = ADDR(.rodata) + SIZEOF(.rodata));
-
- /* pic offset tables */
- .got : {
- . = ALIGN(4);
- *(.got)
- *(.got.plt) *(.igot.plt) *(.got) *(.igot)
- . = ALIGN(4);
- } > FLASH
- PROVIDE(_got_start = ADDR(.got));
- PROVIDE(_got_end = ADDR(.got) + SIZEOF(.got));
-
- /* reserved ram */
- .compal.reservedram 0x800000 (NOLOAD) : {
- . = 0xff;
- } > IRAM
-
- /* initialized data */
- .data : AT (LOADADDR(.got) + SIZEOF(.got)) {
- . = ALIGN(4);
- *(.data)
- . = ALIGN(4);
- } > IRAM
- PROVIDE(__data_start = LOADADDR(.data));
- PROVIDE(__data_end = LOADADDR(.data) + SIZEOF(.data));
- PROVIDE(_data_start = ADDR(.data));
- PROVIDE(_data_end = ADDR(.data) + SIZEOF(.data));
-
- /* ram code */
- .ramtext : AT (LOADADDR(.data) + SIZEOF(.data)) {
- . = ALIGN(4);
- *(.ramtext)
- . = ALIGN(4);
- } > IRAM
- PROVIDE(__ramtext_start = LOADADDR(.ramtext));
- PROVIDE(__ramtext_end = LOADADDR(.ramtext) + SIZEOF(.ramtext));
- PROVIDE(_ramtext_start = ADDR(.ramtext));
- PROVIDE(_ramtext_end = ADDR(.ramtext) + SIZEOF(.ramtext));
-
- /* uninitialized data */
- .bss (NOLOAD) : {
- . = ALIGN(4);
- *(.bss)
- . = ALIGN(4);
- } > IRAM
- PROVIDE(__bss_start = ADDR(.bss));
- PROVIDE(__bss_end = ADDR(.bss) + SIZEOF(.bss));
- PROVIDE(_bss_start = __bss_start);
- PROVIDE(_bss_end = __bss_end);
-
- /* end of image */
- . = ALIGN(4);
- _end = .;
- PROVIDE(end = .);
-}
diff --git a/Src/osmoconbb/src/target/firmware/board/compal_e99/init.c b/Src/osmoconbb/src/target/firmware/board/compal_e99/init.c
deleted file mode 100644
index 0c218a8..0000000
--- a/Src/osmoconbb/src/target/firmware/board/compal_e99/init.c
+++ /dev/null
@@ -1,140 +0,0 @@
-/* Initialization for the Compal E99 (Motorola C155) */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- * (C) 2010 by Steve Markgraf <steve@steve-m.de>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-
-#include <debug.h>
-#include <ctors.h>
-#include <memory.h>
-#include <board.h>
-#include <keypad.h>
-#include <console.h>
-#include <flash/cfi_flash.h>
-
-#include <calypso/irq.h>
-#include <calypso/clock.h>
-#include <calypso/dma.h>
-#include <calypso/rtc.h>
-#include <calypso/timer.h>
-#include <uart.h>
-#include <calypso/backlight.h>
-
-#include <comm/sercomm.h>
-
-#include <abb/twl3025.h>
-#include <rf/trf6151.h>
-#include <display.h>
-
-#define ARMIO_LATCH_OUT 0xfffe4802
-#define IO_CNTL_REG 0xfffe4804
-#define ASIC_CONF_REG 0xfffef008
-
-static void board_io_init(void)
-{
- uint16_t reg;
-
- reg = readw(ASIC_CONF_REG);
- /* LCD Set I/O(3) / SA0 to I/O(3) mode */
- reg &= ~( (1 << 12) | (1 << 10) | (1 << 7) | (1 << 1)) ;
- /* don't set function pins to I2C Mode, C155 uses UWire */
- /* TWL3025: Set SPI+RIF RX clock to rising edge */
- reg |= (1 << 13) | (1 << 14);
- writew(reg, ASIC_CONF_REG);
-
- /* LCD Set I/O(3) to output mode and enable C155 backlight (IO1) */
- /* FIXME: Put the display backlight control to backlight.c */
- reg = readw(IO_CNTL_REG);
- reg &= ~( (1 << 3) | (1 << 1));
- writew(reg, IO_CNTL_REG);
-
- /* LCD Set I/O(3) output low */
- reg = readw(ARMIO_LATCH_OUT);
- reg &= ~(1 << 3);
- reg |= (1 << 1);
- writew(reg, ARMIO_LATCH_OUT);
-}
-
-void board_init(void)
-{
- /* Disable watchdog (compal loader leaves it enabled) */
- wdog_enable(0);
-
- /* Configure memory interface */
- calypso_mem_cfg(CALYPSO_nCS0, 3, CALYPSO_MEM_16bit, 1);
- calypso_mem_cfg(CALYPSO_nCS1, 3, CALYPSO_MEM_16bit, 1);
- calypso_mem_cfg(CALYPSO_nCS2, 5, CALYPSO_MEM_16bit, 1);
- calypso_mem_cfg(CALYPSO_nCS3, 5, CALYPSO_MEM_16bit, 1);
- calypso_mem_cfg(CALYPSO_CS4, 0, CALYPSO_MEM_8bit, 1);
- calypso_mem_cfg(CALYPSO_nCS6, 0, CALYPSO_MEM_32bit, 1);
- calypso_mem_cfg(CALYPSO_nCS7, 0, CALYPSO_MEM_32bit, 0);
-
- /* Set VTCXO_DIV2 = 1, configure PLL for 104 MHz and give ARM half of that */
- calypso_clock_set(2, CALYPSO_PLL13_104_MHZ, ARM_MCLK_DIV_2);
-
- /* Configure the RHEA bridge with some sane default values */
- calypso_rhea_cfg(0, 0, 0xff, 0, 1, 0, 0);
-
- /* Initialize board-specific GPIO */
- board_io_init();
-
- /* Enable bootrom mapping to route exception vectors to RAM */
- calypso_bootrom(1);
- calypso_exceptions_install();
-
- /* Initialize interrupt controller */
- irq_init();
-
- /* initialize MODEM UART to be used for sercomm*/
- uart_init(SERCOMM_UART_NR, 1);
- uart_baudrate(SERCOMM_UART_NR, UART_115200);
-
- /* initialize IRDA UART to be used for old-school console code.
- * note: IRDA uart only accessible on C115 and C117 PCB */
- uart_init(CONS_UART_NR, 1);
- uart_baudrate(CONS_UART_NR, UART_115200);
-
- /* Initialize hardware timers */
- hwtimer_init();
-
- /* Initialize DMA controller */
- dma_init();
-
- /* Initialize real time clock */
- rtc_init();
-
- /* Initialize system timers (uses hwtimer 2) */
- timer_init();
-
- /* Initialize LCD driver (uses UWire) and backlight */
- display = &ssd1783_display;
- display_init();
- bl_mode_pwl(1);
- bl_level(50);
-
- /* Initialize keypad driver */
- keypad_init(1);
-
- /* Initialize ABB driver (uses SPI) */
- twl3025_init();
-}
diff --git a/Src/osmoconbb/src/target/firmware/board/gta0x/init.c b/Src/osmoconbb/src/target/firmware/board/gta0x/init.c
deleted file mode 100644
index 4f256ea..0000000
--- a/Src/osmoconbb/src/target/firmware/board/gta0x/init.c
+++ /dev/null
@@ -1,136 +0,0 @@
-/* Initialization for the Openmoko Freerunner modem */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-
-#include <debug.h>
-#include <ctors.h>
-#include <memory.h>
-#include <board.h>
-#include <keypad.h>
-#include <console.h>
-#include <flash/cfi_flash.h>
-
-#include <calypso/irq.h>
-#include <calypso/clock.h>
-#include <calypso/dma.h>
-#include <calypso/rtc.h>
-#include <calypso/timer.h>
-#include <uart.h>
-#include <calypso/backlight.h>
-
-#include <comm/sercomm.h>
-#include <comm/timer.h>
-
-#include <abb/twl3025.h>
-#include <rf/trf6151.h>
-#include <display.h>
-
-#define ARMIO_LATCH_OUT 0xfffe4802
-#define IO_CNTL_REG 0xfffe4804
-#define ASIC_CONF_REG 0xfffef008
-
-static void board_io_init(void)
-{
- uint16_t reg;
-
- reg = readw(ASIC_CONF_REG);
- /* LCD Set I/O(3) / SA0 to I/O(3) mode */
- reg &= ~(1 << 10);
- /* Set function pins to I2C Mode */
- reg |= ((1 << 12) | (1 << 7)); /* SCL / SDA */
- /* TWL3025: Set SPI+RIF RX clock to rising edge */
- reg |= (1 << 13) | (1 << 14);
- writew(reg, ASIC_CONF_REG);
-
- /* LCD Set I/O(3) to output mode */
- reg = readw(IO_CNTL_REG);
- reg &= ~(1 << 3);
- writew(reg, IO_CNTL_REG);
-
- /* LCD Set I/O(3) output low */
- reg = readw(ARMIO_LATCH_OUT);
- reg &= ~(1 << 3);
- writew(reg, ARMIO_LATCH_OUT);
-}
-
-void board_init(void)
-{
- /* Configure the memory interface */
- calypso_mem_cfg(CALYPSO_nCS0, 3, CALYPSO_MEM_16bit, 1);
- calypso_mem_cfg(CALYPSO_nCS1, 3, CALYPSO_MEM_16bit, 1);
- calypso_mem_cfg(CALYPSO_nCS2, 5, CALYPSO_MEM_16bit, 1);
- calypso_mem_cfg(CALYPSO_nCS3, 5, CALYPSO_MEM_16bit, 1);
- calypso_mem_cfg(CALYPSO_CS4, 0, CALYPSO_MEM_8bit, 1);
- calypso_mem_cfg(CALYPSO_nCS6, 0, CALYPSO_MEM_32bit, 1);
- calypso_mem_cfg(CALYPSO_nCS7, 0, CALYPSO_MEM_32bit, 0);
-
- /* Set VTCXO_DIV2 = 1, configure PLL for 104 MHz and give ARM half of that */
- calypso_clock_set(2, CALYPSO_PLL13_104_MHZ, ARM_MCLK_DIV_2);
-
- /* Configure the RHEA bridge with some sane default values */
- calypso_rhea_cfg(0, 0, 0xff, 0, 1, 0, 0);
-
- /* Initialize board-specific GPIO */
- board_io_init();
-
- /* Enable bootrom mapping to route exception vectors to RAM */
- calypso_bootrom(1);
- calypso_exceptions_install();
-
- /* Initialize interrupt controller */
- irq_init();
-
- /* initialize MODEM UART to be used for sercomm*/
- uart_init(SERCOMM_UART_NR, 1);
- uart_baudrate(SERCOMM_UART_NR, UART_115200);
-
- /* Initialize IRDA UART to be used for old-school console code.
- * note: IRDA uart only accessible on C115 and C117 PCB */
- uart_init(CONS_UART_NR, 1);
- uart_baudrate(CONS_UART_NR, UART_115200);
-
- /* Initialize hardware timers */
- hwtimer_init();
-
- /* Initialize DMA controller */
- dma_init();
-
- /* Initialize real time clock */
- rtc_init();
-
- /* Initialize system timers (uses hwtimer 2) */
- timer_init();
-
- /* Initialize LCD driver (uses I2C) and backlight */
- display = &st7558_display;
- display_init();
- bl_mode_pwl(1);
- bl_level(50);
-
- /* Initialize keypad driver */
- keypad_init(1);
-
- /* Initialize ABB driver (uses SPI) */
- twl3025_init();
-}
diff --git a/Src/osmoconbb/src/target/firmware/board/gta0x/rf_power.c b/Src/osmoconbb/src/target/firmware/board/gta0x/rf_power.c
deleted file mode 100644
index 1c896f7..0000000
--- a/Src/osmoconbb/src/target/firmware/board/gta0x/rf_power.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Tx RF power calibration for the FIC GTA0x phones */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <osmocom/core/utils.h>
-
-/* GSM900 ARFCN 33, Measurements by Steve Markgraf / May 2010 */
-/* FIXME those are from compal ... need real GTA calibration */
-const int16_t dbm2apc_gsm900[] = {
- [0] = 151,
- [1] = 152,
- [2] = 153,
- [3] = 155,
- [4] = 156,
- [5] = 158,
- [6] = 160,
- [7] = 162,
- [8] = 164,
- [9] = 167,
- [10] = 170,
- [11] = 173,
- [12] = 177,
- [13] = 182,
- [14] = 187,
- [15] = 192,
- [16] = 199,
- [17] = 206,
- [18] = 214,
- [19] = 223,
- [20] = 233,
- [21] = 244,
- [22] = 260,
- [23] = 271,
- [24] = 288,
- [25] = 307,
- [26] = 327,
- [27] = 350,
- [28] = 376,
- [29] = 407,
- [30] = 456,
- [31] = 575,
-};
-
-const int dbm2apc_gsm900_max = ARRAY_SIZE(dbm2apc_gsm900) - 1;
diff --git a/Src/osmoconbb/src/target/firmware/board/gta0x/rffe_gta0x_triband.c b/Src/osmoconbb/src/target/firmware/board/gta0x/rffe_gta0x_triband.c
deleted file mode 100644
index f118d29..0000000
--- a/Src/osmoconbb/src/target/firmware/board/gta0x/rffe_gta0x_triband.c
+++ /dev/null
@@ -1,131 +0,0 @@
-#include <stdint.h>
-#include <stdio.h>
-
-#include <debug.h>
-#include <memory.h>
-#include <rffe.h>
-#include <calypso/tsp.h>
-#include <rf/trf6151.h>
-
-/* This is a value that has been measured on the C123 by Harald: 71dBm,
- it is the difference between the input level at the antenna and what
- the DSP reports, subtracted by the total gain of the TRF6151 */
-#define SYSTEM_INHERENT_GAIN 71
-
-/* describe how the RF frontend is wired on the Openmoko GTA0x boards */
-
-#define RITA_RESET TSPACT(0) /* Reset of the Rita TRF6151 */
-#define PA_ENABLE TSPACT(9) /* Enable the Power Amplifier */
-#define GSM_TXEN TSPACT(3) /* PA GSM switch, low-active */
-
-/* All VCn controls are low-active */
-#define ASM_VC1 TSPACT(2) /* Antenna switch VC1 */
-#define ASM_VC2 TSPACT(1) /* Antenna switch VC2 */
-#define ASM_VC3 TSPACT(4) /* Antenna switch VC3 */
-
-#define IOTA_STROBE TSPEN(0) /* Strobe for the Iota TSP */
-#define RITA_STROBE TSPEN(2) /* Strobe for the Rita TSP */
-
-/* switch RF Frontend Mode */
-void rffe_mode(enum gsm_band band, int tx)
-{
- uint16_t tspact = tsp_act_state();
-
- /* First we mask off all bits from the state cache */
- tspact &= ~PA_ENABLE;
- tspact &= ~GSM_TXEN;
- tspact |= ASM_VC1 | ASM_VC2 | ASM_VC3; /* low-active */
-
- switch (band) {
- case GSM_BAND_850:
- case GSM_BAND_900:
- case GSM_BAND_1800:
- break;
- case GSM_BAND_1900:
- tspact &= ~ASM_VC2;
- break;
- default:
- /* TODO return/signal error here */
- break;
- }
-
-#ifdef CONFIG_TX_ENABLE
- /* Then we selectively set the bits on, if required */
- if (tx) {
- switch (band) {
- case GSM_BAND_850:
- case GSM_BAND_900:
- tspact &= ~ASM_VC3;
- break;
- case GSM_BAND_1800:
- case GSM_BAND_1900:
- tspact &= ~ASM_VC1;
- tspact |= ASM_VC2;
- tspact |= GSM_TXEN;
- break;
- default:
- break;
- }
- tspact |= PA_ENABLE;
- }
-#endif /* TRANSMIT_SUPPORT */
-
- tsp_act_update(tspact);
-}
-
-/* Returns RF wiring */
-uint32_t rffe_get_rx_ports(void)
-{
- return (1 << PORT_LO) | (1 << PORT_DCS1800) | (1 << PORT_PCS1900);
-}
-
-uint32_t rffe_get_tx_ports(void)
-{
- return (1 << PORT_LO) | (1 << PORT_HI);
-}
-
-
-#define MCU_SW_TRACE 0xfffef00e
-#define ARM_CONF_REG 0xfffef006
-
-void rffe_init(void)
-{
- uint16_t reg;
-
- reg = readw(ARM_CONF_REG);
- reg &= ~ (1 << 7); /* TSPACT4 I/O function, not nRDYMEM */
- writew(reg, ARM_CONF_REG);
-
- reg = readw(MCU_SW_TRACE);
- reg &= ~(1 << 1); /* TSPACT9 I/O function, not MAS(1) */
- writew(reg, MCU_SW_TRACE);
-
- /* Configure the TSPEN which is connected to the TWL3025 */
- tsp_setup(IOTA_STROBE, 1, 0, 0);
-
- trf6151_init(RITA_STROBE, RITA_RESET);
-}
-
-uint8_t rffe_get_gain(void)
-{
- return trf6151_get_gain();
-}
-
-void rffe_set_gain(uint8_t dbm)
-{
- trf6151_set_gain(dbm);
-}
-
-const uint8_t system_inherent_gain = SYSTEM_INHERENT_GAIN;
-
-/* Given the expected input level of exp_inp dBm/8 and the target of target_bb
- * dBm8, configure the RF Frontend with the respective gain */
-void rffe_compute_gain(int16_t exp_inp, int16_t target_bb)
-{
- trf6151_compute_gain(exp_inp, target_bb);
-}
-
-void rffe_rx_win_ctrl(int16_t exp_inp, int16_t target_bb)
-{
- /* FIXME */
-}
diff --git a/Src/osmoconbb/src/target/firmware/board/manifest.c b/Src/osmoconbb/src/target/firmware/board/manifest.c
deleted file mode 100644
index 025a722..0000000
--- a/Src/osmoconbb/src/target/firmware/board/manifest.c
+++ /dev/null
@@ -1,7 +0,0 @@
-
-#include "manifest.h"
-
-const char *manifest_application = APPLICATION;
-const char *manifest_revision = GIT_REVISION;
-const char *manifest_board = BOARD;
-const char *manifest_environment = ENVIRONMENT;
diff --git a/Src/osmoconbb/src/target/firmware/board/mediatek/macros.S b/Src/osmoconbb/src/target/firmware/board/mediatek/macros.S
deleted file mode 100644
index 14ee6e6..0000000
--- a/Src/osmoconbb/src/target/firmware/board/mediatek/macros.S
+++ /dev/null
@@ -1,76 +0,0 @@
-
-.macro clear_bss
- mov r0, #0
- ldr r1, =__bss_start
- ldr r2, =__bss_end
-loop_bss:
- cmp r1, r2
- strlo r0, [r1], #4
- blo loop_bss
-.endm
-
-.macro copy_data
- ldr r0, =__data_start
- ldr r1, =_data_start
- ldr r2, =__data_end
- cmp r0, r2
- beq done_data
-loop_data:
- ldrb r4, [r0], #1
- strb r4, [r1], #1
- cmp r0, r2
- bne loop_data
-done_data:
-.endm
-
-.macro copy_ramtext
- ldr r0, =__ramtext_start
- ldr r1, =_ramtext_start
- ldr r2, =__ramtext_end
- cmp r0, r2
- beq done_ramtext
-loop_ramtext:
- ldrb r4, [r0], #1
- strb r4, [r1], #1
- cmp r0, r2
- bne loop_ramtext
-done_ramtext:
-.endm
-
- .EQU ARM_MODE_FIQ, 0x11
- .EQU ARM_MODE_IRQ, 0x12
- .EQU ARM_MODE_SVC, 0x13
-
- .EQU I_BIT, 0x80
- .EQU F_BIT, 0x40
-
-#define TOP_OF_RAM 0x4000a000
-#define FIQ_STACK_SIZE 1024
-#define IRQ_STACK_SIZE 1024
-
-.macro init_stacks
- /* initialize stacks, starting at TOP_OF_RAM */
- ldr r0, =TOP_OF_RAM
-
- /* initialize FIQ stack */
- msr CPSR_c, #ARM_MODE_FIQ | I_BIT | F_BIT
- mov r13, r0
- sub r0, r0, #FIQ_STACK_SIZE
-
- /* initialize IRQ stack */
- msr CPSR_c, #ARM_MODE_IRQ | I_BIT | F_BIT
- mov r13, r0
- sub r0, r0, #IRQ_STACK_SIZE
-
- /* initialize supervisor stack */
- msr CPSR_c, #ARM_MODE_SVC | I_BIT | F_BIT
- mov r13, r0
-.endm
-
-.macro call_ctors
- /* call constructor functions */
- ldr r0, =_ctor_start
- ldr r1, =_ctor_end
- bl do_global_ctors
-.endm
-
diff --git a/Src/osmoconbb/src/target/firmware/board/mediatek/ram.lds b/Src/osmoconbb/src/target/firmware/board/mediatek/ram.lds
deleted file mode 100644
index a2af560..0000000
--- a/Src/osmoconbb/src/target/firmware/board/mediatek/ram.lds
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Linker script for running from internal SRAM on MTK phones
- *
- * This script is tailored specifically to the requirements imposed
- * on us by the Mediatek bootloader.
- *
- */
-OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-MEMORY
-{
- /* mtk-loaded binary: our text, initialized data */
- LRAM (rw) : ORIGIN = 0x40000000, LENGTH = 0x00006000
- /* mtk-loaded binary: our unitialized data, stacks, heap */
- IRAM (rw) : ORIGIN = 0x40006000, LENGTH = 0x00006000
-}
-SECTIONS
-{
- . = 0x40000000;
-
- /* romloader data section, contains passthru interrupt vectors */
- .mtk.loader (NOLOAD) : { . = 0x1400; } > LRAM
-
- /* initialization code */
- . = ALIGN(4);
- .text.start : {
- PROVIDE(_start = .);
- KEEP(*(.text.start))
- *(.text.start)
- } > LRAM
-
- /* code */
- . = ALIGN(4);
- .text (LOADADDR(.text.start) + SIZEOF(.text.start)) :
- AT (LOADADDR(.text.start) + SIZEOF(.text.start)) {
- /* regular code */
- *(.text*)
- /* always-in-ram code */
- *(.ramtext*)
- /* gcc voodoo */
- *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx)
- . = ALIGN(4);
- } > LRAM
- PROVIDE(_text_start = LOADADDR(.text));
- PROVIDE(_text_end = LOADADDR(.text) + SIZEOF(.text));
-
- /* constructor pointers */
- .ctors : {
- /* ctor count */
- LONG(SIZEOF(.ctors) / 4 - 2)
- /* ctor pointers */
- KEEP(*(SORT(.ctors)))
- /* end of list */
- LONG(0)
- } > LRAM
- PROVIDE(_ctor_start = LOADADDR(.ctors));
- PROVIDE(_ctor_end = LOADADDR(.ctors) + SIZEOF(.ctors));
-
- /* destructor pointers */
- .dtors : {
- /* dtor count */
- LONG(SIZEOF(.dtors) / 4 - 2)
- /* dtor pointers */
- KEEP(*(SORT(.dtors)))
- /* end of list */
- LONG(0)
- } > LRAM
- PROVIDE(_dtor_start = LOADADDR(.dtors));
- PROVIDE(_dtor_end = LOADADDR(.dtors) + SIZEOF(.dtors));
-
- /* read-only data */
- . = ALIGN(4);
- .rodata : {
- *(.rodata*)
- } > LRAM
- PROVIDE(_rodata_start = LOADADDR(.rodata));
- PROVIDE(_rodata_end = LOADADDR(.rodata) + SIZEOF(.rodata));
-
- /* initialized data */
- . = ALIGN(4);
- .data : {
- *(.data)
- } > LRAM
- PROVIDE(_data_start = LOADADDR(.data));
- PROVIDE(_data_end = LOADADDR(.data) + SIZEOF(.data));
-
- /* pic offset tables */
- . = ALIGN(4);
- .got : {
- *(.got)
- *(.got.plt) *(.igot.plt) *(.got) *(.igot)
- } > LRAM
- PROVIDE(_got_start = LOADADDR(.got));
- PROVIDE(_got_end = LOADADDR(.got) + SIZEOF(.got));
-
- /* uninitialized data */
- .bss (NOLOAD) : {
- . = ALIGN(4);
- __bss_start = .;
- *(.bss)
- } > IRAM
- . = ALIGN(4);
- __bss_end = .;
- PROVIDE(_bss_start = __bss_start);
- PROVIDE(_bss_end = __bss_end);
-
- /* end of image */
- . = ALIGN(4);
- _end = .;
- PROVIDE(end = .);
-}
diff --git a/Src/osmoconbb/src/target/firmware/board/mediatek/start.ram.S b/Src/osmoconbb/src/target/firmware/board/mediatek/start.ram.S
deleted file mode 100644
index c8f242c..0000000
--- a/Src/osmoconbb/src/target/firmware/board/mediatek/start.ram.S
+++ /dev/null
@@ -1,26 +0,0 @@
-
-.section .text.start
-
-#include "macros.S"
-
-.globl _start
-_start:
- /* clear bss section */
- clear_bss
-
- /* initialize all stacks */
- init_stacks
-
- /* call constructors */
- call_ctors
-
- /* jump to main */
- ldr pc, _jump_main
-
- /* endless loop at end of program */
-_loop:
- b _loop
- b _start
-
-_jump_main:
- .word main
diff --git a/Src/osmoconbb/src/target/firmware/board/mediatek/uart.c b/Src/osmoconbb/src/target/firmware/board/mediatek/uart.c
deleted file mode 100644
index 8e86b20..0000000
--- a/Src/osmoconbb/src/target/firmware/board/mediatek/uart.c
+++ /dev/null
@@ -1,424 +0,0 @@
-/* MediaTek MT62xx internal UART Driver
- *
- * based on the Calypso driver, so there might be some cruft from it left...
- *
- * (C) 2010 by Harald Welte <laforge@gnumonks.org>
- * (C) 2010 by Ingo Albrecht <prom@berlin.ccc.de>
- * (C) 2010 by Steve Markgraf <steve@steve-m.de>
- * (C) 2011 by Wolfram Sang <wolfram@the-dreams.de>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <debug.h>
-#include <memory.h>
-#include <stdint.h>
-#include <string.h>
-#include <stdio.h>
-#include <defines.h>
-#include <uart.h>
-#include <console.h>
-
-#include <comm/sercomm.h>
-
-/* MT622x */
-#if 0
-#define BASE_ADDR_UART1 0x80130000
-#define BASE_ADDR_UART2 0x80180000
-#define BASE_ADDR_UART3 0x801b0000
-#endif
-
-/* MT 6235 */
-#define BASE_ADDR_UART1 0x81030000
-
-//TODO make UART2 and 3 work
-#define UART_REG(n,m) (BASE_ADDR_UART1 + (m))
-
-#define LCR7BIT 0x80
-#define LCRBFBIT 0x40
-#define MCR6BIT 0x20
-#define REG_OFFS(m) ((m) & ~(LCR7BIT|LCRBFBIT|MCR6BIT))
-/* read access LCR[7] = 0 */
-enum uart_reg {
- RBR = 0x00,
- IER = 0x04,
- IIR = 0x08,
- LCR = 0x0c,
- MCR = 0x10,
- LSR = 0x14,
- MSR = 0x18,
- SCR = 0x1c,
- AUTOBAUD_EN = 0x20,
- HIGHSPEED = 0x24,
- SAMPLE_COUNT = 0x28,
- SAMPLE_POINT = 0x2c,
- AUTOBAUD_REG = 0x30,
- RATE_FIX_REG = 0x34, /* undocumented */
- AUTOBAUDSAMPLE = 0x38,
- GUARD = 0x3c,
- ESCAPE_DAT = 0x40,
- ESCAPE_EN = 0x44,
- SLEEP_EN = 0x48,
- VFIFO_EN = 0x4c,
-/* read access LCR[7] = 1 */
- DLL = RBR,
- DLH = IER,
-/* read/write access LCR[7:0] = 0xbf */
- EFR = IIR | LCRBFBIT,
- XON1 = MCR | LCRBFBIT,
- XON2 = LSR | LCRBFBIT,
- XOFF1 = MSR | LCRBFBIT,
- XOFF2 = SCR | LCRBFBIT,
-};
-
-enum fcr_bits {
- FIFO_EN = (1 << 0),
- RX_FIFO_CLEAR = (1 << 1),
- TX_FIFO_CLEAR = (1 << 2),
- DMA_MODE = (1 << 3),
-};
-#define TX_FIFO_TRIG_SHIFT 4
-#define RX_FIFO_TRIG_SHIFT 6
-
-enum iir_bits {
- IIR_INT_PENDING = 0x01,
- IIR_INT_TYPE = 0x3E,
- IIR_INT_TYPE_RX_STATUS_ERROR = 0x06,
- IIR_INT_TYPE_RX_TIMEOUT = 0x0C,
- IIR_INT_TYPE_RBR = 0x04,
- IIR_INT_TYPE_THR = 0x02,
- IIR_INT_TYPE_MSR = 0x00,
- IIR_INT_TYPE_XOFF = 0x10,
- IIR_INT_TYPE_FLOW = 0x20,
- IIR_FCR0_MIRROR = 0xC0,
-};
-
-
-/* enable or disable the divisor latch for access to DLL, DLH */
-static void uart_set_lcr7bit(int uart, int on)
-{
- uint8_t reg;
-
- reg = readb(UART_REG(uart, LCR));
- if (on)
- reg |= (1 << 7);
- else
- reg &= ~(1 << 7);
- writeb(reg, UART_REG(uart, LCR));
-}
-
-static uint8_t old_lcr;
-static void uart_set_lcr_bf(int uart, int on)
-{
- if (on) {
- old_lcr = readb(UART_REG(uart, LCR));
- writeb(0xBF, UART_REG(uart, LCR));
- } else {
- writeb(old_lcr, UART_REG(uart, LCR));
- }
-}
-
-/* Enable or disable the TCR_TLR latch bit in MCR[6] */
-static void uart_set_mcr6bit(int uart, int on)
-{
- uint8_t mcr;
- /* we assume EFR[4] is always set to 1 */
- mcr = readb(UART_REG(uart, MCR));
- if (on)
- mcr |= (1 << 6);
- else
- mcr &= ~(1 << 6);
- writeb(mcr, UART_REG(uart, MCR));
-}
-
-static void uart_reg_write(int uart, enum uart_reg reg, uint8_t val)
-{
- if (reg & LCRBFBIT)
- uart_set_lcr_bf(uart, 1);
- else if (reg & LCR7BIT)
- uart_set_lcr7bit(uart, 1);
- else if (reg & MCR6BIT)
- uart_set_mcr6bit(uart, 1);
-
- writeb(val, UART_REG(uart, REG_OFFS(reg)));
-
- if (reg & LCRBFBIT)
- uart_set_lcr_bf(uart, 0);
- else if (reg & LCR7BIT)
- uart_set_lcr7bit(uart, 0);
- else if (reg & MCR6BIT)
- uart_set_mcr6bit(uart, 0);
-}
-
-/* read from a UART register, applying any required latch bits */
-static uint8_t uart_reg_read(int uart, enum uart_reg reg)
-{
- uint8_t ret;
-
- if (reg & LCRBFBIT)
- uart_set_lcr_bf(uart, 1);
- else if (reg & LCR7BIT)
- uart_set_lcr7bit(uart, 1);
- else if (reg & MCR6BIT)
- uart_set_mcr6bit(uart, 1);
-
- ret = readb(UART_REG(uart, REG_OFFS(reg)));
-
- if (reg & LCRBFBIT)
- uart_set_lcr_bf(uart, 0);
- else if (reg & LCR7BIT)
- uart_set_lcr7bit(uart, 0);
- else if (reg & MCR6BIT)
- uart_set_mcr6bit(uart, 0);
-
- return ret;
-}
-
-static void uart_irq_handler_cons(__unused int irqnr)
-{
- const uint8_t uart = CONS_UART_NR;
- uint8_t iir;
-
- //uart_putchar_nb(uart, 'U');
-
- iir = uart_reg_read(uart, IIR);
- if (iir & IIR_INT_PENDING)
- return;
-
- switch (iir & IIR_INT_TYPE) {
- case IIR_INT_TYPE_RBR:
- break;
- case IIR_INT_TYPE_THR:
- if (cons_rb_flush() == 1) {
- /* everything was flushed, disable RBR IRQ */
- uint8_t ier = uart_reg_read(uart, IER);
- ier &= ~(1 << 1);
- uart_reg_write(uart, IER, ier);
- }
- break;
- case IIR_INT_TYPE_MSR:
- break;
- case IIR_INT_TYPE_RX_STATUS_ERROR:
- break;
- case IIR_INT_TYPE_RX_TIMEOUT:
- break;
- case IIR_INT_TYPE_XOFF:
- break;
- }
-}
-
-static void uart_irq_handler_sercomm(__unused int irqnr)
-{
- const uint8_t uart = SERCOMM_UART_NR;
- uint8_t iir, ch;
-
- //uart_putchar_nb(uart, 'U');
-
- iir = uart_reg_read(uart, IIR);
- if (iir & IIR_INT_PENDING)
- return;
-
- switch (iir & IIR_INT_TYPE) {
- case IIR_INT_TYPE_RX_TIMEOUT:
- case IIR_INT_TYPE_RBR:
- /* as long as we have rx data available */
- while (uart_getchar_nb(uart, &ch)) {
- if (sercomm_drv_rx_char(ch) < 0) {
- /* sercomm cannot receive more data right now */
- uart_irq_enable(uart, UART_IRQ_RX_CHAR, 0);
- }
- }
- break;
- case IIR_INT_TYPE_THR:
- /* as long as we have space in the FIFO */
- while (!uart_tx_busy(uart)) {
- /* get a byte from sercomm */
- if (!sercomm_drv_pull(&ch)) {
- /* no more bytes in sercomm, stop TX interrupts */
- uart_irq_enable(uart, UART_IRQ_TX_EMPTY, 0);
- break;
- }
- /* write the byte into the TX FIFO */
- uart_putchar_nb(uart, ch);
- }
- break;
- case IIR_INT_TYPE_MSR:
- printf("UART IRQ MSR\n");
- break;
- case IIR_INT_TYPE_RX_STATUS_ERROR:
- printf("UART IRQ RX_SE\n");
- break;
- case IIR_INT_TYPE_XOFF:
- printf("UART IRQXOFF\n");
- break;
- }
-}
-
-void uart_init(uint8_t uart, __unused uint8_t interrupts)
-{
- /* no interrupts, only polling so far */
-
- uart_reg_write(uart, IER, 0x00);
- if (uart == CONS_UART_NR) {
- cons_init();
- } else {
- sercomm_init();
- uart_irq_enable(uart, UART_IRQ_RX_CHAR, 1);
- }
-
- uart_reg_write(uart, AUTOBAUD_EN, 0x00); /* disable AUTOBAUD */
- uart_reg_write(uart, EFR, 0x10); /* Enhanced Features Register */
-
- /* no XON/XOFF flow control, ENHANCED_EN, no auto-RTS/CTS */
- uart_reg_write(uart, EFR, (1 << 4));
- /* enable Tx/Rx FIFO, Tx trigger at 56 spaces, Rx trigger at 60 chars */
- //FIXME check those FIFO settings
- uart_reg_write(uart, IIR, FIFO_EN | RX_FIFO_CLEAR | TX_FIFO_CLEAR |
- (3 << TX_FIFO_TRIG_SHIFT) | (1 << RX_FIFO_TRIG_SHIFT));
-
- /* RBR interrupt only when TX FIFO and TX shift register are empty */
- uart_reg_write(uart, SCR, (1 << 0));// | (1 << 3));
-
- /* 8 bit, 1 stop bit, no parity, no break */
- uart_reg_write(uart, LCR, 0x03);
-
- uart_set_lcr7bit(uart, 0);
-}
-
-void uart_poll(uint8_t uart) {
- if(uart == CONS_UART_NR) {
- uart_irq_handler_cons(0);
- } else {
- uart_irq_handler_sercomm(0);
- }
-}
-
-void uart_irq_enable(uint8_t uart, enum uart_irq irq, int on)
-{
- uint8_t ier = uart_reg_read(uart, IER);
- uint8_t mask = 0;
-
- switch (irq) {
- case UART_IRQ_TX_EMPTY:
- mask = (1 << 1);
- break;
- case UART_IRQ_RX_CHAR:
- mask = (1 << 0);
- break;
- }
-
- if (on)
- ier |= mask;
- else
- ier &= ~mask;
-
- uart_reg_write(uart, IER, ier);
-}
-
-
-void uart_putchar_wait(uint8_t uart, int c)
-{
- /* wait while TX FIFO indicates full */
- while (~readb(UART_REG(uart, LSR)) & 0x20) { }
-
- /* put character in TX FIFO */
- writeb(c, UART_REG(uart, RBR));
-}
-
-int uart_putchar_nb(uint8_t uart, int c)
-{
- /* if TX FIFO indicates full, abort */
- if (~readb(UART_REG(uart, LSR)) & 0x20)
- return 0;
-
- writeb(c, UART_REG(uart, RBR));
- return 1;
-}
-
-int uart_getchar_nb(uint8_t uart, uint8_t *ch)
-{
- uint8_t lsr;
-
- lsr = readb(UART_REG(uart, LSR));
-
- /* something strange happened */
- if (lsr & 0x02)
- printf("LSR RX_OE\n");
- if (lsr & 0x04)
- printf("LSR RX_PE\n");
- if (lsr & 0x08)
- printf("LSR RX_FE\n");
- if (lsr & 0x10)
- printf("LSR RX_BI\n");
- if (lsr & 0x80)
- printf("LSR RX_FIFO_STS\n");
-
- /* is the Rx FIFO empty? */
- if (!(lsr & 0x01))
- return 0;
-
- *ch = readb(UART_REG(uart, RBR));
- //printf("getchar_nb(%u) = %02x\n", uart, *ch);
- return 1;
-}
-
-int uart_tx_busy(uint8_t uart)
-{
- /* Check THRE bit (LSR[5]) to see if FIFO is full */
- if (~readb(UART_REG(uart, LSR)) & 0x20)
- return 1;
- return 0;
-}
-
-#if 0
-/* 26MHz clock input (used when no PLL initialized directly after poweron) */
-static const uint16_t divider[] = {
- [UART_38400] = 42,
- [UART_57600] = 28,
- [UART_115200] = 14,
- [UART_230400] = 7,
- [UART_460800] = 14, /* would need UART_REG(HIGHSPEED) = 1 or 2 */
- [UART_921600] = 7, /* would need UART_REG(HIGHSPEED) = 2 */
-};
-#endif
-
-/* 52MHz clock input (after PLL init) */
-static const uint16_t divider[] = {
- [UART_38400] = 85,
- [UART_57600] = 56,
- [UART_115200] = 28,
- [UART_230400] = 14,
- [UART_460800] = 7,
- [UART_921600] = 7, /* would need UART_REG(HIGHSPEED) = 1 */
-};
-
-int uart_baudrate(uint8_t uart, enum uart_baudrate bdrt)
-{
- uint16_t div;
-
- if (bdrt > ARRAY_SIZE(divider))
- return -1;
-
- div = divider[bdrt];
- uart_set_lcr7bit(uart, 1);
- writeb(div & 0xff, UART_REG(uart, DLL));
- writeb(div >> 8, UART_REG(uart, DLH));
- uart_set_lcr7bit(uart, 0);
-
- return 0;
-}
diff --git a/Src/osmoconbb/src/target/firmware/board/mt62xx/init.c b/Src/osmoconbb/src/target/firmware/board/mt62xx/init.c
deleted file mode 100644
index 3f68375..0000000
--- a/Src/osmoconbb/src/target/firmware/board/mt62xx/init.c
+++ /dev/null
@@ -1,139 +0,0 @@
-/* Initialization for the MT62xx Basebands */
-
-/* (C) 2010 by Steve Markgraf <steve@steve-m.de>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-
-#include <debug.h>
-#include <ctors.h>
-#include <memory.h>
-#include <board.h>
-#include <keypad.h>
-#include <uart.h>
-#include <console.h>
-#include <delay.h>
-
-#include <flash/cfi_flash.h>
-
-#include <comm/sercomm.h>
-#include <comm/timer.h>
-
-#include <mtk/emi.h>
-#include <mtk/mt6235.h>
-#include <mtk/system.h>
-
-void pll_init(void)
-{
- /* Power on PLL */
- writew(0, MTK_PLL_PDN_CON);
- writew(PLL_CLKSQ_DIV2_DSP | PLL_CLKSQ_DIV2_MCU, MTK_PLL_CLK_CON);
-
- writew(PLL_RST, MTK_PLL_PLL);
- writew(0, MTK_PLL_PLL);
- delay_ms(1);
-
- /* Turn on PLL for MCU, DSP and USB */
- writew(PLL_MPLLSEL_PLL | PLL_DPLLSEL | PLL_UPLLSEL, MTK_PLL_PLL);
-
- /*
- * Setup MCU clock register:
- * ARMCLK = 208MHz, AHBx4CLK = 52MHz, AHBx8CLK = 104MHz
- * we have to write to the read-only part (EMICLK) as well, otherwise
- * the EMI won't work! (datasheet lies)
- */
- writew(7 << MCUCLK_CON_AHBX8CLK_SHIFT |
- 3 << MCUCLK_CON_AHBX4CLK_SHIFT |
- 15 << MCUCLK_CON_ARMCLK_SHIFT |
- 7 << MCUCLK_CON_EMICLK_SHIFT,
- MTK_CONFG_MCUCLK_CON);
-}
-
-void memory_init(void)
-{
- int i;
-
- /* Initialization for Hynix RAM */
-
- /* Configure DRAM controller */
- writel(0x0001000e, MTK_EMI_GEND);
- writel(0x00088a0a, MTK_EMI_GENA);
- writel(0x00000280, MTK_EMI_GENB);
- writel(0x52945294, MTK_EMI_GENC);
- writel(0x1c016605, MTK_EMI_CONL);
- writel(0x00002828, MTK_EMI_CONM);
- writel(0x02334000, MTK_EMI_CONI);
- writel(0x16c12212, MTK_EMI_CONJ);
- writel(0x032d0000, MTK_EMI_CONK);
-
- for (i = 0; i < 5; ++i) {
- /* Setup five single bits, one by one for DRAM init */
- writel((1 << (24 + i)) | (0x400013), MTK_EMI_CONN);
- delay_ms(1);
- writel(0x400013, MTK_EMI_CONN);
- delay_ms(1);
- }
-
-#if 0
- /* Initialization for Toshiba RAM */
-
- /* Configure DRAM controller */
- writel(0x0001000E, MTK_EMI_GEND);
- writel(0x00088E3A, MTK_EMI_GENA);
- writel(0x000000C0, MTK_EMI_GENB);
- writel(0x18C618C6, MTK_EMI_GENC);
- writel(0x18007505, MTK_EMI_CONL);
- writel(0x00002828, MTK_EMI_CONM);
- writel(0x00332000, MTK_EMI_CONI);
- writel(0x3CD24431, MTK_EMI_CONJ);
- writel(0x02000000, MTK_EMI_CONK);
-
- for (i = 0; i < 5; ++i) {
- /* Setup five single bits, one by one for DRAM init */
- writel((1 << (24 + i)) | (0x500013), MTK_EMI_CONN);
- delay_ms(1);
- writel(0x500013, MTK_EMI_CONN);
- delay_ms(1);
- }
-
-#endif
-}
-
-void board_init(void)
-{
- /* powerup the baseband */
- writew(POWERKEY1_MAGIC, MTK_RTC_POWERKEY1);
- writew(POWERKEY2_MAGIC, MTK_RTC_POWERKEY2);
- writew(BBPU_MAGIC | RTC_BBPU_WRITE_EN |
- RTC_BBPU_BBPU | RTC_BBPU_AUTO,
- MTK_RTC_BBPU);
- writew(1, MTK_RTC_WRTGR);
-
- /* disable watchdog timer */
- writew(WDT_MODE_KEY, MTK_RGU_WDT_MODE);
-
- pll_init();
- memory_init();
-
- /* Initialize UART without interrupts */
- uart_init(SERCOMM_UART_NR, 0);
- uart_baudrate(SERCOMM_UART_NR, UART_115200);
-}
diff --git a/Src/osmoconbb/src/target/firmware/board/pirelli_dpl10/init.c b/Src/osmoconbb/src/target/firmware/board/pirelli_dpl10/init.c
deleted file mode 100644
index 53fb257..0000000
--- a/Src/osmoconbb/src/target/firmware/board/pirelli_dpl10/init.c
+++ /dev/null
@@ -1,127 +0,0 @@
-/* Initialization for the Pirelli DP-L10 */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- * (C) 2011 by Steve Markgraf <steve@steve-m.de>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-
-#include <debug.h>
-#include <ctors.h>
-#include <memory.h>
-#include <board.h>
-#include <keypad.h>
-#include <console.h>
-#include <flash/cfi_flash.h>
-
-#include <calypso/irq.h>
-#include <calypso/clock.h>
-#include <calypso/dma.h>
-#include <calypso/rtc.h>
-#include <calypso/timer.h>
-#include <uart.h>
-#include <calypso/backlight.h>
-
-#include <comm/sercomm.h>
-#include <comm/timer.h>
-
-#include <abb/twl3025.h>
-#include <rf/trf6151.h>
-#include <display.h>
-
-#define ARMIO_LATCH_OUT 0xfffe4802
-#define ASIC_CONF_REG 0xfffef008
-
-static void board_io_init(void)
-{
- uint16_t reg;
-
- reg = readw(ASIC_CONF_REG);
- /* Set function pins to I2C Mode */
- reg |= ((1 << 12) | (1 << 7)); /* SCL / SDA */
- /* TWL3025: Set SPI+RIF RX clock to rising edge */
- reg |= (1 << 13) | (1 << 14);
- writew(reg, ASIC_CONF_REG);
-}
-
-void board_init(void)
-{
- /* Configure the memory interface */
- calypso_mem_cfg(CALYPSO_nCS0, 3, CALYPSO_MEM_16bit, 1);
- calypso_mem_cfg(CALYPSO_nCS1, 3, CALYPSO_MEM_16bit, 1);
- calypso_mem_cfg(CALYPSO_nCS2, 5, CALYPSO_MEM_16bit, 1);
- calypso_mem_cfg(CALYPSO_nCS3, 5, CALYPSO_MEM_16bit, 1);
- calypso_mem_cfg(CALYPSO_CS4, 0, CALYPSO_MEM_8bit, 1);
- calypso_mem_cfg(CALYPSO_nCS6, 0, CALYPSO_MEM_32bit, 1);
- calypso_mem_cfg(CALYPSO_nCS7, 0, CALYPSO_MEM_32bit, 0);
-
- /* Set VTCXO_DIV2 = 1, configure PLL for 104 MHz and give ARM half of that */
- calypso_clock_set(2, CALYPSO_PLL13_104_MHZ, ARM_MCLK_DIV_2);
-
- /* Configure the RHEA bridge with some sane default values */
- calypso_rhea_cfg(0, 0, 0xff, 0, 1, 0, 0);
-
- /* Initialize board-specific GPIO */
- board_io_init();
-
- /* Enable bootrom mapping to route exception vectors to RAM */
- calypso_bootrom(1);
- calypso_exceptions_install();
-
- /* Initialize interrupt controller */
- irq_init();
-
- /* initialize MODEM UART to be used for sercomm*/
- uart_init(SERCOMM_UART_NR, 1);
- uart_baudrate(SERCOMM_UART_NR, UART_115200);
-
- /* Initialize IRDA UART to be used for old-school console code.
- * note: IRDA uart only accessible on C115 and C117 PCB */
- uart_init(CONS_UART_NR, 1);
- uart_baudrate(CONS_UART_NR, UART_115200);
-
- /* Initialize hardware timers */
- hwtimer_init();
-
- /* Initialize DMA controller */
- dma_init();
-
- /* Initialize real time clock */
- rtc_init();
-
- /* Initialize system timers (uses hwtimer 2) */
- timer_init();
-
- /* Initialize LCD driver (uses I2C) and backlight */
- display = &st7558_display;
- display_init();
- bl_mode_pwl(1);
- bl_level(0);
-
- /* Initialize keypad driver */
- keypad_init(1);
-
- /* Initialize ABB driver (uses SPI) */
- twl3025_init();
-
- /* enable LEDB driver of Iota for keypad backlight */
- twl3025_reg_write(AUXLED, 0x02);
-}
diff --git a/Src/osmoconbb/src/target/firmware/board/pirelli_dpl10/rf_power.c b/Src/osmoconbb/src/target/firmware/board/pirelli_dpl10/rf_power.c
deleted file mode 100644
index 9b89847..0000000
--- a/Src/osmoconbb/src/target/firmware/board/pirelli_dpl10/rf_power.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Tx RF power calibration for the Pirelli DP-L10 */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <osmocom/core/utils.h>
-
-/* GSM900 ARFCN 33, Measurements by Steve Markgraf / May 2010 */
-/* FIXME those are from the Compal phones, do measurements with the DP-L10 */
-const int16_t dbm2apc_gsm900[] = {
- [0] = 151,
- [1] = 152,
- [2] = 153,
- [3] = 155,
- [4] = 156,
- [5] = 158,
- [6] = 160,
- [7] = 162,
- [8] = 164,
- [9] = 167,
- [10] = 170,
- [11] = 173,
- [12] = 177,
- [13] = 182,
- [14] = 187,
- [15] = 192,
- [16] = 199,
- [17] = 206,
- [18] = 214,
- [19] = 223,
- [20] = 233,
- [21] = 244,
- [22] = 260,
- [23] = 271,
- [24] = 288,
- [25] = 307,
- [26] = 327,
- [27] = 350,
- [28] = 376,
- [29] = 407,
- [30] = 456,
- [31] = 575,
-};
-
-const int dbm2apc_gsm900_max = ARRAY_SIZE(dbm2apc_gsm900) - 1;
diff --git a/Src/osmoconbb/src/target/firmware/board/pirelli_dpl10/rffe_dpl10_triband.c b/Src/osmoconbb/src/target/firmware/board/pirelli_dpl10/rffe_dpl10_triband.c
deleted file mode 100644
index d4d1342..0000000
--- a/Src/osmoconbb/src/target/firmware/board/pirelli_dpl10/rffe_dpl10_triband.c
+++ /dev/null
@@ -1,136 +0,0 @@
-#include <stdint.h>
-#include <stdio.h>
-
-#include <debug.h>
-#include <memory.h>
-#include <rffe.h>
-#include <calypso/tsp.h>
-#include <rf/trf6151.h>
-
-/* This is a value that has been measured on the C123 by Harald: 71dBm,
- it is the difference between the input level at the antenna and what
- the DSP reports, subtracted by the total gain of the TRF6151 */
-#define SYSTEM_INHERENT_GAIN 71
-
-/* describe how the RF frontend is wired on the Pirelli DP-L10 */
-
-#define RITA_RESET TSPACT(5) /* Reset of the Rita TRF6151 */
-#define PA_ENABLE TSPACT(0) /* Enable the Power Amplifier */
-#define GSM_TXEN TSPACT(3) /* PA GSM switch, low-active,
- * 1 for DCS1800/PCS1900 TX */
-
-/* All VCn controls are high-active */
-#define ASM_VC1 TSPACT(4) /* VC1 PCS1900 RX */
-#define ASM_VC2 TSPACT(10) /* VC2 DCS1800/PCS1900 TX */
-#define ASM_VC3 TSPACT(11) /* VC3 GSM900 TX */
-
-#define IOTA_STROBE TSPEN(0) /* Strobe for the Iota TSP */
-#define RITA_STROBE TSPEN(1) /* Strobe for the Rita TSP */
-
-/* switch RF Frontend Mode */
-void rffe_mode(enum gsm_band band, int tx)
-{
- uint16_t tspact = tsp_act_state();
-
- /* First we mask off all bits from the state cache */
- tspact &= ~(PA_ENABLE| GSM_TXEN);
- tspact &= ~(ASM_VC1 | ASM_VC2 | ASM_VC3);
-
- switch (band) {
- case GSM_BAND_850:
- case GSM_BAND_900:
- case GSM_BAND_1800:
- break;
- case GSM_BAND_1900:
- tspact |= ASM_VC1;
- break;
- default:
- /* TODO return/signal error here */
- break;
- }
-
-#ifdef CONFIG_TX_ENABLE
- /* Then we selectively set the bits on, if required */
- if (tx) {
- switch (band) {
- case GSM_BAND_850:
- case GSM_BAND_900:
- tspact |= ASM_VC3;
- break;
- case GSM_BAND_1800:
- case GSM_BAND_1900:
- tspact |= GSM_TXEN;
- tspact |= ASM_VC2;
- break;
- default:
- break;
- }
- tspact |= PA_ENABLE;
- }
-#endif /* TRANSMIT_SUPPORT */
-
- tsp_act_update(tspact);
-}
-
-/* Returns RF wiring */
-uint32_t rffe_get_rx_ports(void)
-{
- return (1 << PORT_LO) | (1 << PORT_DCS1800) | (1 << PORT_PCS1900);
-}
-
-uint32_t rffe_get_tx_ports(void)
-{
- return (1 << PORT_LO) | (1 << PORT_HI);
-}
-
-
-#define MCU_SW_TRACE 0xfffef00e
-#define ARM_CONF_REG 0xfffef006
-#define ASIC_CONF_REG 0xfffef008
-
-void rffe_init(void)
-{
- uint16_t reg;
-
- reg = readw(ARM_CONF_REG);
- reg &= ~ (1 << 7); /* TSPACT4 I/O function, not nRDYMEM */
- writew(reg, ARM_CONF_REG);
-
- reg = readw(ASIC_CONF_REG);
- reg &= ~ (1 << 15); /* TSPACT5 I/O function, not DPLLCLK */
- writew(reg, ASIC_CONF_REG);
-
- reg = readw(MCU_SW_TRACE);
- reg &= ~(1 << 3); /* TSPACT10 I/O function, not nWAIT(1) */
- reg &= ~(1 << 2); /* TSPACT11 I/O function, not MCLK(1) */
- writew(reg, MCU_SW_TRACE);
-
- /* Configure the TSPEN which is connected to the TWL3025 */
- tsp_setup(IOTA_STROBE, 1, 0, 0);
-
- trf6151_init(RITA_STROBE, RITA_RESET);
-}
-
-uint8_t rffe_get_gain(void)
-{
- return trf6151_get_gain();
-}
-
-void rffe_set_gain(uint8_t dbm)
-{
- trf6151_set_gain(dbm);
-}
-
-const uint8_t system_inherent_gain = SYSTEM_INHERENT_GAIN;
-
-/* Given the expected input level of exp_inp dBm/8 and the target of target_bb
- * dBm8, configure the RF Frontend with the respective gain */
-void rffe_compute_gain(int16_t exp_inp, int16_t target_bb)
-{
- trf6151_compute_gain(exp_inp, target_bb);
-}
-
-void rffe_rx_win_ctrl(int16_t exp_inp, int16_t target_bb)
-{
- /* FIXME */
-}
diff --git a/Src/osmoconbb/src/target/firmware/calypso/Makefile b/Src/osmoconbb/src/target/firmware/calypso/Makefile
deleted file mode 100644
index 610a82c..0000000
--- a/Src/osmoconbb/src/target/firmware/calypso/Makefile
+++ /dev/null
@@ -1,4 +0,0 @@
-
-LIBRARIES+=calypso
-calypso_DIR=calypso
-calypso_SRCS=arm.c buzzer.c clock.c dma.c dsp.c du.c i2c.c irq.c rtc.c sim.c spi.c tpu.c tsp.c keypad.c misc.c timer.c backlight.c uart.c uwire.c
diff --git a/Src/osmoconbb/src/target/firmware/calypso/arm.c b/Src/osmoconbb/src/target/firmware/calypso/arm.c
deleted file mode 100644
index 8794ee3..0000000
--- a/Src/osmoconbb/src/target/firmware/calypso/arm.c
+++ /dev/null
@@ -1,26 +0,0 @@
-
-/* enable IRQ+FIQ interrupts */
-void arm_enable_interrupts (void)
-{
- unsigned long temp;
- __asm__ __volatile__("mrs %0, cpsr\n"
- "bic %0, %0, #0xc0\n"
- "msr cpsr_c, %0"
- : "=r" (temp)
- :
- : "memory");
-}
-
-/* disable IRQ/FIQ interrupts
- * returns true if interrupts had been enabled before we disabled them */
-int arm_disable_interrupts(void)
-{
- unsigned long old,temp;
- __asm__ __volatile__("mrs %0, cpsr\n"
- "orr %1, %0, #0xc0\n"
- "msr cpsr_c, %1"
- : "=r" (old), "=r" (temp)
- :
- : "memory");
- return (old & 0x80) == 0;
-}
diff --git a/Src/osmoconbb/src/target/firmware/calypso/backlight.c b/Src/osmoconbb/src/target/firmware/calypso/backlight.c
deleted file mode 100644
index a18dcb9..0000000
--- a/Src/osmoconbb/src/target/firmware/calypso/backlight.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/* Calypso DBB internal PWL (Pulse Width / Light) Driver */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <memory.h>
-
-#define BASE_ADDR_PWL 0xfffe8000
-#define PWL_REG(m) (BASE_ADDR_PWL + (m))
-
-#define ASIC_CONF_REG 0xfffef008
-#define LIGHT_LEVEL_REG 0xfffe4810
-
-enum pwl_reg {
- PWL_LEVEL = 0,
- PWL_CTRL = 1,
-};
-
-#define ASCONF_PWL_ENA (1 << 4)
-
-void bl_mode_pwl(int on)
-{
- uint16_t reg;
-
- reg = readw(ASIC_CONF_REG);
-
- if (on) {
- /* Enable pwl */
- writeb(0x01, PWL_REG(PWL_CTRL));
- /* Switch pin from LT to PWL */
- reg |= ASCONF_PWL_ENA;
- writew(reg, ASIC_CONF_REG);
- } else {
- /* Switch pin from PWL to LT */
- reg |= ~ASCONF_PWL_ENA;
- writew(reg, ASIC_CONF_REG);
- /* Disable pwl */
- writeb(0x00, PWL_REG(PWL_CTRL));
- }
-}
-
-void bl_level(uint8_t level)
-{
- if (readw(ASIC_CONF_REG) & ASCONF_PWL_ENA) {
- writeb(level, PWL_REG(PWL_LEVEL));
- } else {
- /* we need to scale the light level, as the
- * ARMIO light controller only knows 0..63 */
- writeb(level>>2, LIGHT_LEVEL_REG);
- }
-}
diff --git a/Src/osmoconbb/src/target/firmware/calypso/buzzer.c b/Src/osmoconbb/src/target/firmware/calypso/buzzer.c
deleted file mode 100644
index e76906f..0000000
--- a/Src/osmoconbb/src/target/firmware/calypso/buzzer.c
+++ /dev/null
@@ -1,86 +0,0 @@
-/* Calypso DBB internal PWT (Pulse Width / T) Buzzer Driver */
-
-/* (C) 2010 by Jose Pereira <onaips@gmail.com>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <memory.h>
-
-#define BASE_ADDR_PWL 0xfffe8800
-#define PWT_REG(m) (BASE_ADDR_PWL + (m))
-
-#define ASIC_CONF_REG 0xfffef008
-#define BUZZ_LEVEL_REG 0xfffe480e
-
-enum pwt_reg {
- FRC_REG = 0,
- VRC_REG = 1,
- GCR_REG = 2,
-};
-
-#define ASCONF_PWT_ENA (1 << 5)
-
-void buzzer_mode_pwt(int on)
-{
- uint16_t reg;
-
- reg = readw(ASIC_CONF_REG);
-
- if (on) {
- /* Enable pwt */
- writeb(0x01, PWT_REG(GCR_REG));
- /* Switch pin from LT to PWL */
- reg |= ASCONF_PWT_ENA;
- writew(reg, ASIC_CONF_REG);
- } else {
- /* Switch pin from PWT to BU */
- reg |= ~ASCONF_PWT_ENA;
- writew(reg, ASIC_CONF_REG);
- /* Disable pwt */
- writeb(0x00, PWT_REG(GCR_REG));
- }
-}
-
-void buzzer_volume(uint8_t level)
-{
-
- if (readw(ASIC_CONF_REG) & ASCONF_PWT_ENA) {
-
- if (level) {
- //scaling the volume as pwt only knows 0..63
- level = level >> 1;
- //if level > 0 buzzer is on
- level |= 0x01;
- }
-
- writeb(level,PWT_REG(VRC_REG));
-
- } else {
- /* we need to scale the buzz level, as the
- * ARMIO buzz controller only knows 0..63 */
- writeb(level>>2, BUZZ_LEVEL_REG);
- }
-}
-
-void buzzer_note(uint8_t note)
-{
- if ( (readw(ASIC_CONF_REG) & ASCONF_PWT_ENA) )
- writeb(note,PWT_REG(FRC_REG));
-}
diff --git a/Src/osmoconbb/src/target/firmware/calypso/clock.c b/Src/osmoconbb/src/target/firmware/calypso/clock.c
deleted file mode 100644
index 246b6e0..0000000
--- a/Src/osmoconbb/src/target/firmware/calypso/clock.c
+++ /dev/null
@@ -1,200 +0,0 @@
-/* Driver for Calypso clock management */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-
-//#define DEBUG
-#include <debug.h>
-
-#include <memory.h>
-#include <calypso/clock.h>
-
-#define REG_DPLL 0xffff9800
-#define DPLL_LOCK (1 << 0)
-#define DPLL_BREAKLN (1 << 1)
-#define DPLL_BYPASS_DIV_SHIFT 2 /* 2 bits */
-#define DPLL_PLL_ENABLE (1 << 4)
-#define DPLL_PLL_DIV_SHIFT 5 /* 2 bits */
-#define DPLL_PLL_MULT_SHIFT 7 /* 5 bits */
-#define DPLL_TEST (1 << 12)
-#define DPLL_IOB (1 << 13) /* Initialize on break */
-#define DPLL_IAI (1 << 14) /* Initialize after Idle */
-
-#define BASE_ADDR_CLKM 0xfffffd00
-#define CLKM_REG(m) (BASE_ADDR_CLKM+(m))
-
-enum clkm_reg {
- CNTL_ARM_CLK = 0,
- CNTL_CLK = 2,
- CNTL_RST = 4,
- CNTL_ARM_DIV = 8,
-};
-
-/* CNTL_ARM_CLK */
-#define ARM_CLK_BIG_SLEEP (1 << 0) /* MCU Master Clock enabled? */
-#define ARM_CLK_CLKIN_SEL0 (1 << 1) /* MCU source clock (0 = DPLL output, 1 = VTCXO or CLKIN */
-#define ARM_CLK_CLKIN_SEL (1 << 2) /* 0 = VTCXO or 1 = CLKIN */
-#define ARM_CLK_MCLK_DIV5 (1 << 3) /* enable 1.5 or 2.5 division factor */
-#define ARM_CLK_MCLK_DIV_SHIFT 4 /* 3 bits */
-#define ARM_CLK_DEEP_POWER_SHIFT 8
-#define ARM_CLK_DEEP_SLEEP 12
-
-/* CNTL_CLK */
-#define CLK_IRQ_CLK_DIS (1 << 0) /* IRQ clock control (0 always, 1 according ARM_MCLK_EN) */
-#define CLK_BRIDGE_CLK_DIS (1 << 1)
-#define CLK_TIMER_CLK_DIS (1 << 2)
-#define CLK_DPLL_DIS (1 << 3) /* 0: DPLL is not stopped during SLEEP */
-#define CLK_CLKOUT_EN (1 << 4) /* Enable CLKOUT output pins */
-#define CLK_EN_IDLE3_FLG (1 << 5) /* DSP idle flag control (1 =
- * SAM/HOM register forced to HOM when DSP IDLE3) */
-#define CLK_VCLKOUT_DIV2 (1 << 6) /* 1: VCLKOUT-FR is divided by 2 */
-#define CLK_VTCXO_DIV2 (1 << 7) /* 1: VTCXO is dividied by 2 */
-
-#define BASE_ADDR_MEMIF 0xfffffb00
-#define MEMIF_REG(x) (BASE_ADDR_MEMIF+(x))
-
-enum memif_reg {
- API_RHEA_CTL = 0x0e,
- EXTRA_CONF = 0x10,
-};
-
-static void dump_reg16(uint32_t addr, char *name)
-{
- printf("%s=0x%04x\n", name, readw(addr));
-}
-
-void calypso_clk_dump(void)
-{
- dump_reg16(REG_DPLL, "REG_DPLL");
- dump_reg16(CLKM_REG(CNTL_ARM_CLK), "CNTL_ARM_CLK");
- dump_reg16(CLKM_REG(CNTL_CLK), "CNTL_CLK");
- dump_reg16(CLKM_REG(CNTL_RST), "CNTL_RST");
- dump_reg16(CLKM_REG(CNTL_ARM_DIV), "CNTL_ARM_DIV");
-}
-
-void calypso_pll_set(uint16_t inp)
-{
- uint8_t mult = inp >> 8;
- uint8_t div = inp & 0xff;
- uint16_t reg = readw(REG_DPLL);
-
- reg &= ~0x0fe0;
- reg |= (div & 0x3) << DPLL_PLL_DIV_SHIFT;
- reg |= (mult & 0x1f) << DPLL_PLL_MULT_SHIFT;
- reg |= DPLL_PLL_ENABLE;
-
- writew(reg, REG_DPLL);
-}
-
-void calypso_reset_set(enum calypso_rst calypso_rst, int active)
-{
- uint8_t reg = readb(CLKM_REG(CNTL_RST));
-
- if (active)
- reg |= calypso_rst;
- else
- reg &= ~calypso_rst;
-
- writeb(reg, CLKM_REG(CNTL_RST));
-}
-
-int calypso_reset_get(enum calypso_rst calypso_rst)
-{
- uint8_t reg = readb(CLKM_REG(CNTL_RST));
-
- if (reg & calypso_rst)
- return 1;
- else
- return 0;
-}
-
-void calypso_clock_set(uint8_t vtcxo_div2, uint16_t inp, enum mclk_div mclk_div)
-{
- uint16_t cntl_clock = readw(CLKM_REG(CNTL_CLK));
- uint16_t cntl_arm_clk = readw(CLKM_REG(CNTL_ARM_CLK));
-
- /* First set the vtcxo_div2 */
- cntl_clock &= ~CLK_VCLKOUT_DIV2;
- if (vtcxo_div2)
- cntl_clock |= CLK_VTCXO_DIV2;
- else
- cntl_clock &= ~CLK_VTCXO_DIV2;
- writew(cntl_clock, CLKM_REG(CNTL_CLK));
-
- /* Then configure the MCLK divider */
- cntl_arm_clk &= ~ARM_CLK_CLKIN_SEL0;
- if (mclk_div & 0x80) {
- mclk_div &= ~0x80;
- cntl_arm_clk |= ARM_CLK_MCLK_DIV5;
- } else
- cntl_arm_clk &= ~ARM_CLK_MCLK_DIV5;
- cntl_arm_clk &= ~(0x7 << ARM_CLK_MCLK_DIV_SHIFT);
- cntl_arm_clk |= (mclk_div << ARM_CLK_MCLK_DIV_SHIFT);
- writew(cntl_arm_clk, CLKM_REG(CNTL_ARM_CLK));
-
- /* Then finally set the PLL */
- calypso_pll_set(inp);
-}
-
-void calypso_mem_cfg(enum calypso_bank bank, uint8_t ws,
- enum calypso_mem_width width, int we)
-{
- writew((ws & 0x1f) | ((width & 3) << 5) | ((we & 1) << 7),
- BASE_ADDR_MEMIF + bank);
-}
-
-void calypso_bootrom(int enable)
-{
- uint16_t conf = readw(MEMIF_REG(EXTRA_CONF));
-
- conf |= (3 << 8);
-
- if (enable)
- conf &= ~(1 << 9);
-
- writew(conf, MEMIF_REG(EXTRA_CONF));
-}
-
-void calypso_debugunit(int enable)
-{
- uint16_t conf = readw(MEMIF_REG(EXTRA_CONF));
-
- if (enable)
- conf &= ~(1 << 11);
- else
- conf |= (1 << 11);
-
- writew(conf, MEMIF_REG(EXTRA_CONF));
-}
-
-#define REG_RHEA_CNTL 0xfffff900
-#define REG_API_CNTL 0xfffff902
-#define REG_ARM_RHEA 0xfffff904
-
-void calypso_rhea_cfg(uint8_t fac0, uint8_t fac1, uint8_t timeout,
- uint8_t ws_h, uint8_t ws_l, uint8_t w_en0, uint8_t w_en1)
-{
- writew(fac0 | (fac1 << 4) | (timeout << 8), REG_RHEA_CNTL);
- writew(ws_h | (ws_l << 5), REG_API_CNTL);
- writew(w_en0 | (w_en1 << 1), REG_ARM_RHEA);
-}
diff --git a/Src/osmoconbb/src/target/firmware/calypso/dma.c b/Src/osmoconbb/src/target/firmware/calypso/dma.c
deleted file mode 100644
index 35c5be8..0000000
--- a/Src/osmoconbb/src/target/firmware/calypso/dma.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Driver for Calypso DMA controller */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <memory.h>
-
-#define BASE_ADDR_DMA 0xfffffc00
-
-enum dma_reg {
- CONTROLLER_CONF = 0x00,
- ALLOC_CONFIG = 0x02,
-};
-#define DMA_REG(m) (BASE_ADDR_DMA + (m))
-
-#define DMA_RAD(x) DMA_REG((x)*0x10 + 0x0)
-#define DMA_RDPATH(x) DMA_REG((x)*0x10 + 0x2)
-#define DMA_AAD(x) DMA_REG((x)*0x10 + 0x4)
-#define DMA_ALGTH(x) DMA_REG((x)*0x10 + 0x6)
-#define DMA_CTRL(x) DMA_REG((x)*0x10 + 0x8)
-#define DMA_CUR_OFF_API(x) DMA_REG((x)*0x10 + 0xa)
-
-void dma_init(void)
-{
- /* DMA 1 (RIF Tx), 2 (RIF Rx) allocated to DSP, all others to ARM */
- writew(0x000c, DMA_REG(ALLOC_CONFIG));
-}
diff --git a/Src/osmoconbb/src/target/firmware/calypso/dsp.c b/Src/osmoconbb/src/target/firmware/calypso/dsp.c
deleted file mode 100644
index 1daecb2..0000000
--- a/Src/osmoconbb/src/target/firmware/calypso/dsp.c
+++ /dev/null
@@ -1,693 +0,0 @@
-#define DEBUG
-/* Driver for the Calypso integrated DSP */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-
-#include <debug.h>
-#include <delay.h>
-#include <memory.h>
-#include <calypso/clock.h>
-#include <calypso/dsp.h>
-#include <calypso/dsp_api.h>
-#include <calypso/tpu.h>
-
-#include <abb/twl3025.h>
-
-#include <osmocom/gsm/gsm_utils.h>
-
-
-#define REG_API_CONTROL 0xfffe0000
-#define APIC_R_SMODE_HOM (1 << 1) /* API is configured in HOM mode */
-#define APIC_R_HINT (1 << 3) /* Host processor interrupt (DSP->MCU) */
-#define APIC_W_DSPINT (1 << 2) /* ARM issues interrupt to DSP */
-
-#define REG_API_WS 0xfffff902 /* Number of wait states for ARM access to API memory */
-#define REG_ARM_RHEA_CTL 0xfffff904 /* Write buffer bypassing */
-#define REG_EXT_RHEA_CTL 0xfffff906 /* Some timeout */
-
-#define API_SIZE 0x2000U /* in words */
-
-#define BASE_API_RAM 0xffd00000 /* Base address of API RAM from ARM point of view */
-
-#define DSP_BASE_API 0x0800 /* Base address of API RAM for DSP */
-#define DSP_BASE_API_MIRROR 0xe000 /* Base address of API RAM for DSP (API boot mirror) */
-#define DSP_START 0x7000 /* DSP Start address */
-
-/* Boot loader */
-#define BL_CMD_STATUS (BASE_API_RAM + 0x0ffe) /* Status / Command var */
-#define BL_ADDR_LO (BASE_API_RAM + 0x0ffc) /* Address (16 lsbs) */
-#define BL_ADDR_HI (BASE_API_RAM + 0x0ff8) /* Address (ext page bits) */
-#define BL_SIZE (BASE_API_RAM + 0x0ffa) /* Size */
-
-#define BL_MAX_BLOCK_SIZE 0x7F0 /* Maximum size of copied block */
-
- /* Possible values for the download status */
-#define BL_STATUS_NA 0
-#define BL_STATUS_IDLE 1
-#define BL_CMD_COPY_BLOCK 2
-#define BL_CMD_COPY_MODE 4
-
-#define BL_MODE_PROG_WRITE 0
-#define BL_MODE_DATA_WRITE 1
-#define BL_MODE_PROG_READ 2
-#define BL_MODE_DATA_READ 3
-#define BL_MODE_PROM_READ 4
-#define BL_MODE_DROM_READ 5
-
-
-struct dsp_section {
- uint32_t addr; /* addr for DSP */
- uint32_t size; /* size in words */
- const uint16_t *data;
-};
-
-#include "dsp_params.c"
-#include "dsp_bootcode.c"
-#include "dsp_dumpcode.c"
-
-struct dsp_api dsp_api = {
- .ndb = (T_NDB_MCU_DSP *) BASE_API_NDB,
- .db_r = (T_DB_DSP_TO_MCU *) BASE_API_R_PAGE_0,
- .db_w = (T_DB_MCU_TO_DSP *) BASE_API_W_PAGE_0,
- .param = (T_PARAM_MCU_DSP *) BASE_API_PARAM,
- .r_page = 0,
- .w_page = 0,
-};
-
-
-void dsp_dump_version(void)
-{
- printf("DSP Download Status: 0x%04x\n", readw(BL_CMD_STATUS));
- printf("DSP API Version: 0x%04x 0x%04x\n",
- dsp_api.ndb->d_version_number1, dsp_api.ndb->d_version_number2);
-}
-
-static void dsp_bl_wait_ready(void)
-{
- while (readw(BL_CMD_STATUS) != BL_STATUS_IDLE);
-}
-
-static void dsp_bl_start_at(uint16_t addr)
-{
- writew(0, BL_ADDR_HI);
- writew(addr, BL_ADDR_LO);
- writew(0, BL_SIZE);
- writew(BL_CMD_COPY_BLOCK, BL_CMD_STATUS);
-}
-
-static int dsp_bl_upload_sections(const struct dsp_section *sec)
-{
- /* Make sure the bootloader is ready */
- dsp_bl_wait_ready();
-
- /* Set mode */
- writew(BL_MODE_DATA_WRITE, BASE_API_RAM);
- writew(BL_CMD_COPY_MODE, BL_CMD_STATUS);
- dsp_bl_wait_ready();
-
- /* Scan all sections */
- for (; sec->data; sec++) {
- volatile uint16_t *api = (volatile uint16_t *)BASE_API_RAM;
- unsigned int i;
-
- if (sec->size > BL_MAX_BLOCK_SIZE)
- return -1; /* not supported for now */
-
- /* Copy data to API */
- for (i=0; i<sec->size; i++)
- api[i] = sec->data[i];
-
- /* Issue DRAM write */
- writew(sec->addr >> 16, BL_ADDR_HI);
- writew(sec->addr & 0xffff, BL_ADDR_LO);
- writew(sec->size, BL_SIZE);
- writew(BL_CMD_COPY_BLOCK, BL_CMD_STATUS);
-
- /* Wait for completion */
- dsp_bl_wait_ready();
- }
-
- return 0;
-}
-
-static int dsp_upload_sections_api(const struct dsp_section *sec, uint16_t dsp_base_api)
-{
- for (; sec->data; sec++) {
- unsigned int i;
- volatile uint16_t *dptr;
-
- if (sec->addr & ~((1<<16)-1)) /* 64k max addr */
- return -1;
- if (sec->addr < dsp_base_api)
- return -1;
- if ((sec->addr + sec->size) > (dsp_base_api + API_SIZE))
- return -1;
-
- dptr = (volatile uint16_t *)(BASE_API_RAM + ((sec->addr - dsp_base_api) * sizeof(uint16_t)));
- for (i=0; i<sec->size; i++)
- *dptr++ = sec->data[i];
- }
-
- /* FIXME need eioio or wb ? */
-
- return 0;
-}
-
-static void dsp_pre_boot(const struct dsp_section *bootcode)
-{
- dputs("Assert DSP into Reset\n");
- calypso_reset_set(RESET_DSP, 1);
-
- if (bootcode) {
- dputs("Loading initial DSP bootcode (API boot mode)\n");
- dsp_upload_sections_api(bootcode, DSP_BASE_API_MIRROR);
-
- writew(BL_STATUS_NA, BL_CMD_STATUS);
- } else
- delay_ms(10);
-
- dputs("Releasing DSP from Reset\n");
- calypso_reset_set(RESET_DSP, 0);
-
- /* Wait 10 us */
- delay_ms(100);
-
- dsp_bl_wait_ready();
-}
-
-static void dsp_set_params(int16_t *param_tab, int param_size)
-{
- int i;
- int16_t *param_ptr = (int16_t *) BASE_API_PARAM;
-
- /* Start DSP up to bootloader */
- dsp_pre_boot(dsp_bootcode);
-
- /* FIXME: Implement Patch download, if any */
-
- dputs("Setting some dsp_api.ndb values\n");
- dsp_api.ndb->d_background_enable = 0;
- dsp_api.ndb->d_background_abort = 0;
- dsp_api.ndb->d_background_state = 0;
- dsp_api.ndb->d_debug_ptr = 0x0074;
- dsp_api.ndb->d_debug_bk = 0x0001;
- dsp_api.ndb->d_pll_config = 0x154; //C_PLL_CONFIG;
- dsp_api.ndb->p_debug_buffer = 0x17ff; //C_DEBUG_BUFFER_ADD;
- dsp_api.ndb->d_debug_buffer_size = 7; //C_DEBUG_BUFFER_SIZE;
- dsp_api.ndb->d_debug_trace_type = 0; //C_DEBUG_TRACE_TYPE;
- dsp_api.ndb->d_dsp_state = 3; //C_DSP_IDLE3;
- dsp_api.ndb->d_audio_gain_ul = 0;
- dsp_api.ndb->d_audio_gain_dl = 0;
- dsp_api.ndb->d_es_level_api = 0x5213;
- dsp_api.ndb->d_mu_api = 0x5000;
-
- dputs("Setting API NDB parameters\n");
- for (i = 0; i < param_size; i ++)
- *param_ptr++ = param_tab[i];
-
- dsp_dump_version();
-
- dputs("Finishing download phase\n");
- dsp_bl_start_at(DSP_START);
-
- dsp_dump_version();
-}
-
-void dsp_api_memset(uint16_t *ptr, int octets)
-{
- uint16_t i;
- for (i = 0; i < octets / sizeof(uint16_t); i++)
- *ptr++ = 0;
-}
-
-/* memcpy from RAM to DSP API, 16 bits by 16 bits. If odd byte count, last word will
- * be zero filled */
-void dsp_memcpy_to_api(volatile uint16_t *dsp_buf, const uint8_t *mcu_buf, int n, int be)
-{
- int odd, i;
-
- odd = n & 1;
- n >>= 1;
-
- if (be) {
- for (i=0; i<n; i++) {
- uint16_t w;
- w = *(mcu_buf++) << 8;
- w |= *(mcu_buf++);
- *(dsp_buf++) = w;
- }
- if (odd)
- *dsp_buf = *mcu_buf << 8;
- } else {
- for (i=0; i<n; i++) {
- uint16_t w;
- w = *(mcu_buf++);
- w |= *(mcu_buf++) << 8;
- *(dsp_buf++) = w;
- }
- if (odd)
- *dsp_buf = *mcu_buf;
- }
-}
-
-/* memcpy from DSP API to RAM, accessing API 16 bits word at a time */
-void dsp_memcpy_from_api(uint8_t *mcu_buf, const volatile uint16_t *dsp_buf, int n, int be)
-{
- int odd, i;
-
- odd = n & 1;
- n >>= 1;
-
- if (be) {
- for (i=0; i<n; i++) {
- uint16_t w = *(dsp_buf++);
- *(mcu_buf++) = w >> 8;
- *(mcu_buf++) = w;
- }
- if (odd)
- *mcu_buf = *(dsp_buf++) >> 8;
- } else {
- for (i=0; i<n; i++) {
- uint16_t w = *(dsp_buf++);
- *(mcu_buf++) = w;
- *(mcu_buf++) = w >> 8;
- }
- if (odd)
- *mcu_buf = *(dsp_buf++);
- }
-}
-
-static void dsp_audio_init(void)
-{
- T_NDB_MCU_DSP *ndb = dsp_api.ndb;
- uint8_t i;
-
- ndb->d_vbctrl1 = ABB_VAL_T(VBCTRL1, 0x00B); /* VULSWITCH=0, VDLAUX=1, VDLEAR=1 */
- ndb->d_vbctrl2 = ABB_VAL_T(VBCTRL2, 0x000); /* MICBIASEL=0, VDLHSO=0, MICAUX=0 */
-
- /*
- * TODO: the following two settings are used to control
- * the volume and uplink/downlink/sidetone gain. Make them
- * adjustable by the user.
- */
-
- ndb->d_vbuctrl = ABB_VAL_T(VBUCTRL, 0x009); /* Uplink gain amp 3dB, Sidetone gain -5dB */
- ndb->d_vbdctrl = ABB_VAL_T(VBDCTRL, 0x066); /* Downlink gain amp 0dB, Volume control -6 dB */
-
- ndb->d_toneskb_init = 0; /* MCU/DSP audio task com. register */
- ndb->d_toneskb_status = 0; /* MCU/DSP audio task com. register */
-
- ndb->d_shiftul = 0x100;
- ndb->d_shiftdl = 0x100;
-
- ndb->d_melo_osc_used = 0;
- ndb->d_melo_osc_active = 0;
-
-#define SC_END_OSCILLATOR_MASK 0xfffe
-
- ndb->a_melo_note0[0] = SC_END_OSCILLATOR_MASK;
- ndb->a_melo_note1[0] = SC_END_OSCILLATOR_MASK;
- ndb->a_melo_note2[0] = SC_END_OSCILLATOR_MASK;
- ndb->a_melo_note3[0] = SC_END_OSCILLATOR_MASK;
- ndb->a_melo_note4[0] = SC_END_OSCILLATOR_MASK;
- ndb->a_melo_note5[0] = SC_END_OSCILLATOR_MASK;
- ndb->a_melo_note6[0] = SC_END_OSCILLATOR_MASK;
- ndb->a_melo_note7[0] = SC_END_OSCILLATOR_MASK;
-
-#define MAX_FIR_COEF 31
-
- /* Initialize the FIR as an all band pass */
- dsp_api.param->a_fir31_downlink[0] = 0x4000;
- dsp_api.param->a_fir31_uplink[0] = 0x4000;
- for (i = 1; i < MAX_FIR_COEF; i++)
- {
- dsp_api.param->a_fir31_downlink[i] = 0;
- dsp_api.param->a_fir31_uplink[i] = 0;
- }
-
-#define B_GSM_ONLY ((1L << 13) | (1L << 11)) /* GSM normal mode */
-#define B_BT_CORDLESS (1L << 12) /* Bluetooth cordless mode */
-#define B_BT_HEADSET (1L << 14) /* Bluetooth headset mode */
-
- /* Bit set by the MCU to close the loop between the audio UL and DL path. */
- /* This features is used to find the FIR coefficient. */
-#define B_FIR_LOOP (1L << 1)
-
- /* Reset the FIR loopback and the audio mode */
- ndb->d_audio_init &= ~(B_FIR_LOOP | B_GSM_ONLY | B_BT_HEADSET | B_BT_CORDLESS);
-
- /* Set the GSM mode */
- ndb->d_audio_init |= (B_GSM_ONLY);
-
- ndb->d_aec_ctrl = 0;
-
- /* DSP background task through pending task queue */
- dsp_api.param->d_gsm_bgd_mgt = 0;
-
- ndb->d_audio_compressor_ctrl = 0x0401;
-
-#define NO_MELODY_SELECTED (0)
-
- ndb->d_melody_selection = NO_MELODY_SELECTED;
-}
-
-static void dsp_ndb_init(void)
-{
- T_NDB_MCU_DSP *ndb = dsp_api.ndb;
- uint8_t i;
-
- #define APCDEL_DOWN (2+0) // minimum value: 2
- #define APCDEL_UP (6+3+1) // minimum value: 6
-
- /* load APC ramp: set to "no ramp" so that there will be no output if
- * not properly initialised at some other place. */
- for (i = 0; i < 16; i++)
- dsp_api.ndb->a_ramp[i] = ABB_VAL(APCRAM, ABB_RAMP_VAL(0, 0));
-
- /* Iota registers values will be programmed at 1st DSP communication interrupt */
-
- /* Enable f_tx delay of 400000 cyc DEBUG */
- ndb->d_debug1 = ABB_VAL_T(0, 0x000);
- ndb->d_afcctladd= ABB_VAL_T(AFCCTLADD, 0x000); // Value at reset
- ndb->d_vbuctrl = ABB_VAL_T(VBUCTRL, 0x0C9); // Uplink gain amp 0dB, Sidetone gain to mute
- ndb->d_vbdctrl = ABB_VAL_T(VBDCTRL, 0x006); // Downlink gain amp 0dB, Volume control 0 dB
- ndb->d_bbctrl = ABB_VAL_T(BBCTRL, 0x2C1); // value at reset
- ndb->d_bulgcal = ABB_VAL_T(BULGCAL, 0x000); // value at reset
- ndb->d_apcoff = ABB_VAL_T(APCOFF, 0x040); // value at reset
- ndb->d_bulioff = ABB_VAL_T(BULIOFF, 0x0FF); // value at reset
- ndb->d_bulqoff = ABB_VAL_T(BULQOFF, 0x0FF); // value at reset
- ndb->d_dai_onoff= ABB_VAL_T(APCOFF, 0x000); // value at reset
- ndb->d_auxdac = ABB_VAL_T(AUXDAC, 0x000); // value at reset
- ndb->d_vbctrl1 = ABB_VAL_T(VBCTRL1, 0x00B); // VULSWITCH=0, VDLAUX=1, VDLEAR=1.
- ndb->d_vbctrl2 = ABB_VAL_T(VBCTRL2, 0x000); // MICBIASEL=0, VDLHSO=0, MICAUX=0
-
- /* APCDEL will be initialized on rach only */
- ndb->d_apcdel1 = ABB_VAL_T(APCDEL1, ((APCDEL_DOWN-2) << 5) | (APCDEL_UP-6));
- ndb->d_apcdel2 = ABB_VAL_T(APCDEL2, 0x000);
-
- ndb->d_fb_mode = 1; /* mode 1 FCCH burst detection */
- ndb->d_fb_det = 0; /* we have not yet detected a FB */
- ndb->a_cd[0] = (1<<B_FIRE1); /* CCCH/SACCH downlink */
- ndb->a_dd_0[0] = 0;
- ndb->a_dd_0[2] = 0xffff;
- ndb->a_dd_1[0] = 0;
- ndb->a_dd_1[2] = 0xffff;
- ndb->a_du_0[0] = 0;
- ndb->a_du_0[2] = 0xffff;
- ndb->a_du_1[0] = 0;
- ndb->a_du_1[2] = 0xffff;
- ndb->a_fd[0] = (1<<B_FIRE1);
- ndb->a_fd[2] = 0xffff;
- ndb->d_a5mode = 0;
- ndb->d_tch_mode = 0x0800; /* Set ABB model to Iota */
-
- #define GUARD_BITS 8 // 11 or 9 for TSM30, 7 for Freerunner
- ndb->d_tch_mode |= (((GUARD_BITS - 4) & 0x000F) << 7); //Bit 7..10: guard bits
-
- ndb->a_sch26[0] = (1<<B_SCH_CRC);
-
- /* Interrupt RIF transmit if FIFO <= threshold with threshold == 0 */
- /* MCM = 1, XRST = 0, CLKX_AUTO=1, TXM=1, NCLK_EN=1, NCLK13_EN=1,
- * THRESHOLD = 0, DIV_CLK = 0 (13MHz) */
- ndb->d_spcx_rif = 0x179;
-
- /* Init audio related parameters */
- dsp_audio_init();
-}
-
-static void dsp_db_init(void)
-{
- dsp_api_memset((uint16_t *)BASE_API_W_PAGE_0, sizeof(T_DB_MCU_TO_DSP));
- dsp_api_memset((uint16_t *)BASE_API_W_PAGE_1, sizeof(T_DB_MCU_TO_DSP));
- dsp_api_memset((uint16_t *)BASE_API_R_PAGE_0, sizeof(T_DB_DSP_TO_MCU));
- dsp_api_memset((uint16_t *)BASE_API_R_PAGE_1, sizeof(T_DB_DSP_TO_MCU));
-}
-
-void dsp_power_on(void)
-{
- /* probably a good idea to initialize the whole API area to a known value */
- dsp_api_memset((uint16_t *)BASE_API_RAM, API_SIZE * 2); // size is in words
-
- dsp_set_params((int16_t *)&dsp_params, sizeof(dsp_params)/2);
- dsp_ndb_init();
- dsp_db_init();
- dsp_api.frame_ctr = 0;
- dsp_api.r_page = dsp_api.w_page = dsp_api.r_page_used = 0;
-}
-
-/* test for frequency burst detection */
-#define REG_INT_STAT 0xffff1004
-static void wait_for_frame_irq(void)
-{
- //puts("Waiting for Frame Interrupt");
- //while (readb(REG_INT_STAT) & 1)
- while (readb((void *)0xffff1000) & (1<<4))
- ;// putchar('.');
- //puts("Done!\n");
-}
-
-void dsp_end_scenario(void)
-{
- /* FIXME: we don't yet deal with the MISC_TASK */
-
- /* End the DSP Scenario */
- dsp_api.ndb->d_dsp_page = B_GSM_TASK | dsp_api.w_page;
- dsp_api.w_page ^= 1;
-
- /* Tell TPU to generate a FRAME interrupt to the DSP */
- tpu_dsp_frameirq_enable();
- tpu_frame_irq_en(1, 1);
-}
-
-void dsp_load_rx_task(uint16_t task, uint8_t burst_id, uint8_t tsc)
-{
- dsp_api.db_w->d_task_d = task;
- dsp_api.db_w->d_burst_d = burst_id;
- dsp_api.db_w->d_ctrl_system |= tsc & 0x7;
-}
-
-void dsp_load_tx_task(uint16_t task, uint8_t burst_id, uint8_t tsc)
-{
- dsp_api.db_w->d_task_u = task;
- dsp_api.db_w->d_burst_u = burst_id;
- dsp_api.db_w->d_ctrl_system |= tsc & 0x7;
-}
-
-/* no AMR yet */
-void dsp_load_tch_param(struct gsm_time *next_time,
- uint8_t chan_mode, uint8_t chan_type, uint8_t chan_sub,
- uint8_t tch_loop, uint8_t sync_tch, uint8_t tn)
-{
- uint16_t d_ctrl_tch;
- uint16_t fn, a5fn0, a5fn1;
-
- /* d_ctrl_tch
- ----------
- bit [0..3] -> b_chan_mode
- bit [4..7] -> b_chan_type
- bit [8] -> b_sync_tch_ul
- bit [9] -> b_sync_tch_dl
- bit [10] -> b_stop_tch_ul
- bit [11] -> b_stop_tch_dl
- bit [12..14] -> b_tch_loop
- bit [15] -> b_subchannel */
- d_ctrl_tch = (chan_mode << B_CHAN_MODE) |
- (chan_type << B_CHAN_TYPE) |
- (chan_sub << B_SUBCHANNEL) |
- (sync_tch << B_SYNC_TCH_UL) |
- (sync_tch << B_SYNC_TCH_DL) |
- (tch_loop << B_TCH_LOOP);
-
- /* used for ciphering and TCH traffic */
-
- /* d_fn
- ----
-
- for TCH_F:
- bit [0..7] -> b_fn_report = (fn - (tn * 13) + 104) % 104)
- bit [8..15] -> b_fn_sid = (fn % 104)
-
- for TCH_H:
- tn_report = (tn & ~1) | subchannel
- bit [0..7] -> b_fn_report = (fn - tn_report * 13) + 104) % 104)
- bit [8..15] -> b_fn_sid = (fn % 104)
-
- for other: irrelevant
- */
-
- if (chan_type == TCH_F) {
- fn = ((next_time->fn - (tn * 13) + 104) % 104) |
- ((next_time->fn % 104) << 8);
- } else if (chan_type == TCH_H) {
- uint8_t tn_report = (tn & ~1) | chan_sub;
- fn = ((next_time->fn - (tn_report * 13) + 104) % 104) |
- ((next_time->fn % 104) << 8);
- } else {
- /* irrelevant */
- fn = 0;
- }
-
- /* a_a5fn
- ------
- byte[0] bit [0..4] -> T2
- byte[0] bit [5..10] -> T3
- byte[1] bit [0..10] -> T1 */
-
- a5fn0 = ((uint16_t)next_time->t3 << 5) |
- (uint16_t)next_time->t2;
- a5fn1 = (uint16_t)next_time->t1;
-
- dsp_api.db_w->d_fn = fn; /* Fn_sid & Fn_report */
- dsp_api.db_w->a_a5fn[0] = a5fn0; /* ciphering FN part 1 */
- dsp_api.db_w->a_a5fn[1] = a5fn1; /* ciphering FN part 2 */
- dsp_api.db_w->d_ctrl_tch = d_ctrl_tch; /* Channel config. */
-}
-
-void dsp_load_ciph_param(int mode, uint8_t *key)
-{
- dsp_api.ndb->d_a5mode = mode;
-
- if (!mode || !key)
- return;
-
- /* key is expected in the same format as in RSL
- * Encryption information IE. So we need to load the
- * bytes backward in A5 unit */
- dsp_api.ndb->a_kc[0] = (uint16_t)key[7] | ((uint16_t)key[6] << 8);
- dsp_api.ndb->a_kc[1] = (uint16_t)key[5] | ((uint16_t)key[4] << 8);
- dsp_api.ndb->a_kc[2] = (uint16_t)key[3] | ((uint16_t)key[2] << 8);
- dsp_api.ndb->a_kc[3] = (uint16_t)key[1] | ((uint16_t)key[0] << 8);
-}
-
-#define SC_CHKSUM_VER (BASE_API_W_PAGE_0 + (2 * (0x08DB - 0x800)))
-static void dsp_dump_csum(void)
-{
- printf("dsp page : %u\n", dsp_api.ndb->d_dsp_page);
- printf("dsp code version : 0x%04x\n", dsp_api.db_r->a_pm[0]);
- printf("dsp checksum : 0x%04x\n", dsp_api.db_r->a_pm[1]);
- printf("dsp patch version : 0x%04x\n", readw(SC_CHKSUM_VER));
-}
-
-void dsp_checksum_task(void)
-{
- dsp_dump_csum();
- dsp_api.db_w->d_task_md = CHECKSUM_DSP_TASK;
- dsp_api.ndb->d_fb_mode = 1;
-
- dsp_end_scenario();
-
- wait_for_frame_irq();
-
- dsp_dump_csum();
-}
-
-#define L1D_AUXAPC 0x0012
-#define L1D_APCRAM 0x0014
-
-void dsp_load_apc_dac(uint16_t apc)
-{
- dsp_api.db_w->d_power_ctl = (apc << 6) | L1D_AUXAPC;
-}
-
-
-static void _dsp_dump_range(uint32_t addr, uint32_t size, int mode)
-{
- uint32_t bs;
-
- /* Mode selection */
- writew(mode, BASE_API_RAM);
- writew(BL_CMD_COPY_MODE, BL_CMD_STATUS);
- dsp_bl_wait_ready();
-
- /* Block by block dump */
- while (size) {
- volatile uint16_t *api = (volatile uint16_t *)BASE_API_RAM;
-
- bs = (size > BL_MAX_BLOCK_SIZE) ? BL_MAX_BLOCK_SIZE : size;
- size -= bs;
-
- writew(addr >> 16, BL_ADDR_HI);
- writew(addr & 0xffff, BL_ADDR_LO);
- writew(bs, BL_SIZE);
- writew(BL_CMD_COPY_BLOCK, BL_CMD_STATUS);
-
- dsp_bl_wait_ready();
-
- while (bs--) {
- /* FIXME workaround: small delay to prevent overflowing
- * the sercomm buffer */
- delay_ms(2);
- if ((addr&15)==0)
- printf("%05x : ", addr);
- printf("%04hx%c", *api++, ((addr&15)==15)?'\n':' ');
- addr++;
- }
- };
- puts("\n");
-}
-
-void dsp_dump(void)
-{
- static const struct {
- const char *name;
- uint32_t addr;
- uint32_t size;
- int mode;
- } dr[] = {
- { "Registers", 0x00000, 0x0060, BL_MODE_DATA_READ },
- { "DROM", 0x09000, 0x5000, BL_MODE_DROM_READ },
- { "PDROM", 0x0e000, 0x2000, BL_MODE_DROM_READ },
- { "PROM0", 0x07000, 0x7000, BL_MODE_PROM_READ },
- { "PROM1", 0x18000, 0x8000, BL_MODE_PROM_READ },
- { "PROM2", 0x28000, 0x8000, BL_MODE_PROM_READ },
- { "PROM3", 0x38000, 0x2000, BL_MODE_PROM_READ },
- { NULL, 0, 0, -1 }
- };
-
- int i;
-
- /* Start DSP up to bootloader */
- dsp_pre_boot(dsp_bootcode);
-
- /* Load and execute our dump code in the DSP */
- dsp_upload_sections_api(dsp_dumpcode, DSP_BASE_API);
- dsp_bl_start_at(DSP_DUMPCODE_START);
-
- /* our dump code actually simulates the boot loader
- * but with added read commands */
- dsp_bl_wait_ready();
-
- /* Test the 'version' command */
- writew(0xffff, BL_CMD_STATUS);
- dsp_bl_wait_ready();
- printf("DSP bootloader version 0x%04x\n", readw(BASE_API_RAM));
-
- /* Dump each range */
- for (i=0; dr[i].name; i++) {
- printf("DSP dump: %s [%05x-%05x]\n", dr[i].name,
- dr[i].addr, dr[i].addr+dr[i].size-1);
- _dsp_dump_range(dr[i].addr, dr[i].size, dr[i].mode);
- }
-}
-
diff --git a/Src/osmoconbb/src/target/firmware/calypso/dsp_bootcode.c b/Src/osmoconbb/src/target/firmware/calypso/dsp_bootcode.c
deleted file mode 100644
index 2db4656..0000000
--- a/Src/osmoconbb/src/target/firmware/calypso/dsp_bootcode.c
+++ /dev/null
@@ -1,9 +0,0 @@
-/* Calypso integrated DSP boot code */
-
-#define _SA_DECL (const uint16_t *)&(const uint16_t [])
-
-/* We don't really need any DSP boot code, it happily works with its own ROM */
-static const struct dsp_section *dsp_bootcode = NULL;
-
-#undef _SA_DECL
-
diff --git a/Src/osmoconbb/src/target/firmware/calypso/dsp_dumpcode.c b/Src/osmoconbb/src/target/firmware/calypso/dsp_dumpcode.c
deleted file mode 100644
index 265a1c1..0000000
--- a/Src/osmoconbb/src/target/firmware/calypso/dsp_dumpcode.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Generated from src/target_dsp/calypso/dsp_dump.bin */
-
-#define _SA_DECL (const uint16_t *)&(const uint16_t [])
-
-static const struct dsp_section dsp_dumpcode[] = {
- {
- .addr = 0x1000,
- .size = 0x005b,
- .data = _SA_DECL {
- 0x69f8, 0x0029, 0x0002, 0xea1f,
- 0x7718, 0x1100, 0x7714, 0x0000,
- 0x7712, 0x0800, 0x767f, 0x0001,
- 0x607f, 0xffff, 0xf820, 0x1014,
- 0xf273, 0x1008, 0x7682, 0x0100,
- 0x607f, 0x0004, 0xf820, 0x101c,
- 0xf273, 0x1008, 0x7214, 0x0800,
- 0x607f, 0x0002, 0xf820, 0x100c,
- 0x127e, 0x8813, 0x3c7c, 0x137d,
- 0x8911, 0xf84c, 0x1028, 0xf4e2,
- 0x7715, 0x0014, 0x963d, 0xfa30,
- 0x104b, 0x6d89, 0x963f, 0xfa30,
- 0x103f, 0x963e, 0xf495, 0xf830,
- 0x103a, 0x47f8, 0x0011, 0x7f92,
- 0xf073, 0x1008, 0x47f8, 0x0011,
- 0x7e92, 0xf073, 0x1008, 0xf830,
- 0x1046, 0x47f8, 0x0011, 0xe589,
- 0xf073, 0x1008, 0x47f8, 0x0011,
- 0xe598, 0xf073, 0x1008, 0x4911,
- 0x891a, 0xf830, 0x1055, 0xf072,
- 0x1052, 0xf074, 0x7213, 0xf073,
- 0x1008, 0xf072, 0x1058, 0xf074,
- 0xe4b8, 0xf073, 0x1008,
- },
- },
- { /* Guard */
- .addr = 0,
- .size = 0,
- .data = NULL,
- },
-};
-
-#define DSP_DUMPCODE_START 0x1000
-
-#undef _SA_DECL
-
diff --git a/Src/osmoconbb/src/target/firmware/calypso/dsp_params.c b/Src/osmoconbb/src/target/firmware/calypso/dsp_params.c
deleted file mode 100644
index e08b46e..0000000
--- a/Src/osmoconbb/src/target/firmware/calypso/dsp_params.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/* Values from an actual phone firmware that uses the 3306 DSP ROM code version */
-static T_PARAM_MCU_DSP dsp_params = {
- .d_transfer_rate = 0x6666,
- /* Latencies */
- .d_lat_mcu_bridge = 15,
- .d_lat_mcu_hom2sam = 12,
- .d_lat_mcu_bef_fast_access = 5,
- .d_lat_dsp_after_sam = 4,
- /* DSP Start Address */
- .d_gprs_install_address = 0x7002, /* needs to be set by patch or manually */
- .d_misc_config = 1,
- .d_cn_sw_workaround = 0xE,
- .d_hole2_param = { 0, 0, 0, 0 },
- /* Frequency Burst */
- .d_fb_margin_beg = 24,
- .d_fb_margin_end = 22,
- .d_nsubb_idle = 296,
- .d_nsubb_dedic = 30,
- .d_fb_thr_det_iacq = 0x3333,
- .d_fb_thr_det_track = 0x28f6,
- /* Demodulation */
- .d_dc_off_thres = 0x7fff,
- .d_dummy_thres = 17408,
- .d_dem_pond_gewl = 26624,
- .d_dem_pond_red = 20152,
- /* TCH Full Speech */
- .d_maccthresh1 = 7872,
- .d_mldt = -4,
- .d_maccthresh = 7872,
- .d_gu = 5772,
- .d_go = 7872,
- .d_attmax = 53,
- .d_sm = -892,
- .d_b = 208,
- /* V.42 bis */
- .d_v42b_switch_hyst = 16,
- .d_v42b_switch_min = 64,
- .d_v42b_switch_max = 250,
- .d_v42b_reset_delay = 10,
- /* TCH Half Speech */
- .d_ldT_hr = -5,
- .d_maccthresh_hr = 6500,
- .d_maccthresh1_hr = 6500,
- .d_gu_hr = 2620,
- .d_go_hr = 3700,
- .d_b_hr = 182,
- .d_sm_hr = -1608,
- .d_attmax_hr = 53,
- /* TCH Enhanced FR Speech */
- .c_mldt_efr = -4,
- .c_maccthresh_efr = 8000,
- .c_maccthresh1_efr = 8000,
- .c_gu_efr = 4522,
- .c_go_efr = 6500,
- .c_b_efr = 174,
- .c_sm_efr = -878,
- .c_attmax_efr = 53,
- /* CHED TCH Full Speech */
- .d_sd_min_thr_tchfs = 15,
- .d_ma_min_thr_tchfs = 738,
- .d_md_max_thr_tchfs = 1700,
- .d_md1_max_thr_tchfs = 99,
- /* CHED TCH Half Speech */
- .d_sd_min_thr_tchhs = 37,
- .d_ma_min_thr_tchhs = 344,
- .d_sd_av_thr_tchhs = 1845,
- .d_md_max_thr_tchhs = 2175,
- .d_md1_max_thr_tchhs = 138,
- /* CHED TCH/F EFR Speech */
- .d_sd_min_thr_tchefs = 15,
- .d_ma_min_thr_tchefs = 738,
- .d_md_max_thr_tchefs = 0x4ce,
- .d_md1_max_thr_tchefs = 0x63,
- /* */
- .d_wed_fil_ini = 0x122a,
- .d_wed_fil_tc = 0x7c00,
- .d_x_min = 0xf,
- .d_x_max = 0x17,
- .d_slope = 0x87,
- .d_y_min = 0x2bf,
- .d_y_max = 0x99c,
- .d_wed_diff_threshold = 0x196,
- .d_mabfi_min_thr_tchhs = 0x14c8,
- /* FACCH module */
- .d_facch_thr = 0,
- /* IDS module */
- .d_max_ovsp_ul = 8,
- .d_sync_thres = 0x3f50,
- .d_idle_thres = 0x4000,
- .d_m1_thres = 5,
- .d_max_ovsp_dl = 8,
- .d_gsm_bgd_mgt = 0,
- /* we don't set the FIR coefficients !?! */
-};
diff --git a/Src/osmoconbb/src/target/firmware/calypso/du.c b/Src/osmoconbb/src/target/firmware/calypso/du.c
deleted file mode 100644
index 58783b0..0000000
--- a/Src/osmoconbb/src/target/firmware/calypso/du.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Calypso DU (Debug Unit) Driver */
-
-/* (C) 2010 by Ingo Albrecht <prom@berlin.ccc.de>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <memory.h>
-#include <stdint.h>
-#include <stdio.h>
-
-#include <calypso/du.h>
-
-#define BASE_ADDR_DU 0x03c00000
-#define DU_REG(m) (BASE_ADDR_DU+(m))
-
-void calypso_du_init() {
- unsigned char c;
- calypso_debugunit(1);
- for(c = 0; c < 64; c++) {
- writew(DU_REG(c), 0x00000000);
- }
-}
-
-void calypso_du_stop() {
- calypso_debugunit(0);
-}
-
-void calypso_du_dump() {
- unsigned char c;
- puts("Debug unit traceback:\n");
- for(c = 0; c < 64; c++) {
- uint32_t w = readw(DU_REG(c));
- printf("t-%2x: 0x%8x\n", c, (unsigned int)w);
- }
-}
diff --git a/Src/osmoconbb/src/target/firmware/calypso/i2c.c b/Src/osmoconbb/src/target/firmware/calypso/i2c.c
deleted file mode 100644
index 344424d..0000000
--- a/Src/osmoconbb/src/target/firmware/calypso/i2c.c
+++ /dev/null
@@ -1,123 +0,0 @@
-/* Driver for I2C Master Controller inside TI Calypso */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-
-#include <debug.h>
-#include <memory.h>
-#include <i2c.h>
-
-#define BASE_ADDR_I2C 0xfffe2800
-#define I2C_REG(x) (BASE_ADDR_I2C+(x))
-
-enum i2c_reg {
- DEVICE_REG = 0,
- ADDRESS_REG,
- DATA_WR_REG,
- DATA_RD_REG,
- CMD_REG,
- CONF_FIFO_REG,
- CONF_CLK_REG,
- CONF_CLK_FUNC_REF,
- STATUS_FIFO_REG,
- STATUS_ACTIVITY_REG,
-};
-
-#define I2C_CMD_SOFT_RESET (1 << 0)
-#define I2C_CMD_EN_CLK (1 << 1)
-#define I2C_CMD_START (1 << 2)
-#define I2C_CMD_RW_READ (1 << 3)
-#define I2C_CMD_COMP_READ (1 << 4)
-#define I2C_CMD_IRQ_ENABLE (1 << 5)
-
-#define I2C_STATUS_ERROR_DATA (1 << 0)
-#define I2C_STATUS_ERROR_DEV (1 << 1)
-#define I2C_STATUS_IDLE (1 << 2) // 1: not idle, 0: idle
-#define I2C_STATUS_INTERRUPT (1 << 3)
-
-int i2c_write(uint8_t chip, uint32_t addr, int alen, const uint8_t *buffer, int len)
-{
- uint8_t cmd;
-
- /* Calypso I2C controller doesn't support fancy addressing */
- if (alen > 1)
- return -1;
-
- /* FIXME: implement writes longer than fifo size */
- if (len > 16)
- return -1;
-
- printd("i2c_write(chip=0x%02u, addr=0x%02u): ", chip, addr)
-
- writeb(chip & 0x3f, I2C_REG(DEVICE_REG));
- writeb(addr & 0xff, I2C_REG(ADDRESS_REG));
-
- /* we have to tell the controller how many bits we'll put into the fifo ?!? */
- writeb(len-1, I2C_REG(CONF_FIFO_REG));
-
- /* fill the FIFO */
- while (len--) {
- uint8_t byte = *buffer++;
- writeb(byte, I2C_REG(DATA_WR_REG));
- printd("%02X ", byte);
- }
- dputchar('\n');
-
- /* start the transfer */
- cmd = readb(I2C_REG(CMD_REG));
- cmd |= I2C_CMD_START;
- writeb(cmd, I2C_REG(CMD_REG));
-
- /* wait until transfer completes */
- while (1) {
- uint8_t reg = readb(I2C_REG(STATUS_ACTIVITY_REG));
- printd("I2C Status: 0x%02x\n", rerg & 0xf);
- if (!(reg & I2C_STATUS_IDLE)) // 0: idle 1: not idle
- break;
- }
- dputs("I2C transfer completed\n");
-
- return 0;
-}
-
-void i2c_init(int speed, int slaveadd)
-{
- /* scl_out = clk_func_ref / 3,
- clk_func_ref = master_clock_freq / (divisor_2 + 1)
- master_clock_freq = ext_clock_freq / divisor_1 */
- /* clk_func_ref = scl_out * 3,
- divisor_2 = (master_clock_freq / clk_func_ref) - 1
- divisor_1 = ext_clock_freq / master_clock_freq */
- /* for a target freq of 200kHz:
- ext_clock_freq = 13MHz
- clk_func_ref = 3 * 300kHZ = 600kHz
- divisor_1 = 1 => master_clock_freq = ext_clock_freq = 13MHz
- divisor_2 = 21 => clk_func_ref = 13MHz / (21+2) = 590.91 kHz
- scl_out = clk_func_ref / 3 = 509.91 kHz / 3 = 196.97kHz */
- writeb(I2C_CMD_SOFT_RESET, I2C_REG(CMD_REG));
-
- writeb(0x00, I2C_REG(CONF_CLK_REG));
- writeb(21, I2C_REG(CONF_CLK_FUNC_REF));
-
- writeb(I2C_CMD_EN_CLK, I2C_REG(CMD_REG));
-}
diff --git a/Src/osmoconbb/src/target/firmware/calypso/irq.c b/Src/osmoconbb/src/target/firmware/calypso/irq.c
deleted file mode 100644
index 136fd55..0000000
--- a/Src/osmoconbb/src/target/firmware/calypso/irq.c
+++ /dev/null
@@ -1,266 +0,0 @@
-/* Driver for Calypso IRQ controller */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-
-#include <debug.h>
-#include <memory.h>
-#include <arm.h>
-#include <calypso/irq.h>
-
-#define BASE_ADDR_IRQ 0xfffffa00
-
-enum irq_reg {
- IT_REG1 = 0x00,
- IT_REG2 = 0x02,
- MASK_IT_REG1 = 0x08,
- MASK_IT_REG2 = 0x0a,
- IRQ_NUM = 0x10,
- FIQ_NUM = 0x12,
- IRQ_CTRL = 0x14,
-};
-
-#define ILR_IRQ(x) (0x20 + (x*2))
-#define IRQ_REG(x) ((void *)BASE_ADDR_IRQ + (x))
-
-#define NR_IRQS 32
-
-static uint8_t default_irq_prio[] = {
- [IRQ_WATCHDOG] = 0xff,
- [IRQ_TIMER1] = 0xff,
- [IRQ_TIMER2] = 0xff,
- [IRQ_TSP_RX] = 0,
- [IRQ_TPU_FRAME] = 3,
- [IRQ_TPU_PAGE] = 0xff,
- [IRQ_SIMCARD] = 0xff,
- [IRQ_UART_MODEM] = 8,
- [IRQ_KEYPAD_GPIO] = 4,
- [IRQ_RTC_TIMER] = 9,
- [IRQ_RTC_ALARM_I2C] = 10,
- [IRQ_ULPD_GAUGING] = 2,
- [IRQ_EXTERNAL] = 12,
- [IRQ_SPI] = 0xff,
- [IRQ_DMA] = 0xff,
- [IRQ_API] = 0xff,
- [IRQ_SIM_DETECT] = 0,
- [IRQ_EXTERNAL_FIQ] = 7,
- [IRQ_UART_IRDA] = 2,
- [IRQ_ULPD_GSM_TIMER] = 1,
- [IRQ_GEA] = 0xff,
-};
-
-static irq_handler *irq_handlers[NR_IRQS];
-
-static void _irq_enable(enum irq_nr nr, int enable)
-{
- uint16_t *reg = IRQ_REG(MASK_IT_REG1);
- uint16_t val;
-
- if (nr > 15) {
- reg = IRQ_REG(MASK_IT_REG2);
- nr -= 16;
- }
-
- val = readw(reg);
- if (enable)
- val &= ~(1 << nr);
- else
- val |= (1 << nr);
- writew(val, reg);
-}
-
-void irq_enable(enum irq_nr nr)
-{
- _irq_enable(nr, 1);
-}
-
-void irq_disable(enum irq_nr nr)
-{
- _irq_enable(nr, 0);
-}
-
-void irq_config(enum irq_nr nr, int fiq, int edge, int8_t prio)
-{
- uint16_t val;
-
- if (prio == -1)
- prio = default_irq_prio[nr];
-
- if (prio > 31)
- prio = 31;
-
- val = prio << 2;
- if (edge)
- val |= 0x02;
- if (fiq)
- val |= 0x01;
-
- writew(val, IRQ_REG(ILR_IRQ(nr)));
-}
-
-/* Entry point for interrupts */
-void irq(void)
-{
- uint8_t num, tmp;
- irq_handler *handler;
-
-#if 1
- /* Hardware interrupt detection mode */
- num = readb(IRQ_REG(IRQ_NUM)) & 0x1f;
-
- printd("i%02x\n", num);
-
- handler = irq_handlers[num];
-
- if (handler)
- handler(num);
-#else
- /* Software interrupt detection mode */
- {
- uint16_t it_reg, mask_reg;
- uint32_t irqs;
-
- it_reg = readw(IRQ_REG(IT_REG1));
- mask_reg = readw(IRQ_REG(MASK_IT_REG1));
- irqs = it_reg & ~mask_reg;
-
- it_reg = readw(IRQ_REG(IT_REG2));
- mask_reg = readw(IRQ_REG(MASK_IT_REG2));
- irqs |= (it_reg & ~mask_reg) << 16;
-
- for (num = 0; num < 32; num++) {
- if (irqs & (1 << num)) {
- printd("i%d\n", num);
- handler = irq_handlers[num];
- if (handler)
- handler(num);
- /* clear this interrupt */
- if (num < 16)
- writew(~(1 << num), IRQ_REG(IT_REG1));
- else
- writew(~(1 << (num-16)), IRQ_REG(IT_REG2));
- }
- }
- dputchar('\n');
- }
-#endif
- /* Start new IRQ agreement */
- tmp = readb(IRQ_REG(IRQ_CTRL));
- tmp |= 0x01;
- writeb(tmp, IRQ_REG(IRQ_CTRL));
-}
-
-/* Entry point for FIQs */
-void fiq(void)
-{
- uint8_t num, tmp;
- irq_handler *handler;
-
- num = readb(IRQ_REG(FIQ_NUM)) & 0x1f;
- if (num) {
- printd("f%02x\n", num);
- }
-
- handler = irq_handlers[num];
-
- if (handler)
- handler(num);
-
- /* Start new FIQ agreement */
- tmp = readb(IRQ_REG(IRQ_CTRL));
- tmp |= 0x02;
- writeb(tmp, IRQ_REG(IRQ_CTRL));
-}
-
-void irq_register_handler(enum irq_nr nr, irq_handler *handler)
-{
- if (nr >= NR_IRQS)
- return;
-
- irq_handlers[nr] = handler;
-}
-
-#define BASE_ADDR_IBOOT_EXC 0x0080001C
-extern uint32_t _exceptions;
-
-/* Install the exception handlers to where the ROM loader jumps */
-void calypso_exceptions_install(void)
-{
- uint32_t *exceptions_dst = (uint32_t *) BASE_ADDR_IBOOT_EXC;
- uint32_t *exceptions_src = &_exceptions;
- int i;
-
- for (i = 0; i < 7; i++)
- *exceptions_dst++ = *exceptions_src++;
-
-}
-
-static void set_default_priorities(void)
-{
- unsigned int i;
-
- for (i = 0; i < ARRAY_SIZE(default_irq_prio); i++) {
- uint16_t val;
- uint8_t prio = default_irq_prio[i];
- if (prio > 31)
- prio = 31;
-
- val = readw(IRQ_REG(ILR_IRQ(i)));
- val &= ~(0x1f << 2);
- val |= prio << 2;
- writew(val, IRQ_REG(ILR_IRQ(i)));
- }
-}
-
-static uint32_t irq_nest_mask;
-/* mask off all interrupts that have a lower priority than irq_nr */
-static void mask_all_lower_prio_irqs(enum irq_nr irqnr)
-{
- uint8_t our_prio = readb(IRQ_REG(ILR_IRQ(irqnr))) >> 2;
- int i;
-
- for (i = 0; i < _NR_IRQ; i++) {
- uint8_t prio;
-
- if (i == irqnr)
- continue;
-
- prio = readb(IRQ_REG(ILR_IRQ(i))) >> 2;
- if (prio >= our_prio)
- irq_nest_mask |= (1 << i);
- }
-}
-
-void irq_init(void)
-{
- /* set default priorities */
- set_default_priorities();
- /* mask all interrupts off */
- writew(0xffff, IRQ_REG(MASK_IT_REG1));
- writew(0xffff, IRQ_REG(MASK_IT_REG2));
- /* clear all pending interrupts */
- writew(0, IRQ_REG(IT_REG1));
- writew(0, IRQ_REG(IT_REG2));
- /* enable interrupts globally to the ARM core */
- arm_enable_interrupts();
-}
diff --git a/Src/osmoconbb/src/target/firmware/calypso/keypad.c b/Src/osmoconbb/src/target/firmware/calypso/keypad.c
deleted file mode 100644
index fd4e0ff..0000000
--- a/Src/osmoconbb/src/target/firmware/calypso/keypad.c
+++ /dev/null
@@ -1,198 +0,0 @@
-/* Driver for the keypad attached to the TI Calypso */
-
-/* (C) 2010 by roh <roh@hyte.de>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-
-#include <defines.h>
-#include <debug.h>
-#include <delay.h>
-#include <memory.h>
-#include <keypad.h>
-
-#include <calypso/irq.h>
-#include <abb/twl3025.h>
-
-
-#define KBR_LATCH_REG 0xfffe480a
-#define KBC_REG 0xfffe480c
-#define KBD_GPIO_INT 0xfffe4816
-#define KBD_GPIO_MASKIT 0xfffe4818
-
-static key_handler_t key_handler = NULL;
-
-void emit_key(uint8_t key, uint8_t state)
-{
- printf("key=%u %s\n", key, state == PRESSED ? "pressed" : "released");
-
- if (state == RELEASED)
- if (key == KEY_POWER)
- twl3025_power_off();
-
- if(key_handler) {
- key_handler(key, state);
- }
-}
-
-volatile uint32_t lastbuttons = 0;
-
-#define BTN_TO_KEY(name) \
- ((diff & BTN_##name) == BTN_##name) \
- { \
- key = KEY_##name; \
- diff = diff & ~BTN_##name; \
- state = (buttons & BTN_##name) ? PRESSED : RELEASED; \
- }
-
-void dispatch_buttons(uint32_t buttons)
-{
- uint8_t state;
-
- if (buttons == lastbuttons)
- return;
-
- uint32_t diff = buttons ^ lastbuttons;
- uint8_t key=KEY_INV;
-
- while (diff != 0)
- {
- if BTN_TO_KEY(POWER)
- else if BTN_TO_KEY(0)
- else if BTN_TO_KEY(1)
- else if BTN_TO_KEY(2)
- else if BTN_TO_KEY(3)
- else if BTN_TO_KEY(4)
- else if BTN_TO_KEY(5)
- else if BTN_TO_KEY(6)
- else if BTN_TO_KEY(7)
- else if BTN_TO_KEY(8)
- else if BTN_TO_KEY(9)
- else if BTN_TO_KEY(STAR)
- else if BTN_TO_KEY(HASH)
- else if BTN_TO_KEY(MENU)
- else if BTN_TO_KEY(LEFT_SB)
- else if BTN_TO_KEY(RIGHT_SB)
- else if BTN_TO_KEY(UP)
- else if BTN_TO_KEY(DOWN)
- else if BTN_TO_KEY(LEFT)
- else if BTN_TO_KEY(RIGHT)
- else if BTN_TO_KEY(OK)
- else
- {
- printf("\nunknown keycode: 0x%08x\n", diff);
- break;
- }
- emit_key(key, state);
- }
- lastbuttons = buttons;
-}
-
-static uint8_t polling = 0;
-static uint8_t with_interrupts = 0;
-
-static void keypad_irq(__unused enum irq_nr nr)
-{
- /* enable polling */
- polling = 1;
- irq_disable(IRQ_KEYPAD_GPIO);
-}
-
-void keypad_init(uint8_t interrupts)
-{
- lastbuttons = 0;
- polling = 0;
- writew(0, KBD_GPIO_MASKIT);
- writew(0, KBC_REG);
-
- if(interrupts) {
- with_interrupts = 1;
- irq_register_handler(IRQ_KEYPAD_GPIO, &keypad_irq);
- irq_config(IRQ_KEYPAD_GPIO, 0, 0, 0);
- irq_enable(IRQ_KEYPAD_GPIO);
- }
-}
-
-void keypad_set_handler(key_handler_t handler)
-{
- key_handler = handler;
-}
-
-void keypad_poll()
-{
- static uint16_t reg;
- static uint16_t col;
- static uint32_t buttons = 0, debounce1 = 0, debounce2 = 0;
-
- if (with_interrupts && !polling)
- return;
-
- /* start polling */
- if (polling == 1) {
- writew(0x1f & ~0x1, KBC_REG); /* first col */
- col = 0;
- polling = 2;
- return;
- }
-
- /* enable keypad irq after the signal settles */
- if (polling == 3) {
- if(with_interrupts) {
- irq_enable(IRQ_KEYPAD_GPIO);
- polling = 0;
- } else {
- polling = 1;
- }
- return;
- }
-
- reg = readw(KBR_LATCH_REG);
- buttons = (buttons & ~(0x1f << (col * 5)))
- | ((~reg & 0x1f) << (col * 5 ));
- /* if key is released, stay in column for faster debounce */
- if ((debounce1 | debounce2) & ~buttons) {
- debounce2 = debounce1;
- debounce1 = buttons;
- return;
- }
-
- col++;
- if (col > 4) {
- col = 0;
- /* if power button, ignore other states */
- if (buttons & BTN_POWER)
- buttons = lastbuttons | BTN_POWER;
- else if (lastbuttons & BTN_POWER)
- buttons = lastbuttons & ~BTN_POWER;
- dispatch_buttons(buttons);
- if (buttons == 0) {
- writew(0x0, KBC_REG);
- polling = 3;
- return;
- }
- }
- if (col == 4)
- writew(0xff, KBC_REG);
- else
- writew(0x1f & ~(0x1 << col ), KBC_REG);
-
-}
-
diff --git a/Src/osmoconbb/src/target/firmware/calypso/misc.c b/Src/osmoconbb/src/target/firmware/calypso/misc.c
deleted file mode 100644
index 460cc5d..0000000
--- a/Src/osmoconbb/src/target/firmware/calypso/misc.c
+++ /dev/null
@@ -1,60 +0,0 @@
-
-#include <stdint.h>
-#include <stdio.h>
-#include <memory.h>
-
-/* dump a memory range */
-void memdump_range(unsigned int *ptr, unsigned int len)
-{
- unsigned int *end = ptr + (len/4);
- unsigned int *tmp;
-
- for (tmp = ptr; tmp < end; tmp += 8) {
- int i;
- printf("%08X: ", (unsigned int) tmp);
-
- for (i = 0; i < 8; i++)
- printf("%08X %s", *(tmp+i), i == 3 ? " " : "");
-
- putchar('\n');
- }
-}
-
-#define KBIT 1024
-#define MBIT (1024*KBIT)
-void dump_mem(void)
-{
- puts("Dump 64kBits of internal ROM\n");
- memdump_range((void *)0x03800000, 64*KBIT/8);
-
- puts("Dump 8Mbits of external flash\n");
- memdump_range((void *)0x00000000, 8*MBIT/8);
-
- puts("Dump 2Mbits of internal RAM\n");
- memdump_range((void *)0x00800000, 2*MBIT/8);
-
- puts("Dump 2Mbits of external RAM\n");
- memdump_range((void *)0x01000000, 2*MBIT/8);
-}
-
-#define REG_DEV_ID_CODE 0xfffef000
-#define REG_DEV_VER_CODE 0xfffef002
-#define REG_DEV_ARMVER_CODE 0xfffffe00
-#define REG_cDSP_ID_CODE 0xfffffe02
-#define REG_DIE_ID_CODE 0xfffef010
-
-void dump_dev_id(void)
-{
- int i;
-
- printf("Device ID code: 0x%04x\n", readw(REG_DEV_ID_CODE));
- printf("Device Version code: 0x%04x\n", readw(REG_DEV_VER_CODE));
- printf("ARM ID code: 0x%04x\n", readw(REG_DEV_ARMVER_CODE));
- printf("cDSP ID code: 0x%04x\n", readw(REG_cDSP_ID_CODE));
- puts("Die ID code: ");
- for (i = 0; i < 64/8; i += 4)
- printf("%08x", readl(REG_DIE_ID_CODE+i));
- putchar('\n');
-}
-
-
diff --git a/Src/osmoconbb/src/target/firmware/calypso/rtc.c b/Src/osmoconbb/src/target/firmware/calypso/rtc.c
deleted file mode 100644
index ce750c2..0000000
--- a/Src/osmoconbb/src/target/firmware/calypso/rtc.c
+++ /dev/null
@@ -1,83 +0,0 @@
-/* Driver for Calypso RTC controller */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-
-#include <defines.h>
-#include <debug.h>
-#include <memory.h>
-#include <display.h>
-#include <calypso/irq.h>
-
-#define BASE_ADDR_RTC 0xfffe1800
-#define RTC_REG(x) ((void *)BASE_ADDR_RTC + (x))
-
-enum rtc_reg {
- SECOND_REG = 0x00,
- MINUTES_REG = 0x01,
- HOURS_REG = 0x02,
- DAYS_REG = 0x03,
- MONTHS_REG = 0x04,
- YEARS_REG = 0x05,
- WEEK_REG = 0x06,
- /* reserved */
- ALARM_SECOND_REG = 0x08,
- ALARM_MINUTES_REG = 0x09,
- ALARM_HOURS_REG = 0x0a,
- ALARM_DAYS_REG = 0x0b,
- ALARM_MONTHS_REG = 0x0c,
- ALARM_YEARS_REG = 0x0d,
- /* reserved */
- /* reserved */
- CTRL_REG = 0x10,
- STATUS_REG = 0x11,
- INT_REG = 0x12,
- COMP_LSB_REG = 0x13,
- COMP_MSB_REG = 0x14,
- RES_PROG_REG = 0x15,
-};
-
-static int tick_ctr;
-
-static void rtc_irq_tick(__unused enum irq_nr nr)
-{
- if (tick_ctr & 1)
- display_set_attr(DISP_ATTR_INVERT);
- else
- display_unset_attr(DISP_ATTR_INVERT);
- tick_ctr++;
-}
-
-void rtc_init(void)
-{
- irq_register_handler(IRQ_RTC_TIMER, &rtc_irq_tick);
- irq_config(IRQ_RTC_TIMER, 0, 1, 0);
- irq_enable(IRQ_RTC_TIMER);
-
- /* clear power-up reset */
- writeb(0x80, RTC_REG(STATUS_REG));
- /* enable RTC running */
- writeb(0x01, RTC_REG(CTRL_REG));
- /* enable periodic interrupts every second */
- writeb(0x04, RTC_REG(INT_REG));
-}
diff --git a/Src/osmoconbb/src/target/firmware/calypso/sim.c b/Src/osmoconbb/src/target/firmware/calypso/sim.c
deleted file mode 100755
index a539cf8..0000000
--- a/Src/osmoconbb/src/target/firmware/calypso/sim.c
+++ /dev/null
@@ -1,740 +0,0 @@
-/* Driver for Simcard Controller inside TI Calypso/Iota */
-
-/* (C) 2010 by Philipp Fabian Benedikt Maier <philipp-maier@runningserver.com>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-
-#include <debug.h>
-#include <memory.h>
-#include <abb/twl3025.h>
-#include <calypso/sim.h>
-#include <calypso/irq.h>
-
-static int sim_rx_character_count = 0; /* How many bytes have been received by calypso_sim_receive() */
-static int sim_tx_character_count = 0; /* How many bytes have been transmitted by calypso_sim_transmit() */
-static int sim_tx_character_length = 0; /* How many bytes have to be transmitted by calypso_sim_transmit() */
-static uint8_t *rx_buffer = 0; /* RX-Buffer that is issued by calypso_sim_receive() */
-static uint8_t *tx_buffer = 0; /* TX-Buffer that is issued by calypso_sim_transmit() */
-volatile static int rxDoneFlag = 0; /* Used for rx synchronization instead of a semaphore in calypso_sim_receive() */
-volatile static int txDoneFlag = 0; /* Used for rx synchronization instead of a semaphore in calypso_sim_transmit() */
-
-/* Display Register dump */
-void calypso_sim_regdump(void)
-{
-#if (SIM_DEBUG == 1)
- unsigned int regVal;
-
-
- puts("\n\n\n");
- puts("====================== CALYPSO SIM REGISTER DUMP =====================\n");
- puts("Reg_sim_cmd register (R/W) - FFFE:0000\n");
-
-
- regVal = readw(REG_SIM_CMD);
- printf(" |-REG_SIM_CMD = %04x\n", readw(REG_SIM_CMD));
-
- if(regVal & REG_SIM_CMD_CMDCARDRST)
- puts(" | |-REG_SIM_CMD_CMDCARDRST = 1 ==> SIM card reset sequence enabled.\n");
- else
- puts(" | |-REG_SIM_CMD_CMDCARDRST = 0 ==> SIM card reset sequence disabled.\n");
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- if(regVal & REG_SIM_CMD_CMDIFRST)
- puts(" | |-REG_SIM_CMD_CMDIFRST = 1\n");
- else
- puts(" | |-REG_SIM_CMD_CMDIFRST = 0\n");
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- if(regVal & REG_SIM_CMD_CMDSTOP)
- puts(" | |-REG_SIM_CMD_CMDSTOP = 1\n");
- else
- puts(" | |-REG_SIM_CMD_CMDSTOP = 0\n");
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- if(regVal & REG_SIM_CMD_CMDSTART)
- puts(" | |-REG_SIM_CMD_CMDSTART = 1 ==> SIM card start procedure active.\n");
- else
- puts(" | |-REG_SIM_CMD_CMDSTART = 0\n");
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- if(regVal & REG_SIM_CMD_CMDSTART)
- puts(" | |-REG_SIM_CMD_MODULE_CLK_EN = 1 ==> Clock of the module enabled.\n");
- else
- puts(" | |-REG_SIM_CMD_MODULE_CLK_EN = 0 ==> Clock of the module disabled.\n");
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- regVal = readw(REG_SIM_STAT);
- printf(" |-REG_SIM_STAT = %04x\n", regVal);
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- if(regVal & REG_SIM_STAT_STATNOCARD)
- puts(" | |-REG_SIM_STAT_STATNOCARD = 1 ==> No card!\n");
- else
- puts(" | |-REG_SIM_STAT_STATNOCARD = 0 ==> Card detected!\n");
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- if(regVal & REG_SIM_STAT_STATTXPAR)
- puts(" | |-REG_SIM_STAT_STATTXPAR = 1 ==> Parity ok!\n");
- else
- puts(" | |-REG_SIM_STAT_STATTXPAR = 0 ==> Parity error!\n");
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- if(regVal & REG_SIM_STAT_STATFIFOFULL)
- puts(" | |-REG_SIM_STAT_STATFIFOFULL = 1 ==> Fifo full!\n");
- else
- puts(" | |-REG_SIM_STAT_STATFIFOFULL = 0\n");
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- if(regVal & REG_SIM_STAT_STATFIFOEMPTY)
- puts(" | |-REG_SIM_STAT_STATFIFOEMPTY = 1 ==> Fifo empty!\n");
- else
- puts(" | |-REG_SIM_STAT_STATFIFOEMPTY = 0\n");
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- regVal = readw(REG_SIM_CONF1);
- printf(" |-REG_SIM_CONF1 = %04x\n", regVal);
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- if(regVal & REG_SIM_CONF1_CONFCHKPAR)
- puts(" | |-REG_SIM_CONF1_CONFCHKPAR = 1 ==> Parity check on reception enabled.\n");
- else
- puts(" | |-REG_SIM_CONF1_CONFCHKPAR = 0 ==> Parity check on reception disabled.\n");
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- if(regVal & REG_SIM_CONF1_CONFCODCONV)
- puts(" | |-REG_SIM_CONF1_CONFCODCONV = 1 ==> Coding convention is inverse.\n");
- else
- puts(" | |-REG_SIM_CONF1_CONFCODCONV = 0 ==> Coding convention is direct (normal).\n");
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- if(regVal & REG_SIM_CONF1_CONFTXRX)
- puts(" | |-REG_SIM_CONF1_CONFTXRX = 1 ==> SIO line direction is in transmit mode.\n");
- else
- puts(" | |-REG_SIM_CONF1_CONFTXRX = 0 ==> SIO line direction is in receive mode.\n");
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- if(regVal & REG_SIM_CONF1_CONFSCLKEN)
- puts(" | |-REG_SIM_CONF1_CONFSCLKEN = 1 ==> SIM clock in normal mode.\n");
- else
- puts(" | |-REG_SIM_CONF1_CONFSCLKEN = 0 ==> SIM clock in standby mode.\n");
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- if(regVal & REG_SIM_CONF1_reserved)
- puts(" | |-REG_SIM_CONF1_reserved = 1 ==> ETU period is 4*1/Fsclk.\n");
- else
- puts(" | |-REG_SIM_CONF1_reserved = 0 ==> ETU period is CONFETUPERIOD.\n");
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- if(regVal & REG_SIM_CONF1_CONFSCLKDIV)
- puts(" | |-REG_SIM_CONF1_CONFSCLKDIV = 1 ==> SIM clock frequency is 13/8 Mhz.\n");
- else
- puts(" | |-REG_SIM_CONF1_CONFSCLKDIV = 0 ==> SIM clock frequency is 13/4 Mhz.\n");
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- if(regVal & REG_SIM_CONF1_CONFSCLKLEV)
- puts(" | |-REG_SIM_CONF1_CONFSCLKLEV = 1 ==> SIM clock idle level is high.\n");
- else
- puts(" | |-REG_SIM_CONF1_CONFSCLKLEV = 0 ==> SIM clock idle level is low.\n");
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- if(regVal & REG_SIM_CONF1_CONFETUPERIOD)
- puts(" | |-REG_SIM_CONF1_CONFETUPERIOD = 1 ==> ETU period is 512/8*1/Fsclk.\n");
- else
- puts(" | |-REG_SIM_CONF1_CONFETUPERIOD = 0 ==> ETU period is 372/8*1/Fsclk.\n");
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- if(regVal & REG_SIM_CONF1_CONFBYPASS)
- puts(" | |-REG_SIM_CONF1_CONFBYPASS = 1 ==> Hardware timers and start and stop sequences are bypassed.\n");
- else
- puts(" | |-REG_SIM_CONF1_CONFBYPASS = 0 ==> Hardware timers and start and stop sequences are normal.\n");
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- if(regVal & REG_SIM_CONF1_CONFSVCCLEV)
- puts(" | |-REG_SIM_CONF1_CONFSVCCLEV = 1 ==> SVCC Level is high (Only valid when CONFBYPASS = 1).\n");
- else
- puts(" | |-REG_SIM_CONF1_CONFSVCCLEV = 0 ==> SVCC Level is low (Only valid when CONFBYPASS = 1).\n");
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- if(regVal & REG_SIM_CONF1_CONFSRSTLEV)
- puts(" | |-REG_SIM_CONF1_CONFSRSTLEV = 1 ==> SRST Level is high (Only valid when CONFBYPASS = 1).\n");
- else
- puts(" | |-REG_SIM_CONF1_CONFSRSTLEV = 0 ==> SRST Level is low (Only valid when CONFBYPASS = 1).\n");
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- printf(" | |-REG_SIM_CONF1_CONFTRIG = 0x%x (FIFO trigger level)\n",(regVal >> REG_SIM_CONF1_CONFTRIG) & REG_SIM_CONF1_CONFTRIG_MASK);
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- if(regVal & REG_SIM_CONF1_CONFSIOLOW)
- puts(" | |-REG_SIM_CONF1_CONFSIOLOW = 1 ==> I/O is forced to low.\n");
- else
- puts(" | |-REG_SIM_CONF1_CONFSIOLOW = 0\n");
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- regVal = readw(REG_SIM_CONF2);
- printf(" |-REG_SIM_CONF2 = %04x\n", regVal);
- printf(" | |-REG_SIM_CONF2_CONFTFSIM = 0x%x (time delay for filtering of SIM_CD)\n",(regVal >> REG_SIM_CONF2_CONFTFSIM) & REG_SIM_CONF2_CONFTFSIM_MASK);
- printf(" | |-REG_SIM_CONF2_CONFTDSIM = 0x%x (time delay for contact activation/deactivation)\n",(regVal >> REG_SIM_CONF2_CONFTDSIM) & REG_SIM_CONF2_CONFTDSIM_MASK);
- printf(" | |-REG_SIM_CONF2_CONFWAITI = 0x%x (CONFWAITI overflow wait time between two received chars)\n",(regVal >> REG_SIM_CONF2_CONFWAITI) & REG_SIM_CONF2_CONFWAITI_MASK);
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- regVal = readw(REG_SIM_IT);
- printf(" |-REG_SIM_IT = %04x\n", regVal);
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- if(regVal & REG_SIM_IT_SIM_NATR)
- puts(" | |-REG_SIM_IT_SIM_NATR = 1 ==> No answer to reset!\n");
- else
- puts(" | |-REG_SIM_IT_SIM_NATR = 0 ==> On read access to REG_SIM_IT.\n");
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- if(regVal & REG_SIM_IT_SIM_WT)
- puts(" | |-REG_SIM_IT_SIM_WT = 1 ==> Character underflow!\n");
- else
- puts(" | |-REG_SIM_IT_SIM_WT = 0 ==> On read access to REG_SIM_IT.\n");
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- if(regVal & REG_SIM_IT_SIM_OV)
- puts(" | |-REG_SIM_IT_SIM_OV = 1 ==> Receive overflow!\n");
- else
- puts(" | |-REG_SIM_IT_SIM_OV = 0 ==> On read access to REG_SIM_IT.\n");
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- if(regVal & REG_SIM_IT_SIM_TX)
- puts(" | |-REG_SIM_IT_SIM_TX = 1 ==> Waiting for character to transmit...\n");
- else
- {
- puts(" | |-REG_SIM_IT_SIM_TX = 0 ==> On write access to REG_SIM_DTX or on switching\n");
- puts(" | | from transmit to receive mode (CONFTXRX bit)\n");
- }
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- if(regVal & REG_SIM_IT_SIM_RX)
- puts(" | |-REG_SIM_IT_SIM_RX = 1 ==> Waiting characters to be read...\n");
- else
- puts(" | |-REG_SIM_IT_SIM_RX = 0 ==> On read access to REG_SIM_DRX.\n");
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- regVal = readw(REG_SIM_DRX);
- printf(" |-REG_SIM_DRX = %04x\n", regVal);
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- printf(" | |-REG_SIM_DRX_SIM_DRX = 0x%x (next data byte in FIFO available for reading)\n",(regVal >> REG_SIM_DRX_SIM_DRX) & REG_SIM_DRX_SIM_DRX_MASK);
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- if(regVal & REG_SIM_DRX_STATRXPAR)
- puts(" | |-REG_SIM_DRX_STATRXPAR = 1 ==> Parity Ok.\n");
- else
- puts(" | |-REG_SIM_DRX_STATRXPAR = 0 ==> Parity error!\n");
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- regVal = readw(REG_SIM_DTX);
- printf(" |-REG_SIM_DTX = %02x (next data byte to be transmitted)\n", regVal);
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- regVal = readw(REG_SIM_MASKIT);
- printf(" |-REG_SIM_MASKIT = %04x\n", regVal);
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- if(regVal & REG_SIM_MASKIT_MASK_SIM_NATR)
- puts(" | |-REG_SIM_MASKIT_MASK_SIM_NATR = 1 ==> No-answer-to-reset interrupt is masked.\n");
- else
- puts(" | |-REG_SIM_MASKIT_MASK_SIM_NATR = 0 ==> No-answer-to-reset interrupt is unmasked.\n");
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- if(regVal & REG_SIM_MASKIT_MASK_SIM_WT)
- puts(" | |-REG_SIM_MASKIT_MASK_SIM_WT = 1 ==> Character wait-time overflow interrupt is masked.\n");
- else
- puts(" | |-REG_SIM_MASKIT_MASK_SIM_WT = 0 ==> Character wait-time overflow interrupt is unmasked.\n");
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- if(regVal & REG_SIM_MASKIT_MASK_SIM_OV)
- puts(" | |-REG_SIM_MASKIT_MASK_SIM_OV = 1 ==> Receive overflow interrupt is masked.\n");
- else
- puts(" | |-REG_SIM_MASKIT_MASK_SIM_OV = 0 ==> Receive overflow interrupt is unmasked.\n");
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- if(regVal & REG_SIM_MASKIT_MASK_SIM_TX)
- puts(" | |-REG_SIM_MASKIT_MASK_SIM_TX = 1 ==> Waiting characters to be transmit interrupt is masked.\n");
- else
- puts(" | |-REG_SIM_MASKIT_MASK_SIM_TX = 0 ==> Waiting characters to be transmit interrupt is unmasked.\n");
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- if(regVal & REG_SIM_MASKIT_MASK_SIM_RX)
- puts(" | |-REG_SIM_MASKIT_MASK_SIM_RX = 1 ==> Waiting characters to be read interrupt is masked.\n");
- else
- puts(" | |-REG_SIM_MASKIT_MASK_SIM_RX = 0 ==> Waiting characters to be read interrupt is unmasked.\n");
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- if(regVal & REG_SIM_MASKIT_MASK_SIM_CD)
- puts(" | |-REG_SIM_MASKIT_MASK_SIM_CD = 1 ==> SIM card insertion/extraction interrupt is masked.\n");
- else
- puts(" | |-REG_SIM_MASKIT_MASK_SIM_CD = 0 ==> SIM card insertion/extraction interrupt is unmasked.\n");
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-
- regVal = REG_SIM_IT_CD;
- printf(" |-REG_SIM_IT_CD = %04x\n", regVal);
- if(regVal & REG_SIM_IT_CD_IT_CD)
- puts(" |-REG_SIM_IT_CD_IT_CD = 1 ==> SIM card insertion/extraction interrupt is masked.\n");
- else
- puts(" |-REG_SIM_IT_CD_IT_CD = 0 ==> SIM card insertion/extraction interrupt is unmasked.\n");
- delay_ms(SIM_DEBUG_OUTPUTDELAY);
-#endif
- return;
-}
-
-/* Apply power to the simcard (use nullpointer to ignore atr) */
-int calypso_sim_powerup(uint8_t *atr)
-{
- /* Enable level shifters and voltage regulator */
- twl3025_reg_write(VRPCSIM, VRPCSIM_SIMLEN | VRPCSIM_RSIMEN | VRPCSIM_SIMSEL);
-#if (SIM_DEBUG == 1)
- puts(" * Power enabled!\n");
-#endif
- delay_ms(SIM_OPERATION_DELAY);
-
- /* Enable clock */
- writew(REG_SIM_CMD_MODULE_CLK_EN | REG_SIM_CMD_CMDSTART, REG_SIM_CMD);
-#if (SIM_DEBUG == 1)
- puts(" * Clock enabled!\n");
-#endif
- delay_ms(SIM_OPERATION_DELAY);
-
- /* Release reset */
- writew(readw(REG_SIM_CONF1) | REG_SIM_CONF1_CONFBYPASS | REG_SIM_CONF1_CONFSRSTLEV | REG_SIM_CONF1_CONFSVCCLEV, REG_SIM_CONF1);
-#if (SIM_DEBUG == 1)
- puts(" * Reset released!\n");
-#endif
-
- /* Catch ATR */
- if(atr != 0)
- return calypso_sim_receive(atr);
- else
- return 0;
-}
-
-
-/* Powerdown simcard */
-void calypso_sim_powerdown(void)
-{
- writew(readw(REG_SIM_CONF1) & ~REG_SIM_CONF1_CONFBYPASS, REG_SIM_CONF1);
-#if (SIM_DEBUG == 1)
- puts(" * Reset pulled down!\n");
-#endif
- delay_ms(SIM_OPERATION_DELAY);
-
- writew(REG_SIM_CMD_MODULE_CLK_EN | REG_SIM_CMD_CMDSTOP, REG_SIM_CMD);
-#if (SIM_DEBUG == 1)
- puts(" * Clock disabled!\n");
-#endif
- delay_ms(SIM_OPERATION_DELAY);
-
- writew(0, REG_SIM_CMD);
-#if (SIM_DEBUG == 1)
- puts(" * Module disabled!\n");
-#endif
- delay_ms(SIM_OPERATION_DELAY);
-
- /* Disable level shifters and voltage regulator */
- twl3025_reg_write(VRPCSIM, 0);
-#if (SIM_DEBUG == 1)
- puts(" * Power disabled!\n");
-#endif
- delay_ms(SIM_OPERATION_DELAY);
-
- return;
-}
-
-/* reset the simcard (see note 1) */
-int calypso_sim_reset(uint8_t *atr)
-{
-
- /* Pull reset down */
- writew(readw(REG_SIM_CONF1) & ~REG_SIM_CONF1_CONFSRSTLEV , REG_SIM_CONF1);
-#if (SIM_DEBUG == 1)
- puts(" * Reset pulled down!\n");
-#endif
-
- delay_ms(SIM_OPERATION_DELAY);
-
- /* Pull reset down */
- writew(readw(REG_SIM_CONF1) | REG_SIM_CONF1_CONFSRSTLEV , REG_SIM_CONF1);
-#if (SIM_DEBUG == 1)
- puts(" * Reset released!\n");
-#endif
-
- /* Catch ATR */
- if(atr != 0)
- return calypso_sim_receive(atr);
- else
- return 0;
-}
-
-/* Receive raw data through the sim interface */
-int calypso_sim_receive(uint8_t *data)
-{
- /* Prepare buffers and flags */
- rx_buffer = data;
- sim_rx_character_count = 0;
- rxDoneFlag = 0;
-
- /* Switch I/O direction to input */
- writew(readw(REG_SIM_CONF1) & ~REG_SIM_CONF1_CONFTXRX, REG_SIM_CONF1);
-
- /* Unmask the interrupts that are needed to perform this action */
- writew(~(REG_SIM_MASKIT_MASK_SIM_RX | REG_SIM_MASKIT_MASK_SIM_WT), REG_SIM_MASKIT);
-
- /* Wait till rxDoneFlag is set */
- while(rxDoneFlag == 0);
-
- /* Disable all interrupt driven functions by masking all interrupts */
- writew(0xFF, REG_SIM_MASKIT);
-
- /* Hand back the number of bytes received */
- return sim_rx_character_count;
-
- return;
-}
-
-/* Transmit raw data through the sim interface */
-int calypso_sim_transmit(uint8_t *data, int length)
-{
- /* Prepare buffers and flags */
- tx_buffer = data;
- sim_tx_character_count = 0;
- txDoneFlag = 0;
- sim_tx_character_length = length;
-
- /* Switch I/O direction to output */
- writew(readw(REG_SIM_CONF1) | REG_SIM_CONF1_CONFTXRX, REG_SIM_CONF1);
-
- /* Unmask the interrupts that are needed to perform this action */
- writew(~(REG_SIM_MASKIT_MASK_SIM_TX), REG_SIM_MASKIT);
-
- /* Transmit the first byte manually to start the interrupt cascade */
- writew(*tx_buffer,REG_SIM_DTX);
- tx_buffer++;
- sim_tx_character_count++;
-
- /* Wait till rxDoneFlag is set */
- while(txDoneFlag == 0);
-
- /* Disable all interrupt driven functions by masking all interrupts */
- writew(0xFF, REG_SIM_MASKIT);
-
- return 0;
-}
-
-
-/* IRQ-Handler for simcard interface */
-void sim_irq_handler(enum irq_nr irq)
-{
- int regVal = readw(REG_SIM_IT);
-
-
- /* Display interrupt information */
-#if (SIM_DEBUG == 1)
- puts("SIM-ISR: Interrupt caught: ");
-#endif
- if(regVal & REG_SIM_IT_SIM_NATR)
- {
-#if (SIM_DEBUG == 1)
- puts(" No answer to reset!\n");
-#endif
- }
-
- /* Used by: calypso_sim_receive() to determine when the transmission is over */
- if(regVal & REG_SIM_IT_SIM_WT)
- {
-#if (SIM_DEBUG == 1)
- puts(" Character underflow!\n");
-#endif
- rxDoneFlag = 1;
- }
-
- if(regVal & REG_SIM_IT_SIM_OV)
- {
-#if (SIM_DEBUG == 1)
- puts(" Receive overflow!\n");
-#endif
- }
-
- /* Used by: calypso_sim_transmit() to transmit the data */
- if(regVal & REG_SIM_IT_SIM_TX)
- {
-#if (SIM_DEBUG == 1)
- puts(" Waiting for character to transmit...\n");
-#endif
- if(sim_tx_character_count >= sim_tx_character_length)
- txDoneFlag = 1;
- else
- {
- writew(*tx_buffer,REG_SIM_DTX);
- tx_buffer++;
- sim_tx_character_count++;
- }
- }
-
- /* Used by: calypso_sim_receive() to receive the incoming data */
- if(regVal & REG_SIM_IT_SIM_RX)
- {
-#if (SIM_DEBUG == 1)
- puts(" Waiting characters to be read...\n");
-#endif
- /* Increment character count - this is what calypso_sim_receive() hands back */
- sim_rx_character_count++;
-
- /* Read byte from rx-fifo and write it to the issued buffer */
- *rx_buffer = (uint8_t) (readw(REG_SIM_DRX) & 0xFF);
- rx_buffer++;
- }
-}
-
-/* Transceive T0 Apdu to sim acording to GSM 11.11 Page 34 */
-int calypso_sim_transceive(uint8_t cla, /* Class (in GSM context mostly 0xA0 */
- uint8_t ins, /* Instruction */
- uint8_t p1, /* First parameter */
- uint8_t p2, /* Second parameter */
- uint8_t p3le, /* Length of the data that should be transceived */
- uint8_t *data, /* Data payload */
- uint8_t *status, /* Status word (2 byte array, see note 1) */
- uint8_t mode) /* Mode of operation: 1=GET, 0=PUT */
-
- /* Note 1: You can use a null-pointer (0) if you are not interested in
- the status word */
-{
- uint8_t transmissionBuffer[256];
- uint8_t numberOfReceivedBytes;
-
-#if (SIM_DEBUG == 1)
- printf("SIM-T0: Transceiving APDU-Header: (%02x %02x %02x %02x %02x)\n",cla,ins,p1,p2,p3le);
-#endif
-
- /* Transmit APDU header */
- memset(transmissionBuffer,0,sizeof(transmissionBuffer));
- transmissionBuffer[0] = cla;
- transmissionBuffer[1] = ins;
- transmissionBuffer[2] = p1;
- transmissionBuffer[3] = p2;
- transmissionBuffer[4] = p3le;
- calypso_sim_transmit(transmissionBuffer,5);
-
- /* Case 1: No input, No Output */
- if(p3le == 0)
- {
-#if (SIM_DEBUG == 1)
- puts("SIM-T0: Case 1: No input, No Output (See also GSM 11.11 Page 34)\n");
-#endif
- numberOfReceivedBytes = calypso_sim_receive(transmissionBuffer);
-
- if(numberOfReceivedBytes == 2)
- {
-#if (SIM_DEBUG == 1)
- printf("SIM-T0: Status-word received: %02x %02x\n", transmissionBuffer[0], transmissionBuffer[1]);
-#endif
- /* Hand back status word */
- if(status != 0)
- {
- status[0] = transmissionBuffer[0];
- status[1] = transmissionBuffer[1];
- }
-
- return 0;
- }
- else
- {
-#if (SIM_DEBUG == 1)
- puts("SIM-T0: T0 Protocol error -- aborting!\n");
-#endif
- return -1;
- }
- }
-
- /* Case 2: No input / Output of known length */
- else if(mode == SIM_APDU_PUT)
- {
-#if (SIM_DEBUG == 1)
- puts("SIM-T0: Case 2: No input / Output of known length (See also GSM 11.11 Page 34)\n");
-#endif
-
- numberOfReceivedBytes = calypso_sim_receive(transmissionBuffer);
-
- /* Error situation: The card has aborted, sends no data but a status word */
- if(numberOfReceivedBytes == 2)
- {
-#if (SIM_DEBUG == 1)
- printf("SIM-T0: Status-word received (ERROR): %02x %02x\n", transmissionBuffer[0], transmissionBuffer[1]);
-#endif
- /* Hand back status word */
- if(status != 0)
- {
- status[0] = transmissionBuffer[0];
- status[1] = transmissionBuffer[1];
- }
-
- return 0;
- }
- /* Acknoledge byte received */
- else if(numberOfReceivedBytes == 1)
- {
-#if (SIM_DEBUG == 1)
- printf("SIM-T0: ACK received: %02x\n", transmissionBuffer[0]);
-#endif
- /* Check if ACK is valid */
- if(transmissionBuffer[0] != ins)
- {
-#if (SIM_DEBUG == 1)
- puts("SIM-T0: T0 Protocol error: Invalid ACK byte -- aborting!\n");
-#endif
- return -1;
- }
-
- /* Transmit body */
- calypso_sim_transmit(data,p3le);
-
- /* Receive status word */
- numberOfReceivedBytes = calypso_sim_receive(transmissionBuffer);
-
- /* Check status word */
- if(numberOfReceivedBytes == 2)
- {
-#if (SIM_DEBUG == 1)
- printf("SIM-T0: Status-word received: %02x %02x\n", transmissionBuffer[0], transmissionBuffer[1]);
-#endif
-
- /* Hand back status word */
- if(status != 0)
- {
- status[0] = transmissionBuffer[0];
- status[1] = transmissionBuffer[1];
- }
-
- return 0;
- }
- else
- {
-#if (SIM_DEBUG == 1)
- puts("SIM-T0: T0 Protocol error: Missing or invalid status word -- aborting!\n");
-#endif
- return -1;
- }
- }
- else
- {
-#if (SIM_DEBUG == 1)
- puts("SIM-T0: T0 Protocol error: Missing ACK byte -- aborting!\n");
-#endif
- return -1;
- }
- }
-
- /* Case 4: Input / No output */
- else if(mode == SIM_APDU_GET)
- {
-#if (SIM_DEBUG == 1)
- puts("SIM-T0: Case 4: Input / No output (See also GSM 11.11 Page 34)\n");
-#endif
-
- numberOfReceivedBytes = calypso_sim_receive(data);
-
- /* Error situation: The card has aborted, sends no data but a status word */
- if(numberOfReceivedBytes == 2)
- {
-
-#if (SIM_DEBUG == 1)
- printf("SIM-T0: Status-word received (ERROR): %02x %02x\n", data[0], data[1]);
-#endif
- /* Hand back status word */
- if(status != 0)
- {
- status[0] = data[0];
- status[1] = data[1];
- }
-
- return 0;
- }
-
- /* Data correctly received */
- else if(numberOfReceivedBytes == p3le + 1 + 2)
- {
-#if (SIM_DEBUG == 1)
- printf("SIM-T0: ACK received: %02x\n", data[0]);
-#endif
- /* Check if ACK is valid */
- if(data[0] != ins)
- {
-#if (SIM_DEBUG == 1)
- puts("SIM-T0: T0 Protocol error: Invalid ACK byte -- aborting!\n");
-#endif
- return -1;
- }
-
-#if (SIM_DEBUG == 1)
- printf("SIM-T0: Status-word received: %02x %02x\n", data[p3le + 1], data[p3le + 2]);
-#endif
- /* Hand back status word */
- if(status != 0)
- {
- status[0] = data[p3le + 1];
- status[1] = data[p3le + 2];
- }
-
- /* Move data one position left to cut away the ACK-Byte */
- memcpy(data,data+1,p3le);
-
- return 0;
- }
- else
- {
-#if (SIM_DEBUG == 1)
- puts("SIM-T0: T0 Protocol error: Incorrect or missing answer -- aborting!\n");
-#endif
- return -1;
- }
- }
-
- /* Should not happen, if it happens then the programmer has submitted invalid parameters! */
- else
- {
-#if (SIM_DEBUG == 1)
- puts("SIM-T0: T0 Protocol error: Invalid case (program bug!) -- aborting!\n");
-#endif
- }
-
- /* Note: The other cases are not implemented because they are already covered
- by the CASE 1,2 and 4. */
-
- return 0;
-}
-
-
-/* Initialize simcard interface */
-void calypso_sim_init(void)
-{
- /* Register IRQ handler and turn interrupts on */
-#if (SIM_DEBUG == 1)
- puts("SIM: Registering interrupt handler for simcard-interface\n");
-#endif
- irq_register_handler(IRQ_SIMCARD, &sim_irq_handler);
- irq_config(IRQ_SIMCARD, 0, 0, 0xff);
- irq_enable(IRQ_SIMCARD);
-}
-
diff --git a/Src/osmoconbb/src/target/firmware/calypso/spi.c b/Src/osmoconbb/src/target/firmware/calypso/spi.c
deleted file mode 100644
index 049ac08..0000000
--- a/Src/osmoconbb/src/target/firmware/calypso/spi.c
+++ /dev/null
@@ -1,141 +0,0 @@
-/* Driver for SPI Master Controller inside TI Calypso */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-
-//#define DEBUG
-#include <debug.h>
-
-#include <memory.h>
-#include <spi.h>
-#include <delay.h>
-
-#define BASE_ADDR_SPI 0xfffe3000
-#define SPI_REG(n) (BASE_ADDR_SPI+(n))
-
-enum spi_regs {
- REG_SET1 = 0x00,
- REG_SET2 = 0x02,
- REG_CTRL = 0x04,
- REG_STATUS = 0x06,
- REG_TX_LSB = 0x08,
- REG_TX_MSB = 0x0a,
- REG_RX_LSB = 0x0c,
- REG_RX_MSB = 0x0e,
-};
-
-#define SPI_SET1_EN_CLK (1 << 0)
-#define SPI_SET1_WR_IRQ_DIS (1 << 4)
-#define SPI_SET1_RDWR_IRQ_DIS (1 << 5)
-
-#define SPI_CTRL_RDWR (1 << 0)
-#define SPI_CTRL_WR (1 << 1)
-#define SPI_CTRL_NB_SHIFT 2
-#define SPI_CTRL_AD_SHIFT 7
-
-#define SPI_STATUS_RE (1 << 0) /* Read End */
-#define SPI_STATUS_WE (1 << 1) /* Write End */
-
-void spi_init(void)
-{
- writew(SPI_SET1_EN_CLK | SPI_SET1_WR_IRQ_DIS | SPI_SET1_RDWR_IRQ_DIS,
- SPI_REG(REG_SET1));
-
- writew(0x0001, SPI_REG(REG_SET2));
-}
-
-int spi_xfer(uint8_t dev_idx, uint8_t bitlen, const void *dout, void *din)
-{
- uint8_t bytes_per_xfer;
- uint8_t reg_status, reg_ctrl = 0;
- uint32_t tmp;
-
- if (bitlen == 0)
- return 0;
-
- if (bitlen > 32)
- return -1;
-
- if (dev_idx > 4)
- return -1;
-
- bytes_per_xfer = bitlen / 8;
- if (bitlen % 8)
- bytes_per_xfer ++;
-
- reg_ctrl |= (bitlen - 1) << SPI_CTRL_NB_SHIFT;
- reg_ctrl |= (dev_idx & 0x7) << SPI_CTRL_AD_SHIFT;
-
- if (bitlen <= 8) {
- tmp = *(uint8_t *)dout;
- tmp <<= 24 + (8-bitlen); /* align to MSB */
- } else if (bitlen <= 16) {
- tmp = *(uint16_t *)dout;
- tmp <<= 16 + (16-bitlen); /* align to MSB */
- } else {
- tmp = *(uint32_t *)dout;
- tmp <<= (32-bitlen); /* align to MSB */
- }
- printd("spi_xfer(dev_idx=%u, bitlen=%u, data_out=0x%08x): ",
- dev_idx, bitlen, tmp);
-
- /* fill transmit registers */
- writew(tmp >> 16, SPI_REG(REG_TX_MSB));
- writew(tmp & 0xffff, SPI_REG(REG_TX_LSB));
-
- /* initiate transfer */
- if (din)
- reg_ctrl |= SPI_CTRL_RDWR;
- else
- reg_ctrl |= SPI_CTRL_WR;
- writew(reg_ctrl, SPI_REG(REG_CTRL));
- printd("reg_ctrl=0x%04x ", reg_ctrl);
-
- /* wait until the transfer is complete */
- while (1) {
- reg_status = readw(SPI_REG(REG_STATUS));
- printd("status=0x%04x ", reg_status);
- if (din && (reg_status & SPI_STATUS_RE))
- break;
- else if (reg_status & SPI_STATUS_WE)
- break;
- }
- /* FIXME: calibrate how much delay we really need (seven 13MHz cycles) */
- delay_ms(1);
-
- if (din) {
- tmp = readw(SPI_REG(REG_RX_MSB)) << 16;
- tmp |= readw(SPI_REG(REG_RX_LSB));
- printd("data_in=0x%08x ", tmp);
-
- if (bitlen <= 8)
- *(uint8_t *)din = tmp & 0xff;
- else if (bitlen <= 16)
- *(uint16_t *)din = tmp & 0xffff;
- else
- *(uint32_t *)din = tmp;
- }
- dputchar('\n');
-
- return 0;
-}
diff --git a/Src/osmoconbb/src/target/firmware/calypso/timer.c b/Src/osmoconbb/src/target/firmware/calypso/timer.c
deleted file mode 100644
index 1dd55f2..0000000
--- a/Src/osmoconbb/src/target/firmware/calypso/timer.c
+++ /dev/null
@@ -1,156 +0,0 @@
-/* Calypso DBB internal Timer Driver */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdio.h>
-#include <memory.h>
-#include <stdint.h>
-
-#include <defines.h>
-
-#include <calypso/timer.h>
-#include <calypso/irq.h>
-
-#define BASE_ADDR_TIMER 0xfffe3800
-#define TIMER2_OFFSET 0x3000
-
-#define TIMER_REG(n, m) (((n)-1) ? (BASE_ADDR_TIMER + TIMER2_OFFSET + (m)) : (BASE_ADDR_TIMER + (m)))
-
-enum timer_reg {
- CNTL_TIMER = 0x00,
- LOAD_TIMER = 0x02,
- READ_TIMER = 0x04,
-};
-
-enum timer_ctl {
- CNTL_START = (1 << 0),
- CNTL_AUTO_RELOAD = (1 << 1),
- CNTL_CLOCK_ENABLE = (1 << 5),
-};
-
-/* Regular Timers (1 and 2) */
-
-void hwtimer_enable(int num, int on)
-{
- uint8_t ctl;
-
- if (num < 1 || num > 2) {
- printf("Unknown timer %u\n", num);
- return;
- }
-
- ctl = readb(TIMER_REG(num, CNTL_TIMER));
- if (on)
- ctl |= CNTL_START|CNTL_CLOCK_ENABLE;
- else
- ctl &= ~CNTL_START;
- writeb(ctl, TIMER_REG(num, CNTL_TIMER));
-}
-
-void hwtimer_config(int num, uint8_t pre_scale, int auto_reload)
-{
- uint8_t ctl;
-
- ctl = (pre_scale & 0x7) << 2;
- if (auto_reload)
- ctl |= CNTL_AUTO_RELOAD;
-
- writeb(ctl, TIMER_REG(num, CNTL_TIMER));
-}
-
-void hwtimer_load(int num, uint16_t val)
-{
- writew(val, TIMER_REG(num, LOAD_TIMER));
-}
-
-uint16_t hwtimer_read(int num)
-{
- uint8_t ctl = readb(TIMER_REG(num, CNTL_TIMER));
-
- /* somehow a read results in an abort */
- if ((ctl & (CNTL_START|CNTL_CLOCK_ENABLE)) != (CNTL_START|CNTL_CLOCK_ENABLE))
- return 0xFFFF;
- return readw(TIMER_REG(num, READ_TIMER));
-}
-
-void hwtimer_init(void)
-{
- writeb(CNTL_CLOCK_ENABLE, TIMER_REG(1, CNTL_TIMER));
- writeb(CNTL_CLOCK_ENABLE, TIMER_REG(2, CNTL_TIMER));
-}
-
-/* Watchdog Timer */
-
-#define BASE_ADDR_WDOG 0xfffff800
-#define WDOG_REG(m) (BASE_ADDR_WDOG + m)
-
-enum wdog_reg {
- WD_CNTL_TIMER = CNTL_TIMER,
- WD_LOAD_TIMER = LOAD_TIMER,
- WD_READ_TIMER = 0x02,
- WD_MODE = 0x04,
-};
-
-enum wdog_ctl {
- WD_CTL_START = (1 << 7),
- WD_CTL_AUTO_RELOAD = (1 << 8)
-};
-
-enum wdog_mode {
- WD_MODE_DIS_ARM = 0xF5,
- WD_MODE_DIS_CONFIRM = 0xA0,
- WD_MODE_ENABLE = (1 << 15)
-};
-
-#define WD_CTL_PRESCALE(value) (((value)&0x07) << 9)
-
-static void wdog_irq(__unused enum irq_nr nr)
-{
- puts("=> WATCHDOG\n");
-}
-
-void wdog_enable(int on)
-{
- if (on) {
- irq_config(IRQ_WATCHDOG, 0, 0, 0);
- irq_register_handler(IRQ_WATCHDOG, &wdog_irq);
- irq_enable(IRQ_WATCHDOG);
- writew(WD_MODE_ENABLE, WDOG_REG(WD_MODE));
- } else {
- writew(WD_MODE_DIS_ARM, WDOG_REG(WD_MODE));
- writew(WD_MODE_DIS_CONFIRM, WDOG_REG(WD_MODE));
- }
-}
-
-void wdog_reset(void)
-{
-#if 0
- // XXX: this is supposed to reset immediately but does not seem to
- writew(0xF5, WDOG_REG(WD_MODE));
- writew(0xFF, WDOG_REG(WD_MODE));
-#else
- // enable watchdog
- writew(WD_MODE_ENABLE, WDOG_REG(WD_MODE));
- // force expiration
- writew(0x0000, WDOG_REG(WD_LOAD_TIMER));
- writew(0x0000, WDOG_REG(WD_LOAD_TIMER));
-#endif
-}
diff --git a/Src/osmoconbb/src/target/firmware/calypso/tpu.c b/Src/osmoconbb/src/target/firmware/calypso/tpu.c
deleted file mode 100644
index 0b60292..0000000
--- a/Src/osmoconbb/src/target/firmware/calypso/tpu.c
+++ /dev/null
@@ -1,346 +0,0 @@
-/* Calypso DBB internal TPU (Time Processing Unit) Driver */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-
-#include <debug.h>
-#include <delay.h>
-#include <memory.h>
-#include <calypso/tpu.h>
-#include <calypso/tsp.h>
-
-/* Using TPU_DEBUG you will send special HLDC messages to the host PC
- * containing the full TPU RAM content at the time you call tpu_enable() */
-//#define TPU_DEBUG
-
-#define BASE_ADDR_TPU 0xffff1000
-#define TPU_REG(x) (BASE_ADDR_TPU+(x))
-
-#define BASE_ADDR_TPU_RAM 0xffff9000
-#define TPU_RAM_END 0xffff97ff
-
-enum tpu_reg_arm {
- TPU_CTRL = 0x0, /* Control & Status Register */
- INT_CTRL = 0x2, /* Interrupt Control Register */
- INT_STAT = 0x4, /* Interrupt Status Register */
- TPU_OFFSET = 0xC, /* Offset operand value register */
- TPU_SYNCHRO = 0xE, /* synchro operand value register */
- IT_DSP_PG = 0x20,
-};
-
-enum tpu_ctrl_bits {
- TPU_CTRL_RESET = (1 << 0),
- TPU_CTRL_PAGE = (1 << 1),
- TPU_CTRL_EN = (1 << 2),
- /* unused */
- TPU_CTRL_DSP_EN = (1 << 4),
- /* unused */
- TPU_CTRL_MCU_RAM_ACC = (1 << 6),
- TPU_CTRL_TSP_RESET = (1 << 7),
- TPU_CTRL_IDLE = (1 << 8),
- TPU_CTRL_WAIT = (1 << 9),
- TPU_CTRL_CK_ENABLE = (1 << 10),
- TPU_CTRL_FULL_WRITE = (1 << 11),
-};
-
-enum tpu_int_ctrl_bits {
- ICTRL_MCU_FRAME = (1 << 0),
- ICTRL_MCU_PAGE = (1 << 1),
- ICTRL_DSP_FRAME = (1 << 2),
- ICTRL_DSP_FRAME_FORCE = (1 << 3),
-};
-
-static uint16_t *tpu_ptr = (uint16_t *)BASE_ADDR_TPU_RAM;
-
-#ifdef TPU_DEBUG
-#include <comm/sercomm.h>
-#include <layer1/sync.h>
-static void tpu_ram_read_en(int enable)
-{
- uint16_t reg;
-
- reg = readw(TPU_REG(TPU_CTRL));
- if (enable)
- reg |= TPU_CTRL_MCU_RAM_ACC;
- else
- reg &= ~TPU_CTRL_MCU_RAM_ACC;
- writew(reg, TPU_REG(TPU_CTRL));
-}
-
-static void tpu_debug(void)
-{
- uint16_t *tpu_base = (uint16_t *)BASE_ADDR_TPU_RAM;
- unsigned int tpu_size = tpu_ptr - tpu_base;
- struct msgb *msg = sercomm_alloc_msgb(tpu_size*2);
- uint16_t *data;
- uint32_t *fn;
- uint16_t reg;
- int i;
-
- /* prepend tpu memory dump with frame number */
- fn = (uint32_t *) msgb_put(msg, sizeof(fn));
- *fn = l1s.current_time.fn;
-
- tpu_ram_read_en(1);
-
- data = (uint16_t *) msgb_put(msg, tpu_size*2);
- for (i = 0; i < tpu_size; i ++)
- data[i] = tpu_base[i];
-
- tpu_ram_read_en(0);
-
- sercomm_sendmsg(SC_DLCI_DEBUG, msg);
-}
-#else
-static void tpu_debug(void) { }
-#endif
-
-#define BIT_SET 1
-#define BIT_CLEAR 0
-
-/* wait for a certain control bit to be set */
-static int tpu_wait_ctrl_bit(uint16_t bit, int set)
-{
- int timeout = 10*1000;
-
- while (1) {
- uint16_t reg = readw(TPU_REG(TPU_CTRL));
- if (set) {
- if (reg & bit)
- break;
- } else {
- if (!(reg & bit))
- break;
- }
- timeout--;
- if (timeout <= 0) {
- puts("Timeout while waiting for TPU ctrl bit!\n");
- return -1;
- }
- }
-
- return 0;
-}
-
-/* assert or de-assert TPU reset */
-void tpu_reset(int active)
-{
- uint16_t reg;
-
- printd("tpu_reset(%u)\n", active);
- reg = readw(TPU_REG(TPU_CTRL));
- if (active) {
- reg |= (TPU_CTRL_RESET|TPU_CTRL_TSP_RESET);
- writew(reg, TPU_REG(TPU_CTRL));
- tpu_wait_ctrl_bit(TPU_CTRL_RESET, BIT_SET);
- } else {
- reg &= ~(TPU_CTRL_RESET|TPU_CTRL_TSP_RESET);
- writew(reg, TPU_REG(TPU_CTRL));
- tpu_wait_ctrl_bit(TPU_CTRL_RESET, BIT_CLEAR);
- }
-}
-
-/* Enable or Disable a new scenario loaded into the TPU */
-void tpu_enable(int active)
-{
- uint16_t reg = readw(TPU_REG(TPU_CTRL));
-
- printd("tpu_enable(%u)\n", active);
-
- tpu_debug();
-
- if (active)
- reg |= TPU_CTRL_EN;
- else
- reg &= ~TPU_CTRL_EN;
- writew(reg, TPU_REG(TPU_CTRL));
-
- /* After the new scenario is loaded, TPU switches the MCU-visible memory
- * page, i.e. we can write without any danger */
- tpu_rewind();
-#if 0
- {
- int i;
- uint16_t oldreg = 0;
-
- for (i = 0; i < 100000; i++) {
- reg = readw(TPU_REG(TPU_CTRL));
- if (i == 0 || oldreg != reg) {
- printd("%d TPU state: 0x%04x\n", i, reg);
- }
- oldreg = reg;
- }
- }
-#endif
-}
-
-/* Enable or Disable the clock of the TPU Module */
-void tpu_clk_enable(int active)
-{
- uint16_t reg = readw(TPU_REG(TPU_CTRL));
-
- printd("tpu_clk_enable(%u)\n", active);
- if (active) {
- reg |= TPU_CTRL_CK_ENABLE;
- writew(reg, TPU_REG(TPU_CTRL));
- tpu_wait_ctrl_bit(TPU_CTRL_CK_ENABLE, BIT_SET);
- } else {
- reg &= ~TPU_CTRL_CK_ENABLE;
- writew(reg, TPU_REG(TPU_CTRL));
- tpu_wait_ctrl_bit(TPU_CTRL_CK_ENABLE, BIT_CLEAR);
- }
-}
-
-/* Enable Frame Interrupt generation on next frame. DSP will reset it */
-void tpu_dsp_frameirq_enable(void)
-{
- uint16_t reg = readw(TPU_REG(TPU_CTRL));
- reg |= TPU_CTRL_DSP_EN;
- writew(reg, TPU_REG(TPU_CTRL));
-
- tpu_wait_ctrl_bit(TPU_CTRL_DSP_EN, BIT_SET);
-}
-
-/* Is a Frame interrupt still pending for the DSP ? */
-int tpu_dsp_fameirq_pending(void)
-{
- uint16_t reg = readw(TPU_REG(TPU_CTRL));
-
- if (reg & TPU_CTRL_DSP_EN)
- return 1;
-
- return 0;
-}
-
-void tpu_rewind(void)
-{
- dputs("tpu_rewind()\n");
- tpu_ptr = (uint16_t *) BASE_ADDR_TPU_RAM;
-}
-
-void tpu_enqueue(uint16_t instr)
-{
- printd("tpu_enqueue(tpu_ptr=%p, instr=0x%04x)\n", tpu_ptr, instr);
- *tpu_ptr++ = instr;
- if (tpu_ptr > (uint16_t *) TPU_RAM_END)
- puts("TPU enqueue beyond end of TPU memory\n");
-}
-
-void tpu_init(void)
-{
- uint16_t *ptr;
-
- /* Put TPU into Reset and enable clock */
- tpu_reset(1);
- tpu_clk_enable(1);
-
- /* set all TPU RAM to zero */
- for (ptr = (uint16_t *) BASE_ADDR_TPU_RAM; ptr < (uint16_t *) TPU_RAM_END; ptr++)
- *ptr = 0x0000;
-
- /* Get TPU out of reset */
- tpu_reset(0);
- /* Disable all interrupts */
- writeb(0x7, TPU_REG(INT_CTRL));
-
- tpu_rewind();
- tpu_enq_offset(0);
- tpu_enq_sync(0);
-}
-
-void tpu_test(void)
-{
- int i;
-
- /* program a sequence of TSPACT events into the TPU */
- for (i = 0; i < 10; i++) {
- puts("TSP ACT enable: ");
- tsp_act_enable(0x0001);
- tpu_enq_wait(10);
- puts("TSP ACT disable: ");
- tsp_act_disable(0x0001);
- tpu_enq_wait(10);
- }
- tpu_enq_sleep();
-
- /* tell the chip to execute the scenario */
- tpu_enable(1);
-}
-
-void tpu_wait_idle(void)
-{
- dputs("Waiting for TPU Idle ");
- /* Wait until TPU is doing something */
- delay_us(3);
- /* Wait until TPU is idle */
- while (readw(TPU_REG(TPU_CTRL)) & TPU_CTRL_IDLE)
- dputchar('.');
- dputs("Done!\n");
-}
-
-void tpu_frame_irq_en(int mcu, int dsp)
-{
- uint8_t reg = readb(TPU_REG(INT_CTRL));
- if (mcu)
- reg &= ~ICTRL_MCU_FRAME;
- else
- reg |= ICTRL_MCU_FRAME;
-
- if (dsp)
- reg &= ~ICTRL_DSP_FRAME;
- else
- reg |= ICTRL_DSP_FRAME;
-
- writeb(reg, TPU_REG(INT_CTRL));
-}
-
-void tpu_force_dsp_frame_irq(void)
-{
- uint8_t reg = readb(TPU_REG(INT_CTRL));
- reg |= ICTRL_DSP_FRAME_FORCE;
- writeb(reg, TPU_REG(INT_CTRL));
-}
-
-uint16_t tpu_get_offset(void)
-{
- return readw(TPU_REG(TPU_OFFSET));
-}
-
-uint16_t tpu_get_synchro(void)
-{
- return readw(TPU_REG(TPU_SYNCHRO));
-}
-
-/* add two numbers, modulo 5000, and ensure the result is positive */
-uint16_t add_mod5000(int16_t a, int16_t b)
-{
- int32_t sum = (int32_t)a + (int32_t)b;
-
- sum %= 5000;
-
- /* wrap around zero */
- if (sum < 0)
- sum += 5000;
-
- return sum;
-}
diff --git a/Src/osmoconbb/src/target/firmware/calypso/tsp.c b/Src/osmoconbb/src/target/firmware/calypso/tsp.c
deleted file mode 100644
index 5d24f48..0000000
--- a/Src/osmoconbb/src/target/firmware/calypso/tsp.c
+++ /dev/null
@@ -1,121 +0,0 @@
-/* Calypso DBB internal TSP (Time Serial Port) Driver */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-
-#include <debug.h>
-#include <memory.h>
-#include <calypso/tpu.h>
-#include <calypso/tsp.h>
-
-static uint16_t tspact_state;
-
-/* initiate a TSP write through the TPU */
-void tsp_write(uint8_t dev_idx, uint8_t bitlen, uint32_t dout)
-{
- if (bitlen <= 8) {
- tpu_enq_move(TPUI_TX_1, dout & 0xff);
- } else if (bitlen <= 16) {
- tpu_enq_move(TPUI_TX_1, (dout >> 8) & 0xff);
- tpu_enq_move(TPUI_TX_2, dout & 0xff);
- } else if (bitlen <= 24) {
- tpu_enq_move(TPUI_TX_1, (dout >> 16) & 0xff);
- tpu_enq_move(TPUI_TX_2, (dout >> 8) & 0xff);
- tpu_enq_move(TPUI_TX_3, dout & 0xff);
- } else {
- tpu_enq_move(TPUI_TX_1, (dout >> 24) & 0xff);
- tpu_enq_move(TPUI_TX_2, (dout >> 16) & 0xff);
- tpu_enq_move(TPUI_TX_3, (dout >> 8) & 0xff);
- tpu_enq_move(TPUI_TX_4, dout & 0xff);
- }
- tpu_enq_move(TPUI_TSP_CTRL1, (dev_idx << 5) | (bitlen - 1));
- tpu_enq_move(TPUI_TSP_CTRL2, TPUI_CTRL2_WR);
-}
-
-/* Configure clock edge and chip enable polarity for a device */
-void tsp_setup(uint8_t dev_idx, int clk_rising, int en_positive, int en_edge)
-{
- uint8_t reg = TPUI_TSP_SET1 + (dev_idx / 2);
- uint8_t val = 0;
- uint8_t shift;
-
- if (dev_idx & 1)
- shift = 4;
- else
- shift = 0;
-
- if (clk_rising)
- val |= 1;
- if (en_positive)
- val |= 2;
- if (en_edge)
- val |= 4;
-
- tpu_enq_move(reg, (val << shift));
-}
-
-/* Update the TSPACT state, including enable and disable */
-void tsp_act_update(uint16_t new_act)
-{
- uint8_t low = new_act & 0xff;
- uint8_t high = new_act >> 8;
-
- if (low != (tspact_state & 0xff))
- tpu_enq_move(TPUI_TSP_ACT_L, low);
- if (high != (tspact_state >> 8))
- tpu_enq_move(TPUI_TSP_ACT_U, high);
-
- tspact_state = new_act;
-}
-
-/* Enable one or multiple TSPACT signals */
-void tsp_act_enable(uint16_t bitmask)
-{
- uint16_t new_act = tspact_state | bitmask;
- tsp_act_update(new_act);
-}
-
-/* Disable one or multiple TSPACT signals */
-void tsp_act_disable(uint16_t bitmask)
-{
- uint16_t new_act = tspact_state & ~bitmask;
- tsp_act_update(new_act);
-}
-
-/* Obtain the current tspact state */
-uint16_t tsp_act_state(void)
-{
- return tspact_state;
-}
-
-/* Toggle one or multiple TSPACT signals */
-void tsp_act_toggle(uint16_t bitmask)
-{
- uint16_t new_act = tspact_state ^ bitmask;
- tsp_act_update(new_act);
-}
-
-void tsp_init(void)
-{
- tsp_act_update(0);
-}
diff --git a/Src/osmoconbb/src/target/firmware/calypso/uart.c b/Src/osmoconbb/src/target/firmware/calypso/uart.c
deleted file mode 100644
index bcb56bd..0000000
--- a/Src/osmoconbb/src/target/firmware/calypso/uart.c
+++ /dev/null
@@ -1,440 +0,0 @@
-/* Calypso DBB internal UART Driver */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- * (C) 2010 by Ingo Albrecht <prom@berlin.ccc.de>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <debug.h>
-
-#include <memory.h>
-#include <stdint.h>
-#include <string.h>
-#include <stdio.h>
-
-#include <defines.h>
-#include <console.h>
-#include <comm/sercomm.h>
-
-#include <calypso/irq.h>
-#include <uart.h>
-
-#define BASE_ADDR_UART_MODEM 0xffff5000
-#define OFFSET_IRDA 0x800
-
-#define UART_REG(n,m) (BASE_ADDR_UART_MODEM + ((n)*OFFSET_IRDA)+(m))
-
-#define LCR7BIT 0x80
-#define LCRBFBIT 0x40
-#define MCR6BIT 0x20
-#define REG_OFFS(m) ((m) & ~(LCR7BIT|LCRBFBIT|MCR6BIT))
-/* read access LCR[7] = 0 */
-enum uart_reg {
- RHR = 0,
- IER = 1,
- IIR = 2,
- LCR = 3,
- MCR = 4,
- LSR = 5,
- MSR = 6,
- SPR = 7,
- MDR1 = 8,
- DMR2 = 9,
- SFLSR = 0x0a,
- RESUME = 0x0b,
- SFREGL = 0x0c,
- SFREGH = 0x0d,
- BLR = 0x0e,
- ACREG = 0x0f,
- SCR = 0x10,
- SSR = 0x11,
- EBLR = 0x12,
-/* read access LCR[7] = 1 */
- DLL = RHR | LCR7BIT,
- DLH = IER | LCR7BIT,
- DIV1_6 = ACREG | LCR7BIT,
-/* read/write access LCR[7:0] = 0xbf */
- EFR = IIR | LCRBFBIT,
- XON1 = MCR | LCRBFBIT,
- XON2 = LSR | LCRBFBIT,
- XOFF1 = MSR | LCRBFBIT,
- XOFF2 = SPR | LCRBFBIT,
-/* read/write access if EFR[4] = 1 and MCR[6] = 1 */
- TCR = MSR | MCR6BIT,
- TLR = SPR | MCR6BIT,
-};
-/* write access LCR[7] = 0 */
-#define THR RHR
-#define FCR IIR /* only if EFR[4] = 1 */
-#define TXFLL SFLSR
-#define TXFLH RESUME
-#define RXFLL SFREGL
-#define RXFLH SFREGH
-
-enum fcr_bits {
- FIFO_EN = (1 << 0),
- RX_FIFO_CLEAR = (1 << 1),
- TX_FIFO_CLEAR = (1 << 2),
- DMA_MODE = (1 << 3),
-};
-#define TX_FIFO_TRIG_SHIFT 4
-#define RX_FIFO_TRIG_SHIFT 6
-
-enum iir_bits {
- IIR_INT_PENDING = 0x01,
- IIR_INT_TYPE = 0x3E,
- IIR_INT_TYPE_RX_STATUS_ERROR = 0x06,
- IIR_INT_TYPE_RX_TIMEOUT = 0x0C,
- IIR_INT_TYPE_RHR = 0x04,
- IIR_INT_TYPE_THR = 0x02,
- IIR_INT_TYPE_MSR = 0x00,
- IIR_INT_TYPE_XOFF = 0x10,
- IIR_INT_TYPE_FLOW = 0x20,
- IIR_FCR0_MIRROR = 0xC0,
-};
-
-#define UART_REG_UIR 0xffff6000
-
-/* enable or disable the divisor latch for access to DLL, DLH */
-static void uart_set_lcr7bit(int uart, int on)
-{
- uint8_t reg;
-
- reg = readb(UART_REG(uart, LCR));
- if (on)
- reg |= (1 << 7);
- else
- reg &= ~(1 << 7);
- writeb(reg, UART_REG(uart, LCR));
-}
-
-static uint8_t old_lcr;
-static void uart_set_lcr_bf(int uart, int on)
-{
- if (on) {
- old_lcr = readb(UART_REG(uart, LCR));
- writeb(0xBF, UART_REG(uart, LCR));
- } else {
- writeb(old_lcr, UART_REG(uart, LCR));
- }
-}
-
-/* Enable or disable the TCR_TLR latch bit in MCR[6] */
-static void uart_set_mcr6bit(int uart, int on)
-{
- uint8_t mcr;
- /* we assume EFR[4] is always set to 1 */
- mcr = readb(UART_REG(uart, MCR));
- if (on)
- mcr |= (1 << 6);
- else
- mcr &= ~(1 << 6);
- writeb(mcr, UART_REG(uart, MCR));
-}
-
-static void uart_reg_write(int uart, enum uart_reg reg, uint8_t val)
-{
- if (reg & LCRBFBIT)
- uart_set_lcr_bf(uart, 1);
- else if (reg & LCR7BIT)
- uart_set_lcr7bit(uart, 1);
- else if (reg & MCR6BIT)
- uart_set_mcr6bit(uart, 1);
-
- writeb(val, UART_REG(uart, REG_OFFS(reg)));
-
- if (reg & LCRBFBIT)
- uart_set_lcr_bf(uart, 0);
- else if (reg & LCR7BIT)
- uart_set_lcr7bit(uart, 0);
- else if (reg & MCR6BIT)
- uart_set_mcr6bit(uart, 0);
-}
-
-/* read from a UART register, applying any required latch bits */
-static uint8_t uart_reg_read(int uart, enum uart_reg reg)
-{
- uint8_t ret;
-
- if (reg & LCRBFBIT)
- uart_set_lcr_bf(uart, 1);
- else if (reg & LCR7BIT)
- uart_set_lcr7bit(uart, 1);
- else if (reg & MCR6BIT)
- uart_set_mcr6bit(uart, 1);
-
- ret = readb(UART_REG(uart, REG_OFFS(reg)));
-
- if (reg & LCRBFBIT)
- uart_set_lcr_bf(uart, 0);
- else if (reg & LCR7BIT)
- uart_set_lcr7bit(uart, 0);
- else if (reg & MCR6BIT)
- uart_set_mcr6bit(uart, 0);
-
- return ret;
-}
-
-static void uart_irq_handler_cons(__unused enum irq_nr irqnr)
-{
- const uint8_t uart = CONS_UART_NR;
- uint8_t iir;
-
- //uart_putchar_nb(uart, 'U');
-
- iir = uart_reg_read(uart, IIR);
- if (iir & IIR_INT_PENDING)
- return;
-
- switch (iir & IIR_INT_TYPE) {
- case IIR_INT_TYPE_RHR:
- break;
- case IIR_INT_TYPE_THR:
- if (cons_rb_flush() == 1) {
- /* everything was flushed, disable THR IRQ */
- uint8_t ier = uart_reg_read(uart, IER);
- ier &= ~(1 << 1);
- uart_reg_write(uart, IER, ier);
- }
- break;
- case IIR_INT_TYPE_MSR:
- break;
- case IIR_INT_TYPE_RX_STATUS_ERROR:
- break;
- case IIR_INT_TYPE_RX_TIMEOUT:
- break;
- case IIR_INT_TYPE_XOFF:
- break;
- }
-}
-
-static void uart_irq_handler_sercomm(__unused enum irq_nr irqnr)
-{
- const uint8_t uart = SERCOMM_UART_NR;
- uint8_t iir, ch;
-
- //uart_putchar_nb(uart, 'U');
-
- iir = uart_reg_read(uart, IIR);
- if (iir & IIR_INT_PENDING)
- return;
-
- switch (iir & IIR_INT_TYPE) {
- case IIR_INT_TYPE_RX_TIMEOUT:
- case IIR_INT_TYPE_RHR:
- /* as long as we have rx data available */
- while (uart_getchar_nb(uart, &ch)) {
- if (sercomm_drv_rx_char(ch) < 0) {
- /* sercomm cannot receive more data right now */
- uart_irq_enable(uart, UART_IRQ_RX_CHAR, 0);
- }
- }
- break;
- case IIR_INT_TYPE_THR:
- /* as long as we have space in the FIFO */
- while (!uart_tx_busy(uart)) {
- /* get a byte from sercomm */
- if (!sercomm_drv_pull(&ch)) {
- /* no more bytes in sercomm, stop TX interrupts */
- uart_irq_enable(uart, UART_IRQ_TX_EMPTY, 0);
- break;
- }
- /* write the byte into the TX FIFO */
- uart_putchar_nb(uart, ch);
- }
- break;
- case IIR_INT_TYPE_MSR:
- printf("UART IRQ MSR\n");
- break;
- case IIR_INT_TYPE_RX_STATUS_ERROR:
- printf("UART IRQ RX_SE\n");
- break;
- case IIR_INT_TYPE_XOFF:
- printf("UART IRQXOFF\n");
- break;
- }
-}
-
-static const uint8_t uart2irq[] = {
- [0] = IRQ_UART_IRDA,
- [1] = IRQ_UART_MODEM,
-};
-
-void uart_init(uint8_t uart, uint8_t interrupts)
-{
- uint8_t irq = uart2irq[uart];
-
- uart_reg_write(uart, IER, 0x00);
- if (uart == CONS_UART_NR) {
- cons_init();
- if(interrupts) {
- irq_register_handler(irq, &uart_irq_handler_cons);
- irq_config(irq, 0, 0, 0xff);
- irq_enable(irq);
- }
- } else {
- sercomm_init();
- if(interrupts) {
- irq_register_handler(irq, &uart_irq_handler_sercomm);
- irq_config(irq, 0, 0, 0xff);
- irq_enable(irq);
- }
- uart_irq_enable(uart, UART_IRQ_RX_CHAR, 1);
- }
-#if 0
- if (uart == 1) {
- /* assign UART to MCU and unmask interrupts*/
- writeb(UART_REG_UIR, 0x00);
- }
-#endif
-
- /* if we don't initialize these, we get strange corruptions in the
- received data... :-( */
- uart_reg_write(uart, MDR1, 0x07); /* turn off UART */
- uart_reg_write(uart, XON1, 0x00); /* Xon1/Addr Register */
- uart_reg_write(uart, XON2, 0x00); /* Xon2/Addr Register */
- uart_reg_write(uart, XOFF1, 0x00); /* Xoff1 Register */
- uart_reg_write(uart, XOFF2, 0x00); /* Xoff2 Register */
- uart_reg_write(uart, EFR, 0x00); /* Enhanced Features Register */
-
- /* select UART mode */
- uart_reg_write(uart, MDR1, 0);
- /* no XON/XOFF flow control, ENHANCED_EN, no auto-RTS/CTS */
- uart_reg_write(uart, EFR, (1 << 4));
- /* enable Tx/Rx FIFO, Tx trigger at 56 spaces, Rx trigger at 60 chars */
- uart_reg_write(uart, FCR, FIFO_EN | RX_FIFO_CLEAR | TX_FIFO_CLEAR |
- (3 << TX_FIFO_TRIG_SHIFT) | (3 << RX_FIFO_TRIG_SHIFT));
-
- /* THR interrupt only when TX FIFO and TX shift register are empty */
- uart_reg_write(uart, SCR, (1 << 0));// | (1 << 3));
-
- /* 8 bit, 1 stop bit, no parity, no break */
- uart_reg_write(uart, LCR, 0x03);
-
- uart_set_lcr7bit(uart, 0);
-}
-
-void uart_poll(uint8_t uart) {
- if(uart == CONS_UART_NR) {
- uart_irq_handler_cons(0);
- } else {
- uart_irq_handler_sercomm(0);
- }
-}
-
-void uart_irq_enable(uint8_t uart, enum uart_irq irq, int on)
-{
- uint8_t ier = uart_reg_read(uart, IER);
- uint8_t mask = 0;
-
- switch (irq) {
- case UART_IRQ_TX_EMPTY:
- mask = (1 << 1);
- break;
- case UART_IRQ_RX_CHAR:
- mask = (1 << 0);
- break;
- }
-
- if (on)
- ier |= mask;
- else
- ier &= ~mask;
-
- uart_reg_write(uart, IER, ier);
-}
-
-
-void uart_putchar_wait(uint8_t uart, int c)
-{
- /* wait while TX FIFO indicates full */
- while (readb(UART_REG(uart, SSR)) & 0x01) { }
-
- /* put character in TX FIFO */
- writeb(c, UART_REG(uart, THR));
-}
-
-int uart_putchar_nb(uint8_t uart, int c)
-{
- /* if TX FIFO indicates full, abort */
- if (readb(UART_REG(uart, SSR)) & 0x01)
- return 0;
-
- writeb(c, UART_REG(uart, THR));
- return 1;
-}
-
-int uart_getchar_nb(uint8_t uart, uint8_t *ch)
-{
- uint8_t lsr;
-
- lsr = readb(UART_REG(uart, LSR));
-
- /* something strange happened */
- if (lsr & 0x02)
- printf("LSR RX_OE\n");
- if (lsr & 0x04)
- printf("LSR RX_PE\n");
- if (lsr & 0x08)
- printf("LSR RX_FE\n");
- if (lsr & 0x10)
- printf("LSR RX_BI\n");
- if (lsr & 0x80)
- printf("LSR RX_FIFO_STS\n");
-
- /* is the Rx FIFO empty? */
- if (!(lsr & 0x01))
- return 0;
-
- *ch = readb(UART_REG(uart, RHR));
- //printf("getchar_nb(%u) = %02x\n", uart, *ch);
- return 1;
-}
-
-int uart_tx_busy(uint8_t uart)
-{
- if (readb(UART_REG(uart, SSR)) & 0x01)
- return 1;
- return 0;
-}
-
-static const uint16_t divider[] = {
- [UART_38400] = 21, /* 38,690 */
- [UART_57600] = 14, /* 58,035 */
- [UART_115200] = 7, /* 116,071 */
- [UART_230400] = 4, /* 203,125! (-3% would be 223,488) */
- [UART_460800] = 2, /* 406,250! (-3% would be 446,976) */
- [UART_921600] = 1, /* 812,500! (-3% would be 893,952) */
-};
-
-int uart_baudrate(uint8_t uart, enum uart_baudrate bdrt)
-{
- uint16_t div;
-
- if (bdrt >= ARRAY_SIZE(divider))
- return -1;
-
- div = divider[bdrt];
- uart_set_lcr7bit(uart, 1);
- writeb(div & 0xff, UART_REG(uart, DLL));
- writeb(div >> 8, UART_REG(uart, DLH));
- uart_set_lcr7bit(uart, 0);
-
- return 0;
-}
diff --git a/Src/osmoconbb/src/target/firmware/calypso/uwire.c b/Src/osmoconbb/src/target/firmware/calypso/uwire.c
deleted file mode 100644
index ac8f15e..0000000
--- a/Src/osmoconbb/src/target/firmware/calypso/uwire.c
+++ /dev/null
@@ -1,136 +0,0 @@
-/* Driver for uWire Master Controller inside TI Calypso */
-
-/* (C) 2010 by Sylvain Munaut <tnt@246tNt.com>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-
-//#define DEBUG
-#include <debug.h>
-
-#include <memory.h>
-#include <uwire.h>
-#include <delay.h>
-
-#define BASE_ADDR_UWIRE 0xfffe4000
-#define UWIRE_REG(n) (BASE_ADDR_UWIRE+(n))
-
-enum uwire_regs {
- REG_DATA = 0x00,
- REG_CSR = 0x02,
- REG_SR1 = 0x04,
- REG_SR2 = 0x06,
- REG_SR3 = 0x08,
-};
-
-#define UWIRE_CSR_BITS_RD(n) (((n) & 0x1f) << 0)
-#define UWIRE_CSR_BITS_WR(n) (((n) & 0x1f) << 5)
-#define UWIRE_CSR_IDX(n) (((n) & 3) << 10)
-#define UWIRE_CSR_CS_CMD (1 << 12)
-#define UWIRE_CSR_START (1 << 13)
-#define UWIRE_CSR_CSRB (1 << 14)
-#define UWIRE_CSR_RDRB (1 << 15)
-
-#define UWIRE_CSn_EDGE_RD (1 << 0) /* 1=falling 0=rising */
-#define UWIRE_CSn_EDGE_WR (1 << 1) /* 1=falling 0=rising */
-#define UWIRE_CSn_CS_LVL (1 << 2)
-#define UWIRE_CSn_FRQ_DIV2 (0 << 3)
-#define UWIRE_CSn_FRQ_DIV4 (1 << 3)
-#define UWIRE_CSn_FRQ_DIV8 (2 << 3)
-#define UWIRE_CSn_CKH
-
-#define UWIRE_CSn_SHIFT(n) (((n) & 1) ? 6 : 0)
-#define UWIRE_CSn_REG(n) (((n) & 2) ? REG_SR2 : REG_SR1)
-
-#define UWIRE_SR3_CLK_EN (1 << 0)
-#define UWIRE_SR3_CLK_DIV2 (0 << 1)
-#define UWIRE_SR3_CLK_DIV4 (1 << 1)
-#define UWIRE_SR3_CLK_DIV7 (2 << 1)
-#define UWIRE_SR3_CLK_DIV10 (3 << 1)
-
-static inline void _uwire_wait(int mask, int val)
-{
- while ((readw(UWIRE_REG(REG_CSR)) & mask) != val);
-}
-
-void uwire_init(void)
-{
- writew(UWIRE_SR3_CLK_EN | UWIRE_SR3_CLK_DIV2, UWIRE_REG(REG_SR3));
- /* FIXME only init CS0 for now */
- writew(((UWIRE_CSn_CS_LVL | UWIRE_CSn_FRQ_DIV2) << UWIRE_CSn_SHIFT(0)),
- UWIRE_REG(UWIRE_CSn_REG(0)));
- writew(UWIRE_CSR_IDX(0) | UWIRE_CSR_CS_CMD, UWIRE_REG(REG_CSR));
- _uwire_wait(UWIRE_CSR_CSRB, 0);
-}
-
-int uwire_xfer(int cs, int bitlen, const void *dout, void *din)
-{
- uint16_t tmp = 0;
-
- if (bitlen <= 0 || bitlen > 16)
- return -1;
- if (cs < 0 || cs > 4)
- return -1;
-
- /* FIXME uwire_init always selects CS0 for now */
-
- printd("uwire_xfer(dev_idx=%u, bitlen=%u\n", cs, bitlen);
-
- /* select the chip */
- writew(UWIRE_CSR_IDX(0) | UWIRE_CSR_CS_CMD, UWIRE_REG(REG_CSR));
- _uwire_wait(UWIRE_CSR_CSRB, 0);
-
- if (dout) {
- if (bitlen <= 8)
- tmp = *(uint8_t *)dout;
- else if (bitlen <= 16)
- tmp = *(uint16_t *)dout;
- tmp <<= 16 - bitlen; /* align to MSB */
- writew(tmp, UWIRE_REG(REG_DATA));
- printd(", data_out=0x%04hx", tmp);
- }
-
- tmp = (dout ? UWIRE_CSR_BITS_WR(bitlen) : 0) |
- (din ? UWIRE_CSR_BITS_RD(bitlen) : 0) |
- UWIRE_CSR_START;
- writew(tmp, UWIRE_REG(REG_CSR));
-
- _uwire_wait(UWIRE_CSR_CSRB, 0);
-
- if (din) {
- _uwire_wait(UWIRE_CSR_RDRB, UWIRE_CSR_RDRB);
-
- tmp = readw(UWIRE_REG(REG_DATA));
- printd(", data_in=0x%08x", tmp);
-
- if (bitlen <= 8)
- *(uint8_t *)din = tmp & 0xff;
- else if (bitlen <= 16)
- *(uint16_t *)din = tmp & 0xffff;
- }
- /* unselect the chip */
- writew(UWIRE_CSR_IDX(0) | 0, UWIRE_REG(REG_CSR));
- _uwire_wait(UWIRE_CSR_CSRB, 0);
-
- printd(")\n");
-
- return 0;
-}
diff --git a/Src/osmoconbb/src/target/firmware/comm/Makefile b/Src/osmoconbb/src/target/firmware/comm/Makefile
deleted file mode 100644
index 25fbb98..0000000
--- a/Src/osmoconbb/src/target/firmware/comm/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
-
-LIBRARIES+=comm
-comm_DIR=comm
-comm_SRCS=msgb.c sercomm.c sercomm_cons.c timer.c
-
diff --git a/Src/osmoconbb/src/target/firmware/comm/msgb.c b/Src/osmoconbb/src/target/firmware/comm/msgb.c
deleted file mode 100644
index 4dbc119..0000000
--- a/Src/osmoconbb/src/target/firmware/comm/msgb.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/* (C) 2008-2010 by Harald Welte <laforge@gnumonks.org>
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-
-#include <stdint.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <asm/system.h>
-
-#include <debug.h>
-#include <delay.h>
-
-#include <osmocom/core/msgb.h>
-
-#define NO_TALLOC
-
-void *tall_msgb_ctx;
-
-#ifdef NO_TALLOC
-/* This is a poor mans static allocator for msgb objects */
-#define MSGB_DATA_SIZE 256+4
-#define MSGB_NUM 32
-struct supermsg {
- uint8_t allocated;
- struct msgb msg;
- uint8_t buf[MSGB_DATA_SIZE];
-};
-static struct supermsg msgs[MSGB_NUM];
-void *_talloc_zero(void *ctx, unsigned int size, const char *name)
-{
- unsigned long flags;
- unsigned int i;
-
- local_firq_save(flags);
-
- if (size > sizeof(struct msgb) + MSGB_DATA_SIZE)
- goto panic;
-
- for (i = 0; i < ARRAY_SIZE(msgs); i++) {
- if (!msgs[i].allocated) {
- msgs[i].allocated = 1;
- memset(&msgs[i].msg, 0, sizeof(&msgs[i].msg));
- memset(&msgs[i].buf, 0, sizeof(&msgs[i].buf));
- local_irq_restore(flags);
- return &msgs[i].msg;
- }
- }
-
-panic:
- cons_puts("unable to allocate msgb\n");
- while (1);
-
- return NULL; /* not reached */
-}
-void talloc_free(void *msg)
-{
- struct supermsg *smsg = container_of(msg, struct supermsg, msg);
- /* no locking required, since this is atomic */
- smsg->allocated = 0;
-}
-#endif
diff --git a/Src/osmoconbb/src/target/firmware/comm/sercomm.c b/Src/osmoconbb/src/target/firmware/comm/sercomm.c
deleted file mode 100644
index ddc852c..0000000
--- a/Src/osmoconbb/src/target/firmware/comm/sercomm.c
+++ /dev/null
@@ -1,297 +0,0 @@
-/* Serial communications layer, based on HDLC */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-#include <errno.h>
-
-#include <osmocom/core/msgb.h>
-
-#ifdef HOST_BUILD
-
-# define SERCOMM_RX_MSG_SIZE 2048
-# ifndef ARRAY_SIZE
-# define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
-# endif
-# include <sercomm.h>
-
-static inline void sercomm_lock(unsigned long __attribute__((unused)) *flags) {}
-static inline void sercomm_unlock(unsigned long __attribute__((unused)) *flags) {}
-
-#else
-
-# define SERCOMM_RX_MSG_SIZE 256
-# include <debug.h>
-# include <osmocom/core/linuxlist.h>
-# include <asm/system.h>
-
-static inline void sercomm_lock(unsigned long *flags)
-{
- local_firq_save(*flags);
-}
-
-static inline void sercomm_unlock(unsigned long *flags)
-{
- local_irq_restore(*flags);
-}
-
-# include <comm/sercomm.h>
-# include <uart.h>
-
-#endif
-
-
-enum rx_state {
- RX_ST_WAIT_START,
- RX_ST_ADDR,
- RX_ST_CTRL,
- RX_ST_DATA,
- RX_ST_ESCAPE,
-};
-
-static struct {
- int initialized;
-
- /* transmit side */
- struct {
- struct llist_head dlci_queues[_SC_DLCI_MAX];
- struct msgb *msg;
- enum rx_state state;
- uint8_t *next_char;
- } tx;
-
- /* receive side */
- struct {
- dlci_cb_t dlci_handler[_SC_DLCI_MAX];
- struct msgb *msg;
- enum rx_state state;
- uint8_t dlci;
- uint8_t ctrl;
- } rx;
-
-} sercomm;
-
-void sercomm_init(void)
-{
- unsigned int i;
- for (i = 0; i < ARRAY_SIZE(sercomm.tx.dlci_queues); i++)
- INIT_LLIST_HEAD(&sercomm.tx.dlci_queues[i]);
-
- sercomm.rx.msg = NULL;
- sercomm.initialized = 1;
-
- /* set up the echo dlci */
- sercomm_register_rx_cb(SC_DLCI_ECHO, &sercomm_sendmsg);
-}
-
-int sercomm_initialized(void)
-{
- return sercomm.initialized;
-}
-
-/* user interface for transmitting messages for a given DLCI */
-void sercomm_sendmsg(uint8_t dlci, struct msgb *msg)
-{
- unsigned long flags;
- uint8_t *hdr;
-
- /* prepend address + control octet */
- hdr = msgb_push(msg, 2);
- hdr[0] = dlci;
- hdr[1] = HDLC_C_UI;
-
- /* This functiion can be called from any context: FIQ, IRQ
- * and supervisor context. Proper locking is important! */
- sercomm_lock(&flags);
- msgb_enqueue(&sercomm.tx.dlci_queues[dlci], msg);
- sercomm_unlock(&flags);
-
-#ifndef HOST_BUILD
- /* tell UART that we have something to send */
- uart_irq_enable(SERCOMM_UART_NR, UART_IRQ_TX_EMPTY, 1);
-#endif
-}
-
-/* how deep is the Tx queue for a given DLCI */
-unsigned int sercomm_tx_queue_depth(uint8_t dlci)
-{
- struct llist_head *le;
- unsigned int num = 0;
-
- llist_for_each(le, &sercomm.tx.dlci_queues[dlci]) {
- num++;
- }
-
- return num;
-}
-
-/* fetch one octet of to-be-transmitted serial data */
-int sercomm_drv_pull(uint8_t *ch)
-{
- unsigned long flags;
-
- /* we may be called from interrupt context, but we stiff need to lock
- * because sercomm could be accessed from a FIQ context ... */
-
- sercomm_lock(&flags);
-
- if (!sercomm.tx.msg) {
- unsigned int i;
- /* dequeue a new message from the queues */
- for (i = 0; i < ARRAY_SIZE(sercomm.tx.dlci_queues); i++) {
- sercomm.tx.msg = msgb_dequeue(&sercomm.tx.dlci_queues[i]);
- if (sercomm.tx.msg)
- break;
- }
- if (sercomm.tx.msg) {
- /* start of a new message, send start flag octet */
- *ch = HDLC_FLAG;
- sercomm.tx.next_char = sercomm.tx.msg->data;
- sercomm_unlock(&flags);
- return 1;
- } else {
- /* no more data avilable */
- sercomm_unlock(&flags);
- return 0;
- }
- }
-
- if (sercomm.tx.state == RX_ST_ESCAPE) {
- /* we've already transmitted the ESCAPE octet,
- * we now need to transmit the escaped data */
- *ch = *sercomm.tx.next_char++;
- sercomm.tx.state = RX_ST_DATA;
- } else if (sercomm.tx.next_char >= sercomm.tx.msg->tail) {
- /* last character has already been transmitted,
- * send end-of-message octet */
- *ch = HDLC_FLAG;
- /* we've reached the end of the message buffer */
- msgb_free(sercomm.tx.msg);
- sercomm.tx.msg = NULL;
- sercomm.tx.next_char = NULL;
- /* escaping for the two control octets */
- } else if (*sercomm.tx.next_char == HDLC_FLAG ||
- *sercomm.tx.next_char == HDLC_ESCAPE ||
- *sercomm.tx.next_char == 0x00) {
- /* send an escape octet */
- *ch = HDLC_ESCAPE;
- /* invert bit 5 of the next octet to be sent */
- *sercomm.tx.next_char ^= (1 << 5);
- sercomm.tx.state = RX_ST_ESCAPE;
- } else {
- /* standard case, simply send next octet */
- *ch = *sercomm.tx.next_char++;
- }
-
- sercomm_unlock(&flags);
- return 1;
-}
-
-/* register a handler for a given DLCI */
-int sercomm_register_rx_cb(uint8_t dlci, dlci_cb_t cb)
-{
- if (dlci >= ARRAY_SIZE(sercomm.rx.dlci_handler))
- return -EINVAL;
-
- if (sercomm.rx.dlci_handler[dlci])
- return -EBUSY;
-
- sercomm.rx.dlci_handler[dlci] = cb;
- return 0;
-}
-
-/* dispatch an incoming message once it is completely received */
-static void dispatch_rx_msg(uint8_t dlci, struct msgb *msg)
-{
- if (dlci >= ARRAY_SIZE(sercomm.rx.dlci_handler) ||
- !sercomm.rx.dlci_handler[dlci]) {
- msgb_free(msg);
- return;
- }
- sercomm.rx.dlci_handler[dlci](dlci, msg);
-}
-
-/* the driver has received one byte, pass it into sercomm layer */
-int sercomm_drv_rx_char(uint8_t ch)
-{
- uint8_t *ptr;
-
- /* we are always called from interrupt context in this function,
- * which means that any data structures we use need to be for
- * our exclusive access */
- if (!sercomm.rx.msg)
- sercomm.rx.msg = sercomm_alloc_msgb(SERCOMM_RX_MSG_SIZE);
-
- if (msgb_tailroom(sercomm.rx.msg) == 0) {
- //cons_puts("sercomm_drv_rx_char() overflow!\n");
- msgb_free(sercomm.rx.msg);
- sercomm.rx.msg = sercomm_alloc_msgb(SERCOMM_RX_MSG_SIZE);
- sercomm.rx.state = RX_ST_WAIT_START;
- return 0;
- }
-
- switch (sercomm.rx.state) {
- case RX_ST_WAIT_START:
- if (ch != HDLC_FLAG)
- break;
- sercomm.rx.state = RX_ST_ADDR;
- break;
- case RX_ST_ADDR:
- sercomm.rx.dlci = ch;
- sercomm.rx.state = RX_ST_CTRL;
- break;
- case RX_ST_CTRL:
- sercomm.rx.ctrl = ch;
- sercomm.rx.state = RX_ST_DATA;
- break;
- case RX_ST_DATA:
- if (ch == HDLC_ESCAPE) {
- /* drop the escape octet, but change state */
- sercomm.rx.state = RX_ST_ESCAPE;
- break;
- } else if (ch == HDLC_FLAG) {
- /* message is finished */
- dispatch_rx_msg(sercomm.rx.dlci, sercomm.rx.msg);
- /* allocate new buffer */
- sercomm.rx.msg = NULL;
- /* start all over again */
- sercomm.rx.state = RX_ST_WAIT_START;
-
- /* do not add the control char */
- break;
- }
- /* default case: store the octet */
- ptr = msgb_put(sercomm.rx.msg, 1);
- *ptr = ch;
- break;
- case RX_ST_ESCAPE:
- /* store bif-5-inverted octet in buffer */
- ch ^= (1 << 5);
- ptr = msgb_put(sercomm.rx.msg, 1);
- *ptr = ch;
- /* transition back to normal DATA state */
- sercomm.rx.state = RX_ST_DATA;
- break;
- }
-
- return 1;
-}
diff --git a/Src/osmoconbb/src/target/firmware/comm/sercomm_cons.c b/Src/osmoconbb/src/target/firmware/comm/sercomm_cons.c
deleted file mode 100644
index a0dca40..0000000
--- a/Src/osmoconbb/src/target/firmware/comm/sercomm_cons.c
+++ /dev/null
@@ -1,140 +0,0 @@
-/* Serial console layer, layered on top of sercomm HDLC */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <errno.h>
-#include <string.h>
-
-#include <asm/system.h>
-
-#include <uart.h>
-
-#include <console.h>
-#include <osmocom/core/msgb.h>
-#include <comm/sercomm.h>
-#include <comm/sercomm_cons.h>
-
-static struct {
- struct msgb *cur_msg;
-} scons;
-
-static void raw_puts(const char *s)
-{
- int i = strlen(s);
- while (i--)
- uart_putchar_wait(SERCOMM_UART_NR, *s++);
-}
-
-#ifdef DEBUG
-#define raw_putd(x) raw_puts(x)
-#else
-#define raw_putd(x)
-#endif
-
-int sercomm_puts(const char *s)
-{
- unsigned long flags;
- const int len = strlen(s);
- unsigned int bytes_left = len;
-
- if (!sercomm_initialized()) {
- raw_putd("sercomm not initialized: ");
- raw_puts(s);
- return len - 1;
- }
-
- /* This function is called from any context: Supervisor, IRQ, FIQ, ...
- * as such, we need to ensure re-entrant calls are either supported or
- * avoided. */
- local_irq_save(flags);
- local_fiq_disable();
-
- while (bytes_left > 0) {
- unsigned int write_num, space_left, flush;
- uint8_t *data;
-
- if (!scons.cur_msg)
- scons.cur_msg = sercomm_alloc_msgb(SERCOMM_CONS_ALLOC);
-
- if (!scons.cur_msg) {
- raw_putd("cannot allocate sercomm msgb: ");
- raw_puts(s);
- return -ENOMEM;
- }
-
- /* space left in the current msgb */
- space_left = msgb_tailroom(scons.cur_msg);
-
- if (space_left <= bytes_left) {
- write_num = space_left;
- /* flush buffer when it is full */
- flush = 1;
- } else {
- write_num = bytes_left;
- flush = 0;
- }
-
- /* obtain pointer where to copy the data */
- data = msgb_put(scons.cur_msg, write_num);
-
- /* copy data while looking for \n line termination */
- {
- unsigned int i;
- for (i = 0; i < write_num; i++) {
- /* flush buffer at end of line, but skip
- * flushing if we have a backlog in order to
- * increase efficiency of msgb filling */
- if (*s == '\n' &&
- sercomm_tx_queue_depth(SC_DLCI_CONSOLE) < 4)
- flush = 1;
- *data++ = *s++;
- }
- }
- bytes_left -= write_num;
-
- if (flush) {
- sercomm_sendmsg(SC_DLCI_CONSOLE, scons.cur_msg);
- /* reset scons.cur_msg pointer to ensure we allocate
- * a new one next round */
- scons.cur_msg = NULL;
- }
- }
-
- local_irq_restore(flags);
-
- return len - 1;
-}
-
-int sercomm_putchar(int c)
-{
- char s[2];
- int rc;
-
- s[0] = c & 0xff;
- s[1] = '\0';
-
- rc = sercomm_puts(s);
- if (rc < 0)
- return rc;
-
- return c;
-}
diff --git a/Src/osmoconbb/src/target/firmware/comm/timer.c b/Src/osmoconbb/src/target/firmware/comm/timer.c
deleted file mode 100644
index 6a649ae..0000000
--- a/Src/osmoconbb/src/target/firmware/comm/timer.c
+++ /dev/null
@@ -1,217 +0,0 @@
-/* (C) 2008 by Holger Hans Peter Freyther <zecke@selfish.org>
- * (C) 2010 by Harald Welte <laforge@gnumonks.org>
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <debug.h>
-#include <osmocom/core/linuxlist.h>
-
-#include <comm/timer.h>
-
-#include <calypso/timer.h>
-#include <calypso/irq.h>
-
-#include <keypad.h>
-
-static LLIST_HEAD(timer_list);
-
-unsigned long volatile jiffies;
-
-#define TIMER_HZ 100
-
-#define time_after(a,b) \
- (typecheck(unsigned long, a) && \
- typecheck(unsigned long, b) && \
- ((long)(b) - (long)(a) < 0))
-#define time_before(a,b) time_after(b,a)
-
-void add_timer(struct osmo_timer_list *timer)
-{
- struct osmo_timer_list *list_timer;
-
- /* TODO: Optimize and remember the closest item... */
- timer->active = 1;
-
- /* this might be called from within update_timers */
- llist_for_each_entry(list_timer, &timer_list, entry)
- if (timer == list_timer)
- return;
-
- timer->in_list = 1;
- llist_add(&timer->entry, &timer_list);
-}
-
-void schedule_timer(struct osmo_timer_list *timer, int milliseconds)
-{
- timer->expires = jiffies + ((milliseconds * TIMER_HZ) / 1000);
- add_timer(timer);
-}
-
-void del_timer(struct osmo_timer_list *timer)
-{
- if (timer->in_list) {
- timer->active = 0;
- timer->in_list = 0;
- llist_del(&timer->entry);
- }
-}
-
-int timer_pending(struct osmo_timer_list *timer)
-{
- return timer->active;
-}
-
-#if 0
-/*
- * if we have a nearest time return the delta between the current
- * time and the time of the nearest timer.
- * If the nearest timer timed out return NULL and then we will
- * dispatch everything after the select
- */
-struct timeval *nearest_timer()
-{
- struct timeval current_time;
-
- if (s_nearest_time.tv_sec == 0 && s_nearest_time.tv_usec == 0)
- return NULL;
-
- if (gettimeofday(&current_time, NULL) == -1)
- return NULL;
-
- unsigned long long nearestTime = s_nearest_time.tv_sec * MICRO_SECONDS + s_nearest_time.tv_usec;
- unsigned long long currentTime = current_time.tv_sec * MICRO_SECONDS + current_time.tv_usec;
-
- if (nearestTime < currentTime) {
- s_select_time.tv_sec = 0;
- s_select_time.tv_usec = 0;
- } else {
- s_select_time.tv_sec = (nearestTime - currentTime) / MICRO_SECONDS;
- s_select_time.tv_usec = (nearestTime - currentTime) % MICRO_SECONDS;
- }
-
- return &s_select_time;
-}
-
-/*
- * Find the nearest time and update s_nearest_time
- */
-void prepare_timers()
-{
- struct osmo_timer_list *timer, *nearest_timer = NULL;
- llist_for_each_entry(timer, &timer_list, entry) {
- if (!nearest_timer || time_before(timer->expires, nearest_timer->expires)) {
- nearest_timer = timer;
- }
- }
-
- if (nearest_timer) {
- s_nearest_time = nearest_timer->timeout;
- } else {
- memset(&s_nearest_time, 0, sizeof(struct timeval));
- }
-}
-#endif
-
-/*
- * fire all timers... and remove them
- */
-int update_timers(void)
-{
- struct osmo_timer_list *timer, *tmp;
- int work = 0;
-
- /*
- * The callbacks might mess with our list and in this case
- * even llist_for_each_entry_safe is not safe to use. To allow
- * del_timer, add_timer, schedule_timer to be called from within
- * the callback we jump through some loops.
- *
- * First we set the handled flag of each active timer to zero,
- * then we iterate over the list and execute the callbacks. As the
- * list might have been changed (specially the next) from within
- * the callback we have to start over again. Once every callback
- * is dispatched we will remove the non-active from the list.
- *
- * TODO: If this is a performance issue we can poison a global
- * variable in add_timer and del_timer and only then restart.
- */
- llist_for_each_entry(timer, &timer_list, entry) {
- timer->handled = 0;
- }
-
-restart:
- llist_for_each_entry(timer, &timer_list, entry) {
- if (!timer->handled && time_before(timer->expires, jiffies)) {
- timer->handled = 1;
- timer->active = 0;
- (*timer->cb)(timer->data);
- work = 1;
- goto restart;
- }
- }
-
- llist_for_each_entry_safe(timer, tmp, &timer_list, entry) {
- timer->handled = 0;
- if (!timer->active) {
- del_timer(timer);
- }
- }
-
- return work;
-}
-
-int timer_check(void)
-{
- struct osmo_timer_list *timer;
- int i = 0;
-
- llist_for_each_entry(timer, &timer_list, entry) {
- i++;
- }
- return i;
-}
-
-static void timer_irq(enum irq_nr irq)
-{
- /* we only increment jiffies here. FIXME: does this need to be atomic? */
- jiffies++;
-
- keypad_poll();
-}
-
-void timer_init(void)
-{
- /* configure TIMER2 for our purpose */
- hwtimer_enable(2, 1);
- /* The timer runs at 13MHz / 32, i.e. 406.25kHz */
-#if (TIMER_HZ == 100)
- hwtimer_load(2, 4062);
- hwtimer_config(2, 0, 1);
-#elif (TIMER_HZ == 10)
- /* prescaler 4, 1015 ticks until expiry */
- hwtimer_load(2, 1015);
- hwtimer_config(2, 4, 1);
-#endif
- hwtimer_enable(2, 1);
-
- /* register interrupt handler with default priority, EDGE triggered */
- irq_register_handler(IRQ_TIMER2, &timer_irq);
- irq_config(IRQ_TIMER2, 0, 1, -1);
- irq_enable(IRQ_TIMER2);
-}
diff --git a/Src/osmoconbb/src/target/firmware/display/display.c b/Src/osmoconbb/src/target/firmware/display/display.c
deleted file mode 100644
index 1c8f1fb..0000000
--- a/Src/osmoconbb/src/target/firmware/display/display.c
+++ /dev/null
@@ -1,20 +0,0 @@
-
-#include <stdint.h>
-
-#include <display.h>
-
-struct display_driver *display;
-
-int display_puts(const char *str)
-{
- char c;
-
- if (display->puts)
- display->puts(str);
- else {
- while ((c = *str++))
- display_putchar(c);
- }
-
- return 0;
-}
diff --git a/Src/osmoconbb/src/target/firmware/display/font_r8x8.c b/Src/osmoconbb/src/target/firmware/display/font_r8x8.c
deleted file mode 100644
index f6a8a82..0000000
--- a/Src/osmoconbb/src/target/firmware/display/font_r8x8.c
+++ /dev/null
Binary files differ
diff --git a/Src/osmoconbb/src/target/firmware/display/font_r8x8_horiz.c b/Src/osmoconbb/src/target/firmware/display/font_r8x8_horiz.c
deleted file mode 100644
index 046d09b..0000000
--- a/Src/osmoconbb/src/target/firmware/display/font_r8x8_horiz.c
+++ /dev/null
@@ -1,261 +0,0 @@
-/* 8x8 font, right aligned, horizontal scanning */
-
-const unsigned char fontdata_r8x8_horiz[] ={
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x7e,0x81,0xa5,0x81,0xbd,0x99,0x81,0x7e,
- 0x7e,0xff,0xdb,0xff,0xc3,0xe7,0xff,0x7e,
- 0x6c,0xfe,0xfe,0xfe,0x7c,0x38,0x10,0x00,
- 0x08,0x1c,0x3e,0x7f,0x3e,0x1c,0x08,0x00,
- 0x1c,0x1c,0x1c,0x7f,0x7f,0x6b,0x08,0x1c,
- 0x10,0x10,0x38,0x7c,0xfe,0x7c,0x10,0x38,
- 0x00,0x00,0x18,0x3c,0x3c,0x18,0x00,0x00,
- 0xff,0xff,0xe7,0xc3,0xc3,0xe7,0xff,0xff,
- 0x00,0x3c,0x66,0x42,0x42,0x66,0x3c,0x00,
- 0xff,0xc3,0x99,0xbd,0xbd,0x99,0xc3,0xff,
- 0x0f,0x07,0x0f,0x7d,0xcc,0xcc,0xcc,0x78,
- 0x3c,0x66,0x66,0x66,0x3c,0x18,0x7e,0x18,
- 0x3f,0x33,0x3f,0x30,0x30,0x70,0xf0,0xe0,
- 0x7f,0x63,0x7f,0x63,0x63,0x67,0xe6,0xc0,
- 0x18,0xdb,0x3c,0xe7,0xe7,0x3c,0xdb,0x18,
- 0x80,0xe0,0xf8,0xfe,0xf8,0xe0,0x80,0x00,
- 0x02,0x0e,0x3e,0xfe,0x3e,0x0e,0x02,0x00,
- 0x18,0x3c,0x7e,0x18,0x18,0x7e,0x3c,0x18,
- 0x66,0x66,0x66,0x66,0x66,0x00,0x66,0x00,
- 0x7f,0xdb,0xdb,0x7b,0x1b,0x1b,0x1b,0x00,
- 0x3e,0x63,0x38,0x6c,0x6c,0x38,0xcc,0x78,
- 0x00,0x00,0x00,0x00,0x7e,0x7e,0x7e,0x00,
- 0x18,0x3c,0x7e,0x18,0x7e,0x3c,0x18,0xff,
- 0x18,0x3c,0x7e,0x18,0x18,0x18,0x18,0x00,
- 0x18,0x18,0x18,0x18,0x7e,0x3c,0x18,0x00,
- 0x00,0x18,0x0c,0xfe,0x0c,0x18,0x00,0x00,
- 0x00,0x30,0x60,0xfe,0x60,0x30,0x00,0x00,
- 0x00,0x00,0xc0,0xc0,0xc0,0xfe,0x00,0x00,
- 0x00,0x24,0x66,0xff,0x66,0x24,0x00,0x00,
- 0x00,0x18,0x3c,0x7e,0xff,0xff,0x00,0x00,
- 0x00,0xff,0xff,0x7e,0x3c,0x18,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x30,0x78,0x78,0x30,0x30,0x00,0x30,0x00,
- 0x6c,0x6c,0x6c,0x00,0x00,0x00,0x00,0x00,
- 0x6c,0x6c,0xfe,0x6c,0xfe,0x6c,0x6c,0x00,
- 0x18,0x3e,0x60,0x3c,0x06,0x7c,0x18,0x00,
- 0x00,0x63,0x66,0x0c,0x18,0x33,0x63,0x00,
- 0x1c,0x36,0x1c,0x3b,0x6e,0x66,0x3b,0x00,
- 0x30,0x30,0x60,0x00,0x00,0x00,0x00,0x00,
- 0x0c,0x18,0x30,0x30,0x30,0x18,0x0c,0x00,
- 0x30,0x18,0x0c,0x0c,0x0c,0x18,0x30,0x00,
- 0x00,0x66,0x3c,0xff,0x3c,0x66,0x00,0x00,
- 0x00,0x30,0x30,0xfc,0x30,0x30,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x30,
- 0x00,0x00,0x00,0x7e,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,
- 0x03,0x06,0x0c,0x18,0x30,0x60,0x40,0x00,
- 0x3e,0x63,0x67,0x6f,0x7b,0x73,0x3e,0x00,
- 0x18,0x38,0x58,0x18,0x18,0x18,0x7e,0x00,
- 0x3c,0x66,0x06,0x1c,0x30,0x66,0x7e,0x00,
- 0x3c,0x66,0x06,0x1c,0x06,0x66,0x3c,0x00,
- 0x0e,0x1e,0x36,0x66,0x7f,0x06,0x0f,0x00,
- 0x7e,0x60,0x7c,0x06,0x06,0x66,0x3c,0x00,
- 0x1c,0x30,0x60,0x7c,0x66,0x66,0x3c,0x00,
- 0x7e,0x66,0x06,0x0c,0x18,0x18,0x18,0x00,
- 0x3c,0x66,0x66,0x3c,0x66,0x66,0x3c,0x00,
- 0x3c,0x66,0x66,0x3e,0x06,0x0c,0x38,0x00,
- 0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x00,
- 0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x30,
- 0x0c,0x18,0x30,0x60,0x30,0x18,0x0c,0x00,
- 0x00,0x00,0x7e,0x00,0x00,0x7e,0x00,0x00,
- 0x30,0x18,0x0c,0x06,0x0c,0x18,0x30,0x00,
- 0x3c,0x66,0x06,0x0c,0x18,0x00,0x18,0x00,
- 0x3e,0x63,0x6f,0x69,0x6f,0x60,0x3e,0x00,
- 0x18,0x3c,0x66,0x66,0x7e,0x66,0x66,0x00,
- 0x7e,0x33,0x33,0x3e,0x33,0x33,0x7e,0x00,
- 0x1e,0x33,0x60,0x60,0x60,0x33,0x1e,0x00,
- 0x7c,0x36,0x33,0x33,0x33,0x36,0x7c,0x00,
- 0x7f,0x31,0x34,0x3c,0x34,0x31,0x7f,0x00,
- 0x7f,0x31,0x34,0x3c,0x34,0x30,0x78,0x00,
- 0x1e,0x33,0x60,0x60,0x67,0x33,0x1f,0x00,
- 0x66,0x66,0x66,0x7e,0x66,0x66,0x66,0x00,
- 0x3c,0x18,0x18,0x18,0x18,0x18,0x3c,0x00,
- 0x0f,0x06,0x06,0x06,0x66,0x66,0x3c,0x00,
- 0x73,0x33,0x36,0x3c,0x36,0x33,0x73,0x00,
- 0x78,0x30,0x30,0x30,0x31,0x33,0x7f,0x00,
- 0x63,0x77,0x7f,0x7f,0x6b,0x63,0x63,0x00,
- 0x63,0x73,0x7b,0x6f,0x67,0x63,0x63,0x00,
- 0x3e,0x63,0x63,0x63,0x63,0x63,0x3e,0x00,
- 0x7e,0x33,0x33,0x3e,0x30,0x30,0x78,0x00,
- 0x3c,0x66,0x66,0x66,0x6e,0x3c,0x0e,0x00,
- 0x7e,0x33,0x33,0x3e,0x36,0x33,0x73,0x00,
- 0x3c,0x66,0x30,0x18,0x0c,0x66,0x3c,0x00,
- 0x7e,0x5a,0x18,0x18,0x18,0x18,0x3c,0x00,
- 0x66,0x66,0x66,0x66,0x66,0x66,0x7e,0x00,
- 0x66,0x66,0x66,0x66,0x66,0x3c,0x18,0x00,
- 0x63,0x63,0x63,0x6b,0x7f,0x77,0x63,0x00,
- 0x63,0x63,0x36,0x1c,0x1c,0x36,0x63,0x00,
- 0x66,0x66,0x66,0x3c,0x18,0x18,0x3c,0x00,
- 0x7f,0x63,0x46,0x0c,0x19,0x33,0x7f,0x00,
- 0x3c,0x30,0x30,0x30,0x30,0x30,0x3c,0x00,
- 0x60,0x30,0x18,0x0c,0x06,0x03,0x01,0x00,
- 0x3c,0x0c,0x0c,0x0c,0x0c,0x0c,0x3c,0x00,
- 0x08,0x1c,0x36,0x63,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,
- 0x18,0x18,0x0c,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x3c,0x06,0x3e,0x66,0x3b,0x00,
- 0x70,0x30,0x30,0x3e,0x33,0x33,0x6e,0x00,
- 0x00,0x00,0x3c,0x66,0x60,0x66,0x3c,0x00,
- 0x0e,0x06,0x06,0x3e,0x66,0x66,0x3b,0x00,
- 0x00,0x00,0x3c,0x66,0x7e,0x60,0x3c,0x00,
- 0x1c,0x36,0x30,0x78,0x30,0x30,0x78,0x00,
- 0x00,0x00,0x3b,0x66,0x66,0x3e,0x06,0x7c,
- 0x70,0x30,0x36,0x3b,0x33,0x33,0x73,0x00,
- 0x18,0x00,0x38,0x18,0x18,0x18,0x3c,0x00,
- 0x06,0x00,0x06,0x06,0x06,0x66,0x66,0x3c,
- 0x70,0x30,0x33,0x36,0x3c,0x36,0x73,0x00,
- 0x38,0x18,0x18,0x18,0x18,0x18,0x3c,0x00,
- 0x00,0x00,0x66,0x7f,0x7f,0x6b,0x63,0x00,
- 0x00,0x00,0x7c,0x66,0x66,0x66,0x66,0x00,
- 0x00,0x00,0x3c,0x66,0x66,0x66,0x3c,0x00,
- 0x00,0x00,0x6e,0x33,0x33,0x3e,0x30,0x78,
- 0x00,0x00,0x3b,0x66,0x66,0x3e,0x06,0x0f,
- 0x00,0x00,0x6e,0x3b,0x33,0x30,0x78,0x00,
- 0x00,0x00,0x3e,0x60,0x3c,0x06,0x7c,0x00,
- 0x08,0x18,0x3e,0x18,0x18,0x1a,0x0c,0x00,
- 0x00,0x00,0x66,0x66,0x66,0x66,0x3b,0x00,
- 0x00,0x00,0x66,0x66,0x66,0x3c,0x18,0x00,
- 0x00,0x00,0x63,0x6b,0x7f,0x7f,0x36,0x00,
- 0x00,0x00,0x63,0x36,0x1c,0x36,0x63,0x00,
- 0x00,0x00,0x66,0x66,0x66,0x3e,0x06,0x7c,
- 0x00,0x00,0x7e,0x4c,0x18,0x32,0x7e,0x00,
- 0x0e,0x18,0x18,0x70,0x18,0x18,0x0e,0x00,
- 0x0c,0x0c,0x0c,0x00,0x0c,0x0c,0x0c,0x00,
- 0x70,0x18,0x18,0x0e,0x18,0x18,0x70,0x00,
- 0x3b,0x6e,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x08,0x1c,0x36,0x63,0x63,0x7f,0x00,
- 0x3c,0x66,0x60,0x66,0x3c,0x0c,0x06,0x3c,
- 0x00,0x66,0x00,0x66,0x66,0x66,0x3f,0x00,
- 0x1c,0x00,0x78,0xcc,0xfc,0xc0,0x78,0x00,
- 0x7e,0xc3,0x3c,0x06,0x3e,0x66,0x3f,0x00,
- 0x66,0x00,0x3c,0x06,0x3e,0x66,0x3f,0x00,
- 0x70,0x00,0x3c,0x06,0x3e,0x66,0x3f,0x00,
- 0x18,0x18,0x3c,0x06,0x3e,0x66,0x3f,0x00,
- 0x00,0x00,0x3c,0x60,0x60,0x3c,0x06,0x1c,
- 0x7e,0xc3,0x3c,0x66,0x7e,0x60,0x3c,0x00,
- 0xcc,0x00,0x78,0xcc,0xfc,0xc0,0x78,0x00,
- 0x70,0x00,0x3c,0x66,0x7e,0x60,0x3c,0x00,
- 0x66,0x00,0x38,0x18,0x18,0x18,0x3c,0x00,
- 0x3e,0x63,0x1c,0x0c,0x0c,0x0c,0x1e,0x00,
- 0x70,0x00,0x38,0x18,0x18,0x18,0x3c,0x00,
- 0x63,0x1c,0x36,0x63,0x7f,0x63,0x63,0x00,
- 0x18,0x18,0x00,0x3c,0x66,0x7e,0x66,0x00,
- 0x1c,0x00,0xfc,0x60,0x78,0x60,0xfc,0x00,
- 0x00,0x00,0x7f,0x0c,0x7f,0xcc,0x7f,0x00,
- 0x1f,0x36,0x66,0x7f,0x66,0x66,0x67,0x00,
- 0x3c,0x66,0x00,0x3c,0x66,0x66,0x3c,0x00,
- 0x00,0x66,0x00,0x3c,0x66,0x66,0x3c,0x00,
- 0x00,0x70,0x00,0x3c,0x66,0x66,0x3c,0x00,
- 0x3c,0x66,0x00,0x66,0x66,0x66,0x3f,0x00,
- 0x00,0x70,0x00,0x66,0x66,0x66,0x3f,0x00,
- 0x00,0xcc,0x00,0xcc,0xcc,0x7c,0x0c,0xf8,
- 0xc3,0x18,0x3c,0x66,0x66,0x3c,0x18,0x00,
- 0x66,0x00,0x66,0x66,0x66,0x66,0x3c,0x00,
- 0x0c,0x0c,0x3f,0x60,0x60,0x3f,0x0c,0x0c,
- 0x1c,0x36,0x32,0x78,0x30,0x73,0x7e,0x00,
- 0x66,0x66,0x3c,0x7e,0x18,0x7e,0x18,0x18,
- 0xf8,0xcc,0xcc,0xfa,0xc6,0xcf,0xc6,0xc7,
- 0x0e,0x1b,0x18,0x3c,0x18,0x18,0xd8,0x70,
- 0x0e,0x00,0x3c,0x06,0x3e,0x66,0x3f,0x00,
- 0x1c,0x00,0x38,0x18,0x18,0x18,0x3c,0x00,
- 0x00,0x0e,0x00,0x3c,0x66,0x66,0x3c,0x00,
- 0x00,0x0e,0x00,0x66,0x66,0x66,0x3f,0x00,
- 0x00,0x7c,0x00,0x7c,0x66,0x66,0x66,0x00,
- 0x7e,0x00,0x66,0x76,0x7e,0x6e,0x66,0x00,
- 0x1e,0x36,0x36,0x1f,0x00,0x3f,0x00,0x00,
- 0x1c,0x36,0x36,0x1c,0x00,0x3e,0x00,0x00,
- 0x18,0x00,0x18,0x30,0x60,0x66,0x3c,0x00,
- 0x00,0x00,0x00,0x7e,0x60,0x60,0x00,0x00,
- 0x00,0x00,0x00,0xfc,0x0c,0x0c,0x00,0x00,
- 0xc3,0xc6,0xcc,0xde,0x33,0x66,0xcc,0x0f,
- 0xc3,0xc6,0xcc,0xdb,0x37,0x6f,0xcf,0x03,
- 0x18,0x18,0x00,0x18,0x18,0x18,0x18,0x00,
- 0x00,0x33,0x66,0xcc,0x66,0x33,0x00,0x00,
- 0x00,0xcc,0x66,0x33,0x66,0xcc,0x00,0x00,
- 0x22,0x88,0x22,0x88,0x22,0x88,0x22,0x88,
- 0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,
- 0xdb,0x77,0xdb,0xee,0xdb,0x77,0xdb,0xee,
- 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
- 0x18,0x18,0x18,0x18,0xf8,0x18,0x18,0x18,
- 0x18,0x18,0xf8,0x18,0xf8,0x18,0x18,0x18,
- 0x36,0x36,0x36,0x36,0xf6,0x36,0x36,0x36,
- 0x00,0x00,0x00,0x00,0xfe,0x36,0x36,0x36,
- 0x00,0x00,0xf8,0x18,0xf8,0x18,0x18,0x18,
- 0x36,0x36,0xf6,0x06,0xf6,0x36,0x36,0x36,
- 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
- 0x00,0x00,0xfe,0x06,0xf6,0x36,0x36,0x36,
- 0x36,0x36,0xf6,0x06,0xfe,0x00,0x00,0x00,
- 0x36,0x36,0x36,0x36,0xfe,0x00,0x00,0x00,
- 0x18,0x18,0xf8,0x18,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf8,0x18,0x18,0x18,
- 0x18,0x18,0x18,0x18,0x1f,0x00,0x00,0x00,
- 0x18,0x18,0x18,0x18,0xff,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xff,0x18,0x18,0x18,
- 0x18,0x18,0x18,0x18,0x1f,0x18,0x18,0x18,
- 0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,
- 0x18,0x18,0x18,0x18,0xff,0x18,0x18,0x18,
- 0x18,0x18,0x1f,0x18,0x1f,0x18,0x18,0x18,
- 0x36,0x36,0x36,0x36,0x37,0x36,0x36,0x36,
- 0x36,0x36,0x37,0x30,0x3f,0x00,0x00,0x00,
- 0x00,0x00,0x3f,0x30,0x37,0x36,0x36,0x36,
- 0x36,0x36,0xf7,0x00,0xff,0x00,0x00,0x00,
- 0x00,0x00,0xff,0x00,0xf7,0x36,0x36,0x36,
- 0x36,0x36,0x37,0x30,0x37,0x36,0x36,0x36,
- 0x00,0x00,0xff,0x00,0xff,0x00,0x00,0x00,
- 0x36,0x36,0xf7,0x00,0xf7,0x36,0x36,0x36,
- 0x18,0x18,0xff,0x00,0xff,0x00,0x00,0x00,
- 0x36,0x36,0x36,0x36,0xff,0x00,0x00,0x00,
- 0x00,0x00,0xff,0x00,0xff,0x18,0x18,0x18,
- 0x00,0x00,0x00,0x00,0xff,0x36,0x36,0x36,
- 0x36,0x36,0x36,0x36,0x3f,0x00,0x00,0x00,
- 0x18,0x18,0x1f,0x18,0x1f,0x00,0x00,0x00,
- 0x00,0x00,0x1f,0x18,0x1f,0x18,0x18,0x18,
- 0x00,0x00,0x00,0x00,0x3f,0x36,0x36,0x36,
- 0x36,0x36,0x36,0x36,0xff,0x36,0x36,0x36,
- 0x18,0x18,0xff,0x18,0xff,0x18,0x18,0x18,
- 0x18,0x18,0x18,0x18,0xf8,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x1f,0x18,0x18,0x18,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,
- 0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,
- 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
- 0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x3b,0x6e,0x64,0x6e,0x3b,0x00,
- 0x00,0x3c,0x66,0x7c,0x66,0x7c,0x60,0x60,
- 0x00,0x7e,0x66,0x60,0x60,0x60,0x60,0x00,
- 0x00,0x7f,0x36,0x36,0x36,0x36,0x36,0x00,
- 0x7e,0x66,0x30,0x18,0x30,0x66,0x7e,0x00,
- 0x00,0x00,0x3f,0x6c,0x6c,0x6c,0x38,0x00,
- 0x00,0x33,0x33,0x33,0x33,0x3e,0x30,0x60,
- 0x00,0x3b,0x6e,0x0c,0x0c,0x0c,0x0c,0x00,
- 0x7e,0x18,0x3c,0x66,0x66,0x3c,0x18,0x7e,
- 0x1c,0x36,0x63,0x7f,0x63,0x36,0x1c,0x00,
- 0x1c,0x36,0x63,0x63,0x36,0x36,0x77,0x00,
- 0x0e,0x18,0x0c,0x3e,0x66,0x66,0x3c,0x00,
- 0x00,0x00,0x7e,0xdb,0xdb,0x7e,0x00,0x00,
- 0x06,0x0c,0x7e,0xdb,0xdb,0x7e,0x60,0xc0,
- 0x1c,0x30,0x60,0x7c,0x60,0x30,0x1c,0x00,
- 0x3c,0x66,0x66,0x66,0x66,0x66,0x66,0x00,
- 0x00,0x7e,0x00,0x7e,0x00,0x7e,0x00,0x00,
- 0x18,0x18,0x7e,0x18,0x18,0x00,0x7e,0x00,
- 0x30,0x18,0x0c,0x18,0x30,0x00,0x7e,0x00,
- 0x0c,0x18,0x30,0x18,0x0c,0x00,0x7e,0x00,
- 0x0e,0x1b,0x1b,0x18,0x18,0x18,0x18,0x18,
- 0x18,0x18,0x18,0x18,0x18,0xd8,0xd8,0x70,
- 0x18,0x18,0x00,0x7e,0x00,0x18,0x18,0x00,
- 0x00,0x3b,0x6e,0x00,0x3b,0x6e,0x00,0x00,
- 0x1c,0x36,0x36,0x1c,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x0c,0x0c,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,
- 0x0f,0x0c,0x0c,0x0c,0xec,0x6c,0x3c,0x1c,
- 0x78,0x6c,0x6c,0x6c,0x6c,0x00,0x00,0x00,
- 0x70,0x18,0x30,0x60,0x78,0x00,0x00,0x00,
- 0x00,0x00,0x3c,0x3c,0x3c,0x3c,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-};
-
diff --git a/Src/osmoconbb/src/target/firmware/display/ssd1783.c b/Src/osmoconbb/src/target/firmware/display/ssd1783.c
deleted file mode 100644
index 5696b48..0000000
--- a/Src/osmoconbb/src/target/firmware/display/ssd1783.c
+++ /dev/null
@@ -1,257 +0,0 @@
-/* Solomon SSD1783 LCD Driver (Epson S1D15G10D08B000 clone) */
-
-/* (C) 2010 by Steve Markgraf <steve@steve-m.de>
- * (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-//#define DEBUG
-#include <debug.h>
-#include <delay.h>
-#include <uwire.h>
-#include <display.h>
-#include <display/ssd1783.h>
-#include <calypso/clock.h>
-
-#define LCD_COLUMNS 98
-#define LCD_ROWS 67
-#define LCD_TOP_FREE_ROWS 3
-#define LCD_LEFT_FREE_COLS 0
-#define PIXEL_BYTES 3
-#define SSD1783_UWIRE_BITLEN 9
-#define SSD1783_DEV_ID 0
-#define FONT_HEIGHT 8
-#define FONT_WIDTH 8
-
-static const uint8_t rgb8_palette[] ={
- 0x00, //P01 Intermediate red tone 000
- 0x03, //P02 Intermediate red tone 001
- 0x05, //P03 Intermediate red tone 010
- 0x07, //P04 Intermediate red tone 011
- 0x09, //P05 Intermediate red tone 100
- 0x0b, //P06 Intermediate red tone 101
- 0x0d, //P07 Intermediate red tone 110
- 0x0f, //P08 Intermediate red tone 111
- 0x00, //P09 Intermediate green tone 000
- 0x03, //P10 Intermediate green tone 001
- 0x05, //P11 Intermediate green tone 010
- 0x07, //P12 Intermediate green tone 011
- 0x09, //P13 Intermediate green tone 100
- 0x0b, //P14 Intermediate green tone 101
- 0x0d, //P15 Intermediate green tone 110
- 0x0f, //P16 Intermediate green tone 111
- 0x00, //P17 Intermediate blue tone 00
- 0x05, //P18 Intermediate blue tone 01
- 0x0a, //P19 Intermediate blue tone 10
- 0x0f, //P20 Intermediate blue tone 11
-};
-
-static void ssd1783_cmd_write(const uint8_t cmd)
-{
- uint16_t cmd_out = cmd;
- uwire_xfer(SSD1783_DEV_ID, SSD1783_UWIRE_BITLEN, &cmd_out, NULL);
-}
-
-static void ssd1783_data_write(const uint8_t data)
-{
- uint16_t data_out = ((0x01 << 8) + data);
- uwire_xfer(SSD1783_DEV_ID, SSD1783_UWIRE_BITLEN, &data_out, NULL);
-}
-
-static void ssd1783_clrscr(void)
-{
- uint16_t i;
-
- /* Select the whole display area for clearing */
- ssd1783_cmd_write(CMD_PASET); /* Page address set [2] */
- ssd1783_data_write(0x00); /* Start page: 0x00 */
- ssd1783_data_write(LCD_ROWS-1); /* End page */
- ssd1783_cmd_write(CMD_CASET); /* Column address set [2] */
- ssd1783_data_write(0x00); /* Start column: 0x00 */
- ssd1783_data_write((LCD_COLUMNS/2)-1); /* End column (2 pixels per column) */
- ssd1783_cmd_write(CMD_RAMWR); /* Write to memory */
-
- /* Fill the display with white */
- for(i=0; i < (LCD_ROWS * (LCD_COLUMNS/2) * PIXEL_BYTES); i++){
- ssd1783_data_write(0xff);
- }
- ssd1783_cmd_write(CMD_NOP); /* Terminate RAMWR with NOP */
-}
-
-static void ssd1783_init(void)
-{
- unsigned int i;
-
- calypso_reset_set(RESET_EXT, 0);
- uwire_init();
- delay_ms(3);
-
- /* Begin SSD1783 initialization sequence */
- ssd1783_cmd_write(CMD_OSCON); /* Internal OSC on */
- ssd1783_cmd_write(CMD_SLPOUT); /* Sleep out (Leave sleep mode) */
-
- ssd1783_cmd_write(CMD_COMSCN); /* Common scan direction [1] */
- ssd1783_data_write(0x01); /* Scan 1 -> 68, 132 <- 69 */
- ssd1783_cmd_write(CMD_DATCTL); /* Data Scan Direction [3] */
- ssd1783_data_write(0x00); /* Normal page address, normal rotation,
- * scan direction in column direction */
- ssd1783_data_write(0x00); /* RGB arrangement: RGB-RGB */
- ssd1783_data_write(0x02); /* Gray-scale setup: 16 gray-scale Type A, 8-bit mode */
-
- /* Initialize RGB8 palette for 8-Bit color mode */
- ssd1783_cmd_write(CMD_RGBSET8); /* 256-color position set [20] */
- for(i=0; i < sizeof(rgb8_palette); i++){
- ssd1783_data_write(rgb8_palette[i]);
- }
-
- ssd1783_cmd_write(CMD_DISCTL); /* Display control [3] */
- ssd1783_data_write(0xff); /* no clock division, F1, F2 switching period = field */
- ssd1783_data_write(0x10); /* Drive duty, P24 = 1 */
- ssd1783_data_write(0x01); /* FR inverse set, P30=1 */
- ssd1783_cmd_write(CMD_SCSTART); /* Scroll start set [1] */
- ssd1783_data_write(0x00); /* Start block address 0x00 */
-
- /* Turn on the power regulator which generates VLCD */
- ssd1783_cmd_write(CMD_PWRCTR); /* Power Control [1] */
- ssd1783_data_write(0x0b); /* Booster, follower and regulator circuit on */
-
- /* FIXME: put this in a separate function (ssd1783_set_contrast) */
- ssd1783_cmd_write(CMD_VOLCTR); /* Electronic Volume Control [2] */
- ssd1783_data_write(0x29); /* Set contrast */
- ssd1783_data_write(0x05); /* Set contrast */
-
- ssd1783_cmd_write(CMD_DISINV); /* Invert Display */
- ssd1783_cmd_write(CMD_TMPGRD); /* Temperature gradient set */
- ssd1783_data_write(0x00); /* default temperature gradient (-0.05% / °C) */
- ssd1783_cmd_write(CMD_BIASSET); /* Set biasing ratio [1] */
- ssd1783_data_write(0x03); /* 1/10 bias */
- ssd1783_cmd_write(CMD_FREQSET); /* Set frequency and n-line inversion [2] */
- ssd1783_data_write(0x08); /* frequency: 75Hz (POR) */
- ssd1783_data_write(0x06); /* n-line inversion: 6 lines */
- ssd1783_cmd_write(CMD_RESCMD); /* reserved command in datasheet? */
- ssd1783_cmd_write(CMD_PWMSEL); /* Select PWM/FRC, Full/8 color mode [3] */
- ssd1783_data_write(0x28); /* fixed */
- ssd1783_data_write(0x2c); /* 5 bits PWM + 1 bit FRC (POR) */
- ssd1783_data_write(0x05); /* Full color mode (0x45 would be 8 color powersaving) */
-
- ssd1783_cmd_write(CMD_DISON); /* Display ON */
- ssd1783_clrscr(); /* Clear the display */
-}
-
-extern const unsigned char fontdata_r8x8_horiz[];
-
-/*
- * Pixel format for 8-bit mode, 12-bit color, 2 Pixel per 3 byte
- * D7, D6, D5, D4, D3, D2, D1, D0: RRRRGGGG (8 bits) 1st write
- * D7, D6, D5, D4, D3, D2, D1, D0: BBBBRRRR (8 bits) 2nd write
- * D7, D6, D5, D4, D3, D2, D1, D0: GGGGBBBB (8 bits) 3rd write
-*/
-
-static void ssd1783_goto_xy(int xpos, int ypos)
-{
- ssd1783_cmd_write(CMD_PASET);
- ssd1783_data_write(xpos);
- ssd1783_data_write(xpos + (FONT_HEIGHT-1));
-
- ssd1783_cmd_write(CMD_CASET);
- ssd1783_data_write(ypos);
- ssd1783_data_write(ypos + ((FONT_WIDTH/2)-1));
-
- ssd1783_cmd_write(CMD_NOP);
-}
-
-static int ssd1783_putc_col(unsigned char c, int fColor, int bColor)
-{
- int i, j;
- uint8_t cols = FONT_WIDTH;
- uint8_t rows = FONT_HEIGHT;
- uint8_t row_slice;
- uint8_t rowmask;
- uint16_t pixel0; /* left pixel */
- uint16_t pixel1; /* right pixel */
-
- ssd1783_cmd_write(CMD_RAMWR);
-
- for (i = 0; i < rows; i++) {
- row_slice = fontdata_r8x8_horiz[(FONT_WIDTH * c)+i];
- printd("\nSSD1783 FontData=0x%02hx", row_slice);
- rowmask = 0x80;
- for (j = 0; j < cols; j += 2) {
- if (!(row_slice & rowmask))
- pixel0 = bColor;
- else
- pixel0 = fColor;
- rowmask = rowmask >> 1;
- if (!(row_slice & rowmask))
- pixel1 = bColor;
- else
- pixel1 = fColor;
- rowmask = rowmask >> 1;
- /* Write the RGB-RGB pixel data */
- ssd1783_data_write((pixel0 >> 4) & 0xff);
- ssd1783_data_write(((pixel0 & 0x00f) << 4) | ((pixel1 >> 8) & 0x00f));
- ssd1783_data_write(pixel1 & 0xff);
- }
- }
- ssd1783_cmd_write(CMD_NOP);
-
- return c;
-}
-
-static int ssd1783_puts_col(const char *str, int txtline, int fColor, int bColor)
-{
- int i;
- for (i = 0; *str != 0x00; i += (FONT_WIDTH/2)) {
- ssd1783_goto_xy(((txtline*FONT_HEIGHT)+LCD_TOP_FREE_ROWS),
- (i + LCD_LEFT_FREE_COLS));
- ssd1783_putc_col(*str++, fColor, bColor);
- }
-
- return 0;
-}
-
-/* interface to display driver core */
-
-static void ssd1783_set_attr(unsigned long attr)
-{
- /* FIXME */
-}
-
-static int ssd1783_putc(unsigned int c)
-{
- return ssd1783_putc_col(c, BLACK, WHITE);
-}
-
-static int ssd1783_puts(const char *str)
-{
- return ssd1783_puts_col(str, 0, BLACK, WHITE);
-}
-
-const struct display_driver ssd1783_display = {
- .name = "ssd1783",
- .init = &ssd1783_init,
- .set_attr = &ssd1783_set_attr,
- .unset_attr = &ssd1783_set_attr,
- .clrscr = &ssd1783_clrscr,
- .goto_xy = &ssd1783_goto_xy,
- .putc = &ssd1783_putc,
- .puts = &ssd1783_puts,
-};
diff --git a/Src/osmoconbb/src/target/firmware/display/st7558.c b/Src/osmoconbb/src/target/firmware/display/st7558.c
deleted file mode 100644
index b92c2de..0000000
--- a/Src/osmoconbb/src/target/firmware/display/st7558.c
+++ /dev/null
@@ -1,121 +0,0 @@
-/* Sitronix ST7558 LCD Driver */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-
-#include <debug.h>
-#include <delay.h>
-#include <memory.h>
-#include <i2c.h>
-#include <display.h>
-#include <calypso/clock.h>
-
-#define MORE_CONTROL 0x80
-#define CONTROL_RS_RAM 0x40
-#define CONTROL_RS_CMD 0x00
-#define Y_ADDR(n) (0x40|((n)&0xf))
-#define X_ADDR(n) (0x80|((n)&0x3f))
-
-static const uint8_t setup[] = { CONTROL_RS_CMD, 0x2e, 0x21, 0x12, 0xc0, 0x0b,
- 0x20, 0x11, 0x00, 0x40, 0x80 };
-static const uint8_t home[] = { CONTROL_RS_CMD, Y_ADDR(0), X_ADDR(0) };
-
-/* video modes */
-static const uint8_t invert[] = { CONTROL_RS_CMD, 0x20, 0x0d };
-static const uint8_t normal[] = { CONTROL_RS_CMD, 0x20, 0x0c };
-static const uint8_t off[] = { CONTROL_RS_CMD, 0x20, 0x08 };
-
-#define ST7558_SLAVE_ADDR 0x3c
-static int st7558_write(const uint8_t *data, int len)
-{
- int rc = i2c_write(ST7558_SLAVE_ADDR, data[0], 1, data+1, len-1);
- return rc;
-}
-
-static const uint8_t zero16[] = { CONTROL_RS_RAM,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0 };
-static void st7558_clrscr(void)
-{
- int i;
-
- st7558_write(home, sizeof(home));
-
- for (i = 0; i < 102*9; i += 16)
- st7558_write(zero16, sizeof(zero16));
-
- st7558_write(home, sizeof(home));
-}
-
-static void st7558_init(void)
-{
- /* Release nRESET */
- calypso_reset_set(RESET_EXT, 0);
-
- i2c_init(0,0);
-
- st7558_write(setup, sizeof(setup));
- st7558_clrscr();
-}
-
-static void st7558_set_attr(unsigned long attr)
-{
- if (attr & DISP_ATTR_INVERT)
- st7558_write(invert, sizeof(invert));
-}
-
-static void st7558_unset_attr(unsigned long attr)
-{
- if (attr & DISP_ATTR_INVERT)
- st7558_write(normal, sizeof(normal));
-}
-
-/* FIXME: we need a mini-libc */
-static void *mcpy(uint8_t *dst, const uint8_t *src, int len)
-{
- while (len--)
- *dst++ = *src++;
-
- return dst;
-}
-
-extern const unsigned char fontdata_r8x8[];
-
-static void st7558_putc(unsigned char c)
-{
- uint8_t putc_buf[16];
- uint8_t bytes_per_char = 8;
-
- putc_buf[0] = CONTROL_RS_RAM;
- mcpy(putc_buf+1, fontdata_r8x8+(c*bytes_per_char), bytes_per_char);
- st7558_write(putc_buf, 1+bytes_per_char);
-}
-
-const struct display_driver st7558_display = {
- .name = "st7558",
- .init = &st7558_init,
- .clrscr = &st7558_clrscr,
- .set_attr = &st7558_set_attr,
- .unset_attr = &st7558_unset_attr,
- .putc = &st7558_putc,
-};
diff --git a/Src/osmoconbb/src/target/firmware/display/td014.c b/Src/osmoconbb/src/target/firmware/display/td014.c
deleted file mode 100644
index 11ef3ea..0000000
--- a/Src/osmoconbb/src/target/firmware/display/td014.c
+++ /dev/null
@@ -1,185 +0,0 @@
-/* Toppoly TD014 LCD Driver, as used in the Motorola C139/C140 */
-
-/* (C) 2010 by Steve Markgraf <steve@steve-m.de>
- * (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-
-#include <debug.h>
-#include <delay.h>
-#include <uwire.h>
-#include <display.h>
-#include <calypso/clock.h>
-
-#define LCD_COLUMNS 96
-#define LCD_ROWS 64
-#define LCD_TOP_FREE_ROWS 3
-#define LCD_LEFT_FREE_COLS 0
-#define PIXEL_BYTES 2
-#define TD014_UWIRE_BITLEN 9
-#define TD014_DEV_ID 0
-#define FONT_HEIGHT 8
-#define FONT_WIDTH 8
-
-#define BLACK 0x0000
-#define WHITE 0xffff
-
-static void td014_cmd_write(const uint8_t cmd)
-{
- uint16_t cmd_out = cmd;
- uwire_xfer(TD014_DEV_ID, TD014_UWIRE_BITLEN, &cmd_out, NULL);
-}
-
-static void td014_data_write(const uint8_t data)
-{
- uint16_t data_out = ((0x01 << 8) + data);
- uwire_xfer(TD014_DEV_ID, TD014_UWIRE_BITLEN, &data_out, NULL);
-}
-
-static void td014_clrscr(void)
-{
- uint16_t i;
-
- /* Select the whole display area for clearing */
- td014_cmd_write(0x10);
- td014_data_write(0x00);
- td014_cmd_write(0x11);
- td014_data_write(0x00);
- td014_cmd_write(0x12);
- td014_data_write(LCD_COLUMNS-1);
- td014_cmd_write(0x13);
- td014_data_write(LCD_ROWS-1);
- td014_cmd_write(0x14);
- td014_data_write(0x00);
- td014_cmd_write(0x15);
- td014_data_write(0x00);
-
- /* Fill the display with white */
- for(i=0; i < (LCD_ROWS * LCD_COLUMNS * PIXEL_BYTES); i++) {
- td014_data_write(0xff);
- }
-}
-
-static void td014_init(void)
-{
- calypso_reset_set(RESET_EXT, 0);
- uwire_init();
- delay_ms(3);
-
- td014_cmd_write(0x3f);
- td014_data_write(0x01);
- td014_cmd_write(0x20);
- td014_data_write(0x03);
- td014_cmd_write(0x31);
- td014_data_write(0x03);
-
- td014_clrscr();
-
-}
-
-extern const unsigned char fontdata_r8x8_horiz[];
-
-static void td014_goto_xy(int xpos, int ypos)
-{
- td014_cmd_write(0x10);
- td014_data_write(ypos);
- td014_cmd_write(0x11);
- td014_data_write(xpos);
- td014_cmd_write(0x12);
- td014_data_write(ypos + FONT_HEIGHT-1);
- td014_cmd_write(0x13);
- td014_data_write(xpos + FONT_WIDTH-1);
- td014_cmd_write(0x14);
- td014_data_write(ypos);
- td014_cmd_write(0x15);
- td014_data_write(xpos);
-
-}
-
- /* RGB 556 Byte 1 | Byte 2 *
- * Pixel format: RRRRRGGG|GGBBBBBB */
-
-static int td014_putc_col(unsigned char c, int fColor, int bColor)
-{
- int i, j;
- uint8_t cols = FONT_WIDTH;
- uint8_t rows = FONT_HEIGHT;
- uint8_t row_slice;
- uint8_t rowmask;
- uint16_t pixel;
-
- for (i = 0; i < rows; i++) {
- row_slice = fontdata_r8x8_horiz[(FONT_WIDTH * c)+i];
- rowmask = 0x80;
- for (j = 0; j < cols; j++) {
- if (!(row_slice & rowmask))
- pixel = bColor;
- else
- pixel = fColor;
- rowmask = rowmask >> 1;
- /* Write the pixel data */
- td014_data_write((pixel >> 8) & 0xff);
- td014_data_write(pixel & 0xff);
- }
- }
- return c;
-}
-
-static int td014_puts_col(const char *str, int txtline, int fColor, int bColor)
-{
- int i;
- for (i = 0; *str != 0x00; i += FONT_WIDTH) {
- td014_goto_xy(((txtline*FONT_HEIGHT)+LCD_TOP_FREE_ROWS),
- (i + LCD_LEFT_FREE_COLS));
- td014_putc_col(*str++, fColor, bColor);
- }
-
- return 0;
-}
-
-/* interface to display driver core */
-
-static void td014_set_attr(unsigned long attr)
-{
- /* FIXME */
-}
-
-static int td014_putc(unsigned int c)
-{
- return td014_putc_col(c, BLACK, WHITE);
-}
-
-static int td014_puts(const char *str)
-{
- return td014_puts_col(str, 0, BLACK, WHITE);
-}
-
-const struct display_driver td014_display = {
- .name = "td014",
- .init = &td014_init,
- .set_attr = &td014_set_attr,
- .unset_attr = &td014_set_attr,
- .clrscr = &td014_clrscr,
- .goto_xy = &td014_goto_xy,
- .putc = &td014_putc,
- .puts = &td014_puts,
-};
diff --git a/Src/osmoconbb/src/target/firmware/flash/cfi_flash.c b/Src/osmoconbb/src/target/firmware/flash/cfi_flash.c
deleted file mode 100644
index 69369d5..0000000
--- a/Src/osmoconbb/src/target/firmware/flash/cfi_flash.c
+++ /dev/null
@@ -1,574 +0,0 @@
-/* NOR Flash Driver for Intel 28F160C3 NOR flash */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <debug.h>
-#include <stdio.h>
-#include <stdint.h>
-#include <errno.h>
-#include <memory.h>
-#include <defines.h>
-#include <flash/cfi_flash.h>
-
-/* XXX: strings must always be in ram */
-#if 0
-#define puts(...)
-#define printf(...)
-#endif
-
-/* global definitions */
-#define CFI_FLASH_MAX_ERASE_REGIONS 4
-
-/* structure of erase region descriptor */
-struct cfi_region {
- uint16_t b_count;
- uint16_t b_size;
-} __attribute__ ((packed));
-
-/* structure of cfi query response */
-struct cfi_query {
- uint8_t qry[3];
- uint16_t p_id;
- uint16_t p_adr;
- uint16_t a_id;
- uint16_t a_adr;
- uint8_t vcc_min;
- uint8_t vcc_max;
- uint8_t vpp_min;
- uint8_t vpp_max;
- uint8_t word_write_timeout_typ;
- uint8_t buf_write_timeout_typ;
- uint8_t block_erase_timeout_typ;
- uint8_t chip_erase_timeout_typ;
- uint8_t word_write_timeout_max;
- uint8_t buf_write_timeout_max;
- uint8_t block_erase_timeout_max;
- uint8_t chip_erase_timeout_max;
- uint8_t dev_size;
- uint16_t interface_desc;
- uint16_t max_buf_write_size;
- uint8_t num_erase_regions;
- struct cfi_region erase_regions[CFI_FLASH_MAX_ERASE_REGIONS];
-} __attribute__ ((packed));
-
-/* manufacturer ids */
-enum cfi_manuf {
- CFI_MANUF_INTEL = 0x0089,
-};
-
-/* algorithm ids */
-enum cfi_algo {
- CFI_ALGO_INTEL_3 = 0x03
-};
-
-/* various command bytes */
-enum cfi_flash_cmd {
- CFI_CMD_RESET = 0xff,
- CFI_CMD_READ_ID = 0x90,
- CFI_CMD_CFI = 0x98,
- CFI_CMD_READ_STATUS = 0x70,
- CFI_CMD_CLEAR_STATUS = 0x50,
- CFI_CMD_WRITE = 0x40,
- CFI_CMD_BLOCK_ERASE = 0x20,
- CFI_CMD_ERASE_CONFIRM = 0xD0,
- CFI_CMD_PROTECT = 0x60,
-};
-
-/* protection commands */
-enum flash_prot_cmd {
- CFI_PROT_LOCK = 0x01,
- CFI_PROT_UNLOCK = 0xD0,
- CFI_PROT_LOCKDOWN = 0x2F
-};
-
-/* offsets from base */
-enum flash_offset {
- CFI_OFFSET_MANUFACTURER_ID = 0x00,
- CFI_OFFSET_DEVICE_ID = 0x01,
- CFI_OFFSET_INTEL_PROTECTION = 0x81,
- CFI_OFFSET_CFI_RESP = 0x10
-};
-
-/* offsets from block base */
-enum flash_block_offset {
- CFI_OFFSET_BLOCK_LOCKSTATE = 0x02
-};
-
-/* status masks */
-enum flash_status {
- CFI_STATUS_READY = 0x80,
- CFI_STATUS_ERASE_SUSPENDED = 0x40,
- CFI_STATUS_ERASE_ERROR = 0x20,
- CFI_STATUS_PROGRAM_ERROR = 0x10,
- CFI_STATUS_VPP_LOW = 0x08,
- CFI_STATUS_PROGRAM_SUSPENDED = 0x04,
- CFI_STATUS_LOCKED_ERROR = 0x02,
- CFI_STATUS_RESERVED = 0x01
-};
-
-__ramtext
-static inline void flash_write_cmd(const void *base_addr, uint16_t cmd)
-{
- writew(cmd, base_addr);
-}
-
-__ramtext
-static inline uint16_t flash_read16(const void *base_addr, uint32_t offset)
-{
- return readw(base_addr + (offset << 1));
-}
-
-__ramtext
-static char flash_protected(uint32_t block_offset)
-{
-#ifdef CONFIG_FLASH_WRITE
-# ifdef CONFIG_FLASH_WRITE_LOADER
- return 0;
-# else
- return block_offset <= 0xFFFF;
-# endif
-#else
- return 1;
-#endif
-}
-
-__ramtext
-flash_lock_t flash_block_getlock(flash_t * flash, uint32_t block_offset)
-{
- const void *base_addr = flash->f_base;
-
- uint8_t lockstate;
- flash_write_cmd(base_addr, CFI_CMD_READ_ID);
- lockstate =
- flash_read16(base_addr,
- (block_offset >> 1) + CFI_OFFSET_BLOCK_LOCKSTATE);
- flash_write_cmd(base_addr, CFI_CMD_RESET);
-
- if (lockstate & 0x2) {
- return FLASH_LOCKED_DOWN;
- } else if (lockstate & 0x01) {
- return FLASH_LOCKED;
- } else {
- return FLASH_UNLOCKED;
- }
-}
-
-__ramtext
-int flash_block_unlock(flash_t * flash, uint32_t block_offset)
-{
- const void *base_addr = flash->f_base;
-
- if (block_offset >= flash->f_size) {
- return -EINVAL;
- }
-
- if (flash_protected(block_offset)) {
- return -EPERM;
- }
-
- printf("Unlocking block at 0x%08x, meaning %08x\n",
- block_offset, base_addr + block_offset);
-
- flash_write_cmd(base_addr, CFI_CMD_PROTECT);
- flash_write_cmd(base_addr + block_offset, CFI_PROT_UNLOCK);
- flash_write_cmd(base_addr, CFI_CMD_RESET);
-
- return 0;
-}
-
-__ramtext
-int flash_block_lock(flash_t * flash, uint32_t block_offset)
-{
- const void *base_addr = flash->f_base;
-
- if (block_offset >= flash->f_size) {
- return -EINVAL;
- }
-
- printf("Locking block at 0x%08x\n", block_offset);
-
- flash_write_cmd(base_addr, CFI_CMD_PROTECT);
- flash_write_cmd(base_addr + block_offset, CFI_PROT_LOCK);
- flash_write_cmd(base_addr, CFI_CMD_RESET);
-
- return 0;
-}
-
-__ramtext
-int flash_block_lockdown(flash_t * flash, uint32_t block_offset)
-{
- const void *base_addr = flash->f_base;
-
- if (block_offset >= flash->f_size) {
- return -EINVAL;
- }
-
- printf("Locking down block at 0x%08x\n", block_offset);
-
- flash_write_cmd(base_addr, CFI_CMD_PROTECT);
- flash_write_cmd(base_addr + block_offset, CFI_PROT_LOCKDOWN);
- flash_write_cmd(base_addr, CFI_CMD_RESET);
-
- return 0;
-}
-
-__ramtext
-int flash_block_erase(flash_t * flash, uint32_t block_offset)
-{
- const void *base_addr = flash->f_base;
-
- if (block_offset >= flash->f_size) {
- return -EINVAL;
- }
-
- if (flash_protected(block_offset)) {
- return -EPERM;
- }
-
- printf("Erasing block 0x%08x...", block_offset);
-
- void *block_addr = ((uint8_t *) base_addr) + block_offset;
-
- flash_write_cmd(base_addr, CFI_CMD_CLEAR_STATUS);
-
- flash_write_cmd(block_addr, CFI_CMD_BLOCK_ERASE);
- flash_write_cmd(block_addr, CFI_CMD_ERASE_CONFIRM);
-
- flash_write_cmd(base_addr, CFI_CMD_READ_STATUS);
- uint16_t status;
- do {
- status = flash_read16(base_addr, 0);
- } while (!(status & CFI_STATUS_READY));
-
- int res = 0;
- if (status & CFI_STATUS_ERASE_ERROR) {
- puts("error: ");
- if (status & CFI_STATUS_VPP_LOW) {
- puts("vpp insufficient\n");
- res = -EFAULT;
- } else if (status & CFI_STATUS_LOCKED_ERROR) {
- puts("block is lock-protected\n");
- res = -EPERM;
- } else {
- puts("unknown fault\n");
- res = -EFAULT;
- }
- } else {
- puts("done\n");
- }
-
- flash_write_cmd(base_addr, CFI_CMD_RESET);
-
- return res;
-
-}
-
-__ramtext
-int flash_program(flash_t * flash, uint32_t dst, void *src, uint32_t nbytes)
-{
- const void *base_addr = flash->f_base;
- int res = 0;
- uint32_t i;
-
- /* check destination bounds */
- if (dst >= flash->f_size) {
- return -EINVAL;
- }
- if (dst + nbytes > flash->f_size) {
- return -EINVAL;
- }
-
- /* check alignments */
- if (((uint32_t) src) % 2) {
- return -EINVAL;
- }
- if (dst % 2) {
- return -EINVAL;
- }
- if (nbytes % 2) {
- return -EINVAL;
- }
-
- /* check permissions */
- if (flash_protected(dst)) {
- return -EPERM;
- }
-
- /* say something */
- printf("Programming %u bytes to 0x%08x from 0x%p...", nbytes, dst, src);
-
- /* clear status register */
- flash_write_cmd(base_addr, CFI_CMD_CLEAR_STATUS);
-
- /* write the words */
- puts("writing...");
- for (i = 0; i < nbytes; i += 2) {
- uint16_t *src_addr = (uint16_t *) (src + i);
- uint16_t *dst_addr = (uint16_t *) (base_addr + dst + i);
-
- uint16_t data = *src_addr;
-
- flash_write_cmd(dst_addr, CFI_CMD_WRITE);
- flash_write_cmd(dst_addr, data);
-
- flash_write_cmd(base_addr, CFI_CMD_READ_STATUS);
- uint16_t status;
- do {
- status = flash_read16(base_addr, 0);
- } while (!(status & CFI_STATUS_READY));
-
- if (status & CFI_STATUS_PROGRAM_ERROR) {
- puts("error: ");
- if (status & CFI_STATUS_VPP_LOW) {
- puts("vpp insufficient");
- res = -EFAULT;
- } else if (status & CFI_STATUS_LOCKED_ERROR) {
- puts("block is lock-protected");
- res = -EPERM;
- } else {
- puts("unknown fault");
- res = -EFAULT;
- }
- goto err_reset;
- }
- }
-
- flash_write_cmd(base_addr, CFI_CMD_RESET);
-
- /* verify the result */
- puts("verifying...");
- for (i = 0; i < nbytes; i += 2) {
- uint16_t *src_addr = (uint16_t *) (src + i);
- uint16_t *dst_addr = (uint16_t *) (base_addr + dst + i);
- if (*src_addr != *dst_addr) {
- puts("error: verification failed");
- res = -EFAULT;
- goto err;
- }
- }
-
- puts("done\n");
-
- return res;
-
- err_reset:
- flash_write_cmd(base_addr, CFI_CMD_RESET);
-
- err:
- printf(" at offset 0x%x\n", i);
-
- return res;
-}
-
-/* Internal: retrieve manufacturer and device id from id space */
-__ramtext
-static int get_id(void *base_addr,
- uint16_t * manufacturer_id, uint16_t * device_id)
-{
- flash_write_cmd(base_addr, CFI_CMD_READ_ID);
-
- *manufacturer_id = flash_read16(base_addr, CFI_OFFSET_MANUFACTURER_ID);
- *device_id = flash_read16(base_addr, CFI_OFFSET_DEVICE_ID);
-
- flash_write_cmd(base_addr, CFI_CMD_RESET);
-
- return 0;
-}
-
-/* Internal: retrieve cfi query response data */
-__ramtext
-static int get_query(void *base_addr, struct cfi_query *query)
-{
- int res = 0;
- int i;
-
- flash_write_cmd(base_addr, CFI_CMD_CFI);
-
- for (i = 0; i < sizeof(struct cfi_query); i++) {
- uint16_t byte =
- flash_read16(base_addr, CFI_OFFSET_CFI_RESP + i);
- *(((volatile unsigned char *)query) + i) = byte;
- }
-
- if (query->qry[0] != 'Q' || query->qry[1] != 'R' || query->qry[2] != 'Y') {
- res = -ENOENT;
- }
-
- flash_write_cmd(base_addr, CFI_CMD_RESET);
-
- return res;
-}
-
-#if 0
-
-/* Internal: retrieve intel protection data */
-__ramtext
-static int get_intel_protection(void *base_addr,
- uint16_t * lockp, uint8_t protp[8])
-{
- int i;
-
- /* check args */
- if (!lockp) {
- return -EINVAL;
- }
- if (!protp) {
- return -EINVAL;
- }
-
- /* enter read id mode */
- flash_write_cmd(base_addr, CFI_CMD_READ_ID);
-
- /* get lock */
- *lockp = flash_read16(base_addr, CFI_OFFSET_INTEL_PROTECTION);
-
- /* get data */
- for (i = 0; i < 8; i++) {
- protp[i] = flash_read16(base_addr, CFI_OFFSET_INTEL_PROTECTION + 1 + i);
- }
-
- /* leave read id mode */
- flash_write_cmd(base_addr, CFI_CMD_RESET);
-
- return 0;
-}
-
-static void dump_intel_protection(uint16_t lock, uint8_t data[8])
-{
- printf
- (" protection lock 0x%4.4x data 0x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x\n",
- lock, data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7]);
-}
-
-static void dump_query_algorithms(struct cfi_query *qry)
-{
- printf(" primary algorithm 0x%4.4x\n", qry->p_id);
- printf(" primary extended query 0x%4.4x\n", qry->p_adr);
- printf(" alternate algorithm 0x%4.4x\n", qry->a_id);
- printf(" alternate extended query 0x%4.4x\n", qry->a_adr);
-}
-
-static void dump_query_timing(struct cfi_query *qry)
-{
- uint32_t block_erase_typ = 1 << qry->block_erase_timeout_typ;
- uint32_t block_erase_max =
- (1 << qry->block_erase_timeout_max) * block_erase_typ;
- uint32_t word_program_typ = 1 << qry->word_write_timeout_typ;
- uint32_t word_program_max =
- (1 << qry->word_write_timeout_max) * word_program_typ;
- printf(" block erase typ %u ms\n", block_erase_typ);
- printf(" block erase max %u ms\n", block_erase_max);
- printf(" word program typ %u us\n", word_program_typ);
- printf(" word program max %u us\n", word_program_max);
-}
-
-void flash_dump_info(flash_t * flash)
-{
- int i;
- printf("flash at 0x%p of %d bytes with %d regions\n",
- flash->f_base, flash->f_size, flash->f_nregions);
-
- uint16_t m_id, d_id;
- if (get_id(flash->f_base, &m_id, &d_id)) {
- puts(" failed to get id\n");
- } else {
- printf(" manufacturer 0x%4.4x device 0x%4.4x\n", m_id, d_id);
- }
-
- uint16_t plock;
- uint8_t pdata[8];
- if (get_intel_protection(flash->f_base, &plock, pdata)) {
- puts(" failed to get protection data\n");
- } else {
- dump_intel_protection(plock, pdata);
- }
-
- struct cfi_query qry;
- if (get_query(flash->f_base, &qry)) {
- puts(" failed to get cfi query response\n");
- } else {
- dump_query_algorithms(&qry);
- dump_query_timing(&qry);
- }
-
- for (i = 0; i < flash->f_nregions; i++) {
- flash_region_t *fr = &flash->f_regions[i];
- printf(" region %d: %d blocks of %d bytes at 0x%p\n",
- i, fr->fr_bnum, fr->fr_bsize, fr->fr_base);
- }
-}
-
-#endif
-
-__ramtext
-int flash_init(flash_t * flash, void *base_addr)
-{
- int res;
- unsigned u;
- uint16_t m_id, d_id;
- uint32_t base;
- struct cfi_query qry;
-
- /* retrieve and check manufacturer and device id */
- res = get_id(base_addr, &m_id, &d_id);
- if (res) {
- return res;
- }
- if (m_id != CFI_MANUF_INTEL) {
- /* we only support intel devices */
- return -ENOTSUP;
- }
-
- /* retrieve and check query response */
- res = get_query(base_addr, &qry);
- if (res) {
- return res;
- }
- if (qry.p_id != CFI_ALGO_INTEL_3) {
- /* we only support algo 3 */
- return -ENOTSUP;
- }
- if (qry.num_erase_regions > FLASH_MAX_REGIONS) {
- /* we have a hard limit on the number of regions */
- return -ENOTSUP;
- }
-
- /* fill in basic information */
- flash->f_base = base_addr;
- flash->f_size = 1 << qry.dev_size;
-
- /* determine number of erase regions */
- flash->f_nregions = qry.num_erase_regions;
-
- /* compute actual erase region info from cfi junk */
- base = 0;
- for (u = 0; u < flash->f_nregions; u++) {
- flash_region_t *fr = &flash->f_regions[u];
-
- fr->fr_base = (void *)base;
- fr->fr_bnum = qry.erase_regions[u].b_count + 1;
- fr->fr_bsize = qry.erase_regions[u].b_size * 256;
-
- base += fr->fr_bnum * fr->fr_bsize;
- }
-
- return 0;
-}
diff --git a/Src/osmoconbb/src/target/firmware/include/abb/twl3025.h b/Src/osmoconbb/src/target/firmware/include/abb/twl3025.h
deleted file mode 100644
index 2cd35a5..0000000
--- a/Src/osmoconbb/src/target/firmware/include/abb/twl3025.h
+++ /dev/null
@@ -1,136 +0,0 @@
-#ifndef _TWL3025_H
-#define _TWL3025_H
-
-#define PAGE(n) (n << 7)
-enum twl3025_reg {
- VRPCCFG = PAGE(1) | 30,
- VRPCDEV = PAGE(0) | 30,
- VRPCMSK = PAGE(1) | 31,
- VRPCMSKABB = PAGE(1) | 29,
- VRPCSTS = PAGE(0) | 31,
- /* Monitoring ADC Registers */
- MADCTRL = PAGE(0) | 13,
- MADCSTAT = PAGE(0) | 24,
- VBATREG = PAGE(0) | 15,
- VCHGREG = PAGE(0) | 16,
- ICHGREG = PAGE(0) | 17,
- VBKPREG = PAGE(0) | 18,
- ADIN1REG = PAGE(0) | 19,
- ADIN2REG = PAGE(0) | 20,
- ADIN3REG = PAGE(0) | 21,
- ADIN4REG = PAGE(0) | 22,
- /* Clock Generator Registers */
- TOGBR1 = PAGE(0) | 4,
- TOGBR2 = PAGE(0) | 5,
- PWDNRG = PAGE(1) | 9,
- TAPCTRL = PAGE(1) | 19,
- TAPREG = PAGE(1) | 20,
- /* Automatic Frequency Control (AFC) Registers */
- AUXAFC1 = PAGE(0) | 7,
- AUXAFC2 = PAGE(0) | 8,
- AFCCTLADD = PAGE(1) | 21,
- AFCOUT = PAGE(1) | 22,
- /* Automatic Power Control (APC) Registers */
- APCDEL1 = PAGE(0) | 2,
- APCDEL2 = PAGE(1) | 26,
- AUXAPC = PAGE(0) | 9,
- APCRAM = PAGE(0) | 10,
- APCOFF = PAGE(0) | 11,
- APCOUT = PAGE(1) | 12,
- /* Auxiliary DAC Control Register */
- AUXDAC = PAGE(0) | 12,
- /* SimCard Control Register */
- VRPCSIM = PAGE(1) | 23,
- /* LED Driver Register */
- AUXLED = PAGE(1) | 24,
- /* Battery Charger Interface (BCI) Registers */
- CHGREG = PAGE(0) | 25,
- BCICTL1 = PAGE(0) | 28,
- BCICTL2 = PAGE(0) | 29,
- BCICONF = PAGE(1) | 13,
- /* Interrupt and Bus Control (IBIC) Registers */
- ITMASK = PAGE(0) | 28,
- ITSTATREG = PAGE(0) | 27, /* both pages! */
- PAGEREG = PAGE(0) | 1, /* both pages! */
- /* Baseband Codec (BBC) Registers */
- BULIOFF = PAGE(1) | 2,
- BULQOFF = PAGE(1) | 3,
- BULIDAC = PAGE(1) | 5,
- BULQDAC = PAGE(1) | 4,
- BULGCAL = PAGE(1) | 14,
- BULDATA1 = PAGE(0) | 3, /* 16 words */
- BBCTRL = PAGE(1) | 6,
- /* Voiceband Codec (VBC) Registers */
- VBCTRL1 = PAGE(1) | 8,
- VBCTRL2 = PAGE(1) | 11,
- VBPOP = PAGE(1) | 10,
- VBUCTRL = PAGE(1) | 7,
- VBDCTRL = PAGE(0) | 6,
-};
-#define BULDATA2 BULDATA1
-
-enum togbr2_bits {
- TOGBR2_KEEPR = (1 << 0), /* Clear KEEPON bit */
- TOGBR2_KEEPS = (1 << 1), /* Set KEEPON bit */
- TOGBR2_ACTR = (1 << 2), /* Dectivate MCLK */
- TOGBR2_ACTS = (1 << 3), /* Activate MCLK */
- TOGBR2_IBUFPTR1 = (1 << 4), /* Initialize pointer of burst buffer 1 */
- TOGBR2_IBUFPTR2 = (1 << 5), /* Initialize pointer of burst buffer 2 */
- TOGBR2_IAPCPTR = (1 << 6), /* Initialize pointer of APC RAM */
-};
-
-/* How a RAMP value is encoded */
-#define ABB_RAMP_VAL(up, down) ( ((down & 0x1F) << 5) | (up & 0x1F) )
-
-enum twl3025_unit {
- TWL3025_UNIT_AFC,
- TWL3025_UNIT_MAD,
- TWL3025_UNIT_ADA,
- TWL3025_UNIT_VDL,
- TWL3025_UNIT_VUL,
-};
-
-void twl3025_init(void);
-void twl3025_reg_write(uint8_t reg, uint16_t data);
-uint16_t twl3025_reg_read(uint8_t reg);
-
-void twl3025_power_off(void);
-
-void twl3025_clk13m(int enable);
-
-void twl3025_unit_enable(enum twl3025_unit unit, int on);
-
-enum twl3025_tsp_bits {
- BULON = 0x80,
- BULCAL = 0x40,
- BULENA = 0x20,
- BDLON = 0x10,
- BDLCAL = 0x08,
- BDLENA = 0x04,
- STARTADC = 0x02,
-};
-
-extern const uint16_t twl3025_default_ramp[16];
-
-/* Enqueue a TSP signal change via the TPU */
-void twl3025_tsp_write(uint8_t data);
-
-/* Enqueue a series of TSP commands in the TPU to (de)activate the downlink path */
-void twl3025_downlink(int on, int16_t at);
-
-/* Enqueue a series of TSP commands in the TPU to (de)activate the uplink path */
-void twl3025_uplink(int on, int16_t at);
-
-/* Update the AFC DAC value */
-void twl3025_afc_set(int16_t val);
-
-/* Get the AFC DAC value */
-int16_t twl3025_afc_get(void);
-
-/* Get the AFC DAC output value */
-uint8_t twl3025_afcout_get(void);
-
-/* Force a certain static AFC DAC output value */
-void twl3025_afcout_set(uint8_t val);
-
-#endif
diff --git a/Src/osmoconbb/src/target/firmware/include/arm.h b/Src/osmoconbb/src/target/firmware/include/arm.h
deleted file mode 100644
index 272c9c3..0000000
--- a/Src/osmoconbb/src/target/firmware/include/arm.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef _ARM_H
-#define _ARM_H
-
-void arm_enable_interrupts(void);
-int arm_disable_interrupts(void);
-
-#endif
diff --git a/Src/osmoconbb/src/target/firmware/include/arpa/inet.h b/Src/osmoconbb/src/target/firmware/include/arpa/inet.h
deleted file mode 100644
index 9a4dd5c..0000000
--- a/Src/osmoconbb/src/target/firmware/include/arpa/inet.h
+++ /dev/null
@@ -1,2 +0,0 @@
-/* we have this to make sure libosmocore uses our version of ntohl/htons */
-#include <byteorder.h>
diff --git a/Src/osmoconbb/src/target/firmware/include/asm/assembler.h b/Src/osmoconbb/src/target/firmware/include/asm/assembler.h
deleted file mode 100644
index cd03e98..0000000
--- a/Src/osmoconbb/src/target/firmware/include/asm/assembler.h
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * linux/include/asm-arm/assembler.h
- *
- * Copyright (C) 1996-2000 Russell King
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This file contains arm architecture specific defines
- * for the different processors.
- *
- * Do not include any C declarations in this file - it is included by
- * assembler source.
- */
-#ifndef __ASSEMBLY__
-#error "Only include this from assembly code"
-#endif
-
-#include <asm/ptrace.h>
-
-/*
- * Endian independent macros for shifting bytes within registers.
- */
-#ifndef __ARMEB__
-#define pull lsr
-#define push lsl
-#define get_byte_0 lsl #0
-#define get_byte_1 lsr #8
-#define get_byte_2 lsr #16
-#define get_byte_3 lsr #24
-#define put_byte_0 lsl #0
-#define put_byte_1 lsl #8
-#define put_byte_2 lsl #16
-#define put_byte_3 lsl #24
-#else
-#define pull lsl
-#define push lsr
-#define get_byte_0 lsr #24
-#define get_byte_1 lsr #16
-#define get_byte_2 lsr #8
-#define get_byte_3 lsl #0
-#define put_byte_0 lsl #24
-#define put_byte_1 lsl #16
-#define put_byte_2 lsl #8
-#define put_byte_3 lsl #0
-#endif
-
-#define PLD(code...)
-
-#define MODE_USR USR_MODE
-#define MODE_FIQ FIQ_MODE
-#define MODE_IRQ IRQ_MODE
-#define MODE_SVC SVC_MODE
-
-#define DEFAULT_FIQ MODE_FIQ
-
-/*
- * LOADREGS - ldm with PC in register list (eg, ldmfd sp!, {pc})
- */
-#ifdef __STDC__
-#define LOADREGS(cond, base, reglist...)\
- ldm##cond base,reglist
-#else
-#define LOADREGS(cond, base, reglist...)\
- ldm/**/cond base,reglist
-#endif
-
-/*
- * Build a return instruction for this processor type.
- */
-#define RETINSTR(instr, regs...)\
- instr regs
-
-/*
- * Enable and disable interrupts
- */
- .macro disable_irq
- msr cpsr_c, #PSR_I_BIT | SVC_MODE
- .endm
-
- .macro enable_irq
- msr cpsr_c, #SVC_MODE
- .endm
-
-/*
- * Save the current IRQ state and disable IRQs. Note that this macro
- * assumes FIQs are enabled, and that the processor is in SVC mode.
- */
- .macro save_and_disable_irqs, oldcpsr
- mrs \oldcpsr, cpsr
- disable_irq
- .endm
-
-/*
- * Restore interrupt state previously stored in a register. We don't
- * guarantee that this will preserve the flags.
- */
- .macro restore_irqs, oldcpsr
- msr cpsr_c, \oldcpsr
- .endm
-
-/*
- * These two are used to save LR/restore PC over a user-based access.
- * The old 26-bit architecture requires that we do. On 32-bit
- * architecture, we can safely ignore this requirement.
- */
- .macro save_lr
- .endm
-
- .macro restore_pc
- mov pc, lr
- .endm
diff --git a/Src/osmoconbb/src/target/firmware/include/asm/atomic.h b/Src/osmoconbb/src/target/firmware/include/asm/atomic.h
deleted file mode 100644
index 19e8ce6..0000000
--- a/Src/osmoconbb/src/target/firmware/include/asm/atomic.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * linux/include/asm-arm/atomic.h
- *
- * Copyright (C) 1996 Russell King.
- * Copyright (C) 2002 Deep Blue Solutions Ltd.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-#ifndef __ASM_ARM_ATOMIC_H
-#define __ASM_ARM_ATOMIC_H
-
-typedef struct { volatile int counter; } atomic_t;
-
-#define ATOMIC_INIT(i) { (i) }
-
-#define atomic_read(v) ((v)->counter)
-
-#include <asm/system.h>
-#include <asm/compiler.h>
-
-#define atomic_set(v,i) (((v)->counter) = (i))
-
-static inline int atomic_add_return(int i, atomic_t *v)
-{
- unsigned long flags;
- int val;
-
- local_irq_save(flags);
- val = v->counter;
- v->counter = val += i;
- local_irq_restore(flags);
-
- return val;
-}
-
-static inline int atomic_sub_return(int i, atomic_t *v)
-{
- unsigned long flags;
- int val;
-
- local_irq_save(flags);
- val = v->counter;
- v->counter = val -= i;
- local_irq_restore(flags);
-
- return val;
-}
-
-static inline int atomic_cmpxchg(atomic_t *v, int old, int new)
-{
- int ret;
- unsigned long flags;
-
- local_irq_save(flags);
- ret = v->counter;
- if (likely(ret == old))
- v->counter = new;
- local_irq_restore(flags);
-
- return ret;
-}
-
-static inline void atomic_clear_mask(unsigned long mask, unsigned long *addr)
-{
- unsigned long flags;
-
- local_irq_save(flags);
- *addr &= ~mask;
- local_irq_restore(flags);
-}
-
-#define atomic_xchg(v, new) (xchg(&((v)->counter), new))
-
-static inline int atomic_add_unless(atomic_t *v, int a, int u)
-{
- int c, old;
-
- c = atomic_read(v);
- while (c != u && (old = atomic_cmpxchg((v), c, c + a)) != c)
- c = old;
- return c != u;
-}
-#define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)
-
-#define atomic_add(i, v) (void) atomic_add_return(i, v)
-#define atomic_inc(v) (void) atomic_add_return(1, v)
-#define atomic_sub(i, v) (void) atomic_sub_return(i, v)
-#define atomic_dec(v) (void) atomic_sub_return(1, v)
-
-#define atomic_inc_and_test(v) (atomic_add_return(1, v) == 0)
-#define atomic_dec_and_test(v) (atomic_sub_return(1, v) == 0)
-#define atomic_inc_return(v) (atomic_add_return(1, v))
-#define atomic_dec_return(v) (atomic_sub_return(1, v))
-#define atomic_sub_and_test(i, v) (atomic_sub_return(i, v) == 0)
-
-#define atomic_add_negative(i,v) (atomic_add_return(i, v) < 0)
-
-/* Atomic operations are already serializing on ARM */
-#define smp_mb__before_atomic_dec() barrier()
-#define smp_mb__after_atomic_dec() barrier()
-#define smp_mb__before_atomic_inc() barrier()
-#define smp_mb__after_atomic_inc() barrier()
-
-#endif
diff --git a/Src/osmoconbb/src/target/firmware/include/asm/bitops.h b/Src/osmoconbb/src/target/firmware/include/asm/bitops.h
deleted file mode 100644
index 337d800..0000000
--- a/Src/osmoconbb/src/target/firmware/include/asm/bitops.h
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- * Copyright 1995, Russell King.
- * Various bits and pieces copyrights include:
- * Linus Torvalds (test_bit).
- * Big endian support: Copyright 2001, Nicolas Pitre
- * reworked by rmk.
- *
- * bit 0 is the LSB of an "unsigned long" quantity.
- *
- * Please note that the code in this file should never be included
- * from user space. Many of these are not implemented in assembler
- * since they would be too costly. Also, they require privileged
- * instructions (which are not available from user mode) to ensure
- * that they are atomic.
- */
-
-#ifndef __ASM_ARM_BITOPS_H
-#define __ASM_ARM_BITOPS_H
-
-#include <asm/system.h>
-
-#define smp_mb__before_clear_bit() mb()
-#define smp_mb__after_clear_bit() mb()
-
-/*
- * These functions are the basis of our bit ops.
- *
- * First, the atomic bitops. These use native endian.
- */
-static inline void ____atomic_set_bit(unsigned int bit, volatile unsigned long *p)
-{
- unsigned long flags;
- unsigned long mask = 1UL << (bit & 31);
-
- p += bit >> 5;
-
- local_irq_save(flags);
- *p |= mask;
- local_irq_restore(flags);
-}
-
-static inline void ____atomic_clear_bit(unsigned int bit, volatile unsigned long *p)
-{
- unsigned long flags;
- unsigned long mask = 1UL << (bit & 31);
-
- p += bit >> 5;
-
- local_irq_save(flags);
- *p &= ~mask;
- local_irq_restore(flags);
-}
-
-static inline void ____atomic_change_bit(unsigned int bit, volatile unsigned long *p)
-{
- unsigned long flags;
- unsigned long mask = 1UL << (bit & 31);
-
- p += bit >> 5;
-
- local_irq_save(flags);
- *p ^= mask;
- local_irq_restore(flags);
-}
-
-static inline int
-____atomic_test_and_set_bit(unsigned int bit, volatile unsigned long *p)
-{
- unsigned long flags;
- unsigned int res;
- unsigned long mask = 1UL << (bit & 31);
-
- p += bit >> 5;
-
- local_irq_save(flags);
- res = *p;
- *p = res | mask;
- local_irq_restore(flags);
-
- return res & mask;
-}
-
-static inline int
-____atomic_test_and_clear_bit(unsigned int bit, volatile unsigned long *p)
-{
- unsigned long flags;
- unsigned int res;
- unsigned long mask = 1UL << (bit & 31);
-
- p += bit >> 5;
-
- local_irq_save(flags);
- res = *p;
- *p = res & ~mask;
- local_irq_restore(flags);
-
- return res & mask;
-}
-
-static inline int
-____atomic_test_and_change_bit(unsigned int bit, volatile unsigned long *p)
-{
- unsigned long flags;
- unsigned int res;
- unsigned long mask = 1UL << (bit & 31);
-
- p += bit >> 5;
-
- local_irq_save(flags);
- res = *p;
- *p = res ^ mask;
- local_irq_restore(flags);
-
- return res & mask;
-}
-
-//#include <asm-generic/bitops/non-atomic.h>
-
-/*
- * A note about Endian-ness.
- * -------------------------
- *
- * When the ARM is put into big endian mode via CR15, the processor
- * merely swaps the order of bytes within words, thus:
- *
- * ------------ physical data bus bits -----------
- * D31 ... D24 D23 ... D16 D15 ... D8 D7 ... D0
- * little byte 3 byte 2 byte 1 byte 0
- * big byte 0 byte 1 byte 2 byte 3
- *
- * This means that reading a 32-bit word at address 0 returns the same
- * value irrespective of the endian mode bit.
- *
- * Peripheral devices should be connected with the data bus reversed in
- * "Big Endian" mode. ARM Application Note 61 is applicable, and is
- * available from http://www.arm.com/.
- *
- * The following assumes that the data bus connectivity for big endian
- * mode has been followed.
- *
- * Note that bit 0 is defined to be 32-bit word bit 0, not byte 0 bit 0.
- */
-
-/*
- * Little endian assembly bitops. nr = 0 -> byte 0 bit 0.
- */
-extern void _set_bit_le(int nr, volatile unsigned long * p);
-extern void _clear_bit_le(int nr, volatile unsigned long * p);
-extern void _change_bit_le(int nr, volatile unsigned long * p);
-extern int _test_and_set_bit_le(int nr, volatile unsigned long * p);
-extern int _test_and_clear_bit_le(int nr, volatile unsigned long * p);
-extern int _test_and_change_bit_le(int nr, volatile unsigned long * p);
-extern int _find_first_zero_bit_le(const void * p, unsigned size);
-extern int _find_next_zero_bit_le(const void * p, int size, int offset);
-extern int _find_first_bit_le(const unsigned long *p, unsigned size);
-extern int _find_next_bit_le(const unsigned long *p, int size, int offset);
-
-/*
- * Big endian assembly bitops. nr = 0 -> byte 3 bit 0.
- */
-extern void _set_bit_be(int nr, volatile unsigned long * p);
-extern void _clear_bit_be(int nr, volatile unsigned long * p);
-extern void _change_bit_be(int nr, volatile unsigned long * p);
-extern int _test_and_set_bit_be(int nr, volatile unsigned long * p);
-extern int _test_and_clear_bit_be(int nr, volatile unsigned long * p);
-extern int _test_and_change_bit_be(int nr, volatile unsigned long * p);
-extern int _find_first_zero_bit_be(const void * p, unsigned size);
-extern int _find_next_zero_bit_be(const void * p, int size, int offset);
-extern int _find_first_bit_be(const unsigned long *p, unsigned size);
-extern int _find_next_bit_be(const unsigned long *p, int size, int offset);
-
-/*
- * The __* form of bitops are non-atomic and may be reordered.
- */
-#define ATOMIC_BITOP_LE(name,nr,p) \
- (__builtin_constant_p(nr) ? \
- ____atomic_##name(nr, p) : \
- _##name##_le(nr,p))
-
-#define ATOMIC_BITOP_BE(name,nr,p) \
- (__builtin_constant_p(nr) ? \
- ____atomic_##name(nr, p) : \
- _##name##_be(nr,p))
-
-#define NONATOMIC_BITOP(name,nr,p) \
- (____nonatomic_##name(nr, p))
-
-/*
- * These are the little endian, atomic definitions.
- */
-#define set_bit(nr,p) ATOMIC_BITOP_LE(set_bit,nr,p)
-#define clear_bit(nr,p) ATOMIC_BITOP_LE(clear_bit,nr,p)
-#define change_bit(nr,p) ATOMIC_BITOP_LE(change_bit,nr,p)
-#define test_and_set_bit(nr,p) ATOMIC_BITOP_LE(test_and_set_bit,nr,p)
-#define test_and_clear_bit(nr,p) ATOMIC_BITOP_LE(test_and_clear_bit,nr,p)
-#define test_and_change_bit(nr,p) ATOMIC_BITOP_LE(test_and_change_bit,nr,p)
-#define find_first_zero_bit(p,sz) _find_first_zero_bit_le(p,sz)
-#define find_next_zero_bit(p,sz,off) _find_next_zero_bit_le(p,sz,off)
-#define find_first_bit(p,sz) _find_first_bit_le(p,sz)
-#define find_next_bit(p,sz,off) _find_next_bit_le(p,sz,off)
-
-#define WORD_BITOFF_TO_LE(x) ((x))
-
-#if 0
-#include <asm-generic/bitops/ffz.h>
-#include <asm-generic/bitops/__ffs.h>
-#include <asm-generic/bitops/fls.h>
-#include <asm-generic/bitops/ffs.h>
-
-#include <asm-generic/bitops/fls64.h>
-
-#include <asm-generic/bitops/sched.h>
-#include <asm-generic/bitops/hweight.h>
-#endif
-
-#define BITS_PER_LONG 32
-#define BITOP_MASK(nr) (1UL << ((nr) % BITS_PER_LONG))
-#define BITOP_WORD(nr) ((nr) / BITS_PER_LONG)
-
-static inline int test_bit(int nr, const volatile unsigned long *addr)
-{
- return 1UL & (addr[BITOP_WORD(nr)] >> (nr & (BITS_PER_LONG-1)));
-}
-
-#endif /* _ARM_BITOPS_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/asm/div64.h b/Src/osmoconbb/src/target/firmware/include/asm/div64.h
deleted file mode 100644
index 3682616..0000000
--- a/Src/osmoconbb/src/target/firmware/include/asm/div64.h
+++ /dev/null
@@ -1,48 +0,0 @@
-#ifndef __ASM_ARM_DIV64
-#define __ASM_ARM_DIV64
-
-#include <asm/system.h>
-
-/*
- * The semantics of do_div() are:
- *
- * uint32_t do_div(uint64_t *n, uint32_t base)
- * {
- * uint32_t remainder = *n % base;
- * *n = *n / base;
- * return remainder;
- * }
- *
- * In other words, a 64-bit dividend with a 32-bit divisor producing
- * a 64-bit result and a 32-bit remainder. To accomplish this optimally
- * we call a special __do_div64 helper with completely non standard
- * calling convention for arguments and results (beware).
- */
-
-#ifdef __ARMEB__
-#define __xh "r0"
-#define __xl "r1"
-#else
-#define __xl "r0"
-#define __xh "r1"
-#endif
-
-#define do_div(n,base) \
-({ \
- register unsigned int __base asm("r4") = base; \
- register unsigned long long __n asm("r0") = n; \
- register unsigned long long __res asm("r2"); \
- register unsigned int __rem asm(__xh); \
- asm( __asmeq("%0", __xh) \
- __asmeq("%1", "r2") \
- __asmeq("%2", "r0") \
- __asmeq("%3", "r4") \
- "bl __do_div64" \
- : "=r" (__rem), "=r" (__res) \
- : "r" (__n), "r" (__base) \
- : "ip", "lr", "cc"); \
- n = __res; \
- __rem; \
-})
-
-#endif
diff --git a/Src/osmoconbb/src/target/firmware/include/asm/linkage.h b/Src/osmoconbb/src/target/firmware/include/asm/linkage.h
deleted file mode 100644
index ac1c900..0000000
--- a/Src/osmoconbb/src/target/firmware/include/asm/linkage.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef __ASM_LINKAGE_H
-#define __ASM_LINKAGE_H
-
-/* asm-arm/linkage.h */
-
-#define __ALIGN .align 0
-#define __ALIGN_STR ".align 0"
-
-/* linux/linkage.h */
-
-#define ALIGN __ALIGN
-
-#define ENTRY(name) \
- .globl name; \
- ALIGN; \
- name:
-
-#endif
diff --git a/Src/osmoconbb/src/target/firmware/include/asm/ptrace.h b/Src/osmoconbb/src/target/firmware/include/asm/ptrace.h
deleted file mode 100644
index f3a654e..0000000
--- a/Src/osmoconbb/src/target/firmware/include/asm/ptrace.h
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * linux/include/asm-arm/ptrace.h
- *
- * Copyright (C) 1996-2003 Russell King
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-#ifndef __ASM_ARM_PTRACE_H
-#define __ASM_ARM_PTRACE_H
-
-/*
- * PSR bits
- */
-#define USR26_MODE 0x00000000
-#define FIQ26_MODE 0x00000001
-#define IRQ26_MODE 0x00000002
-#define SVC26_MODE 0x00000003
-#define USR_MODE 0x00000010
-#define FIQ_MODE 0x00000011
-#define IRQ_MODE 0x00000012
-#define SVC_MODE 0x00000013
-#define ABT_MODE 0x00000017
-#define UND_MODE 0x0000001b
-#define SYSTEM_MODE 0x0000001f
-#define MODE32_BIT 0x00000010
-#define MODE_MASK 0x0000001f
-#define PSR_T_BIT 0x00000020
-#define PSR_F_BIT 0x00000040
-#define PSR_I_BIT 0x00000080
-#define PSR_J_BIT 0x01000000
-#define PSR_Q_BIT 0x08000000
-#define PSR_V_BIT 0x10000000
-#define PSR_C_BIT 0x20000000
-#define PSR_Z_BIT 0x40000000
-#define PSR_N_BIT 0x80000000
-#define PCMASK 0
-
-/*
- * Groups of PSR bits
- */
-#define PSR_f 0xff000000 /* Flags */
-#define PSR_s 0x00ff0000 /* Status */
-#define PSR_x 0x0000ff00 /* Extension */
-#define PSR_c 0x000000ff /* Control */
-
-#ifndef __ASSEMBLY__
-
-/*
- * This struct defines the way the registers are stored on the
- * stack during a system call. Note that sizeof(struct pt_regs)
- * has to be a multiple of 8.
- */
-struct pt_regs {
- long uregs[18];
-};
-
-#define ARM_cpsr uregs[16]
-#define ARM_pc uregs[15]
-#define ARM_lr uregs[14]
-#define ARM_sp uregs[13]
-#define ARM_ip uregs[12]
-#define ARM_fp uregs[11]
-#define ARM_r10 uregs[10]
-#define ARM_r9 uregs[9]
-#define ARM_r8 uregs[8]
-#define ARM_r7 uregs[7]
-#define ARM_r6 uregs[6]
-#define ARM_r5 uregs[5]
-#define ARM_r4 uregs[4]
-#define ARM_r3 uregs[3]
-#define ARM_r2 uregs[2]
-#define ARM_r1 uregs[1]
-#define ARM_r0 uregs[0]
-#define ARM_ORIG_r0 uregs[17]
-
-#define user_mode(regs) \
- (((regs)->ARM_cpsr & 0xf) == 0)
-
-#ifdef CONFIG_ARM_THUMB
-#define thumb_mode(regs) \
- (((regs)->ARM_cpsr & PSR_T_BIT))
-#else
-#define thumb_mode(regs) (0)
-#endif
-
-#define processor_mode(regs) \
- ((regs)->ARM_cpsr & MODE_MASK)
-
-#define interrupts_enabled(regs) \
- (!((regs)->ARM_cpsr & PSR_I_BIT))
-
-#define fast_interrupts_enabled(regs) \
- (!((regs)->ARM_cpsr & PSR_F_BIT))
-
-#define condition_codes(regs) \
- ((regs)->ARM_cpsr & (PSR_V_BIT|PSR_C_BIT|PSR_Z_BIT|PSR_N_BIT))
-
-/* Are the current registers suitable for user mode?
- * (used to maintain security in signal handlers)
- */
-static inline int valid_user_regs(struct pt_regs *regs)
-{
- if (user_mode(regs) &&
- (regs->ARM_cpsr & (PSR_F_BIT|PSR_I_BIT)) == 0)
- return 1;
-
- /*
- * Force CPSR to something logical...
- */
- regs->ARM_cpsr &= PSR_f | PSR_s | PSR_x | PSR_T_BIT | MODE32_BIT;
-
- return 0;
-}
-
-#define pc_pointer(v) \
- ((v) & ~PCMASK)
-
-#define instruction_pointer(regs) \
- (pc_pointer((regs)->ARM_pc))
-
-#define profile_pc(regs) instruction_pointer(regs)
-
-#endif /* __ASSEMBLY__ */
-
-#endif
-
diff --git a/Src/osmoconbb/src/target/firmware/include/asm/swab.h b/Src/osmoconbb/src/target/firmware/include/asm/swab.h
deleted file mode 100644
index 4640e27..0000000
--- a/Src/osmoconbb/src/target/firmware/include/asm/swab.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * arch/arm/include/asm/byteorder.h
- *
- * ARM Endian-ness. In little endian mode, the data bus is connected such
- * that byte accesses appear as:
- * 0 = d0...d7, 1 = d8...d15, 2 = d16...d23, 3 = d24...d31
- * and word accesses (data or instruction) appear as:
- * d0...d31
- *
- * When in big endian mode, byte accesses appear as:
- * 0 = d24...d31, 1 = d16...d23, 2 = d8...d15, 3 = d0...d7
- * and word accesses (data or instruction) appear as:
- * d0...d31
- */
-#ifndef __ASM_ARM_SWAB_H
-#define __ASM_ARM_SWAB_H
-
-#include <stdint.h>
-#include <defines.h>
-
-static inline uint32_t __arch_swab32(uint32_t x)
-{
- uint32_t t;
-
-#ifndef __thumb__
- if (!__builtin_constant_p(x)) {
- /*
- * The compiler needs a bit of a hint here to always do the
- * right thing and not screw it up to different degrees
- * depending on the gcc version.
- */
- asm ("eor\t%0, %1, %1, ror #16" : "=r" (t) : "r" (x));
- } else
-#endif
- t = x ^ ((x << 16) | (x >> 16)); /* eor r1,r0,r0,ror #16 */
-
- x = (x << 24) | (x >> 8); /* mov r0,r0,ror #8 */
- t &= ~0x00FF0000; /* bic r1,r1,#0x00FF0000 */
- x ^= (t >> 8); /* eor r0,r0,r1,lsr #8 */
-
- return x;
-}
-#define __arch_swab32 __arch_swab32
-
-#endif
diff --git a/Src/osmoconbb/src/target/firmware/include/asm/system.h b/Src/osmoconbb/src/target/firmware/include/asm/system.h
deleted file mode 100644
index 3db0dc7..0000000
--- a/Src/osmoconbb/src/target/firmware/include/asm/system.h
+++ /dev/null
@@ -1,123 +0,0 @@
-#ifndef __ASM_ARM_SYSTEM_H
-#define __ASM_ARM_SYSTEM_H
-
-/* Generic ARM7TDMI (ARMv4T) synchronisation primitives, mostly
- * taken from Linux kernel source, licensed under GPL */
-
-#define local_irq_save(x) \
- ({ \
- unsigned long temp; \
- (void) (&temp == &x); \
- __asm__ __volatile__( \
- "mrs %0, cpsr @ local_irq_save\n" \
-" orr %1, %0, #128\n" \
-" msr cpsr_c, %1" \
- : "=r" (x), "=r" (temp) \
- : \
- : "memory", "cc"); \
- })
-
-/* Save IRQ flags and disable FIQ + IRQ */
-#define local_firq_save(x) \
- ({ \
- unsigned long temp; \
- (void) (&temp == &x); \
- __asm__ __volatile__( \
- "mrs %0, cpsr @ local_firq_save\n" \
-" orr %1, %0, #0xC0\n" \
-" msr cpsr_c, %1" \
- : "=r" (x), "=r" (temp) \
- : \
- : "memory", "cc"); \
- })
-
-/*
- * Enable IRQs
- */
-#define local_irq_enable() \
- ({ \
- unsigned long temp; \
- __asm__ __volatile__( \
- "mrs %0, cpsr @ local_irq_enable\n" \
-" bic %0, %0, #128\n" \
-" msr cpsr_c, %0" \
- : "=r" (temp) \
- : \
- : "memory", "cc"); \
- })
-
-/*
- * Disable IRQs
- */
-#define local_irq_disable() \
- ({ \
- unsigned long temp; \
- __asm__ __volatile__( \
- "mrs %0, cpsr @ local_irq_disable\n" \
-" orr %0, %0, #128\n" \
-" msr cpsr_c, %0" \
- : "=r" (temp) \
- : \
- : "memory", "cc"); \
- })
-
-/*
- * Enable FIQs
- */
-#define local_fiq_enable() \
- ({ \
- unsigned long temp; \
- __asm__ __volatile__( \
- "mrs %0, cpsr @ stf\n" \
-" bic %0, %0, #64\n" \
-" msr cpsr_c, %0" \
- : "=r" (temp) \
- : \
- : "memory", "cc"); \
- })
-
-/*
- * Disable FIQs
- */
-#define local_fiq_disable() \
- ({ \
- unsigned long temp; \
- __asm__ __volatile__( \
- "mrs %0, cpsr @ clf\n" \
-" orr %0, %0, #64\n" \
-" msr cpsr_c, %0" \
- : "=r" (temp) \
- : \
- : "memory", "cc"); \
- })
-
-/*
- * Save the current interrupt enable state.
- */
-#define local_save_flags(x) \
- ({ \
- __asm__ __volatile__( \
- "mrs %0, cpsr @ local_save_flags" \
- : "=r" (x) : : "memory", "cc"); \
- })
-
-/*
- * restore saved IRQ & FIQ state
- */
-#define local_irq_restore(x) \
- __asm__ __volatile__( \
- "msr cpsr_c, %0 @ local_irq_restore\n" \
- : \
- : "r" (x) \
- : "memory", "cc")
-
-#define irqs_disabled() \
-({ \
- unsigned long flags; \
- local_save_flags(flags); \
- (int)(flags & PSR_I_BIT); \
-})
-
-#define __asmeq(x, y) ".ifnc " x "," y " ; .err ; .endif\n\t"
-
-#endif
diff --git a/Src/osmoconbb/src/target/firmware/include/board.h b/Src/osmoconbb/src/target/firmware/include/board.h
deleted file mode 100644
index 9783ef3..0000000
--- a/Src/osmoconbb/src/target/firmware/include/board.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#ifndef _BOARD_H
-#define _BOARD_H
-
-extern const char *target_board;
-
-void board_init(void);
-
-#endif /* _BOARD_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/byteorder.h b/Src/osmoconbb/src/target/firmware/include/byteorder.h
deleted file mode 100644
index 41edb93..0000000
--- a/Src/osmoconbb/src/target/firmware/include/byteorder.h
+++ /dev/null
@@ -1,79 +0,0 @@
-#ifndef _LINUX_BYTEORDER_LITTLE_ENDIAN_H
-#define _LINUX_BYTEORDER_LITTLE_ENDIAN_H
-
-#ifndef __LITTLE_ENDIAN
-#define __LITTLE_ENDIAN 1234
-#endif
-#ifndef __LITTLE_ENDIAN_BITFIELD
-#define __LITTLE_ENDIAN_BITFIELD
-#endif
-
-#include <stdint.h>
-#include <swab.h>
-
-#define __constant_htonl(x) ___constant_swab32(x)
-#define __constant_ntohl(x) ___constant_swab32(x)
-#define __constant_htons(x) ___constant_swab16(x)
-#define __constant_ntohs(x) ___constant_swab16(x)
-#define __constant_cpu_to_le64(x) (x)
-#define __constant_le64_to_cpu(x) (x)
-#define __constant_cpu_to_le32(x) (x)
-#define __constant_le32_to_cpu(x) (x)
-#define __constant_cpu_to_le16(x) (x)
-#define __constant_le16_to_cpu(x) (x)
-#define __constant_cpu_to_be64(x) ___constant_swab64(x)
-#define __constant_be64_to_cpu(x) ___constant_swab64(x)
-#define __constant_cpu_to_be32(x) ___constant_swab32(x)
-#define __constant_be32_to_cpu(x) ___constant_swab32(x)
-#define __constant_cpu_to_be16(x) ___constant_swab16(x)
-#define __constant_be16_to_cpu(x) ___constant_swab16(x)
-#define __cpu_to_le64(x) (x)
-#define __le64_to_cpu(x) (x)
-#define __cpu_to_le32(x) (x)
-#define __le32_to_cpu(x) (x)
-#define __cpu_to_le16(x) (x)
-#define __le16_to_cpu(x) (x)
-#define __cpu_to_be64(x) __swab64(x)
-#define __be64_to_cpu(x) __swab64(x)
-#define __cpu_to_be32(x) __swab32(x)
-#define __be32_to_cpu(x) __swab32(x)
-#define __cpu_to_be16(x) __swab16(x)
-#define __be16_to_cpu(x) __swab16(x)
-
-/* from include/linux/byteorder/generic.h */
-#define cpu_to_le64 __cpu_to_le64
-#define le64_to_cpu __le64_to_cpu
-#define cpu_to_le32 __cpu_to_le32
-#define le32_to_cpu __le32_to_cpu
-#define cpu_to_le16 __cpu_to_le16
-#define le16_to_cpu __le16_to_cpu
-#define cpu_to_be64 __cpu_to_be64
-#define be64_to_cpu __be64_to_cpu
-#define cpu_to_be32 __cpu_to_be32
-#define be32_to_cpu __be32_to_cpu
-#define cpu_to_be16 __cpu_to_be16
-#define be16_to_cpu __be16_to_cpu
-
-/*
- * They have to be macros in order to do the constant folding
- * correctly - if the argument passed into a inline function
- * it is no longer constant according to gcc..
- */
-
-#undef ntohl
-#undef ntohs
-#undef htonl
-#undef htons
-
-#define ___htonl(x) __cpu_to_be32(x)
-#define ___htons(x) __cpu_to_be16(x)
-#define ___ntohl(x) __be32_to_cpu(x)
-#define ___ntohs(x) __be16_to_cpu(x)
-
-#define htonl(x) ___htonl(x)
-#define ntohl(x) ___ntohl(x)
-#define htons(x) ___htons(x)
-#define ntohs(x) ___ntohs(x)
-
-
-#endif /* _LINUX_BYTEORDER_LITTLE_ENDIAN_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/calypso/backlight.h b/Src/osmoconbb/src/target/firmware/include/calypso/backlight.h
deleted file mode 100644
index 3a6abd5..0000000
--- a/Src/osmoconbb/src/target/firmware/include/calypso/backlight.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifndef _CAL_BACKLIGHT_H
-#define _CAL_BACKLIGHT_H
-
-/* Switch backlight to PWL mode (or back) */
-void bl_mode_pwl(int on);
-
-/* Set the backlight level */
-void bl_level(uint8_t level);
-
-#endif /* CAL_BACKLIGHT_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/calypso/buzzer.h b/Src/osmoconbb/src/target/firmware/include/calypso/buzzer.h
deleted file mode 100644
index dcfd3a3..0000000
--- a/Src/osmoconbb/src/target/firmware/include/calypso/buzzer.h
+++ /dev/null
@@ -1,34 +0,0 @@
-#ifndef _CAL_BUZZER_H
-#define _CAL_BUZZER_H
-
-#define NOTE(n,oct) (n<<2 | (oct & 0x03))
-
-#define NOTE_E 0x00
-#define NOTE_DIS 0x01
-#define NOTE_D 0x02
-#define NOTE_CIS 0x03
-#define NOTE_C 0x04
-#define NOTE_H 0x05
-#define NOTE_AIS 0x06
-#define NOTE_A 0x07
-#define NOTE_GIS 0x08
-#define NOTE_G 0x09
-#define NOTE_FIS 0x0A
-#define NOTE_F 0x0B
-
-#define OCTAVE_5 OCTAVE(0x00)
-#define OCTAVE_4 OCTAVE(0x01)
-#define OCTAVE_3 OCTAVE(0x02)
-#define OCTAVE_2 OCTAVE(0x03)
-#define OCTAVE_1 OCTAVE(0x04)
-
-#define OCTAVE(m) (m>NOTE_C?m+1:m)
-
-/* Switch buzzer to PWT mode (or back) */
-void buzzer_mode_pwt(int on);
-/* Set the buzzer level */
-void buzzer_volume(uint8_t level);
-/* Set the buzzer note */
-void buzzer_note(uint8_t note);
-
-#endif /* _CAL_BUZZER_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/calypso/clock.h b/Src/osmoconbb/src/target/firmware/include/calypso/clock.h
deleted file mode 100644
index abcfde1..0000000
--- a/Src/osmoconbb/src/target/firmware/include/calypso/clock.h
+++ /dev/null
@@ -1,67 +0,0 @@
-#ifndef _CALYPSO_CLK_H
-#define _CALYPSO_CLK_H
-
-#include <stdint.h>
-
-#define CALYPSO_PLL26_52_MHZ ((2 << 8) | 0)
-#define CALYPSO_PLL26_86_7_MHZ ((10 << 8) | 2)
-#define CALYPSO_PLL26_87_MHZ ((3 << 8) | 0)
-#define CALYPSO_PLL13_104_MHZ ((8 << 8) | 0)
-
-enum mclk_div {
- _ARM_MCLK_DIV_1 = 0,
- ARM_MCLK_DIV_1 = 1,
- ARM_MCLK_DIV_2 = 2,
- ARM_MCLK_DIV_3 = 3,
- ARM_MCLK_DIV_4 = 4,
- ARM_MCLK_DIV_5 = 5,
- ARM_MCLK_DIV_6 = 6,
- ARM_MCLK_DIV_7 = 7,
- ARM_MCLK_DIV_1_5 = 0x80 | 1,
- ARM_MCLK_DIV_2_5 = 0x80 | 2,
-};
-
-void calypso_clock_set(uint8_t vtcxo_div2, uint16_t inp, enum mclk_div mclk_div);
-void calypso_pll_set(uint16_t inp);
-void calypso_clk_dump(void);
-
-/* CNTL_RST */
-enum calypso_rst {
- RESET_DSP = (1 << 1),
- RESET_EXT = (1 << 2),
- RESET_WDOG = (1 << 3),
-};
-
-void calypso_reset_set(enum calypso_rst calypso_rst, int active);
-int calypso_reset_get(enum calypso_rst);
-
-enum calypso_bank {
- CALYPSO_nCS0 = 0,
- CALYPSO_nCS1 = 2,
- CALYPSO_nCS2 = 4,
- CALYPSO_nCS3 = 6,
- CALYPSO_nCS7 = 8,
- CALYPSO_CS4 = 0xa,
- CALYPSO_nCS6 = 0xc,
-};
-
-enum calypso_mem_width {
- CALYPSO_MEM_8bit = 0,
- CALYPSO_MEM_16bit = 1,
- CALYPSO_MEM_32bit = 2,
-};
-
-void calypso_mem_cfg(enum calypso_bank bank, uint8_t ws,
- enum calypso_mem_width width, int we);
-
-/* Enable or disable the internal bootrom mapped to 0x0000'0000 */
-void calypso_bootrom(int enable);
-
-/* Enable or disable the debug unit */
-void calypso_debugunit(int enable);
-
-/* configure the RHEA bus bridge[s] */
-void calypso_rhea_cfg(uint8_t fac0, uint8_t fac1, uint8_t timeout,
- uint8_t ws_h, uint8_t ws_l, uint8_t w_en0, uint8_t w_en1);
-
-#endif /* _CALYPSO_CLK_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/calypso/dma.h b/Src/osmoconbb/src/target/firmware/include/calypso/dma.h
deleted file mode 100644
index 00b9bde..0000000
--- a/Src/osmoconbb/src/target/firmware/include/calypso/dma.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef _CALYPSO_DMA_H
-#define _CALYPSO_DMA_H
-
-void dma_init(void);
-
-#endif /* _CALYPSO_DMA_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/calypso/dsp.h b/Src/osmoconbb/src/target/firmware/include/calypso/dsp.h
deleted file mode 100644
index e4801cb..0000000
--- a/Src/osmoconbb/src/target/firmware/include/calypso/dsp.h
+++ /dev/null
@@ -1,41 +0,0 @@
-#ifndef _CALYPSO_DSP_H
-#define _CALYPSO_DSP_H
-
-#include <calypso/dsp_api.h>
-
-#define CAL_DSP_TGT_BB_LVL 80
-
-struct gsm_time;
-
-struct dsp_api {
- T_NDB_MCU_DSP *ndb;
- T_DB_DSP_TO_MCU *db_r;
- T_DB_MCU_TO_DSP *db_w;
- T_PARAM_MCU_DSP *param;
- int r_page;
- int w_page;
- int r_page_used;
- int frame_ctr;
-};
-
-extern struct dsp_api dsp_api;
-
-void dsp_power_on(void);
-void dsp_dump_version(void);
-void dsp_dump(void);
-void dsp_checksum_task(void);
-void dsp_api_memset(uint16_t *ptr, int octets);
-void dsp_memcpy_to_api(volatile uint16_t *dsp_buf, const uint8_t *mcu_buf, int n, int be);
-void dsp_memcpy_from_api(uint8_t *mcu_buf, const volatile uint16_t *dsp_buf, int n, int be);
-void dsp_load_afc_dac(uint16_t afc);
-void dsp_load_apc_dac(uint16_t apc);
-void dsp_load_tch_param(struct gsm_time *next_time,
- uint8_t chan_mode, uint8_t chan_type, uint8_t chan_sub,
- uint8_t tch_loop, uint8_t sync_tch, uint8_t tn);
-void dsp_load_ciph_param(int mode, uint8_t *key);
-void dsp_end_scenario(void);
-
-void dsp_load_rx_task(uint16_t task, uint8_t burst_id, uint8_t tsc);
-void dsp_load_tx_task(uint16_t task, uint8_t burst_id, uint8_t tsc);
-
-#endif
diff --git a/Src/osmoconbb/src/target/firmware/include/calypso/dsp_api.h b/Src/osmoconbb/src/target/firmware/include/calypso/dsp_api.h
deleted file mode 100644
index f9751f3..0000000
--- a/Src/osmoconbb/src/target/firmware/include/calypso/dsp_api.h
+++ /dev/null
@@ -1,1560 +0,0 @@
-#ifndef _CAL_DSP_API_H
-#define _CAL_DSP_API_H
-
-/* This is a header file with structures imported from the TSM30 source code (l1_defty.h)
- *
- * As this header file only is a list of definitions and data structures, it is
- * not ocnsidered to be a copyrightable work itself.
- *
- * Nonetheless, it might be good to rewrite it (without ugly typedefs!) */
-
-#if(L1_DYN_DSP_DWNLD == 1)
- #include "l1_dyn_dwl_defty.h"
-#endif
-
-/* Include a header file that defines everything this l1_defty.h needs */
-#include "l1_environment.h"
-
-#define BASE_API_NDB 0xFFD001A8L /* 268 words */
-#define BASE_API_PARAM 0xFFD00862L /* 57 words */
-#define BASE_API_R_PAGE_0 0xFFD00050L /* 20 words */
-#define BASE_API_R_PAGE_1 0xFFD00078L /* 20 words */
-#define BASE_API_W_PAGE_0 0xFFD00000L /* 20 words */
-#define BASE_API_W_PAGE_1 0xFFD00028L /* 20 words */
-
-
-/***********************************************************/
-/* */
-/* Data structure for global info components. */
-/* */
-/***********************************************************/
-
-typedef struct
-{
- API d_task_d; // (0) Downlink task command.
- API d_burst_d; // (1) Downlink burst identifier.
- API d_task_u; // (2) Uplink task command.
- API d_burst_u; // (3) Uplink burst identifier.
- API d_task_md; // (4) Downlink Monitoring (FB/SB) command.
-#if (DSP == 33) || (DSP == 34) || (DSP == 35) || (DSP == 36)
- API d_background; // (5) Background tasks
-#else
- API d_reserved; // (5) Reserved
-#endif
- API d_debug; // (6) Debug/Acknowledge/general purpose word.
- API d_task_ra; // (7) RA task command.
- API d_fn; // (8) FN, in Rep. period and FN%104, used for TRAFFIC/TCH only.
- // bit [0..7] -> b_fn_report, FN in the normalized reporting period.
- // bit [8..15] -> b_fn_sid, FN % 104, used for SID positionning.
- API d_ctrl_tch; // (9) Tch channel description.
- // bit [0..3] -> b_chan_mode, channel mode.
- // bit [4..5] -> b_chan_type, channel type.
- // bit [6] -> reset SACCH
- // bit [7] -> vocoder ON
- // bit [8] -> b_sync_tch_ul, synchro. TCH/UL.
- // bit [9] -> b_sync_tch_dl, synchro. TCH/DL.
- // bit [10] -> b_stop_tch_ul, stop TCH/UL.
- // bit [11] -> b_stop_tch_dl, stop TCH/DL.
- // bit [12.13] -> b_tch_loop, tch loops A/B/C.
- API hole; // (10) unused hole.
-
-#if ((ANLG_FAM == 1) || (ANLG_FAM == 2) || (ANLG_FAM == 3))
- API d_ctrl_abb; // (11) Bit field indicating the analog baseband register to send.
- // bit [0] -> b_ramp: the ramp information(a_ramp[]) is located in NDB
- // bit [1.2] -> unused
- // bit [3] -> b_apcdel: delays-register in NDB
- // bit [4] -> b_afc: freq control register in DB
- // bit [5..15] -> unused
-#endif
- API a_a5fn[2]; // (12..13) Encryption Frame number.
- // word 0, bit [0..4] -> T2.
- // word 0, bit [5..10] -> T3.
- // word 1, bit [0..11] -> T1.
- API d_power_ctl; // (14) Power level control.
- API d_afc; // (15) AFC value (enabled by "b_afc" in "d_ctrl_TCM4400 or in d_ctrl_abb").
- API d_ctrl_system; // (16) Controle Register for RESET/RESUME.
- // bit [0..2] -> b_tsq, training sequence.
- // bit [3] -> b_bcch_freq_ind, BCCH frequency indication.
- // bit [15] -> b_task_abort, DSP task abort command.
-}
-T_DB_MCU_TO_DSP;
-
-typedef struct
-{
- API d_task_d; // (0) Downlink task command.
- API d_burst_d; // (1) Downlink burst identifier.
- API d_task_u; // (2) Uplink task command.
- API d_burst_u; // (3) Uplink burst identifier.
- API d_task_md; // (4) Downlink Monitoring (FB/SB) task command.
-#if (DSP == 33) || (DSP == 34) || (DSP == 35) || (DSP == 36)
- API d_background; // (5) Background tasks
-#else
- API d_reserved; // (5) Reserved
-#endif
- API d_debug; // (6) Debug/Acknowledge/general purpose word.
- API d_task_ra; // (7) RA task command.
-
-#if (DSP == 33) || (DSP == 34) || (DSP == 35) || (DSP == 36)
- API a_serv_demod[4]; // ( 8..11) Serv. cell demod. result, array of 4 words (D_TOA,D_PM,D_ANGLE,D_SNR).
- API a_pm[3]; // (12..14) Power measurement results, array of 3 words.
- API a_sch[5]; // (15..19) Header + SB information, array of 5 words.
-#else
- API a_pm[3]; // ( 8..10) Power measurement results, array of 3 words.
- API a_serv_demod[4]; // (11..14) Serv. cell demod. result, array of 4 words (D_TOA,D_PM,D_ANGLE,D_SNR).
- API a_sch[5]; // (15..19) Header + SB information, array of 5 words.
-#endif
-}
-T_DB_DSP_TO_MCU;
-
-#if (DSP == 34) || (DSP == 35) || (DSP == 36) // NDB GSM
- typedef struct
- {
- // MISC Tasks
- API d_dsp_page;
-
- // DSP status returned (DSP --> MCU).
- API d_error_status;
-
- // RIF control (MCU -> DSP).
- API d_spcx_rif;
-
- API d_tch_mode; // TCH mode register.
- // bit [0..1] -> b_dai_mode.
- // bit [2] -> b_dtx.
-
- API d_debug1; // bit 0 at 1 enable dsp f_tx delay for Omega
-
- API d_dsp_test;
-
- // Words dedicated to Software version (DSP code + Patch)
- API d_version_number1;
- API d_version_number2;
-
- API d_debug_ptr;
- API d_debug_bk;
-
- API d_pll_config;
-
- // GSM/GPRS DSP Debug trace support
- API p_debug_buffer;
- API d_debug_buffer_size;
- API d_debug_trace_type;
-
- #if (W_A_DSP_IDLE3 == 1)
- // DSP report its state: 0 run, 1 Idle1, 2 Idle2, 3 Idle3.
- API d_dsp_state;
- // 5 words are reserved for any possible mapping modification
- API d_hole1_ndb[2];
- #else
- // 6 words are reserved for any possible mapping modification
- API d_hole1_ndb[3];
- #endif
-
- #if (AMR == 1)
- API p_debug_amr;
- #else
- API d_hole_debug_amr;
- #endif
-
- #if (CHIPSET == 12)
- #if (DSP == 35) || (DSP == 36)
- API d_hole2_ndb[1];
- API d_mcsi_select;
- #else
- API d_hole2_ndb[2];
- #endif
- #else
- API d_hole2_ndb[2];
- #endif
-
- // New words APCDEL1 and APCDEL2 for 2TX: TX/PRACH combinations
- API d_apcdel1_bis;
- API d_apcdel2_bis;
-
-
- // New registers due to IOTA analog base band
- API d_apcdel2;
- API d_vbctrl2;
- API d_bulgcal;
-
- // Analog Based Band
- API d_afcctladd;
-
- API d_vbuctrl;
- API d_vbdctrl;
- API d_apcdel1;
- API d_apcoff;
- API d_bulioff;
- API d_bulqoff;
- API d_dai_onoff;
- API d_auxdac;
-
- #if (ANLG_FAM == 1)
- API d_vbctrl;
- #elif ((ANLG_FAM == 2) || (ANLG_FAM == 3))
- API d_vbctrl1;
- #endif
-
- API d_bbctrl;
-
- // Monitoring tasks control (MCU <- DSP)
- // FB task
- API d_fb_det; // FB detection result. (1 for FOUND).
- API d_fb_mode; // Mode for FB detection algorithm.
- API a_sync_demod[4]; // FB/SB demod. result, (D_TOA,D_PM,D_ANGLE,D_SNR).
-
- // SB Task
- API a_sch26[5]; // Header + SB information, array of 5 words.
-
- API d_audio_gain_ul;
- API d_audio_gain_dl;
-
- // Controller of the melody E2 audio compressor
- API d_audio_compressor_ctrl;
-
- // AUDIO module
- API d_audio_init;
- API d_audio_status;
-
- // Audio tasks
- // TONES (MCU -> DSP)
- API d_toneskb_init;
- API d_toneskb_status;
- API d_k_x1_t0;
- API d_k_x1_t1;
- API d_k_x1_t2;
- API d_pe_rep;
- API d_pe_off;
- API d_se_off;
- API d_bu_off;
- API d_t0_on;
- API d_t0_off;
- API d_t1_on;
- API d_t1_off;
- API d_t2_on;
- API d_t2_off;
- API d_k_x1_kt0;
- API d_k_x1_kt1;
- API d_dur_kb;
- API d_shiftdl;
- API d_shiftul;
-
- API d_aec_ctrl;
-
- API d_es_level_api;
- API d_mu_api;
-
- // Melody Ringer module
- API d_melo_osc_used;
- API d_melo_osc_active;
- API a_melo_note0[4];
- API a_melo_note1[4];
- API a_melo_note2[4];
- API a_melo_note3[4];
- API a_melo_note4[4];
- API a_melo_note5[4];
- API a_melo_note6[4];
- API a_melo_note7[4];
-
- // selection of the melody format
- API d_melody_selection;
-
- // Holes due to the format melody E1
- API a_melo_holes[3];
-
- // Speech Recognition module
- API d_sr_status; // status of the DSP speech reco task
- API d_sr_param; // paramters for the DSP speech reco task: OOV threshold.
- API d_sr_bit_exact_test; // bit exact test
- API d_sr_nb_words; // number of words used in the speech recognition task
- API d_sr_db_level; // estimate voice level in dB
- API d_sr_db_noise; // estimate noise in dB
- API d_sr_mod_size; // size of the model
- API a_n_best_words[4]; // array of the 4 best words
- API a_n_best_score[8]; // array of the 4 best scores (each score is 32 bits length)
-
- // Audio buffer
- API a_dd_1[22]; // Header + DATA traffic downlink information, sub. chan. 1.
- API a_du_1[22]; // Header + DATA traffic uplink information, sub. chan. 1.
-
- // V42bis module
- API d_v42b_nego0;
- API d_v42b_nego1;
- API d_v42b_control;
- API d_v42b_ratio_ind;
- API d_mcu_control;
- API d_mcu_control_sema;
-
- // Background tasks
- API d_background_enable;
- API d_background_abort;
- API d_background_state;
- API d_max_background;
- API a_background_tasks[16];
- API a_back_task_io[16];
-
- // GEA module defined in l1p_deft.h (the following section is overlaid with GPRS NDB memory)
- API d_gea_mode_ovly;
- API a_gea_kc_ovly[4];
-
-#if (ANLG_FAM == 3)
- // SYREN specific registers
- API d_vbpop;
- API d_vau_delay_init;
- API d_vaud_cfg;
- API d_vauo_onoff;
- API d_vaus_vol;
- API d_vaud_pll;
- API d_hole3_ndb[1];
-#elif ((ANLG_FAM == 1) || (ANLG_FAM == 2))
-
- API d_hole3_ndb[7];
-
-#endif
-
- // word used for the init of USF threshold
- API d_thr_usf_detect;
-
- // Encryption module
- API d_a5mode; // Encryption Mode.
-
- API d_sched_mode_gprs_ovly;
-
- // 7 words are reserved for any possible mapping modification
- API d_hole4_ndb[5];
-
- // Ramp definition for Omega device
- API a_ramp[16];
-
- // CCCH/SACCH downlink information...(!!)
- API a_cd[15]; // Header + CCCH/SACCH downlink information.
-
- // FACCH downlink information........(!!)
- API a_fd[15]; // Header + FACCH downlink information.
-
- // Traffic downlink data frames......(!!)
- API a_dd_0[22]; // Header + DATA traffic downlink information, sub. chan. 0.
-
- // CCCH/SACCH uplink information.....(!!)
- API a_cu[15]; // Header + CCCH/SACCH uplink information.
-
- // FACCH downlink information........(!!)
- API a_fu[15]; // Header + FACCH uplink information
-
- // Traffic downlink data frames......(!!)
- API a_du_0[22]; // Header + DATA traffic uplink information, sub. chan. 0.
-
- // Random access.....................(MCU -> DSP).
- API d_rach; // RACH information.
-
- //...................................(MCU -> DSP).
- API a_kc[4]; // Encryption Key Code.
-
- // Integrated Data Services module
- API d_ra_conf;
- API d_ra_act;
- API d_ra_test;
- API d_ra_statu;
- API d_ra_statd;
- API d_fax;
- API a_data_buf_ul[21];
- API a_data_buf_dl[37];
-
- // GTT API mapping for DSP code 34 (for test only)
- #if (L1_GTT == 1)
- API d_tty_status;
- API d_tty_detect_thres;
- API d_ctm_detect_shift;
- API d_tty_fa_thres;
- API d_tty_mod_norm;
- API d_tty_reset_buffer_ul;
- API d_tty_loop_ctrl;
- API p_tty_loop_buffer;
- #else
- API a_tty_holes[8];
- #endif
-
- API a_sr_holes0[414];
-
- #if (L1_NEW_AEC)
- // new AEC
- API d_cont_filter;
- API d_granularity_att;
- API d_coef_smooth;
- API d_es_level_max;
- API d_fact_vad;
- API d_thrs_abs;
- API d_fact_asd_fil;
- API d_fact_asd_mut;
- API d_far_end_pow_h;
- API d_far_end_pow_l;
- API d_far_end_noise_h;
- API d_far_end_noise_l;
- #else
- API a_new_aec_holes[12];
- #endif // L1_NEW_AEC
-
- // Speech recognition model
- API a_sr_holes1[145];
- API d_cport_init;
- API d_cport_ctrl;
- API a_cport_cfr[2];
- API d_cport_tcl_tadt;
- API d_cport_tdat;
- API d_cport_tvs;
- API d_cport_status;
- API d_cport_reg_value;
-
- API a_cport_holes[1011];
-
- API a_model[1041];
-
- // EOTD buffer
-#if (L1_EOTD==1)
- API d_eotd_first;
- API d_eotd_max;
- API d_eotd_nrj_high;
- API d_eotd_nrj_low;
- API a_eotd_crosscor[18];
-#else
- API a_eotd_holes[22];
-#endif
- // AMR ver 1.0 buffers
- API a_amr_config[4];
- API a_ratscch_ul[6];
- API a_ratscch_dl[6];
- API d_amr_snr_est; // estimation of the SNR of the AMR speech block
- #if (L1_VOICE_MEMO_AMR)
- API d_amms_ul_voc;
- #else
- API a_voice_memo_amr_holes[1];
- #endif
- API d_thr_onset_afs; // thresh detection ONSET AFS
- API d_thr_sid_first_afs; // thresh detection SID_FIRST AFS
- API d_thr_ratscch_afs; // thresh detection RATSCCH AFS
- API d_thr_update_afs; // thresh detection SID_UPDATE AFS
- API d_thr_onset_ahs; // thresh detection ONSET AHS
- API d_thr_sid_ahs; // thresh detection SID frames AHS
- API d_thr_ratscch_marker;// thresh detection RATSCCH MARKER
- API d_thr_sp_dgr; // thresh detection SPEECH DEGRADED/NO_DATA
- API d_thr_soft_bits;
- #if (MELODY_E2)
- API d_melody_e2_osc_stop;
- API d_melody_e2_osc_active;
- API d_melody_e2_semaphore;
- API a_melody_e2_osc[16][3];
- API d_melody_e2_globaltimefactor;
- API a_melody_e2_instrument_ptr[8];
- API d_melody_e2_deltatime;
-
- #if (AMR_THRESHOLDS_WORKAROUND)
- API a_d_macc_thr_afs[8];
- API a_d_macc_thr_ahs[6];
- #else
- API a_melody_e2_holes0[14];
- #endif
-
- API a_melody_e2_holes1[693];
- API a_dsp_trace[SC_AUDIO_MELODY_E2_MAX_SIZE_OF_DSP_TRACE];
- API a_melody_e2_instrument_wave[SC_AUDIO_MELODY_E2_MAX_SIZE_OF_INSTRUMENT];
- #else
- API d_holes[61];
- #if (AMR_THRESHOLDS_WORKAROUND)
- API a_d_macc_thr_afs[8];
- API a_d_macc_thr_ahs[6];
- #endif
- #endif
-
- }
- T_NDB_MCU_DSP;
-#elif (DSP == 33) // NDB GSM
- typedef struct
- {
- // MISC Tasks
- API d_dsp_page;
-
- // DSP status returned (DSP --> MCU).
- API d_error_status;
-
- // RIF control (MCU -> DSP).
- API d_spcx_rif;
-
- API d_tch_mode; // TCH mode register.
- // bit [0..1] -> b_dai_mode.
- // bit [2] -> b_dtx.
-
- API d_debug1; // bit 0 at 1 enable dsp f_tx delay for Omega
-
- API d_dsp_test;
-
- // Words dedicated to Software version (DSP code + Patch)
- API d_version_number1;
- API d_version_number2;
-
- API d_debug_ptr;
- API d_debug_bk;
-
- API d_pll_config;
-
- // GSM/GPRS DSP Debug trace support
- API p_debug_buffer;
- API d_debug_buffer_size;
- API d_debug_trace_type;
-
- #if (W_A_DSP_IDLE3 == 1)
- // DSP report its state: 0 run, 1 Idle1, 2 Idle2, 3 Idle3.
- API d_dsp_state;
- // 10 words are reserved for any possible mapping modification
- API d_hole1_ndb[5];
- #else
- // 11 words are reserved for any possible mapping modification
- API d_hole1_ndb[6];
- #endif
-
- // New words APCDEL1 and APCDEL2 for 2TX: TX/PRACH combinations
- API d_apcdel1_bis;
- API d_apcdel2_bis;
-
-
- // New registers due to IOTA analog base band
- API d_apcdel2;
- API d_vbctrl2;
- API d_bulgcal;
-
- // Analog Based Band
- API d_afcctladd;
-
- API d_vbuctrl;
- API d_vbdctrl;
- API d_apcdel1;
- API d_apcoff;
- API d_bulioff;
- API d_bulqoff;
- API d_dai_onoff;
- API d_auxdac;
-
- #if (ANLG_FAM == 1)
- API d_vbctrl;
- #elif ((ANLG_FAM == 2) || (ANLG_FAM == 3))
- API d_vbctrl1;
- #endif
-
- API d_bbctrl;
-
- // Monitoring tasks control (MCU <- DSP)
- // FB task
- API d_fb_det; // FB detection result. (1 for FOUND).
- API d_fb_mode; // Mode for FB detection algorithm.
- API a_sync_demod[4]; // FB/SB demod. result, (D_TOA,D_PM,D_ANGLE,D_SNR).
-
- // SB Task
- API a_sch26[5]; // Header + SB information, array of 5 words.
-
- API d_audio_gain_ul;
- API d_audio_gain_dl;
-
- // Controller of the melody E2 audio compressor
- API d_audio_compressor_ctrl;
-
- // AUDIO module
- API d_audio_init;
- API d_audio_status;
-
- // Audio tasks
- // TONES (MCU -> DSP)
- API d_toneskb_init;
- API d_toneskb_status;
- API d_k_x1_t0;
- API d_k_x1_t1;
- API d_k_x1_t2;
- API d_pe_rep;
- API d_pe_off;
- API d_se_off;
- API d_bu_off;
- API d_t0_on;
- API d_t0_off;
- API d_t1_on;
- API d_t1_off;
- API d_t2_on;
- API d_t2_off;
- API d_k_x1_kt0;
- API d_k_x1_kt1;
- API d_dur_kb;
- API d_shiftdl;
- API d_shiftul;
-
- API d_aec_ctrl;
-
- API d_es_level_api;
- API d_mu_api;
-
- // Melody Ringer module
- API d_melo_osc_used;
- API d_melo_osc_active;
- API a_melo_note0[4];
- API a_melo_note1[4];
- API a_melo_note2[4];
- API a_melo_note3[4];
- API a_melo_note4[4];
- API a_melo_note5[4];
- API a_melo_note6[4];
- API a_melo_note7[4];
-
- // selection of the melody format
- API d_melody_selection;
-
- // Holes due to the format melody E1
- API a_melo_holes[3];
-
- // Speech Recognition module
- API d_sr_status; // status of the DSP speech reco task
- API d_sr_param; // paramters for the DSP speech reco task: OOV threshold.
- API d_sr_bit_exact_test; // bit exact test
- API d_sr_nb_words; // number of words used in the speech recognition task
- API d_sr_db_level; // estimate voice level in dB
- API d_sr_db_noise; // estimate noise in dB
- API d_sr_mod_size; // size of the model
- API a_n_best_words[4]; // array of the 4 best words
- API a_n_best_score[8]; // array of the 4 best scores (each score is 32 bits length)
-
- // Audio buffer
- API a_dd_1[22]; // Header + DATA traffic downlink information, sub. chan. 1.
- API a_du_1[22]; // Header + DATA traffic uplink information, sub. chan. 1.
-
- // V42bis module
- API d_v42b_nego0;
- API d_v42b_nego1;
- API d_v42b_control;
- API d_v42b_ratio_ind;
- API d_mcu_control;
- API d_mcu_control_sema;
-
- // Background tasks
- API d_background_enable;
- API d_background_abort;
- API d_background_state;
- API d_max_background;
- API a_background_tasks[16];
- API a_back_task_io[16];
-
- // GEA module defined in l1p_deft.h (the following section is overlaid with GPRS NDB memory)
- API d_gea_mode_ovly;
- API a_gea_kc_ovly[4];
-
- API d_hole3_ndb[8];
-
- // Encryption module
- API d_a5mode; // Encryption Mode.
-
- API d_sched_mode_gprs_ovly;
-
- // 7 words are reserved for any possible mapping modification
- API d_hole4_ndb[5];
-
- // Ramp definition for Omega device
- API a_ramp[16];
-
- // CCCH/SACCH downlink information...(!!)
- API a_cd[15]; // Header + CCCH/SACCH downlink information.
-
- // FACCH downlink information........(!!)
- API a_fd[15]; // Header + FACCH downlink information.
-
- // Traffic downlink data frames......(!!)
- API a_dd_0[22]; // Header + DATA traffic downlink information, sub. chan. 0.
-
- // CCCH/SACCH uplink information.....(!!)
- API a_cu[15]; // Header + CCCH/SACCH uplink information.
-
- // FACCH downlink information........(!!)
- API a_fu[15]; // Header + FACCH uplink information
-
- // Traffic downlink data frames......(!!)
- API a_du_0[22]; // Header + DATA traffic uplink information, sub. chan. 0.
-
- // Random access.....................(MCU -> DSP).
- API d_rach; // RACH information.
-
- //...................................(MCU -> DSP).
- API a_kc[4]; // Encryption Key Code.
-
- // Integrated Data Services module
- API d_ra_conf;
- API d_ra_act;
- API d_ra_test;
- API d_ra_statu;
- API d_ra_statd;
- API d_fax;
- API a_data_buf_ul[21];
- API a_data_buf_dl[37];
-
- #if (L1_NEW_AEC)
- // new AEC
- API a_new_aec_holes[422];
- API d_cont_filter;
- API d_granularity_att;
- API d_coef_smooth;
- API d_es_level_max;
- API d_fact_vad;
- API d_thrs_abs;
- API d_fact_asd_fil;
- API d_fact_asd_mut;
- API d_far_end_pow_h;
- API d_far_end_pow_l;
- API d_far_end_noise_h;
- API d_far_end_noise_l;
- #endif
-
- // Speech recognition model
- #if (L1_NEW_AEC)
- API a_sr_holes[1165];
- #else
- API a_sr_holes[1599];
- #endif // L1_NEW_AEC
- API a_model[1041];
-
- // EOTD buffer
- #if (L1_EOTD==1)
- API d_eotd_first;
- API d_eotd_max;
- API d_eotd_nrj_high;
- API d_eotd_nrj_low;
- API a_eotd_crosscor[18];
- #else
- API a_eotd_holes[22];
- #endif
-
- #if (MELODY_E2)
- API a_melody_e2_holes0[27];
- API d_melody_e2_osc_used;
- API d_melody_e2_osc_active;
- API d_melody_e2_semaphore;
- API a_melody_e2_osc[16][3];
- API d_melody_e2_globaltimefactor;
- API a_melody_e2_instrument_ptr[8];
- API a_melody_e2_holes1[708];
- API a_dsp_trace[SC_AUDIO_MELODY_E2_MAX_SIZE_OF_DSP_TRACE];
- API a_melody_e2_instrument_wave[SC_AUDIO_MELODY_E2_MAX_SIZE_OF_INSTRUMENT];
- #endif
- }
- T_NDB_MCU_DSP;
-
-#elif ((DSP == 32) || (DSP == 31))
- typedef struct
- {
- // Monitoring tasks control..........(MCU <- DSP)
- API d_fb_det; // FB detection result. (1 for FOUND).
- API d_fb_mode; // Mode for FB detection algorithm.
- API a_sync_demod[4]; // FB/SB demod. result, (D_TOA,D_PM,D_ANGLE,D_SNR).
-
- // CCCH/SACCH downlink information...(!!)
- API a_cd[15]; // Header + CCCH/SACCH downlink information.
-
- // FACCH downlink information........(!!)
- API a_fd[15]; // Header + FACCH downlink information.
-
- // Traffic downlink data frames......(!!)
- API a_dd_0[22]; // Header + DATA traffic downlink information, sub. chan. 0.
- API a_dd_1[22]; // Header + DATA traffic downlink information, sub. chan. 1.
-
- // CCCH/SACCH uplink information.....(!!)
- API a_cu[15]; // Header + CCCH/SACCH uplink information.
-
- #if (SPEECH_RECO)
- // FACCH downlink information........(!!)
- API a_fu[3]; // Header + FACCH uplink information
- // The size of this buffer is 15 word but some speech reco words
- // are overlayer with this buffer. This is the reason why the size is 3 instead of 15.
- API d_sr_status; // status of the DSP speech reco task
- API d_sr_param; // paramters for the DSP speech reco task: OOV threshold.
- API sr_hole1; // hole
- API d_sr_bit_exact_test; // bit exact test
- API d_sr_nb_words; // number of words used in the speech recognition task
- API d_sr_db_level; // estimate voice level in dB
- API d_sr_db_noise; // estimate noise in dB
- API d_sr_mod_size; // size of the model
- API sr_holes_1[4]; // hole
- #else
- // FACCH downlink information........(!!)
- API a_fu[15]; // Header + FACCH uplink information
- #endif
-
- // Traffic uplink data frames........(!!)
- API a_du_0[22]; // Header + DATA traffic uplink information, sub. chan. 0.
- API a_du_1[22]; // Header + DATA traffic uplink information, sub. chan. 1.
-
- // Random access.....................(MCU -> DSP).
- API d_rach; // RACH information.
-
- //...................................(MCU -> DSP).
- API d_a5mode; // Encryption Mode.
- API a_kc[4]; // Encryption Key Code.
- API d_tch_mode; // TCH mode register.
- // bit [0..1] -> b_dai_mode.
- // bit [2] -> b_dtx.
-
- // OMEGA...........................(MCU -> DSP).
- #if ((ANLG_FAM == 1) || (ANLG_FAM == 2))
- API a_ramp[16];
- #if (MELODY_E1)
- API d_melo_osc_used;
- API d_melo_osc_active;
- API a_melo_note0[4];
- API a_melo_note1[4];
- API a_melo_note2[4];
- API a_melo_note3[4];
- API a_melo_note4[4];
- API a_melo_note5[4];
- API a_melo_note6[4];
- API a_melo_note7[4];
- #if (DSP==31)
- // selection of the melody format
- API d_melody_selection;
- API holes[9];
- #else // DSP==32
- API d_dco_type; // Tide
- API p_start_IQ;
- API d_level_off;
- API d_dco_dbg;
- API d_tide_resa;
- API d_asynch_margin; // Perseus Asynch Audio Workaround
- API hole[4];
- #endif // DSP 32
-
- #else // NO MELODY E1
- #if (DSP==31)
- // selection of the melody format
- API d_melody_selection;
- API holes[43]; // 43 unused holes.
- #else // DSP==32
- API holes[34]; // 34 unused holes.
- API d_dco_type; // Tide
- API p_start_IQ;
- API d_level_off;
- API d_dco_dbg;
- API d_tide_resa;
- API d_asynch_margin; // Perseus Asynch Audio Workaround
- API hole[4];
- #endif //DSP == 32
- #endif // NO MELODY E1
-
- API d_debug3;
- API d_debug2;
- API d_debug1; // bit 0 at 1 enable dsp f_tx delay for Omega
- API d_afcctladd;
- API d_vbuctrl;
- API d_vbdctrl;
- API d_apcdel1;
- API d_aec_ctrl;
- API d_apcoff;
- API d_bulioff;
- API d_bulqoff;
- API d_dai_onoff;
- API d_auxdac;
-
- #if (ANLG_FAM == 1)
- API d_vbctrl;
- #elif (ANLG_FAM == 2)
- API d_vbctrl1;
- #endif
-
- API d_bbctrl;
- #else
- #error DSPCODE not supported with given ANALOG
- #endif //(ANALOG)1, 2
- //...................................(MCU -> DSP).
- API a_sch26[5]; // Header + SB information, array of 5 words.
-
- // TONES.............................(MCU -> DSP)
- API d_toneskb_init;
- API d_toneskb_status;
- API d_k_x1_t0;
- API d_k_x1_t1;
- API d_k_x1_t2;
- API d_pe_rep;
- API d_pe_off;
- API d_se_off;
- API d_bu_off;
- API d_t0_on;
- API d_t0_off;
- API d_t1_on;
- API d_t1_off;
- API d_t2_on;
- API d_t2_off;
- API d_k_x1_kt0;
- API d_k_x1_kt1;
- API d_dur_kb;
-
- // PLL...............................(MCU -> DSP).
- API d_pll_clkmod1;
- API d_pll_clkmod2;
-
- // DSP status returned..........(DSP --> MCU).
- API d_error_status;
-
- // RIF control.......................(MCU -> DSP).
- API d_spcx_rif;
-
- API d_shiftdl;
- API d_shiftul;
-
- API p_saec_prog;
- API p_aec_prog;
- API p_spenh_prog;
-
- API a_ovly[75];
- API d_ra_conf;
- API d_ra_act;
- API d_ra_test;
- API d_ra_statu;
- API d_ra_statd;
- API d_fax;
- #if (SPEECH_RECO)
- API a_data_buf_ul[3];
- API a_n_best_words[4]; // array of the 4 best words
- API a_n_best_score[8]; // array of the 4 best scores (each score is 32 bits length)
- API sr_holes_2[6];
- API a_data_buf_dl[37];
-
- API a_hole[24];
-
- API d_sched_mode_gprs_ovly;
-
- API fir_holes1[384];
- API a_fir31_uplink[31];
- API a_fir31_downlink[31];
- API d_audio_init;
- API d_audio_status;
-
- API a_model[1041]; // array of the speech reco model
- #else
- API a_data_buf_ul[21];
- API a_data_buf_dl[37];
-
- API a_hole[24];
-
- API d_sched_mode_gprs_ovly;
-
- API fir_holes1[384];
- API a_fir31_uplink[31];
- API a_fir31_downlink[31];
- API d_audio_init;
- API d_audio_status;
-
-#if (L1_EOTD ==1)
- API a_eotd_hole[369];
-
- API d_eotd_first;
- API d_eotd_max;
- API d_eotd_nrj_high;
- API d_eotd_nrj_low;
- API a_eotd_crosscor[18];
-#endif
- #endif
- }
- T_NDB_MCU_DSP;
-
-
-#else // OTHER DSP CODE like 17
-
-typedef struct
-{
- // Monitoring tasks control..........(MCU <- DSP)
- API d_fb_det; // FB detection result. (1 for FOUND).
- API d_fb_mode; // Mode for FB detection algorithm.
- API a_sync_demod[4]; // FB/SB demod. result, (D_TOA,D_PM,D_ANGLE,D_SNR).
-
- // CCCH/SACCH downlink information...(!!)
- API a_cd[15]; // Header + CCCH/SACCH downlink information.
-
- // FACCH downlink information........(!!)
- API a_fd[15]; // Header + FACCH downlink information.
-
- // Traffic downlink data frames......(!!)
- #if (DATA14_4 == 0)
- API a_dd_0[20]; // Header + DATA traffic downlink information, sub. chan. 0.
- API a_dd_1[20]; // Header + DATA traffic downlink information, sub. chan. 1.
- #endif
- #if (DATA14_4 == 1)
- API a_dd_0[22]; // Header + DATA traffic downlink information, sub. chan. 0.
- API a_dd_1[22]; // Header + DATA traffic downlink information, sub. chan. 1.
- #endif
-
- // CCCH/SACCH uplink information.....(!!)
- API a_cu[15]; // Header + CCCH/SACCH uplink information.
-
- #if (SPEECH_RECO)
- // FACCH downlink information........(!!)
- API a_fu[3]; // Header + FACCH uplink information
- // The size of this buffer is 15 word but some speech reco words
- // are overlayer with this buffer. This is the reason why the size is 3 instead of 15.
- API d_sr_status; // status of the DSP speech reco task
- API d_sr_param; // paramters for the DSP speech reco task: OOV threshold.
- API sr_hole1; // hole
- API d_sr_bit_exact_test; // bit exact test
- API d_sr_nb_words; // number of words used in the speech recognition task
- API d_sr_db_level; // estimate voice level in dB
- API d_sr_db_noise; // estimate noise in dB
- API d_sr_mod_size; // size of the model
- API sr_holes_1[4]; // hole
- #else
- // FACCH downlink information........(!!)
- API a_fu[15]; // Header + FACCH uplink information
- #endif
-
- // Traffic uplink data frames........(!!)
- #if (DATA14_4 == 0)
- API a_du_0[20]; // Header + DATA traffic uplink information, sub. chan. 0.
- API a_du_1[20]; // Header + DATA traffic uplink information, sub. chan. 1.
- #endif
- #if (DATA14_4 == 1)
- API a_du_0[22]; // Header + DATA traffic uplink information, sub. chan. 0.
- API a_du_1[22]; // Header + DATA traffic uplink information, sub. chan. 1.
- #endif
-
- // Random access.....................(MCU -> DSP).
- API d_rach; // RACH information.
-
- //...................................(MCU -> DSP).
- API d_a5mode; // Encryption Mode.
- API a_kc[4]; // Encryption Key Code.
- API d_tch_mode; // TCH mode register.
- // bit [0..1] -> b_dai_mode.
- // bit [2] -> b_dtx.
-
- // OMEGA...........................(MCU -> DSP).
-
-#if ((ANLG_FAM == 1) || (ANLG_FAM == 2))
- API a_ramp[16];
- #if (MELODY_E1)
- API d_melo_osc_used;
- API d_melo_osc_active;
- API a_melo_note0[4];
- API a_melo_note1[4];
- API a_melo_note2[4];
- API a_melo_note3[4];
- API a_melo_note4[4];
- API a_melo_note5[4];
- API a_melo_note6[4];
- API a_melo_note7[4];
- #if (DSP == 17)
- // selection of the melody format
- API d_dco_type; // Tide
- API p_start_IQ;
- API d_level_off;
- API d_dco_dbg;
- API d_tide_resa;
- API d_asynch_margin; // Perseus Asynch Audio Workaround
- API hole[4];
- #else
- API d_melody_selection;
- API holes[9];
- #endif
- #else // NO MELODY E1
- // selection of the melody format
- #if (DSP == 17)
- API holes[34]; // 34 unused holes.
- API d_dco_type; // Tide
- API p_start_IQ;
- API d_level_off;
- API d_dco_dbg;
- API d_tide_resa;
- API d_asynch_margin; // Perseus Asynch Audio Workaround
- API hole[4]
- #else
- // selection of the melody format
- API d_melody_selection;
- API holes[43]; // 43 unused holes.
- #endif
- #endif
- API d_debug3;
- API d_debug2;
- API d_debug1; // bit 0 at 1 enable dsp f_tx delay for Omega
- API d_afcctladd;
- API d_vbuctrl;
- API d_vbdctrl;
- API d_apcdel1;
- API d_aec_ctrl;
- API d_apcoff;
- API d_bulioff;
- API d_bulqoff;
- API d_dai_onoff;
- API d_auxdac;
- #if (ANLG_FAM == 1)
- API d_vbctrl;
- #elif (ANLG_FAM == 2)
- API d_vbctrl1;
- #endif
- API d_bbctrl;
-
- #else
- #error DSPCODE not supported with given ANALOG
- #endif //(ANALOG)1, 2
- //...................................(MCU -> DSP).
- API a_sch26[5]; // Header + SB information, array of 5 words.
-
- // TONES.............................(MCU -> DSP)
- API d_toneskb_init;
- API d_toneskb_status;
- API d_k_x1_t0;
- API d_k_x1_t1;
- API d_k_x1_t2;
- API d_pe_rep;
- API d_pe_off;
- API d_se_off;
- API d_bu_off;
- API d_t0_on;
- API d_t0_off;
- API d_t1_on;
- API d_t1_off;
- API d_t2_on;
- API d_t2_off;
- API d_k_x1_kt0;
- API d_k_x1_kt1;
- API d_dur_kb;
-
- // PLL...............................(MCU -> DSP).
- API d_pll_clkmod1;
- API d_pll_clkmod2;
-
- // DSP status returned..........(DSP --> MCU).
- API d_error_status;
-
- // RIF control.......................(MCU -> DSP).
- API d_spcx_rif;
-
- API d_shiftdl;
- API d_shiftul;
-
- #if (AEC == 1)
- // AEC control.......................(MCU -> DSP).
- #if (VOC == FR_EFR)
- API p_aec_init;
- API p_aec_prog;
- API p_spenh_init;
- API p_spenh_prog;
- #endif
-
- #if (VOC == FR_HR_EFR)
- API p_saec_prog;
- API p_aec_prog;
- API p_spenh_prog;
- #endif
- #endif
-
- API a_ovly[75];
- API d_ra_conf;
- API d_ra_act;
- API d_ra_test;
- API d_ra_statu;
- API d_ra_statd;
- API d_fax;
- #if (SPEECH_RECO)
- API a_data_buf_ul[3];
- API a_n_best_words[4]; // array of the 4 best words
- API a_n_best_score[8]; // array of the 4 best scores (each score is 32 bits length)
- API sr_holes_2[6];
- API a_data_buf_dl[37];
-
- API fir_holes1[409];
- API a_fir31_uplink[31];
- API a_fir31_downlink[31];
- API d_audio_init;
- API d_audio_status;
- API a_model[1041]; // array of the speech reco model
- #else
- API a_data_buf_ul[21];
- API a_data_buf_dl[37];
-
- API fir_holes1[409];
- API a_fir31_uplink[31];
- API a_fir31_downlink[31];
- API d_audio_init;
- API d_audio_status;
- #endif
-}
-T_NDB_MCU_DSP;
-#endif
-
-#if (DSP == 34) || (DSP == 35) || (DSP == 36)
-typedef struct
-{
- API_SIGNED d_transfer_rate;
-
- // Common GSM/GPRS
- // These words specified the latencies to applies on some peripherics
- API_SIGNED d_lat_mcu_bridge;
- API_SIGNED d_lat_mcu_hom2sam;
- API_SIGNED d_lat_mcu_bef_fast_access;
- API_SIGNED d_lat_dsp_after_sam;
-
- // DSP Start address
- API_SIGNED d_gprs_install_address;
-
- API_SIGNED d_misc_config;
-
- API_SIGNED d_cn_sw_workaround;
-
- API_SIGNED d_hole2_param[4];
-
- //...................................Frequency Burst.
- API_SIGNED d_fb_margin_beg;
- API_SIGNED d_fb_margin_end;
- API_SIGNED d_nsubb_idle;
- API_SIGNED d_nsubb_dedic;
- API_SIGNED d_fb_thr_det_iacq;
- API_SIGNED d_fb_thr_det_track;
- //...................................Demodulation.
- API_SIGNED d_dc_off_thres;
- API_SIGNED d_dummy_thres;
- API_SIGNED d_dem_pond_gewl;
- API_SIGNED d_dem_pond_red;
-
- //...................................TCH Full Speech.
- API_SIGNED d_maccthresh1;
- API_SIGNED d_mldt;
- API_SIGNED d_maccthresh;
- API_SIGNED d_gu;
- API_SIGNED d_go;
- API_SIGNED d_attmax;
- API_SIGNED d_sm;
- API_SIGNED d_b;
-
- // V42Bis module
- API_SIGNED d_v42b_switch_hyst;
- API_SIGNED d_v42b_switch_min;
- API_SIGNED d_v42b_switch_max;
- API_SIGNED d_v42b_reset_delay;
-
- //...................................TCH Half Speech.
- API_SIGNED d_ldT_hr;
- API_SIGNED d_maccthresh_hr;
- API_SIGNED d_maccthresh1_hr;
- API_SIGNED d_gu_hr;
- API_SIGNED d_go_hr;
- API_SIGNED d_b_hr;
- API_SIGNED d_sm_hr;
- API_SIGNED d_attmax_hr;
-
- //...................................TCH Enhanced FR Speech.
- API_SIGNED c_mldt_efr;
- API_SIGNED c_maccthresh_efr;
- API_SIGNED c_maccthresh1_efr;
- API_SIGNED c_gu_efr;
- API_SIGNED c_go_efr;
- API_SIGNED c_b_efr;
- API_SIGNED c_sm_efr;
- API_SIGNED c_attmax_efr;
-
- //...................................CHED
- API_SIGNED d_sd_min_thr_tchfs;
- API_SIGNED d_ma_min_thr_tchfs;
- API_SIGNED d_md_max_thr_tchfs;
- API_SIGNED d_md1_max_thr_tchfs;
-
- API_SIGNED d_sd_min_thr_tchhs;
- API_SIGNED d_ma_min_thr_tchhs;
- API_SIGNED d_sd_av_thr_tchhs;
- API_SIGNED d_md_max_thr_tchhs;
- API_SIGNED d_md1_max_thr_tchhs;
-
- API_SIGNED d_sd_min_thr_tchefs;
- API_SIGNED d_ma_min_thr_tchefs;
- API_SIGNED d_md_max_thr_tchefs;
- API_SIGNED d_md1_max_thr_tchefs;
-
- API_SIGNED d_wed_fil_ini;
- API_SIGNED d_wed_fil_tc;
- API_SIGNED d_x_min;
- API_SIGNED d_x_max;
- API_SIGNED d_slope;
- API_SIGNED d_y_min;
- API_SIGNED d_y_max;
- API_SIGNED d_wed_diff_threshold;
- API_SIGNED d_mabfi_min_thr_tchhs;
-
- // FACCH module
- API_SIGNED d_facch_thr;
-
- // IDS module
- API_SIGNED d_max_ovsp_ul;
- API_SIGNED d_sync_thres;
- API_SIGNED d_idle_thres;
- API_SIGNED d_m1_thres;
- API_SIGNED d_max_ovsp_dl;
- API_SIGNED d_gsm_bgd_mgt;
-
- // FIR coefficients
- API a_fir_holes[4];
- API a_fir31_uplink[31];
- API a_fir31_downlink[31];
-}
-T_PARAM_MCU_DSP;
-#elif (DSP == 33)
-typedef struct
-{
- API_SIGNED d_transfer_rate;
-
- // Common GSM/GPRS
- // These words specified the latencies to applies on some peripherics
- API_SIGNED d_lat_mcu_bridge;
- API_SIGNED d_lat_mcu_hom2sam;
- API_SIGNED d_lat_mcu_bef_fast_access;
- API_SIGNED d_lat_dsp_after_sam;
-
- // DSP Start address
- API_SIGNED d_gprs_install_address;
-
- API_SIGNED d_misc_config;
-
- API_SIGNED d_cn_sw_workaround;
-
- #if DCO_ALGO
- API_SIGNED d_cn_dco_param;
-
- API_SIGNED d_hole2_param[3];
- #else
- API_SIGNED d_hole2_param[4];
- #endif
-
- //...................................Frequency Burst.
- API_SIGNED d_fb_margin_beg;
- API_SIGNED d_fb_margin_end;
- API_SIGNED d_nsubb_idle;
- API_SIGNED d_nsubb_dedic;
- API_SIGNED d_fb_thr_det_iacq;
- API_SIGNED d_fb_thr_det_track;
- //...................................Demodulation.
- API_SIGNED d_dc_off_thres;
- API_SIGNED d_dummy_thres;
- API_SIGNED d_dem_pond_gewl;
- API_SIGNED d_dem_pond_red;
-
- //...................................TCH Full Speech.
- API_SIGNED d_maccthresh1;
- API_SIGNED d_mldt;
- API_SIGNED d_maccthresh;
- API_SIGNED d_gu;
- API_SIGNED d_go;
- API_SIGNED d_attmax;
- API_SIGNED d_sm;
- API_SIGNED d_b;
-
- // V42Bis module
- API_SIGNED d_v42b_switch_hyst;
- API_SIGNED d_v42b_switch_min;
- API_SIGNED d_v42b_switch_max;
- API_SIGNED d_v42b_reset_delay;
-
- //...................................TCH Half Speech.
- API_SIGNED d_ldT_hr;
- API_SIGNED d_maccthresh_hr;
- API_SIGNED d_maccthresh1_hr;
- API_SIGNED d_gu_hr;
- API_SIGNED d_go_hr;
- API_SIGNED d_b_hr;
- API_SIGNED d_sm_hr;
- API_SIGNED d_attmax_hr;
-
- //...................................TCH Enhanced FR Speech.
- API_SIGNED c_mldt_efr;
- API_SIGNED c_maccthresh_efr;
- API_SIGNED c_maccthresh1_efr;
- API_SIGNED c_gu_efr;
- API_SIGNED c_go_efr;
- API_SIGNED c_b_efr;
- API_SIGNED c_sm_efr;
- API_SIGNED c_attmax_efr;
-
- //...................................CHED
- API_SIGNED d_sd_min_thr_tchfs;
- API_SIGNED d_ma_min_thr_tchfs;
- API_SIGNED d_md_max_thr_tchfs;
- API_SIGNED d_md1_max_thr_tchfs;
-
- API_SIGNED d_sd_min_thr_tchhs;
- API_SIGNED d_ma_min_thr_tchhs;
- API_SIGNED d_sd_av_thr_tchhs;
- API_SIGNED d_md_max_thr_tchhs;
- API_SIGNED d_md1_max_thr_tchhs;
-
- API_SIGNED d_sd_min_thr_tchefs;
- API_SIGNED d_ma_min_thr_tchefs;
- API_SIGNED d_md_max_thr_tchefs;
- API_SIGNED d_md1_max_thr_tchefs;
-
- API_SIGNED d_wed_fil_ini;
- API_SIGNED d_wed_fil_tc;
- API_SIGNED d_x_min;
- API_SIGNED d_x_max;
- API_SIGNED d_slope;
- API_SIGNED d_y_min;
- API_SIGNED d_y_max;
- API_SIGNED d_wed_diff_threshold;
- API_SIGNED d_mabfi_min_thr_tchhs;
-
- // FACCH module
- API_SIGNED d_facch_thr;
-
- // IDS module
- API_SIGNED d_max_ovsp_ul;
- API_SIGNED d_sync_thres;
- API_SIGNED d_idle_thres;
- API_SIGNED d_m1_thres;
- API_SIGNED d_max_ovsp_dl;
- API_SIGNED d_gsm_bgd_mgt;
-
- // FIR coefficients
- API a_fir_holes[4];
- API a_fir31_uplink[31];
- API a_fir31_downlink[31];
-}
-T_PARAM_MCU_DSP;
-
-#else
-
-typedef struct
-{
- //...................................Frequency Burst.
- API_SIGNED d_nsubb_idle;
- API_SIGNED d_nsubb_dedic;
- API_SIGNED d_fb_thr_det_iacq;
- API_SIGNED d_fb_thr_det_track;
- //...................................Demodulation.
- API_SIGNED d_dc_off_thres;
- API_SIGNED d_dummy_thres;
- API_SIGNED d_dem_pond_gewl;
- API_SIGNED d_dem_pond_red;
- API_SIGNED hole[1];
- API_SIGNED d_transfer_rate;
- //...................................TCH Full Speech.
- API_SIGNED d_maccthresh1;
- API_SIGNED d_mldt;
- API_SIGNED d_maccthresh;
- API_SIGNED d_gu;
- API_SIGNED d_go;
- API_SIGNED d_attmax;
- API_SIGNED d_sm;
- API_SIGNED d_b;
-
- #if (VOC == FR_HR) || (VOC == FR_HR_EFR)
- //...................................TCH Half Speech.
- API_SIGNED d_ldT_hr;
- API_SIGNED d_maccthresh_hr;
- API_SIGNED d_maccthresh1_hr;
- API_SIGNED d_gu_hr;
- API_SIGNED d_go_hr;
- API_SIGNED d_b_hr;
- API_SIGNED d_sm_hr;
- API_SIGNED d_attmax_hr;
- #endif
-
- #if (VOC == FR_EFR) || (VOC == FR_HR_EFR)
- //...................................TCH Enhanced FR Speech.
- API_SIGNED c_mldt_efr;
- API_SIGNED c_maccthresh_efr;
- API_SIGNED c_maccthresh1_efr;
- API_SIGNED c_gu_efr;
- API_SIGNED c_go_efr;
- API_SIGNED c_b_efr;
- API_SIGNED c_sm_efr;
- API_SIGNED c_attmax_efr;
- #endif
-
- //...................................TCH Full Speech.
- API_SIGNED d_sd_min_thr_tchfs;
- API_SIGNED d_ma_min_thr_tchfs;
- API_SIGNED d_md_max_thr_tchfs;
- API_SIGNED d_md1_max_thr_tchfs;
-
- #if (VOC == FR) || (VOC == FR_HR) || (VOC == FR_HR_EFR)
- //...................................TCH Half Speech.
- API_SIGNED d_sd_min_thr_tchhs;
- API_SIGNED d_ma_min_thr_tchhs;
- API_SIGNED d_sd_av_thr_tchhs;
- API_SIGNED d_md_max_thr_tchhs;
- API_SIGNED d_md1_max_thr_tchhs;
- #endif
-
- #if (VOC == FR_EFR) || (VOC == FR_HR_EFR)
- //...................................TCH Enhanced FR Speech.
- API_SIGNED d_sd_min_thr_tchefs; //(24L *C_POND_RED)
- API_SIGNED d_ma_min_thr_tchefs; //(1200L *C_POND_RED)
- API_SIGNED d_md_max_thr_tchefs; //(2000L *C_POND_RED)
- API_SIGNED d_md1_max_thr_tchefs; //(160L *C_POND_RED)
- API_SIGNED d_hole1;
- #endif
-
- API_SIGNED d_wed_fil_ini;
- API_SIGNED d_wed_fil_tc;
- API_SIGNED d_x_min;
- API_SIGNED d_x_max;
- API_SIGNED d_slope;
- API_SIGNED d_y_min;
- API_SIGNED d_y_max;
- API_SIGNED d_wed_diff_threshold;
- API_SIGNED d_mabfi_min_thr_tchhs;
- API_SIGNED d_facch_thr;
- API_SIGNED d_dsp_test;
-
-
- #if (DATA14_4 == 0 ) || (VOC == FR_HR_EFR)
- API_SIGNED d_patch_addr1;
- API_SIGNED d_patch_data1;
- API_SIGNED d_patch_addr2;
- API_SIGNED d_patch_data2;
- API_SIGNED d_patch_addr3;
- API_SIGNED d_patch_data3;
- API_SIGNED d_patch_addr4;
- API_SIGNED d_patch_data4;
- #endif
-
- //...................................
- API_SIGNED d_version_number; // DSP patch version
- API_SIGNED d_ti_version; // customer number. No more used since 1.5
-
- API_SIGNED d_dsp_page;
-
- #if IDS
- API_SIGNED d_max_ovsp_ul;
- API_SIGNED d_sync_thres;
- API_SIGNED d_idle_thres;
- API_SIGNED d_m1_thres;
- API_SIGNED d_max_ovsp_dl;
- #endif
-
-
-}
-T_PARAM_MCU_DSP;
-#endif
-
-#if (DSP_DEBUG_TRACE_ENABLE == 1)
-typedef struct
-{
- API d_debug_ptr_begin;
- API d_debug_ptr_end;
-}
-T_DB2_DSP_TO_MCU;
-#endif
-
-/* DSP error as per ndb->d_error_status */
-enum dsp_error {
- DSP_ERR_RHEA = 0x0001,
- DSP_ERR_IQ_SAMPLES = 0x0004,
- DSP_ERR_DMA_PROG = 0x0008,
- DSP_ERR_DMA_TASK = 0x0010,
- DSP_ERR_DMA_PEND = 0x0020,
- DSP_ERR_VM = 0x0080,
- DSP_ERR_DMA_UL_TASK = 0x0100,
- DSP_ERR_DMA_UL_PROG = 0x0200,
- DSP_ERR_DMA_UL_PEND = 0x0400,
- DSP_ERR_STACK_OV = 0x0800,
-};
-
-/* How an ABB register + value is expressed in the API RAM */
-#define ABB_VAL(reg, val) ( (((reg) & 0x1F) << 1) | (((val) & 0x3FF) << 6) )
-
-/* How an ABB register + value | TRUE is expressed in the API RAM */
-#define ABB_VAL_T(reg, val) (ABB_VAL(reg, val) | 1)
-
-#endif /* _CAL_DSP_API_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/calypso/du.h b/Src/osmoconbb/src/target/firmware/include/calypso/du.h
deleted file mode 100644
index f2eae09..0000000
--- a/Src/osmoconbb/src/target/firmware/include/calypso/du.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Calypso DU (Debug Unit) Driver */
-
-/* (C) 2010 by Ingo Albrecht <prom@berlin.ccc.de>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#ifndef _CALYPSO_DU_H
-#define _CALYPSO_DU_H
-
-#include <calypso/clock.h>
-
-void calypso_du_init();
-void calypso_du_stop();
-void calypsu_du_dump();
-
-#endif /* _CALYPSO_DU_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/calypso/irq.h b/Src/osmoconbb/src/target/firmware/include/calypso/irq.h
deleted file mode 100644
index 5ea5979..0000000
--- a/Src/osmoconbb/src/target/firmware/include/calypso/irq.h
+++ /dev/null
@@ -1,49 +0,0 @@
-#ifndef _CALYPSO_IRQ_H
-#define _CALYPSO_IRQ_H
-
-enum irq_nr {
- IRQ_WATCHDOG = 0,
- IRQ_TIMER1 = 1,
- IRQ_TIMER2 = 2,
- IRQ_TSP_RX = 3,
- IRQ_TPU_FRAME = 4,
- IRQ_TPU_PAGE = 5,
- IRQ_SIMCARD = 6,
- IRQ_UART_MODEM = 7,
- IRQ_KEYPAD_GPIO = 8,
- IRQ_RTC_TIMER = 9,
- IRQ_RTC_ALARM_I2C = 10,
- IRQ_ULPD_GAUGING = 11,
- IRQ_EXTERNAL = 12,
- IRQ_SPI = 13,
- IRQ_DMA = 14,
- IRQ_API = 15,
- IRQ_SIM_DETECT = 16,
- IRQ_EXTERNAL_FIQ = 17,
- IRQ_UART_IRDA = 18,
- IRQ_ULPD_GSM_TIMER = 19,
- IRQ_GEA = 20,
- _NR_IRQ
-};
-
-typedef void irq_handler(enum irq_nr nr);
-
-/* initialize IRQ driver and enable interrupts */
-void irq_init(void);
-
-/* enable a certain interrupt */
-void irq_enable(enum irq_nr nr);
-
-/* disable a certain interrupt */
-void irq_disable(enum irq_nr nr);
-
-/* configure a certain interrupt */
-void irq_config(enum irq_nr nr, int fiq, int edge, int8_t prio);
-
-/* register an interrupt handler */
-void irq_register_handler(enum irq_nr nr, irq_handler *handler);
-
-/* Install the exception handlers to where the ROM loader jumps */
-void calypso_exceptions_install(void);
-
-#endif /* _CALYPSO_IRQ_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/calypso/l1_environment.h b/Src/osmoconbb/src/target/firmware/include/calypso/l1_environment.h
deleted file mode 100644
index d4d442c..0000000
--- a/Src/osmoconbb/src/target/firmware/include/calypso/l1_environment.h
+++ /dev/null
@@ -1,385 +0,0 @@
-#include <stdint.h>
-
-typedef unsigned short API;
-typedef signed short API_SIGNED;
-
-#define FAR
-
-#define CHIPSET 12
-#define DSP 36
-#define ANLG_FAM 2 /* Iota */
-
-/* MFTAB */
-#define L1_MAX_FCT 5 /* Max number of fctions in a frame */
-#define MFTAB_SIZE 20
-
-#define NBMAX_CARRIER 174+374 /* Number of carriers (GSM-Ext + DCS */
-
-#define DPAGC_FIFO_LEN 4
-
-#define SIZE_HIST 10
-
-#if !L1_GPRS
-# define NBR_DL_L1S_TASKS 32
-#else
-# define NBR_DL_L1S_TASKS 45
-#endif
-
-#define NBR_L1A_PROCESSES 46
-
-#define W_A_DSP_IDLE3 1
-
-
-
-// Identifier for all DSP tasks.
-// ...RX & TX tasks identifiers.
-#define NO_DSP_TASK 0 // No task.
-#define NP_DSP_TASK 21 // Normal Paging reading task.
-#define EP_DSP_TASK 22 // Extended Paging reading task.
-#define NBS_DSP_TASK 19 // Normal BCCH serving reading task.
-#define EBS_DSP_TASK 20 // Extended BCCH serving reading task.
-#define NBN_DSP_TASK 17 // Normal BCCH neighbour reading task.
-#define EBN_DSP_TASK 18 // Extended BCCH neighbour reading task.
-#define ALLC_DSP_TASK 24 // CCCH reading task while performing FULL BCCH/CCCH reading task.
-#define CB_DSP_TASK 25 // CBCH reading task.
-#define DDL_DSP_TASK 26 // SDCCH/D (data) reading task.
-#define ADL_DSP_TASK 27 // SDCCH/A (SACCH) reading task.
-#define DUL_DSP_TASK 12 // SDCCH/D (data) transmit task.
-#define AUL_DSP_TASK 11 // SDCCH/A (SACCH) transmit task.
-#define RACH_DSP_TASK 10 // RACH transmit task.
-#define TCHT_DSP_TASK 13 // TCH Traffic data DSP task id (RX or TX)
-#define TCHA_DSP_TASK 14 // TCH SACCH data DSP task id (RX or TX)
-#define TCHD_DSP_TASK 28 // TCH Traffic data DSP task id (RX or TX)
-
-#define TCH_DTX_UL 15 // Replace UL task in DSP->MCU com. to say "burst not transmitted".
-
-#if (L1_GPRS)
- // Identifier for DSP tasks Packet dedicated.
- // ...RX & TX tasks identifiers.
- //------------------------------------------------------------------------
- // WARNING ... Need to aligned following macro with MCU/DSP GPRS Interface
- //------------------------------------------------------------------------
- #define PNP_DSP_TASK 30
- #define PEP_DSP_TASK 31
- #define PALLC_DSP_TASK 32
- #define PBS_DSP_TASK 33
-
- #define PTCCH_DSP_TASK 33
-
-#endif
-
-// Identifier for measurement, FB / SB search tasks.
-// Values 1,2,3 reserved for "number of measurements".
-#define FB_DSP_TASK 5 // Freq. Burst reading task in Idle mode.
-#define SB_DSP_TASK 6 // Sync. Burst reading task in Idle mode.
-#define TCH_FB_DSP_TASK 8 // Freq. Burst reading task in Dedicated mode.
-#define TCH_SB_DSP_TASK 9 // Sync. Burst reading task in Dedicated mode.
-#define IDLE1 1
-
-// Debug tasks
-#define CHECKSUM_DSP_TASK 33
-#define TST_NDB 35 // Checksum DSP->MCU
-#define TST_DB 36 // DB communication check
-#define INIT_VEGA 37
-#define DSP_LOOP_C 38
-
-// Identifier for measurement, FB / SB search tasks.
-// Values 1,2,3 reserved for "number of measurements".
-#define TCH_LOOP_A 31
-#define TCH_LOOP_B 32
-
-// bits in d_gsm_bgd_mgt - background task management
-#define B_DSPBGD_RECO 1 // start of reco in dsp background
-#define B_DSPBGD_UPD 2 // start of alignement update in dsp background
-#define B_DSPBGD_STOP_RECO 256 // stop of reco in dsp background
-#define B_DSPBGD_STOP_UPD 512 // stop of alignement update in dsp background
-
-// bit in d_pll_config
-#define B_32KHZ_CALIB (1 << 14) // force DSP in Idle1 during 32 khz calibration
-// ****************************************************************
-// NDB AREA (PARAM) MCU<->DSP COMMUNICATION DEFINITIONS
-// ****************************************************************
-// bits in d_tch_mode
-#define B_EOTD (1 << 0) // EOTD mode
-#define B_PLAY_UL (1 << 3) // Play UL
-#define B_DCO_ON (1 << 4) // DCO ON/OFF
-#define B_AUDIO_ASYNC (1 << 1) // WCP reserved
-
-// ****************************************************************
-// PARAMETER AREA (PARAM) MCU<->DSP COMMUNICATION DEFINITIONS
-// ****************************************************************
-#define C_POND_RED 1L
-// below values are defined in the file l1_time.h
-//#define D_NSUBB_IDLE 296L
-//#define D_NSUBB_DEDIC 30L
-#define D_FB_THR_DET_IACQ 0x3333L
-#define D_FB_THR_DET_TRACK 0x28f6L
-#define D_DC_OFF_THRES 0x7fffL
-#define D_DUMMY_THRES 17408L
-#define D_DEM_POND_GEWL 26624L
-#define D_DEM_POND_RED 20152L
-#define D_HOLE 0L
-#define D_TRANSFER_RATE 0x6666L
-
-// Full Rate vocoder definitions.
-#define D_MACCTHRESH1 7872L
-#define D_MLDT -4L
-#define D_MACCTHRESH 7872L
-#define D_GU 5772L
-#define D_GO 7872L
-#define D_ATTMAX 53L
-#define D_SM -892L
-#define D_B 208L
-#define D_SD_MIN_THR_TCHFS 15L //(24L *C_POND_RED)
-#define D_MA_MIN_THR_TCHFS 738L //(1200L *C_POND_RED)
-#define D_MD_MAX_THR_TCHFS 1700L //(2000L *C_POND_RED)
-#define D_MD1_MAX_THR_TCHFS 99L //(160L *C_POND_RED)
-
-#if (DSP == 33) || (DSP == 34) || (DSP == 35) || (DSP == 36)
- // Frequency burst definitions
- #define D_FB_MARGIN_BEG 24
- #define D_FB_MARGIN_END 22
-
- // V42bis definitions
- #define D_V42B_SWITCH_HYST 16L
- #define D_V42B_SWITCH_MIN 64L
- #define D_V42B_SWITCH_MAX 250L
- #define D_V42B_RESET_DELAY 10L
-
- // Latencies definitions
- #if (DSP == 33) || (DSP == 34) || (DSP == 35) || (DSP == 36)
- // C.f. BUG1404
- #define D_LAT_MCU_BRIDGE 0x000FL
- #else
- #define D_LAT_MCU_BRIDGE 0x0009L
- #endif
-
- #define D_LAT_MCU_HOM2SAM 0x000CL
-
- #define D_LAT_MCU_BEF_FAST_ACCESS 0x0005L
- #define D_LAT_DSP_AFTER_SAM 0x0004L
-
- // Background Task in GSM mode: Initialization.
- #define D_GSM_BGD_MGT 0L
-
-#if (CHIPSET == 4)
- #define D_MISC_CONFIG 0L
-#elif (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 10) || (CHIPSET == 11) || (CHIPSET == 12)
- #define D_MISC_CONFIG 1L
-#else
- #define D_MISC_CONFIG 0L
-#endif
-
-#endif
-
-// Hall Rate vocoder and ched definitions.
-
-#define D_SD_MIN_THR_TCHHS 37L
-#define D_MA_MIN_THR_TCHHS 344L
-#define D_MD_MAX_THR_TCHHS 2175L
-#define D_MD1_MAX_THR_TCHHS 138L
-#define D_SD_AV_THR_TCHHS 1845L
-#define D_WED_FIL_TC 0x7c00L
-#define D_WED_FIL_INI 4650L
-#define D_X_MIN 15L
-#define D_X_MAX 23L
-#define D_Y_MIN 703L
-#define D_Y_MAX 2460L
-#define D_SLOPE 135L
-#define D_WED_DIFF_THRESHOLD 406L
-#define D_MABFI_MIN_THR_TCHHS 5320L
-#define D_LDT_HR -5
-#define D_MACCTRESH_HR 6500
-#define D_MACCTRESH1_HR 6500
-#define D_GU_HR 2620
-#define D_GO_HR 3700
-#define D_B_HR 182
-#define D_SM_HR -1608
-#define D_ATTMAX_HR 53
-
-// Enhanced Full Rate vocoder and ched definitions.
-
-#define C_MLDT_EFR -4
-#define C_MACCTHRESH_EFR 8000
-#define C_MACCTHRESH1_EFR 8000
-#define C_GU_EFR 4522
-#define C_GO_EFR 6500
-#define C_B_EFR 174
-#define C_SM_EFR -878
-#define C_ATTMAX_EFR 53
-#define D_SD_MIN_THR_TCHEFS 15L //(24L *C_POND_RED)
-#define D_MA_MIN_THR_TCHEFS 738L //(1200L *C_POND_RED)
-#define D_MD_MAX_THR_TCHEFS 1230L //(2000L *C_POND_RED)
-#define D_MD1_MAX_THR_TCHEFS 99L //(160L *C_POND_RED)
-
-
-// Integrated Data Services definitions.
-#define D_MAX_OVSPD_UL 8
-// Detect frames containing 90% of 1s as synchro frames
-#define D_SYNC_THRES 0x3f50
-// IDLE frames are only frames with 100 % of 1s
-#define D_IDLE_THRES 0x4000
-#define D_M1_THRES 5
-#define D_MAX_OVSP_DL 8
-
-// d_ra_act: bit field definition
-#define B_F48BLK 5
-
-// Mask for b_itc information (d_ra_conf)
-#define CE_MASK 0x04
-
-#define D_FACCH_THR 0
-#define D_DSP_TEST 0
-#define D_VERSION_NUMBER 0
-#define D_TI_VERSION 0
-
-
-/*------------------------------------------------------------------------------*/
-/* */
-/* DEFINITIONS FOR DSP <-> MCU COMMUNICATION. */
-/* ++++++++++++++++++++++++++++++++++++++++++ */
-/* */
-/*------------------------------------------------------------------------------*/
-// COMMUNICATION Interrupt definition
-//------------------------------------
-#define ALL_16BIT 0xffffL
-#define B_GSM_PAGE (1 << 0)
-#define B_GSM_TASK (1 << 1)
-#define B_MISC_PAGE (1 << 2)
-#define B_MISC_TASK (1 << 3)
-
-#define B_GSM_PAGE_MASK (ALL_16BIT ^ B_GSM_PAGE)
-#define B_GSM_TASK_MASK (ALL_16BIT ^ B_GSM_TASK)
-#define B_MISC_PAGE_MASK (ALL_16BIT ^ B_MISC_PAGE)
-#define B_MISC_TASK_MASK (ALL_16BIT ^ B_MISC_TASK)
-
-// Common definition
-//----------------------------------
-// Index to *_DEMOD* arrays.
-#define D_TOA 0 // Time Of Arrival.
-#define D_PM 1 // Power Measurement.
-#define D_ANGLE 2 // Angle (AFC correction)
-#define D_SNR 3 // Signal / Noise Ratio.
-
-// Bit name/position definitions.
-#define B_FIRE0 5 // Fire result bit 0. (00 -> NO ERROR) (01 -> ERROR CORRECTED)
-#define B_FIRE1 6 // Fire result bit 1. (10 -> ERROR) (11 -> unused)
-#define B_SCH_CRC 8 // CRC result for SB decoding. (1 for ERROR).
-#define B_BLUD 15 // Uplink,Downlink data block Present. (1 for PRESENT).
-#define B_AF 14 // Activity bit: 1 if data block is valid.
-#define B_BFI 2 // Bad Frame Indicator
-#define B_UFI 0 // UNRELIABLE FRAME Indicator
-#define B_ECRC 9 // Enhanced full rate CRC bit
-#define B_EMPTY_BLOCK 10 // for voice memo purpose, this bit is used to determine
-
-#if (DEBUG_DEDIC_TCH_BLOCK_STAT == 1)
- #define FACCH_GOOD 10
- #define FACCH_BAD 11
-#endif
-
-#if (AMR == 1)
- // Place of the RX type in the AMR block header
- #define RX_TYPE_SHIFT 3
- #define RX_TYPE_MASK 0x0038
-
- // Place of the vocoder type in the AMR block header
- #define VOCODER_TYPE_SHIFT 0
- #define VOCODER_TYPE_MASK 0x0007
-
- // List of the possible RX types in a_dd block
- #define SPEECH_GOOD 0
- #define SPEECH_DEGRADED 1
- #define ONSET 2
- #define SPEECH_BAD 3
- #define SID_FIRST 4
- #define SID_UPDATE 5
- #define SID_BAD 6
- #define AMR_NO_DATA 7
- #define AMR_INHIBIT 8
-
- // List of possible RX types in RATSCCH block
- #define C_RATSCCH_GOOD 5
-
- // List of the possible AMR channel rate
- #define AMR_CHANNEL_4_75 0
- #define AMR_CHANNEL_5_15 1
- #define AMR_CHANNEL_5_9 2
- #define AMR_CHANNEL_6_7 3
- #define AMR_CHANNEL_7_4 4
- #define AMR_CHANNEL_7_95 5
- #define AMR_CHANNEL_10_2 6
- #define AMR_CHANNEL_12_2 7
-
- // Types of RATSCCH blocks
- #define C_RATSCCH_UNKNOWN 0
- #define C_RATSCCH_CMI_PHASE_REQ 1
- #define C_RATSCCH_AMR_CONFIG_REQ_MAIN 2
- #define C_RATSCCH_AMR_CONFIG_REQ_ALT 3
- #define C_RATSCCH_AMR_CONFIG_REQ_ALT_IGNORE 4 // Alternative AMR_CONFIG_REQ with updates coming in the next THRES_REQ block
- #define C_RATSCCH_THRES_REQ 5
-
- // These flags define a bitmap that indicates which AMR parameters are being modified by a RATSCCH
- #define C_AMR_CHANGE_CMIP 0
- #define C_AMR_CHANGE_ACS 1
- #define C_AMR_CHANGE_ICM 2
- #define C_AMR_CHANGE_THR1 3
- #define C_AMR_CHANGE_THR2 4
- #define C_AMR_CHANGE_THR3 5
- #define C_AMR_CHANGE_HYST1 6
- #define C_AMR_CHANGE_HYST2 7
- #define C_AMR_CHANGE_HYST3 8
-
- // CMIP default value
- #define C_AMR_CMIP_DEFAULT 1 // According to ETSI specification 05.09, cmip is always 1 by default (new channel, handover...)
-
-#endif
-// "d_ctrl_tch" bits positions for TCH configuration.
-#define B_CHAN_MODE 0
-#define B_CHAN_TYPE 4
-#define B_RESET_SACCH 6
-#define B_VOCODER_ON 7
-#define B_SYNC_TCH_UL 8
-#if (AMR == 1)
- #define B_SYNC_AMR 9
-#else
-#define B_SYNC_TCH_DL 9
-#endif
-#define B_STOP_TCH_UL 10
-#define B_STOP_TCH_DL 11
-#define B_TCH_LOOP 12
-#define B_SUBCHANNEL 15
-
-// "d_ctrl_abb" bits positions for conditionnal loading of abb registers.
-#define B_RAMP 0
-#if ((ANLG_FAM == 1) || (ANLG_FAM == 2) || (ANLG_FAM == 3))
- #define B_BULRAMPDEL 3 // Note: this name is changed
- #define B_BULRAMPDEL2 2 // Note: this name is changed
- #define B_BULRAMPDEL_BIS 9
- #define B_BULRAMPDEL2_BIS 10
-#endif
-#define B_AFC 4
-
-// "d_ctrl_system" bits positions.
-#define B_TSQ 0
-#define B_BCCH_FREQ_IND 3
-#define B_TASK_ABORT 15 // Abort RF tasks for DSP.
-
-/* Channel type definitions for DEDICATED mode */
-#define INVALID_CHANNEL 0
-#define TCH_F 1
-#define TCH_H 2
-#define SDCCH_4 3
-#define SDCCH_8 4
-
-/* Channel mode definitions for DEDICATED mode */
-#define SIG_ONLY_MODE 0 // signalling only
-#define TCH_FS_MODE 1 // speech full rate
-#define TCH_HS_MODE 2 // speech half rate
-#define TCH_96_MODE 3 // data 9,6 kb/s
-#define TCH_48F_MODE 4 // data 4,8 kb/s full rate
-#define TCH_48H_MODE 5 // data 4,8 kb/s half rate
-#define TCH_24F_MODE 6 // data 2,4 kb/s full rate
-#define TCH_24H_MODE 7 // data 2,4 kb/s half rate
-#define TCH_EFR_MODE 8 // enhanced full rate
-#define TCH_144_MODE 9 // data 14,4 kb/s half rate
-
diff --git a/Src/osmoconbb/src/target/firmware/include/calypso/misc.h b/Src/osmoconbb/src/target/firmware/include/calypso/misc.h
deleted file mode 100644
index 4e48093..0000000
--- a/Src/osmoconbb/src/target/firmware/include/calypso/misc.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#ifndef _CAL_MISC_H
-#define _CAL_MISC_H
-
-void memdump_range(unsigned int *ptr, unsigned int len);
-void dump_mem(void);
-void dump_dev_id(void);
-
-#endif /* _CAL_MISC_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/calypso/rtc.h b/Src/osmoconbb/src/target/firmware/include/calypso/rtc.h
deleted file mode 100644
index 17528d0..0000000
--- a/Src/osmoconbb/src/target/firmware/include/calypso/rtc.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef _CALYPSO_RTC_H
-#define _CALYPSO_RTC_H
-
-void rtc_init(void);
-
-#endif /* _CALYPSO_RTC_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/calypso/sim.h b/Src/osmoconbb/src/target/firmware/include/calypso/sim.h
deleted file mode 100755
index b2a2164..0000000
--- a/Src/osmoconbb/src/target/firmware/include/calypso/sim.h
+++ /dev/null
@@ -1,191 +0,0 @@
-/* Driver for Simcard Controller inside TI Calypso/Iota */
-
-/* (C) 2010 by Philipp Fabian Benedikt Maier <philipp-maier@runningserver.com>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#ifndef _CALYPSO_SIM_H
-#define _CALYPSO_SIM_H
-
-/* == REGISTERS IN THE IOTA BASEBAND == */
-
-/* SimCard Control Register */
-#define VRPCSIM_SIMLEN (1 << 3) /* Enable level shifter */
-#define VRPCSIM_SIMRSU (1 << 2) /* voltage regulator output status */
-#define VRPCSIM_RSIMEN (1 << 1) /* Voltage regulator enable */
-#define VRPCSIM_SIMSEL 1 /* Select the VRSIM output voltage 1=2.9V, 0=1.8V */
-
-
-
-/* == REGISTERS IN THE CALYPSO CPU == */
-
-/* Reg_sim_cmd register (R/W) - FFFE:0000 */
-#define REG_SIM_CMD 0xFFFE0000 /* register address */
-#define REG_SIM_CMD_CMDCARDRST 1 /* SIM card reset sequence */
-#define REG_SIM_CMD_CMDIFRST (1 << 1) /* SIM interface software reset */
-#define REG_SIM_CMD_CMDSTOP (1 << 2) /* SIM card stop procedure */
-#define REG_SIM_CMD_CMDSTART (1 << 3) /* SIM card start procedure */
-#define REG_SIM_CMD_MODULE_CLK_EN (1 << 4) /* Clock of the module */
-
-/* Reg_sim_stat register (R) - FFFE:0002 */
-#define REG_SIM_STAT 0xFFFE0002 /* register address */
-#define REG_SIM_STAT_STATNOCARD 1 /* card presence, 0 = no card, 1 = card detected */
-#define REG_SIM_STAT_STATTXPAR (1 << 1) /* parity check for transmit byte, 0 = parity error, 1 = parity OK */
-#define REG_SIM_STAT_STATFIFOFULL (1 << 2) /* FIFO content, 1 = FIFO full */
-#define REG_SIM_STAT_STATFIFOEMPTY (1 << 3) /* FIFO content, 1 = FIFO empty */
-
-/* Reg_sim_conf1 register (R/W) - FFFE:0004 */
-#define REG_SIM_CONF1 0xFFFE0004 /* register address */
-#define REG_SIM_CONF1_CONFCHKPAR 1 /* enable parity check on reception */
-#define REG_SIM_CONF1_CONFCODCONV (1 << 1) /* coding convention: (TS character) */
-#define REG_SIM_CONF1_CONFTXRX (1 << 2) /* SIO line direction */
-#define REG_SIM_CONF1_CONFSCLKEN (1 << 3) /* SIM clock */
-#define REG_SIM_CONF1_reserved (1 << 4) /* ETU period */
-#define REG_SIM_CONF1_CONFSCLKDIV (1 << 5) /* SIM clock frequency */
-#define REG_SIM_CONF1_CONFSCLKLEV (1 << 6) /* SIM clock idle level */
-#define REG_SIM_CONF1_CONFETUPERIOD (1 << 7) /* ETU period */
-#define REG_SIM_CONF1_CONFBYPASS (1 << 8) /* bypass hardware timers and start and stop sequences */
-#define REG_SIM_CONF1_CONFSVCCLEV (1 << 9) /* logic level on SVCC (used if CONFBYPASS = 1) */
-#define REG_SIM_CONF1_CONFSRSTLEV (1 << 10) /* logic level on SRST (used if CONFBYPASS = 1) */
-#define REG_SIM_CONF1_CONFTRIG 11 /* FIFO trigger level */
-#define REG_SIM_CONF1_CONFTRIG_0 (1 << 11)
-#define REG_SIM_CONF1_CONFTRIG_1 (1 << 12)
-#define REG_SIM_CONF1_CONFTRIG_2 (1 << 13)
-#define REG_SIM_CONF1_CONFTRIG_3 (1 << 14)
-#define REG_SIM_CONF1_CONFTRIG_MASK 0xF
-#define REG_SIM_CONF1_CONFSIOLOW (1 << 15) /* SIO - 0 = no effect, 1 = force low */
-
-/* Reg_sim_conf2 register (R/W) - FFFE:0006 */
-#define REG_SIM_CONF2 0xFFFE0006 /* register address */
-#define REG_SIM_CONF2_CONFTFSIM 0 /* time delay for filtering of SIM_CD */
-#define REG_SIM_CONF2_CONFTFSIM_0 1 /* time-unit = 1024 * TCK13M (card extraction) */
-#define REG_SIM_CONF2_CONFTFSIM_1 (1 << 1) /* or */
-#define REG_SIM_CONF2_CONFTFSIM_2 (1 << 2) /* time-unit = 8192 * TCK13M (card insertion) */
-#define REG_SIM_CONF2_CONFTFSIM_3 (1 << 3)
-#define REG_SIM_CONF2_CONFTFSIM_MASK 0xF
-#define REG_SIM_CONF2_CONFTDSIM 4 /* time delay for contact activation/deactivation */
-#define REG_SIM_CONF2_CONFTDSIM_0 (1 << 4) /* time unit = 8 * TCKETU */
-#define REG_SIM_CONF2_CONFTDSIM_1 (1 << 5)
-#define REG_SIM_CONF2_CONFTDSIM_2 (1 << 6)
-#define REG_SIM_CONF2_CONFTDSIM_3 (1 << 7)
-#define REG_SIM_CONF2_CONFTDSIM_MASK 0xF
-#define REG_SIM_CONF2_CONFWAITI 8 /* CONFWAITI overflow wait time between two received */
-#define REG_SIM_CONF2_CONFWAITI_0 (1 << 8) /* character time unit = 960 *D * TCKETU */
-#define REG_SIM_CONF2_CONFWAITI_1 (1 << 9) /* with D parameter = 1 or 8 (TA1 character) */
-#define REG_SIM_CONF2_CONFWAITI_2 (1 << 10)
-#define REG_SIM_CONF2_CONFWAITI_3 (1 << 11)
-#define REG_SIM_CONF2_CONFWAITI_4 (1 << 12)
-#define REG_SIM_CONF2_CONFWAITI_5 (1 << 13)
-#define REG_SIM_CONF2_CONFWAITI_6 (1 << 14)
-#define REG_SIM_CONF2_CONFWAITI_7 (1 << 15)
-#define REG_SIM_CONF2_CONFWAITI_MASK 0xFF
-
-/* Reg_sim_it register (R) - FFFE:0008 */
-#define REG_SIM_IT 0xFFFE0008 /* register address */
-#define REG_SIM_IT_SIM_NATR 1 /* 0 = on read access to REG_SIM_IT, 1 = no answer to reset */
-#define REG_SIM_IT_SIM_WT (1 << 1) /* 0 = on read access to REG_SIM_IT, 1 = character underflow */
-#define REG_SIM_IT_SIM_OV (1 << 2) /* 0 = on read access to REG_SIM_IT, 1 = receive overflow */
-#define REG_SIM_IT_SIM_TX (1 << 3) /* 0 = on write access to REG_SIM_DTX or */
- /* on switching from transmit to receive, mode (CONFTXRX bit) */
- /* 1 = waiting for character to transmit */
-#define REG_SIM_IT_SIM_RX (1 << 4) /* 0 = on read access to REG_SIM_DRX */
- /* 1 = waiting characters to be read */
-
-/* Reg_sim_drx register (R) - FFFE:000A */
-#define REG_SIM_DRX 0xFFFE000A /* register address */
-#define REG_SIM_DRX_SIM_DRX 0 /* next data byte in FIFO available for reading */
-#define REG_SIM_DRX_SIM_DRX_0 1
-#define REG_SIM_DRX_SIM_DRX_1 (1 << 1)
-#define REG_SIM_DRX_SIM_DRX_2 (1 << 2)
-#define REG_SIM_DRX_SIM_DRX_3 (1 << 3)
-#define REG_SIM_DRX_SIM_DRX_4 (1 << 4)
-#define REG_SIM_DRX_SIM_DRX_5 (1 << 5)
-#define REG_SIM_DRX_SIM_DRX_6 (1 << 6)
-#define REG_SIM_DRX_SIM_DRX_7 (1 << 7)
-#define REG_SIM_DRX_SIM_DRX_MASK 0xFF
-#define REG_SIM_DRX_STATRXPAR (1 << 8) /* parity-check for received byte */
-
-/* Reg_sim_dtx register (R/W) - FFFE:000C */
-#define REG_SIM_DTX 0xFFFE000C /* register address */
-#define REG_SIM_DTX_SIM_DTX_0 /* next data byte to be transmitted */
-#define REG_SIM_DTX_SIM_DTX_1
-#define REG_SIM_DTX_SIM_DTX_2
-#define REG_SIM_DTX_SIM_DTX_3
-#define REG_SIM_DTX_SIM_DTX_4
-#define REG_SIM_DTX_SIM_DTX_5
-#define REG_SIM_DTX_SIM_DTX_6
-#define REG_SIM_DTX_SIM_DTX_7
-
-/* Reg_sim_maskit register (R/W) - FFFE:000E */
-#define REG_SIM_MASKIT 0xFFFE000E /* register address */
-#define REG_SIM_MASKIT_MASK_SIM_NATR 1 /* No-answer-to-reset interrupt */
-#define REG_SIM_MASKIT_MASK_SIM_WT (1 << 1) /* Character wait-time overflow interrupt */
-#define REG_SIM_MASKIT_MASK_SIM_OV (1 << 2) /* Receive overflow interrupt */
-#define REG_SIM_MASKIT_MASK_SIM_TX (1 << 3) /* Waiting character to transmit interrupt */
-#define REG_SIM_MASKIT_MASK_SIM_RX (1 << 4) /* Waiting characters to be read interrupt */
-#define REG_SIM_MASKIT_MASK_SIM_CD (1 << 5) /* SIM card insertion/extraction interrupt */
-
-/* Reg_sim_it_cd register (R) - FFFE:0010 */
-#define REG_SIM_IT_CD 0xFFFE0010 /* register address */
-#define REG_SIM_IT_CD_IT_CD 1 /* 0 = on read access to REG_SIM_IT_CD, */
- /* 1 = SIM card insertion/extraction */
-
-
-#define SIM_DEBUG_OUTPUTDELAY 200 /* Output delay to minimize stress with some uart bugs */
-#define SIM_DEBUG 0 /* 0=Debug messages are off / 1=Debug messages are on */
-#define SIM_OPERATION_DELAY 100 /* Time between operations like reset, vcc apply ect... */
-
-
-void calypso_sim_regdump(void); /* Display Register dump */
-
-int calypso_sim_powerup(uint8_t *atr); /* Apply power to the simcard (see note 1) */
-int calypso_sim_reset(uint8_t *atr); /* reset the simcard (see note 1) */
-
-
-void calypso_sim_powerdown(void); /* Powerdown simcard */
-
-/* APDU transmission modes */
-#define SIM_APDU_PUT 0 /* Transmit a data body to the card */
-#define SIM_APDU_GET 1 /* Fetch data from the card eg. GET RESOPNSE */
-
-/* Transceive T0 Apdu to sim acording to GSM 11.11 Page 34 */
-int calypso_sim_transceive(uint8_t cla, /* Class (in GSM context mostly 0xA0 */
- uint8_t ins, /* Instruction */
- uint8_t p1, /* First parameter */
- uint8_t p2, /* Second parameter */
- uint8_t p3le, /* Length of the data that should be transceived */
- uint8_t *data, /* Data payload */
- uint8_t *status, /* Status word (2 byte array, see note 1) */
- uint8_t mode); /* Mode of operation: 1=GET, 0=PUT */
-
- /* Note 1: You can use a null-pointer (0) if you are not interested in
- the status word */
-
-/* Transmission of raw data */
-int calypso_sim_receive(uint8_t *data); /* Receive raw data through the sim interface */
-int calypso_sim_transmit(uint8_t *data, int length); /* Transmit raw data through the sim interface */
-
-void calypso_sim_init(void); /* Initialize simcard interface */
-
-
-/* Known Bugs:
- 1.) After powering down the simcard communication stops working
-*/
-
-#endif /* _CALYPSO_SIM_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/calypso/timer.h b/Src/osmoconbb/src/target/firmware/include/calypso/timer.h
deleted file mode 100644
index 694e4eb..0000000
--- a/Src/osmoconbb/src/target/firmware/include/calypso/timer.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef _CAL_TIMER_H
-#define _CAL_TIMER_H
-
-/* Enable or Disable a timer */
-void hwtimer_enable(int num, int on);
-
-/* Configure pre-scaler and if timer is auto-reload */
-void hwtimer_config(int num, uint8_t pre_scale, int auto_reload);
-
-/* Load a timer with the given value */
-void hwtimer_load(int num, uint16_t val);
-
-/* Read the current timer value */
-uint16_t hwtimer_read(int num);
-
-/* Enable or disable the watchdog */
-void wdog_enable(int on);
-
-/* Reset cpu using watchdog */
-void wdog_reset(void);
-
-/* power up the timers */
-void hwtimer_init(void);
-
-#endif /* _CAL_TIMER_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/calypso/tpu.h b/Src/osmoconbb/src/target/firmware/include/calypso/tpu.h
deleted file mode 100644
index 3b1b600..0000000
--- a/Src/osmoconbb/src/target/firmware/include/calypso/tpu.h
+++ /dev/null
@@ -1,122 +0,0 @@
-#ifndef _CALYPSO_TPU_H
-#define _CALYPSO_TPU_H
-
-#define BITS_PER_TDMA 1250
-#define QBITS_PER_TDMA (BITS_PER_TDMA * 4) /* 5000 */
-#define TPU_RANGE QBITS_PER_TDMA
-#define SWITCH_TIME (TPU_RANGE-10)
-
-/* Assert or de-assert TPU reset */
-void tpu_reset(int active);
-/* Enable or Disable a new scenario loaded into the TPU */
-void tpu_enable(int active);
-/* Enable or Disable the clock of the TPU Module */
-void tpu_clk_enable(int active);
-/* Enable Frame Interrupt generation on next frame. DSP will reset it */
-void tpu_dsp_frameirq_enable(void);
-/* Is a Frame interrupt still pending for the DSP ? */
-int tpu_dsp_fameirq_pending(void);
-/* Rewind the TPU, i.e. restart enqueueing instructions at the base addr */
-void tpu_rewind(void);
-/* Enqueue a raw TPU instruction */
-void tpu_enqueue(uint16_t instr);
-/* Initialize TPU and TPU driver */
-void tpu_init(void);
-/* (Busy)Wait until TPU is idle */
-void tpu_wait_idle(void);
-/* Enable FRAME interrupt generation */
-void tpu_frame_irq_en(int mcu, int dsp);
-/* Force the generation of a DSP interrupt */
-void tpu_force_dsp_frame_irq(void);
-
-/* Get the current TPU SYNCHRO register */
-uint16_t tpu_get_synchro(void);
-/* Get the current TPU OFFSET register */
-uint16_t tpu_get_offset(void);
-
-enum tpu_instr {
- TPU_INSTR_AT = (1 << 13),
- TPU_INSTR_OFFSET = (2 << 13),
- TPU_INSTR_SYNCHRO = (3 << 13), /* Loading delta synchro value in TPU synchro register */
- TPU_INSTR_WAIT = (5 << 13), /* Wait a certain period (in GSM qbits) */
- TPU_INSTR_SLEEP = (0 << 13), /* Stop the sequencer by disabling TPU ENABLE bit in ctrl reg */
- /* data processing */
- TPU_INSTR_MOVE = (4 << 13),
-};
-
-/* Addresses internal to the TPU, only accessible via MOVE */
-enum tpu_reg_int {
- TPUI_TSP_CTRL1 = 0x00,
- TPUI_TSP_CTRL2 = 0x01,
- TPUI_TX_1 = 0x04,
- TPUI_TX_2 = 0x03,
- TPUI_TX_3 = 0x02,
- TPUI_TX_4 = 0x05,
- TPUI_TSP_ACT_L = 0x06,
- TPUI_TSP_ACT_U = 0x07,
- TPUI_TSP_SET1 = 0x09,
- TPUI_TSP_SET2 = 0x0a,
- TPUI_TSP_SET3 = 0x0b,
- TPUI_DSP_INT_PG = 0x10,
- TPUI_GAUGING_EN = 0x11,
-};
-
-enum tpui_ctrl2_bits {
- TPUI_CTRL2_RD = (1 << 0),
- TPUI_CTRL2_WR = (1 << 1),
-};
-
-static inline uint16_t tpu_mod5000(int16_t time)
-{
- if (time < 0)
- return time + 5000;
- if (time >= 5000)
- return time - 5000;
- return time;
-}
-
-/* Enqueue a SLEEP operation (stop sequencer by disabling TPU ENABLE bit) */
-static inline void tpu_enq_sleep(void)
-{
- tpu_enqueue(TPU_INSTR_SLEEP);
-}
-
-/* Enqueue a MOVE operation */
-static inline void tpu_enq_move(uint8_t addr, uint8_t data)
-{
- tpu_enqueue(TPU_INSTR_MOVE | (data << 5) | (addr & 0x1f));
-}
-
-/* Enqueue an AT operation */
-static inline void tpu_enq_at(int16_t time)
-{
- tpu_enqueue(TPU_INSTR_AT | tpu_mod5000(time));
-}
-
-/* Enqueue a SYNC operation */
-static inline void tpu_enq_sync(int16_t time)
-{
- tpu_enqueue(TPU_INSTR_SYNCHRO | time);
-}
-
-/* Enqueue a WAIT operation */
-static inline void tpu_enq_wait(int16_t time)
-{
- tpu_enqueue(TPU_INSTR_WAIT | time);
-}
-
-/* Enqueue an OFFSET operation */
-static inline void tpu_enq_offset(int16_t time)
-{
- tpu_enqueue(TPU_INSTR_OFFSET | time);
-}
-
-static inline void tpu_enq_dsp_irq(void)
-{
- tpu_enq_move(TPUI_DSP_INT_PG, 0x0001);
-}
-
-/* add two numbers, modulo 5000, and ensure the result is positive */
-uint16_t add_mod5000(int16_t a, int16_t b);
-
-#endif /* _CALYPSO_TPU_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/calypso/tsp.h b/Src/osmoconbb/src/target/firmware/include/calypso/tsp.h
deleted file mode 100644
index d58a562..0000000
--- a/Src/osmoconbb/src/target/firmware/include/calypso/tsp.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef _CALYPSO_TSP_H
-#define _CALYPSO_TSP_H
-
-#define TSPACT(x) (1 << x)
-#define TSPEN(x) (x)
-
-/* initiate a TSP write through the TPU */
-void tsp_write(uint8_t dev_idx, uint8_t bitlen, uint32_t dout);
-
-/* Configure clock edge and chip enable polarity for a device */
-void tsp_setup(uint8_t dev_idx, int clk_rising, int en_positive, int en_edge);
-
-/* Obtain the current tspact state */
-uint16_t tsp_act_state(void);
-
-/* Update the TSPACT state, including enable and disable */
-void tsp_act_update(uint16_t new_act);
-
-/* Enable one or multiple TSPACT signals */
-void tsp_act_enable(uint16_t bitmask);
-
-/* Disable one or multiple TSPACT signals */
-void tsp_act_disable(uint16_t bitmask);
-
-/* Toggle one or multiple TSPACT signals */
-void tsp_act_toggle(uint16_t bitmask);
-
-/* Initialize TSP driver */
-void tsp_init(void);
-
-#endif /* _CALYPSO_TSP_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/comm/msgb.h b/Src/osmoconbb/src/target/firmware/include/comm/msgb.h
deleted file mode 100644
index 10cff9b..0000000
--- a/Src/osmoconbb/src/target/firmware/include/comm/msgb.h
+++ /dev/null
@@ -1,161 +0,0 @@
-#ifndef _MSGB_H
-#define _MSGB_H
-
-/* (C) 2008-2010 by Harald Welte <laforge@gnumonks.org>
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <osmocom/core/linuxlist.h>
-#include <console.h>
-
-struct msgb {
- struct llist_head list;
-
- /* the layer 1 header, if any */
- unsigned char *l1h;
- /* the A-bis layer 2 header: OML, RSL(RLL), NS */
- unsigned char *l2h;
- /* the layer 3 header. For OML: FOM; RSL: 04.08; GPRS: BSSGP */
- unsigned char *l3h;
-
- uint16_t data_len;
- uint16_t len;
-
- unsigned char *head; /* start of buffer */
- unsigned char *tail; /* end of message */
- unsigned char *data; /* start of message */
- unsigned char _data[0];
-};
-
-extern struct msgb *msgb_alloc(uint16_t size, const char *name);
-extern void msgb_free(struct msgb *m);
-extern void msgb_enqueue(struct llist_head *queue, struct msgb *msg);
-extern struct msgb *msgb_dequeue(struct llist_head *queue);
-extern void msgb_reset(struct msgb *m);
-
-#define msgb_l1(m) ((void *)(m->l1h))
-#define msgb_l2(m) ((void *)(m->l2h))
-#define msgb_l3(m) ((void *)(m->l3h))
-
-static inline unsigned int msgb_l1len(const struct msgb *msgb)
-{
- return msgb->tail - (uint8_t *)msgb_l1(msgb);
-}
-
-static inline unsigned int msgb_l2len(const struct msgb *msgb)
-{
- return msgb->tail - (uint8_t *)msgb_l2(msgb);
-}
-
-static inline unsigned int msgb_l3len(const struct msgb *msgb)
-{
- return msgb->tail - (uint8_t *)msgb_l3(msgb);
-}
-
-static inline unsigned int msgb_headlen(const struct msgb *msgb)
-{
- return msgb->len - msgb->data_len;
-}
-static inline int msgb_tailroom(const struct msgb *msgb)
-{
- return (msgb->head + msgb->data_len) - msgb->tail;
-}
-static inline unsigned char *msgb_put(struct msgb *msgb, unsigned int len)
-{
- unsigned char *tmp = msgb->tail;
-
- /* we intentionally call cons_puts() here to display an allocation
- * failure on the _other_ serial port (i.e. the one that doesn't
- * have the HDLC layer on it */
- if (msgb_tailroom(msgb) < len)
- cons_puts("msgb_tailroom insufficient!\n");
-
- msgb->tail += len;
- msgb->len += len;
- return tmp;
-}
-static inline void msgb_put_u8(struct msgb *msgb, uint8_t word)
-{
- uint8_t *space = msgb_put(msgb, 1);
- space[0] = word & 0xFF;
-}
-static inline void msgb_put_u16(struct msgb *msgb, uint16_t word)
-{
- uint8_t *space = msgb_put(msgb, 2);
- space[0] = word >> 8 & 0xFF;
- space[1] = word & 0xFF;
-}
-static inline void msgb_put_u32(struct msgb *msgb, uint32_t word)
-{
- uint8_t *space = msgb_put(msgb, 4);
- space[0] = word >> 24 & 0xFF;
- space[1] = word >> 16 & 0xFF;
- space[2] = word >> 8 & 0xFF;
- space[3] = word & 0xFF;
-}
-static inline unsigned char *msgb_get(struct msgb *msgb, unsigned int len)
-{
- unsigned char *tmp = msgb->data;
- msgb->data += len;
- msgb->len -= len;
- return tmp;
-}
-static inline uint8_t msgb_get_u8(struct msgb *msgb)
-{
- uint8_t *space = msgb_get(msgb, 1);
- return space[0];
-}
-static inline uint16_t msgb_get_u16(struct msgb *msgb)
-{
- uint8_t *space = msgb_get(msgb, 2);
- return space[0] << 8 | space[1];
-}
-static inline uint32_t msgb_get_u32(struct msgb *msgb)
-{
- uint8_t *space = msgb_get(msgb, 4);
- return space[0] << 24 | space[1] << 16 | space[2] << 8 | space[3];
-}
-static inline unsigned char *msgb_push(struct msgb *msgb, unsigned int len)
-{
- msgb->data -= len;
- msgb->len += len;
- return msgb->data;
-}
-static inline unsigned char *msgb_pull(struct msgb *msgb, unsigned int len)
-{
- msgb->len -= len;
- return msgb->data += len;
-}
-
-/* increase the headroom of an empty msgb, reducing the tailroom */
-static inline void msgb_reserve(struct msgb *msg, int len)
-{
- msg->data += len;
- msg->tail += len;
-}
-
-static inline struct msgb *msgb_alloc_headroom(int size, int headroom,
- const char *name)
-{
- struct msgb *msg = msgb_alloc(size, name);
- if (msg)
- msgb_reserve(msg, headroom);
- return msg;
-}
-
-#endif /* _MSGB_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/comm/sercomm.h b/Src/osmoconbb/src/target/firmware/include/comm/sercomm.h
deleted file mode 100644
index 54256b5..0000000
--- a/Src/osmoconbb/src/target/firmware/include/comm/sercomm.h
+++ /dev/null
@@ -1,57 +0,0 @@
-#ifndef _SERCOMM_H
-#define _SERCOMM_H
-
-/* SERCOMM layer on UART1 (modem UART) */
-
-#include <osmocom/core/msgb.h>
-
-#define SERCOMM_UART_NR 1
-
-#define HDLC_FLAG 0x7E
-#define HDLC_ESCAPE 0x7D
-
-#define HDLC_C_UI 0x03
-#define HDLC_C_P_BIT (1 << 4)
-#define HDLC_C_F_BIT (1 << 4)
-
-/* a low sercomm_dlci means high priority. A high DLCI means low priority */
-enum sercomm_dlci {
- SC_DLCI_HIGHEST = 0,
- SC_DLCI_DEBUG = 4,
- SC_DLCI_L1A_L23 = 5,
- SC_DLCI_LOADER = 9,
- SC_DLCI_CONSOLE = 10,
- SC_DLCI_ECHO = 128,
- _SC_DLCI_MAX
-};
-
-void sercomm_init(void);
-int sercomm_initialized(void);
-
-/* User Interface: Tx */
-
-/* user interface for transmitting messages for a given DLCI */
-void sercomm_sendmsg(uint8_t dlci, struct msgb *msg);
-/* how deep is the Tx queue for a given DLCI */
-unsigned int sercomm_tx_queue_depth(uint8_t dlci);
-
-/* User Interface: Rx */
-
-/* receiving messages for a given DLCI */
-typedef void (*dlci_cb_t)(uint8_t dlci, struct msgb *msg);
-int sercomm_register_rx_cb(uint8_t dlci, dlci_cb_t cb);
-
-/* Driver Interface */
-
-/* fetch one octet of to-be-transmitted serial data. returns 0 if no more data */
-int sercomm_drv_pull(uint8_t *ch);
-/* the driver has received one byte, pass it into sercomm layer.
- returns 1 in case of success, 0 in case of unrecognized char */
-int sercomm_drv_rx_char(uint8_t ch);
-
-static inline struct msgb *sercomm_alloc_msgb(unsigned int len)
-{
- return msgb_alloc_headroom(len+4, 4, "sercomm_tx");
-}
-
-#endif /* _SERCOMM_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/comm/sercomm_cons.h b/Src/osmoconbb/src/target/firmware/include/comm/sercomm_cons.h
deleted file mode 100644
index 11f6654..0000000
--- a/Src/osmoconbb/src/target/firmware/include/comm/sercomm_cons.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifndef _SERCOMM_CONS_H
-#define _SERCOMM_CONS_H
-
-/* how large buffers do we allocate? */
-#define SERCOMM_CONS_ALLOC 256
-
-int sercomm_puts(const char *s);
-int sercomm_putchar(int c);
-
-#endif /* _SERCOMM_CONS_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/comm/timer.h b/Src/osmoconbb/src/target/firmware/include/comm/timer.h
deleted file mode 100644
index db7d1a5..0000000
--- a/Src/osmoconbb/src/target/firmware/include/comm/timer.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * (C) 2008, 2009 by Holger Hans Peter Freyther <zecke@selfish.org>
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#ifndef TIMER_H
-#define TIMER_H
-
-#include <sys/time.h>
-
-#include <osmocom/core/linuxlist.h>
-
-/**
- * Timer management:
- * - Create a struct osmo_timer_list
- * - Fill out timeout and use add_timer or
- * use schedule_timer to schedule a timer in
- * x seconds and microseconds from now...
- * - Use del_timer to remove the timer
- *
- * Internally:
- * - We hook into select.c to give a timeval of the
- * nearest timer. On already passed timers we give
- * it a 0 to immediately fire after the select
- * - update_timers will call the callbacks and remove
- * the timers.
- *
- */
-struct osmo_timer_list {
- struct llist_head entry;
- unsigned long expires;
-
- unsigned int active : 1;
- unsigned int handled : 1;
- unsigned int in_list : 1;
-
- void (*cb)(void*);
- void *data;
-};
-
-extern unsigned long volatile jiffies;
-
-/**
- * timer management
- */
-void add_timer(struct osmo_timer_list *timer);
-void schedule_timer(struct osmo_timer_list *timer, int miliseconds);
-void del_timer(struct osmo_timer_list *timer);
-int timer_pending(struct osmo_timer_list *timer);
-
-
-/**
- * internal timer list management
- */
-void prepare_timers(void);
-int update_timers(void);
-int timer_check(void);
-
-void timer_init(void);
-
-#endif
diff --git a/Src/osmoconbb/src/target/firmware/include/console.h b/Src/osmoconbb/src/target/firmware/include/console.h
deleted file mode 100644
index 7146e99..0000000
--- a/Src/osmoconbb/src/target/firmware/include/console.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef _CONSOLE_H
-#define _CONSOLE_H
-
-/* This is the direct (IRQ driven) UART console, bypassing the HDLC layer.
- * You should not need to call those functions unless you've decided to
- * not use the HLDC layer or have a device with two UARTs */
-
-int cons_rb_append(const char *data, int len);
-int cons_puts(const char *s);
-int cons_putchar(char c);
-int cons_rb_flush(void);
-void cons_init(void);
-
-/* We want the console on UART 0 (IRDA UART) */
-#define CONS_UART_NR 0
-
-/* Size of the static ring-buffer that we keep for console print messages */
-#define CONS_RB_SIZE 4096
-
-#endif /* _CONSOLE_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/ctors.h b/Src/osmoconbb/src/target/firmware/include/ctors.h
deleted file mode 100644
index ee4c7b3..0000000
--- a/Src/osmoconbb/src/target/firmware/include/ctors.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef _CTORS_H
-#define _CTORS_H
-
-#if 0
-/* only supported by gcc 3.4 or later */
-#define __ctor_data __attribute__ ((constructor) (100))
-#define __ctor_board __attribute__ ((constructor) (200))
-#else
-#define __ctor_data __attribute__ ((constructor))
-#define __ctor_board __attribute__ ((constructor))
-#endif
-
-/* iterate over list of constructor functions and call each element */
-void do_global_ctors(const char *ctors_start, const char *ctors_end);
-
-#endif
diff --git a/Src/osmoconbb/src/target/firmware/include/ctype.h b/Src/osmoconbb/src/target/firmware/include/ctype.h
deleted file mode 100644
index afa3639..0000000
--- a/Src/osmoconbb/src/target/firmware/include/ctype.h
+++ /dev/null
@@ -1,54 +0,0 @@
-#ifndef _LINUX_CTYPE_H
-#define _LINUX_CTYPE_H
-
-/*
- * NOTE! This ctype does not handle EOF like the standard C
- * library is required to.
- */
-
-#define _U 0x01 /* upper */
-#define _L 0x02 /* lower */
-#define _D 0x04 /* digit */
-#define _C 0x08 /* cntrl */
-#define _P 0x10 /* punct */
-#define _S 0x20 /* white space (space/lf/tab) */
-#define _X 0x40 /* hex digit */
-#define _SP 0x80 /* hard space (0x20) */
-
-extern unsigned char _ctype[];
-
-#define __ismask(x) (_ctype[(int)(unsigned char)(x)])
-
-#define isalnum(c) ((__ismask(c)&(_U|_L|_D)) != 0)
-#define isalpha(c) ((__ismask(c)&(_U|_L)) != 0)
-#define iscntrl(c) ((__ismask(c)&(_C)) != 0)
-#define isdigit(c) ((__ismask(c)&(_D)) != 0)
-#define isgraph(c) ((__ismask(c)&(_P|_U|_L|_D)) != 0)
-#define islower(c) ((__ismask(c)&(_L)) != 0)
-#define isprint(c) ((__ismask(c)&(_P|_U|_L|_D|_SP)) != 0)
-#define ispunct(c) ((__ismask(c)&(_P)) != 0)
-#define isspace(c) ((__ismask(c)&(_S)) != 0)
-#define isupper(c) ((__ismask(c)&(_U)) != 0)
-#define isxdigit(c) ((__ismask(c)&(_D|_X)) != 0)
-
-#define isascii(c) (((unsigned char)(c))<=0x7f)
-#define toascii(c) (((unsigned char)(c))&0x7f)
-
-static inline unsigned char __tolower(unsigned char c)
-{
- if (isupper(c))
- c -= 'A'-'a';
- return c;
-}
-
-static inline unsigned char __toupper(unsigned char c)
-{
- if (islower(c))
- c -= 'a'-'A';
- return c;
-}
-
-#define tolower(c) __tolower(c)
-#define toupper(c) __toupper(c)
-
-#endif
diff --git a/Src/osmoconbb/src/target/firmware/include/debug.h b/Src/osmoconbb/src/target/firmware/include/debug.h
deleted file mode 100644
index 27c4185..0000000
--- a/Src/osmoconbb/src/target/firmware/include/debug.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef _DEBUG_H
-#define _DEBUG_H
-
-#ifndef ARRAY_SIZE
-#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
-#endif
-
-/*
- * Check at compile time that something is of a particular type.
- * Always evaluates to 1 so you may use it easily in comparisons.
- */
-#define typecheck(type,x) \
-({ type __dummy; \
- typeof(x) __dummy2; \
- (void)(&__dummy == &__dummy2); \
- 1; \
-})
-
-#ifdef DEBUG
-#define dputchar(x) putchar(x)
-#define dputs(x) puts(x)
-#define dphex(x,y) phex(x,y)
-#define printd(x, args ...) printf(x, ## args)
-#else
-#define dputchar(x)
-#define dputs(x)
-#define dphex(x,y)
-#define printd(x, args ...)
-#endif
-
-#endif /* _DEBUG_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/defines.h b/Src/osmoconbb/src/target/firmware/include/defines.h
deleted file mode 100644
index 3c8732f..0000000
--- a/Src/osmoconbb/src/target/firmware/include/defines.h
+++ /dev/null
@@ -1,18 +0,0 @@
-
-#ifndef _DEFINES_H
-#define _DEFINES_H
-
-#define __attribute_const__ __attribute__((__const__))
-
-/* type properties */
-#define __packed __attribute__((packed))
-#define __aligned(alignment) __attribute__((aligned(alignment)))
-#define __unused __attribute__((unused))
-
-/* linkage */
-#define __section(name) __attribute__((section(name)))
-
-/* force placement in zero-waitstate memory */
-#define __ramtext __section(".ramtext")
-
-#endif /* !_DEFINES_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/delay.h b/Src/osmoconbb/src/target/firmware/include/delay.h
deleted file mode 100644
index 0d6f3ef..0000000
--- a/Src/osmoconbb/src/target/firmware/include/delay.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef delay_h
-#define delay_h
-
-void delay_ms(unsigned int ms);
-void delay_us(unsigned int us);
-
-#endif
diff --git a/Src/osmoconbb/src/target/firmware/include/display.h b/Src/osmoconbb/src/target/firmware/include/display.h
deleted file mode 100644
index 89d02a5..0000000
--- a/Src/osmoconbb/src/target/firmware/include/display.h
+++ /dev/null
@@ -1,48 +0,0 @@
-#ifndef _DISPLAY_DRIVER_H
-#define _DISPLAY_DRIVER_H
-
-enum display_attr {
- DISP_ATTR_INVERT = 0x0001,
-};
-
-struct display_driver {
- char *name;
- void (*init)(void);
- void (*set_attr)(unsigned long attr);
- void (*unset_attr)(unsigned long attr);
- void (*clrscr)(void);
- void (*goto_xy)(int xpos, int ypos);
- void (*set_color)(int fgcolor, int bgcolor);
- int (*putc)(unsigned char c);
- int (*puts)(const char *str);
-};
-
-extern struct display_driver *display;
-
-static inline void display_init(void)
-{
- display->init();
-}
-static inline void display_set_attr(unsigned long attr)
-{
- display->set_attr(attr);
-}
-static inline void display_unset_attr(unsigned long attr)
-{
- display->unset_attr(attr);
-}
-static inline void display_clrscr(void)
-{
- display->clrscr();
-}
-static inline int display_putchar(unsigned char c)
-{
- return display->putc(c);
-}
-int display_puts(const char *s);
-
-extern const struct display_driver st7558_display;
-extern const struct display_driver ssd1783_display;
-extern const struct display_driver td014_display;
-
-#endif
diff --git a/Src/osmoconbb/src/target/firmware/include/display/ssd1783.h b/Src/osmoconbb/src/target/firmware/include/display/ssd1783.h
deleted file mode 100644
index c72eeba..0000000
--- a/Src/osmoconbb/src/target/firmware/include/display/ssd1783.h
+++ /dev/null
@@ -1,56 +0,0 @@
-#ifndef _SSD1783_H
-#define _SSD1783_H
-
-/* Some basic colors */
-#define RED 0x0f00
-#define GREEN 0x00f0
-#define BLUE 0x000f
-#define YELLOW 0x0ff0
-#define MAGENTA 0x0f0f
-#define CYAN 0x00ff
-#define BLACK 0x0000
-#define WHITE 0x0fff
-
-/* Epson S1D15G10D08B000 commandset */
-#define CMD_DISON 0xaf // Display on
-#define CMD_DISOFF 0xae // Display off
-#define CMD_DISNOR 0xa6 // Normal display
-#define CMD_DISINV 0xa7 // Inverse display
-#define CMD_COMSCN 0xbb // Common scan direction
-#define CMD_DISCTL 0xca // Display control
-#define CMD_SLPIN 0x95 // Sleep in
-#define CMD_SLPOUT 0x94 // Sleep out
-#define CMD_PASET 0x75 // Page address set
-#define CMD_CASET 0x15 // Column address set
-#define CMD_DATCTL 0xbc // Data scan direction, etc.
-#define CMD_RGBSET8 0xce // 256-color position set
-#define CMD_RAMWR 0x5c // Writing to memory
-#define CMD_RAMRD 0x5d // Reading from memory
-#define CMD_PTLIN 0xa8 // Partial display in
-#define CMD_PTLOUT 0xa9 // Partial display out
-#define CMD_RMWIN 0xe0 // Read and modify write
-#define CMD_RMWOUT 0xee // End
-#define CMD_ASCSE 0xaa // Area scroll set
-#define CMD_SCSTART 0xab // Scroll start set
-#define CMD_OSCON 0xd1 // Internal oscillation on
-#define CMD_OSCOFF 0xd2 // Internal oscillation off
-#define CMD_PWRCTR 0x20 // Power control
-#define CMD_VOLCTR 0x81 // Electronic volume control
-#define CMD_VOLUP 0xd6 // Increment electronic control by 1
-#define CMD_VOLDOWN 0xd7 // Decrement electronic control by 1
-#define CMD_TMPGRD 0x82 // Temperature gradient set
-#define CMD_EPCTIN 0xcd // Control EEPROM
-#define CMD_EPCOUT 0xcc // Cancel EEPROM control
-#define CMD_EPMWR 0xfc // Write into EEPROM
-#define CMD_EPMRD 0xfd // Read from EEPROM
-#define CMD_EPSRRD1 0x7c // Read register 1
-#define CMD_EPSRRD2 0x7d // Read register 2
-#define CMD_NOP 0x25 // NOP instruction
-
-/* Extended SSD1783 commandset, partly (also has HW graphic functionalities) */
-#define CMD_BIASSET 0xfb // Set bias ratio
-#define CMD_FREQSET 0xf2 // Set frequency and n-line inversion
-#define CMD_RESCMD 0xa2 // reserved command
-#define CMD_PWMSEL 0xf7 // Select PWM/FRC, Full/8 color mode
-
-#endif
diff --git a/Src/osmoconbb/src/target/firmware/include/flash/cfi_flash.h b/Src/osmoconbb/src/target/firmware/include/flash/cfi_flash.h
deleted file mode 100644
index 9d8b33a..0000000
--- a/Src/osmoconbb/src/target/firmware/include/flash/cfi_flash.h
+++ /dev/null
@@ -1,41 +0,0 @@
-
-#ifndef _CFI_FLASH_H
-#define _CFI_FLASH_H
-
-#include <stdint.h>
-
-#define FLASH_MAX_REGIONS 4
-
-typedef struct {
- void *fr_base;
- size_t fr_bnum;
- size_t fr_bsize;
-} flash_region_t;
-
-typedef struct {
- void *f_base;
- size_t f_size;
-
- size_t f_nregions;
- flash_region_t f_regions[FLASH_MAX_REGIONS];
-} flash_t;
-
-typedef enum {
- FLASH_UNLOCKED = 0,
- FLASH_LOCKED,
- FLASH_LOCKED_DOWN
-} flash_lock_t;
-
-int flash_init(flash_t *flash, void *base_addr);
-
-flash_lock_t flash_block_getlock(flash_t *flash, uint32_t block_offset);
-
-int flash_block_unlock(flash_t *flash, uint32_t block_offset);
-int flash_block_lock(flash_t *flash, uint32_t block_offset);
-int flash_block_lockdown(flash_t *flash, uint32_t block_offset);
-
-int flash_block_erase(flash_t *flash, uint32_t block_offset);
-
-int flash_program(flash_t *flash, uint32_t dst_offset, void *src, uint32_t nbytes);
-
-#endif
diff --git a/Src/osmoconbb/src/target/firmware/include/i2c.h b/Src/osmoconbb/src/target/firmware/include/i2c.h
deleted file mode 100644
index 37097a8..0000000
--- a/Src/osmoconbb/src/target/firmware/include/i2c.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef _I2C_H
-#define _I2C_H
-
-int i2c_write(uint8_t chip, uint32_t addr, int alen, const uint8_t *buffer, int len);
-void i2c_init(int speed, int slaveadd);
-
-#endif /* I2C_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/keypad.h b/Src/osmoconbb/src/target/firmware/include/keypad.h
deleted file mode 100644
index e2e6519..0000000
--- a/Src/osmoconbb/src/target/firmware/include/keypad.h
+++ /dev/null
@@ -1,66 +0,0 @@
-#ifndef _KEYPAD_H
-#define _KEYPAD_H
-
-enum buttons {
- BTN_0 = 0x00002000,
- BTN_1 = 0x00008000,
- BTN_2 = 0x00000400,
- BTN_3 = 0x00000020,
- BTN_4 = 0x00010000,
- BTN_5 = 0x00000800,
- BTN_6 = 0x00000040,
- BTN_7 = 0x00020000,
- BTN_8 = 0x00001000,
- BTN_9 = 0x00000080,
- BTN_STAR = 0x00040000,
- BTN_HASH = 0x00000100,
- BTN_MENU = 0x00004000,
- BTN_LEFT_SB = 0x00080000,
- BTN_RIGHT_SB = 0x00000200,
- BTN_UP = 0x00000002,
- BTN_DOWN = 0x00000004,
- BTN_LEFT = 0x00000008,
- BTN_RIGHT = 0x00000010,
- BTN_OK = 0x00000001,
- BTN_POWER = 0x01000000,
-};
-
-enum key_codes {
- KEY_0 = 0,
- KEY_1,
- KEY_2,
- KEY_3,
- KEY_4,
- KEY_5,
- KEY_6,
- KEY_7,
- KEY_8,
- KEY_9,
- KEY_STAR, //*
- KEY_HASH, //#
- KEY_MENU, //center of directional keys
- KEY_LEFT_SB, //softbutton
- KEY_RIGHT_SB, //softbutton
- KEY_UP,
- KEY_DOWN,
- KEY_LEFT,
- KEY_RIGHT,
- KEY_OK, //green off-hook
- KEY_POWER, //red on-hook
- KEY_INV = 0xFF
-};
-
-enum key_states {
- PRESSED,
- RELEASED,
-};
-
-void keypad_init(uint8_t interrupts);
-
-void keypad_poll();
-
-typedef void (*key_handler_t)(enum key_codes code, enum key_states state);
-
-void keypad_set_handler(key_handler_t handler);
-
-#endif /* KEYPAD_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/layer1/afc.h b/Src/osmoconbb/src/target/firmware/include/layer1/afc.h
deleted file mode 100644
index 8b43f8a..0000000
--- a/Src/osmoconbb/src/target/firmware/include/layer1/afc.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef _L1_AFC_H
-#define _L1_AFC_H
-
-#define AFC_SNR_THRESHOLD 2560 /* 2.5 dB in fx6.10 */
-
-/* Input a frequency error sample into the AFC averaging */
-void afc_input(int32_t freq_error, uint16_t arfcn, int valid);
-
-/* Update the AFC with a frequency error, bypassing averaging */
-void afc_correct(int16_t freq_error, uint16_t arfcn);
-
-/* Update DSP with new AFC DAC value to be used for next TDMA frame */
-void afc_load_dsp(void);
-
-/* Reset the AFC to its initial DAC value */
-void afc_reset(void);
-
-#endif
diff --git a/Src/osmoconbb/src/target/firmware/include/layer1/agc.h b/Src/osmoconbb/src/target/firmware/include/layer1/agc.h
deleted file mode 100644
index 2b7e46e..0000000
--- a/Src/osmoconbb/src/target/firmware/include/layer1/agc.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef _L1_AGC_H
-#define _L1_AGC_H
-
-#define to_dbm8(x) ((x)*8)
-int16_t agc_inp_dbm8_by_pm(int16_t pm);
-
-#endif /* _L1_AGC_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/layer1/apc.h b/Src/osmoconbb/src/target/firmware/include/layer1/apc.h
deleted file mode 100644
index 3d73c23..0000000
--- a/Src/osmoconbb/src/target/firmware/include/layer1/apc.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifndef _L1_APC_H
-#define _L1_APC_H
-
-/* determine the AUXAPC value by the Tx Power Level */
-int16_t apc_tx_dbm2auxapc(enum gsm_band band, int8_t dbm);
-
-/* determine the AUXAPC value by the Tx Power Level */
-int16_t apc_tx_pwrlvl2auxapc(enum gsm_band band, uint8_t lvl);
-
-#endif
diff --git a/Src/osmoconbb/src/target/firmware/include/layer1/async.h b/Src/osmoconbb/src/target/firmware/include/layer1/async.h
deleted file mode 100644
index a9fa08d..0000000
--- a/Src/osmoconbb/src/target/firmware/include/layer1/async.h
+++ /dev/null
@@ -1,59 +0,0 @@
-#ifndef _L1_ASYNC_H
-#define _L1_ASYNC_H
-
-#include <osmocom/core/msgb.h>
-
-#include <layer1/mframe_sched.h>
-
-#if 0
-NOTE: Re-enabling interrupts causes an IRQ while processing the same IRQ.
- Use local_firq_save and local_irq_restore instead!
-
-/* When altering data structures used by L1 Sync part, we need to
- * make sure to temporarily disable IRQ/FIQ to keep data consistent */
-static inline void l1a_lock_sync(void)
-{
- arm_disable_interrupts();
-}
-
-static inline void l1a_unlock_sync(void)
-{
- arm_enable_interrupts();
-}
-#endif
-
-/* safely enable a message into the L1S TX queue */
-void l1a_txq_msgb_enq(struct llist_head *queue, struct msgb *msg);
-void l1a_meas_msgb_set(struct msgb *msg);
-
-/* safely count messages in the L1S TX queue */
-int l1a_txq_msgb_count(struct llist_head *queue);
-
-/* flush all pending msgb */
-void l1a_txq_msgb_flush(struct llist_head *queue);
-
-/* request a RACH */
-void l1a_rach_req(uint16_t offset, uint8_t combined, uint8_t ra);
-
-/* schedule frequency change */
-void l1a_freq_req(uint32_t fn_sched);
-
-/* Enable a repeating multiframe task */
-void l1a_mftask_enable(enum mframe_task task);
-
-/* Disable a repeating multiframe task */
-void l1a_mftask_disable(enum mframe_task task);
-
-/* Set TCH mode */
-uint8_t l1a_tch_mode_set(uint8_t mode);
-
-/* Set Audio routing mode */
-uint8_t l1a_audio_mode_set(uint8_t mode);
-
-/* Execute pending L1A completions */
-void l1a_compl_execute(void);
-
-/* Initialize asynchronous part of Layer1 */
-void l1a_init(void);
-
-#endif
diff --git a/Src/osmoconbb/src/target/firmware/include/layer1/avg.h b/Src/osmoconbb/src/target/firmware/include/layer1/avg.h
deleted file mode 100644
index 6c5de17..0000000
--- a/Src/osmoconbb/src/target/firmware/include/layer1/avg.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef _L1_AVG_H
-#define _L1_AVG_H
-
-struct running_avg {
- /* configuration */
- uint16_t period; /* over how many samples to average */
- uint16_t min_valid;
-
- int32_t acc_val;
- uint16_t num_samples; /* how often did we try to sample? */
- uint16_t num_samples_valid; /* how often did we receive valid samples? */
-
- void (*outfn)(struct running_avg *, int32_t avg);
- void *priv;
-};
-
-/* input a new sample into the averaging process */
-void runavg_input(struct running_avg *ravg, int32_t val, int valid);
-
-/* check if sufficient samples have been obtained, and call outfn() */
-int runavg_check_output(struct running_avg *ravg);
-
-#endif /* _AVG_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/layer1/l23_api.h b/Src/osmoconbb/src/target/firmware/include/layer1/l23_api.h
deleted file mode 100644
index 9b10b62..0000000
--- a/Src/osmoconbb/src/target/firmware/include/layer1/l23_api.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifndef _L1_L23_API_H
-#define _L1_L23_API_H
-
-#include <stdint.h>
-#include <osmocom/core/msgb.h>
-#include <l1ctl_proto.h>
-
-void l1a_l23api_init(void);
-void l1_queue_for_l2(struct msgb *msg);
-struct msgb *l1ctl_msgb_alloc(uint8_t msg_type);
-struct msgb *l1_create_l2_msg(int msg_type, uint32_t fn, uint16_t snr, uint16_t arfcn);
-
-void l1ctl_tx_reset(uint8_t msg_type, uint8_t reset_type);
-
-#endif /* _L1_L23_API_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/layer1/mframe_sched.h b/Src/osmoconbb/src/target/firmware/include/layer1/mframe_sched.h
deleted file mode 100644
index 3b2039a..0000000
--- a/Src/osmoconbb/src/target/firmware/include/layer1/mframe_sched.h
+++ /dev/null
@@ -1,67 +0,0 @@
-#ifndef _L1_MFRAME_SCHED_H
-#define _L1_MFRAME_SCHED_H
-
-#include <stdint.h>
-
-enum mframe_task {
- MF_TASK_BCCH_NORM,
- MF_TASK_BCCH_EXT,
- MF_TASK_CCCH,
- MF_TASK_CCCH_COMB,
-
- MF_TASK_SDCCH4_0,
- MF_TASK_SDCCH4_1,
- MF_TASK_SDCCH4_2,
- MF_TASK_SDCCH4_3,
-
- MF_TASK_SDCCH8_0,
- MF_TASK_SDCCH8_1,
- MF_TASK_SDCCH8_2,
- MF_TASK_SDCCH8_3,
- MF_TASK_SDCCH8_4,
- MF_TASK_SDCCH8_5,
- MF_TASK_SDCCH8_6,
- MF_TASK_SDCCH8_7,
-
- MF_TASK_TCH_F_EVEN,
- MF_TASK_TCH_F_ODD,
- MF_TASK_TCH_H_0,
- MF_TASK_TCH_H_1,
-
- MF_TASK_NEIGH_PM51,
- MF_TASK_NEIGH_PM26E,
- MF_TASK_NEIGH_PM26O,
-
- /* Test task: send Normal Burst in all timeslots */
- MF_TASK_UL_ALL_NB,
-};
-
-enum mf_sched_item_flag {
- MF_F_SACCH = (1 << 0),
-};
-
-/* The scheduler itself */
-struct mframe_scheduler {
- uint32_t tasks;
- uint32_t tasks_tgt;
- uint32_t safe_fn;
-};
-
-uint8_t mframe_task2chan_nr(enum mframe_task mft, uint8_t ts);
-
-/* Enable a specific task */
-void mframe_enable(enum mframe_task task_id);
-
-/* Disable a specific task */
-void mframe_disable(enum mframe_task task_id);
-
-/* Replace the current active set by the new one */
-void mframe_set(uint32_t tasks);
-
-/* Schedule mframe_sched_items according to current MF TASK list */
-void mframe_schedule(void);
-
-/* reset the scheduler, disabling all tasks */
-void mframe_reset(void);
-
-#endif /* _MFRAME_SCHED_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/layer1/prim.h b/Src/osmoconbb/src/target/firmware/include/layer1/prim.h
deleted file mode 100644
index 30c51ae..0000000
--- a/Src/osmoconbb/src/target/firmware/include/layer1/prim.h
+++ /dev/null
@@ -1,34 +0,0 @@
-#ifndef _L1_PRIM_H
-#define _L1_PRIM_H
-
-#include <stdint.h>
-
-#include <layer1/tdma_sched.h>
-
-struct l1ctl_fbsb_req;
-
-/* Utils */
-const uint8_t *pu_get_idle_frame(void);
-void pu_update_rx_level(uint8_t rx_level);
-const uint8_t *pu_get_meas_frame(void);
-
-/* Primitives tests/requests */
-void l1s_fb_test(uint8_t base_fn, uint8_t fb_mode);
-void l1s_sb_test(uint8_t base_fn);
-void l1s_pm_test(uint8_t base_fn, uint16_t arfcn);
-void l1s_nb_test(uint8_t base_fn);
-
-void l1s_fbsb_req(uint8_t base_fn, struct l1ctl_fbsb_req *req);
-void l1a_freq_req(uint32_t fn_sched);
-void l1a_rach_req(uint16_t offset, uint8_t combined, uint8_t ra);
-
-/* Primitives raw scheduling sets */
-extern const struct tdma_sched_item nb_sched_set[];
-extern const struct tdma_sched_item nb_sched_set_ul[];
-
-extern const struct tdma_sched_item tch_sched_set[];
-extern const struct tdma_sched_item tch_a_sched_set[];
-extern const struct tdma_sched_item tch_d_sched_set[];
-extern const struct tdma_sched_item neigh_pm_sched_set[];
-
-#endif /* _L1_PRIM_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/layer1/rfch.h b/Src/osmoconbb/src/target/firmware/include/layer1/rfch.h
deleted file mode 100644
index 344523c..0000000
--- a/Src/osmoconbb/src/target/firmware/include/layer1/rfch.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#ifndef _L1_RFCH_H
-#define _L1_RFCH_H
-
-struct gsm_time;
-
-void rfch_get_params(struct gsm_time *t,
- uint16_t *arfcn_p, uint8_t *tsc_p, uint8_t *tn_p);
-
-#endif /* _L1_RFCH_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/layer1/sched_gsmtime.h b/Src/osmoconbb/src/target/firmware/include/layer1/sched_gsmtime.h
deleted file mode 100644
index c40359e..0000000
--- a/Src/osmoconbb/src/target/firmware/include/layer1/sched_gsmtime.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef _L1_SCHED_GSMTIME_H
-#define _L1_SCHED_GSMTIME_H
-
-#include <stdint.h>
-#include <osmocom/core/linuxlist.h>
-
-struct sched_gsmtime_event {
- struct llist_head list;
- const struct tdma_sched_item *si;
- uint32_t fn;
- uint16_t p3; /* parameter for TDMA scheduler */
-};
-
-/* initialize the GSMTIME scheduler */
-void sched_gsmtime_init(void);
-
-/* Scheduling of a single event at a givnen GSM time */
-int sched_gsmtime(const struct tdma_sched_item *si, uint32_t fn, uint16_t p3);
-
-/* execute all GSMTIME one-shot events pending for 'current_fn' */
-int sched_gsmtime_execute(uint32_t current_fn);
-
-void sched_gsmtime_reset(void);
-#endif
diff --git a/Src/osmoconbb/src/target/firmware/include/layer1/sync.h b/Src/osmoconbb/src/target/firmware/include/layer1/sync.h
deleted file mode 100644
index aa03c82..0000000
--- a/Src/osmoconbb/src/target/firmware/include/layer1/sync.h
+++ /dev/null
@@ -1,203 +0,0 @@
-#ifndef _L1_SYNC_H
-#define _L1_SYNC_H
-
-#include <osmocom/core/linuxlist.h>
-#include <osmocom/gsm/gsm_utils.h>
-#include <layer1/tdma_sched.h>
-#include <layer1/mframe_sched.h>
-#include <l1ctl_proto.h>
-
-/* structure representing L1 sync information about a cell */
-struct l1_cell_info {
- /* on which ARFCN (+band) is the cell? */
- uint16_t arfcn;
- /* what's the BSIC of the cell (from SCH burst decoding) */
- uint8_t bsic;
- /* Combined or non-combined CCCH */
- uint8_t ccch_mode; /* enum ccch_mode */
- /* whats the delta of the cells current GSM frame number
- * compared to our current local frame number */
- int32_t fn_offset;
- /* how much does the TPU need adjustment (delta) to synchronize
- * with the cells burst */
- uint32_t time_alignment;
- /* FIXME: should we also store the AFC value? */
-};
-
-enum l1s_chan {
- L1S_CHAN_MAIN,
- L1S_CHAN_SACCH,
- L1S_CHAN_TRAFFIC,
- _NUM_L1S_CHAN
-};
-
-enum l1_compl {
- L1_COMPL_FB,
- L1_COMPL_RACH,
- L1_COMPL_TX_NB,
- L1_COMPL_TX_TCH,
-};
-
-typedef void l1_compl_cb(enum l1_compl c);
-
-#define L1S_NUM_COMPL 32
-#define L1S_NUM_NEIGH_CELL 6
-
-struct l1s_h0 {
- uint16_t arfcn;
-};
-
-struct l1s_h1 {
- uint8_t hsn;
- uint8_t maio;
- uint8_t n;
- uint16_t ma[64];
-};
-
-struct l1s_state {
- struct gsm_time current_time; /* current GSM time */
- struct gsm_time next_time; /* GSM time at next TMDMA irq */
-
- /* the cell on which we are camping right now */
- struct l1_cell_info serving_cell;
-
- /* neighbor cell sync info */
- struct l1_cell_info neigh_cell[L1S_NUM_NEIGH_CELL];
-
- /* TDMA scheduler */
- struct tdma_scheduler tdma_sched;
-
- /* Multiframe scheduler */
- struct mframe_scheduler mframe_sched;
-
- /* The current TPU offset register */
- uint32_t tpu_offset;
- int32_t tpu_offset_correction;
-
- /* TX parameters */
- int8_t ta;
- uint8_t tx_power;
-
- /* TCH */
- uint8_t tch_mode;
- uint8_t tch_sync;
- uint8_t audio_mode;
-
- /* Transmit queues of pending packets for main DCCH and ACCH */
- struct llist_head tx_queue[_NUM_L1S_CHAN];
- struct msgb *tx_meas;
-
- /* Which L1A completions are scheduled right now */
- uint32_t scheduled_compl;
- /* callbacks for each of the completions */
- l1_compl_cb *completion[L1S_NUM_COMPL];
-
- /* Structures below are for L1-task specific parameters, used
- * to communicate between l1-sync and l1-async (l23_api) */
- struct {
- uint8_t mode; /* FB_MODE 0/1 */
- } fb;
-
- struct {
- /* power measurement l1 task */
- unsigned int mode;
- union {
- struct {
- uint16_t arfcn_start;
- uint16_t arfcn_next;
- uint16_t arfcn_end;
- } range;
- };
- struct msgb *msg;
- } pm;
-
- struct {
- uint8_t ra;
- } rach;
-
- struct {
- enum {
- GSM_DCHAN_NONE = 0,
- GSM_DCHAN_SDCCH_4,
- GSM_DCHAN_SDCCH_8,
- GSM_DCHAN_TCH_H,
- GSM_DCHAN_TCH_F,
- GSM_DCHAN_UNKNOWN,
- } type;
-
- uint8_t scn;
- uint8_t tsc;
- uint8_t tn;
- uint8_t h;
-
- union {
- struct l1s_h0 h0;
- struct l1s_h1 h1;
- };
-
- uint8_t st_tsc;
- uint8_t st_tn;
- uint8_t st_h;
-
- union {
- struct l1s_h0 st_h0;
- struct l1s_h1 st_h1;
- };
- } dedicated;
-
- /* neighbour cell power measurement process */
- struct {
- uint8_t n, second;
- uint8_t pos;
- uint8_t running;
- uint16_t band_arfcn[64];
- uint8_t level[64];
- } neigh_pm;
-};
-
-extern struct l1s_state l1s;
-
-struct l1s_meas_hdr {
- uint16_t snr; /* signal/noise ratio */
- int16_t toa_qbit; /* time of arrival (qbits) */
- int16_t pm_dbm8; /* power level in dbm/8 */
- int16_t freq_err; /* Frequency error in Hz */
-};
-
-int16_t l1s_snr_int(uint16_t snr);
-uint16_t l1s_snr_fract(uint16_t snr);
-
-void l1s_dsp_abort(void);
-
-void l1s_tx_apc_helper(uint16_t arfcn);
-
-/* schedule a completion */
-void l1s_compl_sched(enum l1_compl c);
-
-void l1s_init(void);
-
-/* reset the layer1 as part of synchronizing to a new cell */
-void l1s_reset(void);
-
-/* init.c */
-void layer1_init(void);
-
-/* A debug macro to print every TDMA frame */
-#ifdef DEBUG_EVERY_TDMA
-#define putchart(x) putchar(x)
-#else
-#define putchart(x)
-#endif
-
-/* Convert an angle in fx1.15 notatinon into Hz */
-#define BITFREQ_DIV_2PI 43104 /* 270kHz / 2 * pi */
-#define BITFREQ_DIV_PI 86208 /* 270kHz / pi */
-#define ANG2FREQ_SCALING (2<<15) /* 2^15 scaling factor for fx1.15 */
-#define ANGLE_TO_FREQ(angle) ((int16_t)angle * BITFREQ_DIV_PI / ANG2FREQ_SCALING)
-
-void l1s_reset_hw(void);
-void synchronize_tdma(struct l1_cell_info *cinfo);
-void l1s_time_inc(struct gsm_time *time, uint32_t delta_fn);
-void l1s_time_dump(const struct gsm_time *time);
-
-#endif /* _L1_SYNC_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/layer1/tdma_sched.h b/Src/osmoconbb/src/target/firmware/include/layer1/tdma_sched.h
deleted file mode 100644
index f58d59b..0000000
--- a/Src/osmoconbb/src/target/firmware/include/layer1/tdma_sched.h
+++ /dev/null
@@ -1,73 +0,0 @@
-#ifndef _L1_TDMA_SCHED_H
-#define _L1_TDMA_SCHED_H
-
-#include <stdint.h>
-
-/* TDMA scheduler */
-
-/* The idea of this scheduler is that we have a circular buffer of buckets,
- * where each bucket corresponds to one future TDMA frame [interrupt]. Each
- * bucket contains of a list of callbacks which are executed when the bucket
- * index reaches that particular bucket. */
-
-#define TDMASCHED_NUM_FRAMES 25
-#define TDMASCHED_NUM_CB 8
-
-#define TDMA_IFLG_TPU (1<<0)
-#define TDMA_IFLG_DSP (1<<1)
-
-typedef int tdma_sched_cb(uint8_t p1, uint8_t p2, uint16_t p3);
-
-/* A single item in a TDMA scheduler bucket */
-struct tdma_sched_item {
- tdma_sched_cb *cb;
- uint8_t p1;
- uint8_t p2;
- uint16_t p3;
- int16_t prio;
- uint16_t flags; /* TDMA_IFLG_xxx */
-};
-
-/* A bucket inside the TDMA scheduler */
-struct tdma_sched_bucket {
- struct tdma_sched_item item[TDMASCHED_NUM_CB];
- uint8_t num_items;
-};
-
-/* The scheduler itself, consisting of buckets and a current index */
-struct tdma_scheduler {
- struct tdma_sched_bucket bucket[TDMASCHED_NUM_FRAMES];
- uint8_t cur_bucket;
-};
-
-/* Schedule an item at 'frame_offset' TDMA frames in the future */
-int tdma_schedule(uint8_t frame_offset, tdma_sched_cb *cb,
- uint8_t p1, uint8_t p2, uint16_t p3, int16_t prio);
-
-/* Schedule a set of items starting from 'frame_offset' TDMA frames in the future */
-int tdma_schedule_set(uint8_t frame_offset, const struct tdma_sched_item *item_set, uint16_t p3);
-
-/* Scan current frame scheduled items for flags */
-uint16_t tdma_sched_flag_scan(void);
-
-/* Execute pre-scheduled events for current frame */
-int tdma_sched_execute(void);
-
-/* Advance TDMA scheduler to the next bucket */
-void tdma_sched_advance(void);
-
-/* reset the scheduler; erase all scheduled items */
-void tdma_sched_reset(void);
-
-/* debug function: print number of entries of all TDMA buckets */
-void tdma_sched_dump(void);
-
-
-extern int tdma_end_set(uint8_t p1, uint8_t p2, uint16_t p3);
-#define SCHED_ITEM(x, p, y, z) { .cb = x, .p1 = y, .p2 = z, .prio = p, .flags = 0 }
-#define SCHED_ITEM_DT(x, p, y, z) { .cb = x, .p1 = y, .p2 = z, .prio = p, \
- .flags = TDMA_IFLG_TPU | TDMA_IFLG_DSP }
-#define SCHED_END_FRAME() { .cb = NULL, .p1 = 0, .p2 = 0 }
-#define SCHED_END_SET() { .cb = &tdma_end_set, .p1 = 0, .p2 = 0 }
-
-#endif /* _L1_TDMA_SCHED_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/layer1/toa.h b/Src/osmoconbb/src/target/firmware/include/layer1/toa.h
deleted file mode 100644
index dea9dd9..0000000
--- a/Src/osmoconbb/src/target/firmware/include/layer1/toa.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifndef _L1_TOA_H
-#define _L1_TOA_H
-
-/* Input a qbits error sample into the TOA averaging */
-void toa_input(int32_t offset, uint32_t snr);
-
-/* Reset the TOA counters */
-void toa_reset(void);
-
-#endif
diff --git a/Src/osmoconbb/src/target/firmware/include/layer1/tpu_window.h b/Src/osmoconbb/src/target/firmware/include/layer1/tpu_window.h
deleted file mode 100644
index 7b146f1..0000000
--- a/Src/osmoconbb/src/target/firmware/include/layer1/tpu_window.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef _L1_TPU_CTRL_H
-#define _L1_TPU_CTRL_H
-
-enum l1_rxwin_type {
- L1_RXWIN_PW, /* power measurement */
- L1_RXWIN_FB, /* FCCH burst detection */
- L1_RXWIN_SB, /* SCH burst detection */
- L1_RXWIN_NB, /* Normal burst decoding */
- _NUM_L1_RXWIN
-};
-
-enum l1_txwin_type {
- L1_TXWIN_NB, /* Normal burst sending */
- L1_TXWIN_AB, /* RACH burst sending */
- _NUM_L1_TXWIN
-};
-
-void l1s_win_init(void);
-void l1s_rx_win_ctrl(uint16_t arfcn, enum l1_rxwin_type wtype, uint8_t tn_ofs);
-void l1s_tx_win_ctrl(uint16_t arfcn, enum l1_txwin_type wtype, uint8_t pwr, uint8_t tn_ofs);
-
-void tpu_end_scenario(void);
-
-#endif /* _L1_TPU_CTRL_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/manifest.h b/Src/osmoconbb/src/target/firmware/include/manifest.h
deleted file mode 100644
index 6c1b202..0000000
--- a/Src/osmoconbb/src/target/firmware/include/manifest.h
+++ /dev/null
@@ -1,10 +0,0 @@
-
-#ifndef _MANIFEST_H
-#define _MANIFEST_H
-
-extern const char *manifest_application;
-extern const char *manifest_revision;
-extern const char *manifest_board;
-extern const char *manifest_environment;
-
-#endif /* !_MANIFEST_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/memory.h b/Src/osmoconbb/src/target/firmware/include/memory.h
deleted file mode 100644
index b0a0490..0000000
--- a/Src/osmoconbb/src/target/firmware/include/memory.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef _MEMORY_H
-#define _MEMORY_H
-
-#define __arch_getb(a) (*(volatile unsigned char *)(a))
-#define __arch_getw(a) (*(volatile unsigned short *)(a))
-#define __arch_getl(a) (*(volatile unsigned int *)(a))
-
-#define __arch_putb(v,a) (*(volatile unsigned char *)(a) = (v))
-#define __arch_putw(v,a) (*(volatile unsigned short *)(a) = (v))
-#define __arch_putl(v,a) (*(volatile unsigned int *)(a) = (v))
-
-#define __raw_writeb(v,a) __arch_putb(v,a)
-#define __raw_writew(v,a) __arch_putw(v,a)
-#define __raw_writel(v,a) __arch_putl(v,a)
-
-#define __raw_readb(a) __arch_getb(a)
-#define __raw_readw(a) __arch_getw(a)
-#define __raw_readl(a) __arch_getl(a)
-
-#define writeb(v,a) __arch_putb(v,a)
-#define writew(v,a) __arch_putw(v,a)
-#define writel(v,a) __arch_putl(v,a)
-
-#define readb(a) __arch_getb(a)
-#define readw(a) __arch_getw(a)
-#define readl(a) __arch_getl(a)
-
-#endif /* _MEMORY_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/mtk/bfe.h b/Src/osmoconbb/src/target/firmware/include/mtk/bfe.h
deleted file mode 100644
index b07f620..0000000
--- a/Src/osmoconbb/src/target/firmware/include/mtk/bfe.h
+++ /dev/null
@@ -1,107 +0,0 @@
-#ifndef _MTK_BFE_H
-#define _MTK_BFE_H
-
-/* MTK Baseband Frontend */
-
-/* MT6235 Chapter 10 */
-
-enum mtk_bfe_reg {
- BFE_CON = 0x0000,
- BFE_STA = 0x0004,
- /* Rx Configuration Register */
- RX_CFG = 0x0010,
- /* Rx Control Register */
- RX_CON = 0x0014,
- /* RX Interference Detection Power Measurement Control Register */
- RX_PM_CON = 0x0018,
- /* RX FIR Coefficient Set ID Control Register */
- RX_FIR_CSID_CON = 0x001c,
- /* RX Ram0 Coefficient Set 0 Register */
- RX_RAM0_CS0 = 0x0070,
- /* RX Ram1 Coefficient Set 0 Register */
- RX_RAM1_CS0 = 0x0020,
- /* Rx Interference Detection HPF Power Register */
- RX_HPWR_STS = 0x00b0,
- /* Rx Interference Detection BPF Power Register */
- RX_BPWR_STS = 0x00b4,
-
- TX_CFG = 0x0060,
- TX_CON = 0x0064,
- TX_OFF = 0x0068,
-};
-
-#define RX_RAM0_CS(n) (RX_RAM0_CS0 + (n)*4)
-#define RX_RAM1_CS(n) (RX_RAM0_CS1 + (n)*4)
-
-/* SWAP I/Q before input to baesband frontend */
-#define RX_CFG_SWAP_IQ 0x0001
-/* Bypass RX FIR filter control */
-#define RX_CFG_BYPFLTR 0x0002
-/* Number of RX FIR filter taps */
-#define RX_CFG_FIRTPNO(n) (((n) & 0x3f) << 4)
-
-#define RX_CON_BLPEN_NORMAL (0 << 0)
-#define RX_CON_BLPEN_LOOPB (1 << 0)
-#define RX_CON_BLPEN_LOOPB_FILT (2 << 0)
-
-/* Phase de-rotation in wide FIR data path */
-#define RX_CON_PH_ROEN_W (1 << 2)
-/* Phase de-rotation in narrow FIR data path */
-#define RX_CON_PH_ROEN_N (1 << 3)
-/* RX I-data gain compenstation select (+/- 1.5dB */
-#define RX_CON_IGAINSEL_00dB (0 << 4)
-#define RX_CON_IGAINSEL_03dB (1 << 4)
-#define RX_CON_IGAINSEL_06dB (2 << 4)
-#define RX_CON_IGAINSEL_09dB (3 << 4)
-#define RX_CON_IGAINSEL_12dB (4 << 4)
-#define RX_CON_IGAINSEL_15dB (5 << 4)
-#define RX_CON_IGAINSEL_n03dB (9 << 4)
-#define RX_CON_IGAINSEL_n06dB (10 << 4)
-#define RX_CON_IGAINSEL_n09dB (11 << 4)
-#define RX_CON_IGAINSEL_n12dB (12 << 4)
-#define RX_CON_IGAINSEL_n15dB (13 << 4)
-
-/* TX_CFG */
-/* Appending Bits enable */
-#define TX_CFG_APNDEN (1 << 0)
-/* Ramp Profile Select for 8PSK */
-#define TX_CFG_RPSEL_I (0 << 1) /* 50 kHz sine tone */
-#define TX_CFG_RPSEL_II (1 << 1) /* null DC I/Q */
-#define TX_CFG_RPSEL_III (3 << 1)
-#define TX_CFG_INTEN (1 << 3) /* Interpolate between bursts */
-#define TX_CFG_MDBYP (1 << 4) /* Modulator Bypass */
-#define TX_CFG_SGEN (1 << 5) /* 540 kHz sine tone */
-#define TX_CFG_ALL_10GEN_ZERO (1 << 6)
-#define TX_CFG_ALL_10GEN_ONE (2 << 6)
-#define TX_CFG_SW_QBCNT(n) (((n) & 0x1f) << 8)
-#define TX_CFG_GMSK_DTAP_SYM_1 (0 << 13)
-#define TX_CFG_GMSK_DTAP_SYM_0 (1 << 13)
-#define TX_CFG_GMSK_DTAP_SYM_2 (2 << 13)
-
-#define TX_CON_IQSWP (1 << 0) /* Swap I/Q */
-/* GMSK or 8PSK modulation for 1st through 4th burst */
-#define TX_CON_MDSEL1_8PSK (1 << 2)
-#define TX_CON_MDSEL2_8PSK (1 << 3)
-#define TX_CON_MDSEL3_8PSK (1 << 4)
-#define TX_CON_MDSEL4_8PSK (1 << 5)
-/* Quadratur phase compensation select */
-#define TX_CON_PHSEL_0deg (0 << 8)
-#define TX_CON_PHSEL_1deg (1 << 8)
-#define TX_CON_PHSEL_2deg (2 << 8)
-#define TX_CON_PHSEL_3deg (3 << 8)
-#define TX_CON_PHSEL_4deg (4 << 8)
-#define TX_CON_PHSEL_5deg (5 << 8)
-#define TX_CON_PHSEL_n5deg (10 << 8)
-#define TX_CON_PHSEL_n4deg (11 << 8)
-#define TX_CON_PHSEL_n3deg (12 << 8)
-#define TX_CON_PHSEL_n2deg (13 << 8)
-#define TX_CON_PHSEL_n1deg (14 << 8)
-/* GMSK modulator output latenct */
-#define TX_CON_GMSK_DTAP_QB(n) (((n) & 3) << 12)
-
-#define TX_OFF_I(n) (((n) & 0x3f) << 0)
-#define TX_OFF_Q(n) (((n) & 0x3f) << 8)
-/* Double Buffering */
-#define TX_OFF_TYP_DB 0x8000
-
-#endif /* _MTK_BFE_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/mtk/bpi.h b/Src/osmoconbb/src/target/firmware/include/mtk/bpi.h
deleted file mode 100644
index 8aa8ee5..0000000
--- a/Src/osmoconbb/src/target/firmware/include/mtk/bpi.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef _MTK_BPI_H
-#define _MTK_BPI_H
-
-/* MTK Baseband Parallel Interface */
-
-/* Chapter 9.2 of MT6235 Data Sheet */
-
-#define BPI_BUF(n) (BPI_BUF0 + ((n) * 4))
-
-#define MTK_BPI(n) (n)
-
-enum mtk_bpi_reg {
- BPI_CON = 0x0000,
- BPI_BUF0 = 0x0004,
- BPI_ENA0 = 0x00b0,
- BPI_ENA1 = 0x00b4,
- BPI_ENA2 = 0x00b8,
-};
-
-#endif /* _MTK_BPI_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/mtk/bsi.h b/Src/osmoconbb/src/target/firmware/include/mtk/bsi.h
deleted file mode 100644
index 6f381ce..0000000
--- a/Src/osmoconbb/src/target/firmware/include/mtk/bsi.h
+++ /dev/null
@@ -1,41 +0,0 @@
-#ifndef _MTK_BSI_H
-#define _MTK_BSI_H
-
-/* MTK Baseband Serial Interface */
-
-enum bsi_reg {
- BSI_CON = 0x0000,
- BSI_D0_CON = 0x0004,
- BSI_D0_DAT = 0x0008,
-
- BSI_ENA_0 = 0x0190,
- BSI_ENA_1 = 0x0194,
- BSI_IO_CON = 0x0198,
- BSI_DOUT = 0x019c,
- BSI_DIN = 0x01a0,
- BSI_PAIR_NUM = 0x01a4,
-
-};
-
-/* Compute offset of BSI_D0_CON / BSI_D0_DAT registers */
-#define BSI_Dn_CON(x) (BSI_D0_CON + (x * 8))
-#define BSI_Dn_CON(x) (BSI_D0_DAT + (x * 8))
-
-/* MT6235 Section 9.1.1 */
-#define BSI_CON_CLK_POL_INV (1 << 0)
-#define BSI_CON_CLK_SPD_52_2 (0 << 1) /* 26 MHz */
-#define BSI_CON_CLK_SPD_52_4 (1 << 1) /* 13 MHz */
-#define BSI_CON_CLK_SPD_52_6 (2 << 1) /* 8.67 MHz */
-#define BSI_CON_CLK_SPD_52_8 (3 << 1) /* 6.50 MHz */
-#define BSI_CON_IMOD (1 << 3)
-#define BSI_CON_EN0_LEN_SHORT (1 << 4)
-#define BSI_CON_EN0_POL_INV (1 << 5)
-#define BSI_CON_EN0_LEN_SHORT (1 << 6)
-#define BSI_CON_EN0_POL_INV (1 << 7)
-#define BSI_CON_SETENV (1 << 8)
-
-/* how the length is encoded in BSI_Dx_CON */
-#define BSI_Dx_LEN(n) ((n & 0x7f) << 8)
-#define BSI_Dx_ISB 0x8000 /* select device 1 */
-
-#endif /* _MTK_BSI_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/mtk/emi.h b/Src/osmoconbb/src/target/firmware/include/mtk/emi.h
deleted file mode 100644
index 1818499..0000000
--- a/Src/osmoconbb/src/target/firmware/include/mtk/emi.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * (C) 2010 by Tieto <www.tieto.com>
- * Marcin Mielczarczyk <marcin.mielczarczyk@tieto.com>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#ifndef __MTK_EMI_H_
-#define __MTK_EMI_H_
-
-/* External Memory Interface register definitions */
-#define MTK_EMI_CONA (MTK_EMI_BASE + 0x00)
-#define MTK_EMI_CONB (MTK_EMI_BASE + 0x08)
-#define MTK_EMI_CONC (MTK_EMI_BASE + 0x10)
-#define MTK_EMI_COND (MTK_EMI_BASE + 0x18)
-#define MTK_EMI_CONI (MTK_EMI_BASE + 0x40)
-#define MTK_EMI_CONJ (MTK_EMI_BASE + 0x48)
-#define MTK_EMI_CONK (MTK_EMI_BASE + 0x50)
-#define MTK_EMI_CONL (MTK_EMI_BASE + 0x58)
-#define MTK_EMI_CONM (MTK_EMI_BASE + 0x60)
-#define MTK_EMI_CONN (MTK_EMI_BASE + 0x68)
-#define MTK_EMI_GENA (MTK_EMI_BASE + 0x70)
-#define MTK_EMI_GENB (MTK_EMI_BASE + 0x78)
-#define MTK_EMI_GENC (MTK_EMI_BASE + 0x80)
-#define MTK_EMI_GEND (MTK_EMI_BASE + 0x88)
-
-#endif
diff --git a/Src/osmoconbb/src/target/firmware/include/mtk/mt6139.h b/Src/osmoconbb/src/target/firmware/include/mtk/mt6139.h
deleted file mode 100644
index 35458b5..0000000
--- a/Src/osmoconbb/src/target/firmware/include/mtk/mt6139.h
+++ /dev/null
@@ -1,60 +0,0 @@
-#ifndef _MTK_MT6139_H
-#define _MTK_MT6139_H
-
-enum mt6139_band {
- MTRF_BAND_GSM850 = 0,
- MTRF_BAND_GSM900 = 1,
- MTRF_BAND_GSM1800 = 2,
- MTRF_BAND_GSM1900 = 3,
-};
-
-#define MT6139_CW0_SYNCP_SHIFT 0
-#define MT6139_CW0_SYNCPW (1 << 2)
-#define MT6139_CW0_DIEN (1 << 3)
-#define MT6139_CW0_FLT (1 << 4)
-#define MT6139_CW0_AFC_SHIFT 5
-#define MT6139_CW0_VCO_SEL (1 << 11)
-#define MT6139_CW0_GPO (1 << 12)
-#define MT6139_CW0_POR (1 << 13)
-
-#define MT6139_CW1_NFRACT_SHIFT 0
-#define MT6139_CW1_NINT_SHIFT 8
-#define MT6139_CW1_BAND_SHIFT 16
-#define MT6139_CW1_TRX_850 (1 << 18)
-
-#define MT6139_CW2_GAINTBL_SHIFT 0
-#define MT6139_CW2_MODE_SHIFT 6
-#define MT6139_CW2_AUTO_CAL (1 << 9)
-#define MT6139_CW2_DCD_AQ_SHIFT 10
-#define MT6139_CW2_DCD_AI_SHIFT 16
-
-#define MT6139_CW9_DCD_CQ_SHIFT 0
-#define MT6139_CW9_DCD_BQ_SHIFT 7
-#define MT6139_CW9_PWR_DAC_C (1 << 14)
-#define MT6139_CW9_PWR_DAC_B (1 << 15)
-#define MT6139_CW9_PWR_DAC_A (1 << 16)
-#define MT6139_CW9_AM_ENABLE (1 << 17)
-
-enum mt6139_cw2_mode {
- MODE_SLEEP = 0x0,
- MODE_WARM_UP = 0x1,
- MODE_RECEIVE = 0x3,
- MODE_TRANSMIT = 0x4,
-};
-
-#define MT6139_CW11_TX_CTL (1 << 0)
-#define MT6139_CW11_TXG_IQM (1 << 1)
-#define MT6139_CW11_TXD_IQM (1 << 2)
-#define MT6139_CW11_TX_DIV2 (1 << 3)
-#define MT6139_CW11_TX_DIV4 (1 << 4)
-#define MT6139_CW11_TXG_BUF (1 << 5)
-#define MT6139_CW11_TXD_BUF (1 << 6)
-#define MT6139_CW11_TXMODGAIN_SHIFT 7
-#define MT6139_CW11_TX_FLT_SHIFT 10
-#define MT6139_CW11_TXAPC_SHIFT 14
-#define MT6139_CW11_TXPW_SHIFT 16
-#define MT6139_CW11_TXBIAST_SHIFT 18
-#define MT6139_CW11_TXDIV_GC0 (1 << 20)
-#define MT6139_CW11_TXDIV_GC1 (1 << 21)
-
-#endif /* _MTK_MT6139_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/mtk/mt6235.h b/Src/osmoconbb/src/target/firmware/include/mtk/mt6235.h
deleted file mode 100644
index fb9d368..0000000
--- a/Src/osmoconbb/src/target/firmware/include/mtk/mt6235.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * (C) 2010 by Tieto <www.tieto.com>
- * Marcin Mielczarczyk <marcin.mielczarczyk@tieto.com>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#ifndef __MT6235_H
-#define __MT6235_H
-
-/* Peripheral base addresses */
-#define MTK_EFUSE_BASE 0x80000000
-#define MTK_CONFG_BASE 0x80010000
-#define MTK_GPIO_BASE 0x80020000
-#define MTK_RGU_BASE 0x80030000
-#define MTK_EMI_BASE 0x81000000
-#define MTK_CIRQ_BASE 0x81010000
-#define MTK_DMA_BASE 0x81020000
-#define MTK_UART1_BASE 0x81030000
-#define MTK_UART2_BASE 0x81040000
-#define MTK_UART3_BASE 0x81050000
-#define MTK_GPT_BASE 0x81060000
-#define MTK_KP_BASE 0x81080000
-#define MTK_PWM_BASE 0x81090000
-#define MTK_SIM_BASE 0x810A0000
-#define MTK_RTC_BASE 0x810C0000
-#define MTK_SEJ_BASE 0x810D0000
-#define MTK_BM_BASE 0x810E0000
-#define MTK_IRDA_BASE 0x810F0000
-#define MTK_I2C_BASE 0x81100000
-#define MTK_MSDC_BASE 0x81110000
-#define MTK_NFI_BASE 0x81120000
-#define MTK_MSSDC2_BASE 0x81140000
-#define MTK_TDMA_BASE 0x82000000
-#define MTK_BSI_BASE 0x82010000
-#define MTK_BPI_BASE 0x82020000
-#define MTK_AFC_BASE 0x82030000
-#define MTK_APC_BASE 0x82040000
-#define MTK_AUXADC_BASE 0x82050000
-#define MTK_DIVIDER_BASE 0x82060000
-#define MTK_FSC_BASE 0x82070000
-#define MTK_GCU_BASE 0x82080000
-#define MTK_CSD_ACC_BASE 0x82090000
-#define MTK_SHARE1_BASE 0x820A0000
-#define MTK_IRDBG1_BASE 0x820B0000
-#define MTK_SHARE2_BASE 0x820C0000
-#define MTK_IRDBG2_BASE 0x820D0000
-#define MTK_PATCH_BASE 0x820E0000
-#define MTK_AFE_BASE 0x820F0000
-#define MTK_BFE_BASE 0x82100000
-#define MTK_PLL_BASE 0x83000000
-#define MTK_ACIF_BASE 0x83010000
-#define MTK_GMC_BASE 0x84000000
-#define MTK_G2D_BASE 0x84010000
-#define MTK_GCMQ_BASE 0x84020000
-#define MTK_CAM_BASE 0x840B0000
-#define MTK_CRZ_BASE 0x840E0000
-
-#endif
diff --git a/Src/osmoconbb/src/target/firmware/include/mtk/mt6235_sciphone_g2.h b/Src/osmoconbb/src/target/firmware/include/mtk/mt6235_sciphone_g2.h
deleted file mode 100644
index 74d9e7b..0000000
--- a/Src/osmoconbb/src/target/firmware/include/mtk/mt6235_sciphone_g2.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef _SCIPHONE_G2_H
-#define _SCIPHONE_G2_H
-/* Bluelans Sciphone G2 support */
-
-/* Use of the Baseband Parallel Interface by the G2 board */
-#define HB_TX MTK_BPI(0)
-#define PCS_RX MTK_BPI(1)
-#define LB_TX MTK_BPI(2)
-#define PA_EN MTK_BPI(4)
-#define BAND_SW MTK_BPI(5)
-#define MODE_PA MTK_BPI(7)
-#define RF_VCO_EN MTK_BPI(9)
-
-#define GPIO_GPS_PWR_EN MTK_GPIO(19)
-#define GPIO_WIFI_EN MTK_GPIO(20)
-#define GPIO_OP1_EN MTK_GPIO(22)
-#define GPIO_BT_PWR_EN MTK_GPIO(39)
-#define GPIO_BT_RST MTK_GPIO(62)
-#define GPIO_USB_CHR_ID MTK_GPIO(73)
-#define GPIO_FM_SCL MTK_GPIO(46)
-#define GPIO_FM_SDA MTK_GPIO(47)
-#define GPIO_GS_SCL MTK_GPIO(48)
-#define GPIO_GS_SDA MTK_GPIO(58)
-#define GPIO_GS_EN MTK_GPIO(26)
-
-#define GPIO_GPS_EINT MTK_GPIO(42)
-
-#define EINT_HEADSET MTK_EINT(0)
-#define EINT_BT MTK_EINT(1)
-#define EINT_GPS2GSM MTK_EINT(2)
-#define EINT_WIFI MTK_EINT(3)
-
-#define CLKM_BT_32k MTK_CLKM(2)
-#define CLKM_WIFI_32k MTK_CLKM(3)
-#define CLKM_FM_32k MTK_CLKM(4)
-
-
-#endif /* _SCIPHONE_G2_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/mtk/system.h b/Src/osmoconbb/src/target/firmware/include/mtk/system.h
deleted file mode 100644
index 4543029..0000000
--- a/Src/osmoconbb/src/target/firmware/include/mtk/system.h
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * (C) 2010 by Tieto <www.tieto.com>
- * Marcin Mielczarczyk <marcin.mielczarczyk@tieto.com>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#ifndef __MTK_SYSTEM_H_
-#define __MTK_SYSTEM_H_
-
-/*
- * Configuration block section (Clock, Power Down, Version and Reset
- */
-
-/* Register definitions */
-#define MTK_CONFG_HW_VERSION (MTK_CONFG_BASE + 0x000)
-#define MTK_CONFG_FW_VERSION (MTK_CONFG_BASE + 0x004)
-#define MTK_CONFG_HW_CODE (MTK_CONFG_BASE + 0x008)
-#define MTK_CONFG_SLEEP_CON (MTK_CONFG_BASE + 0x114)
-#define MTK_CONFG_MCUCLK_CON (MTK_CONFG_BASE + 0x118)
-#define MTK_CONFG_DSPCLK_CON (MTK_CONFG_BASE + 0x11C)
-#define MTK_CONFG_IDN_SEL (MTK_CONFG_BASE + 0x200)
-#define MTK_CONFG_PDN_CON0 (MTK_CONFG_BASE + 0x300)
-#define MTK_CONFG_PDN_CON1 (MTK_CONFG_BASE + 0x304)
-#define MTK_CONFG_PDN_CON2 (MTK_CONFG_BASE + 0x308)
-#define MTK_CONFG_PDN_CON3 (MTK_CONFG_BASE + 0x30C)
-#define MTK_CONFG_PDN_SET0 (MTK_CONFG_BASE + 0x310)
-#define MTK_CONFG_PDN_SET1 (MTK_CONFG_BASE + 0x314)
-#define MTK_CONFG_PDN_SET2 (MTK_CONFG_BASE + 0x318)
-#define MTK_CONFG_PDN_SET3 (MTK_CONFG_BASE + 0x31C)
-#define MTK_CONFG_PDN_CLR0 (MTK_CONFG_BASE + 0x320)
-#define MTK_CONFG_PDN_CLR1 (MTK_CONFG_BASE + 0x324)
-#define MTK_CONFG_PDN_CLR2 (MTK_CONFG_BASE + 0x328)
-#define MTK_CONFG_PDN_CLR3 (MTK_CONFG_BASE + 0x32C)
-
-/* CONFG_MCUCLK_CON bit fields definitions */
-#define MCUCLK_CON_AHBX8CLK_SHIFT (0)
-#define MCUCLK_CON_AHBX4CLK_SHIFT (4)
-#define MCUCLK_CON_ARMCLK_SHIFT (8)
-#define MCUCLK_CON_EMICLK_SHIFT (12)
-
-/* PDN_CON0 bit fields definitions */
-#define PDN_CON0_CON0_DMA (1 << 0)
-#define PDN_CON0_USB (1 << 1)
-#define PDN_CON0_GCU (1 << 2)
-#define PDN_CON0_WAVE (1 << 3)
-#define PDN_CON0_SEJ (1 << 4)
-#define PDN_CON0_IR (1 << 6)
-#define PDN_CON0_PWM3 (1 << 7)
-#define PDN_CON0_PWM (1 << 8)
-#define PDN_CON0_SIM2 (1 << 10)
-#define PDN_CON0_IRDBG1 (1 << 12)
-#define PDN_CON0_IRDBG2 (1 << 13)
-
-/* PDN_CON1 bit fields definitions */
-#define PDN_CON1_GPT (1 << 0)
-#define PDN_CON1_KP (1 << 1)
-#define PDN_CON1_GPIO (1 << 2)
-#define PDN_CON1_UART1 (1 << 3)
-#define PDN_CON1_SIM (1 << 4)
-#define PDN_CON1_PWM1 (1 << 5)
-#define PDN_CON1_LCD (1 << 7)
-#define PDN_CON1_UART2 (1 << 8)
-#define PDN_CON1_MSDC (1 << 9)
-#define PDN_CON1_TP (1 << 10)
-#define PDN_CON1_PWM2 (1 << 11)
-#define PDN_CON1_NFI (1 << 12)
-#define PDN_CON1_UART3 (1 << 14)
-#define PDN_CON1_IRDA (1 << 15)
-
-/* PDN_CON2 bit fields definitions */
-#define PDN_CON2_TDMA (1 << 0)
-#define PDN_CON2_RTC (1 << 1)
-#define PDN_CON2_BSI (1 << 2)
-#define PDN_CON2_BPI (1 << 3)
-#define PDN_CON2_AFC (1 << 4)
-#define PDN_CON2_APC (1 << 5)
-
-/*
- * Reset Generation Unit block section
- */
-#define MTK_RGU_WDT_MODE (MTK_RGU_BASE + 0x00)
-#define MTK_RGU_WDT_LENGTH (MTK_RGU_BASE + 0x04)
-#define MTK_RGU_WDT_RESTART (MTK_RGU_BASE + 0x08)
-#define MTK_RGU_WDT_STA (MTK_RGU_BASE + 0x0C)
-#define MTK_RGU_SW_PERIPH_RSTN (MTK_RGU_BASE + 0x10)
-#define MTK_RGU_SW_DSP_RSTN (MTK_RGU_BASE + 0x14)
-#define MTK_RGU_WDT_RSTINTERVAL (MTK_RGU_BASE + 0x18)
-#define MTK_RGU_WDT_SWRST (MTK_RGU_BASE + 0x1C)
-
-#define WDT_MODE_KEY 0x2200
-#define WDT_LENGTH_KEY 0x0008
-#define WDT_RESTART_KEY 0x1971
-#define SW_PERIPH_RSTN_KEY 0x0037
-#define WDT_SWRST_KEY 0x1209
-
-/*
- * RTC block section
- */
-
-/* RTC registers definition */
-#define MTK_RTC_BBPU (MTK_RTC_BASE + 0x00)
-#define MTK_RTC_IRQ_STA (MTK_RTC_BASE + 0x04)
-#define MTK_RTC_IRQ_EN (MTK_RTC_BASE + 0x08)
-#define MTK_RTC_CII_EN (MTK_RTC_BASE + 0x0C)
-#define MTK_RTC_AL_MASK (MTK_RTC_BASE + 0x10)
-#define MTK_RTC_TC_SEC (MTK_RTC_BASE + 0x14)
-#define MTK_RTC_TC_MIN (MTK_RTC_BASE + 0x18)
-#define MTK_RTC_TC_HOU (MTK_RTC_BASE + 0x1C)
-#define MTK_RTC_TC_DOM (MTK_RTC_BASE + 0x20)
-#define MTK_RTC_TC_DOW (MTK_RTC_BASE + 0x24)
-#define MTK_RTC_TC_MTH (MTK_RTC_BASE + 0x28)
-#define MTK_RTC_TC_YEA (MTK_RTC_BASE + 0x2C)
-#define MTK_RTC_AL_SEC (MTK_RTC_BASE + 0x30)
-#define MTK_RTC_AL_MIN (MTK_RTC_BASE + 0x34)
-#define MTK_RTC_AL_HOU (MTK_RTC_BASE + 0x38)
-#define MTK_RTC_AL_DOM (MTK_RTC_BASE + 0x3C)
-#define MTK_RTC_AL_DOW (MTK_RTC_BASE + 0x40)
-#define MTK_RTC_AL_MTH (MTK_RTC_BASE + 0x44)
-#define MTK_RTC_AL_YEA (MTK_RTC_BASE + 0x48)
-#define MTK_RTC_XOSCCALI (MTK_RTC_BASE + 0x4C)
-#define MTK_RTC_POWERKEY1 (MTK_RTC_BASE + 0x50)
-#define MTK_RTC_POWERKEY2 (MTK_RTC_BASE + 0x54)
-#define MTK_RTC_PDN1 (MTK_RTC_BASE + 0x58)
-#define MTK_RTC_PDN2 (MTK_RTC_BASE + 0x5C)
-#define MTK_RTC_SPAR1 (MTK_RTC_BASE + 0x64)
-#define MTK_RTC_DIFF (MTK_RTC_BASE + 0x6C)
-#define MTK_RTC_CALI (MTK_RTC_BASE + 0x70)
-#define MTK_RTC_WRTGR (MTK_RTC_BASE + 0x74)
-
-#define POWERKEY1_MAGIC 0xA357
-#define POWERKEY2_MAGIC 0x67D2
-
-/* RTC_BBPU bit fields definitions */
-#define RTC_BBPU_PWREN (1 << 0)
-#define RTC_BBPU_WRITE_EN (1 << 1)
-#define RTC_BBPU_BBPU (1 << 2)
-#define RTC_BBPU_AUTO (1 << 3)
-#define RTC_BBPU_CLRPKY (1 << 4)
-#define RTC_BBPU_RELOAD (1 << 5)
-#define RTC_BBPU_CBUSY (1 << 6)
-#define RTC_BBPU_DBING (1 << 7)
-#define RTC_BBPU_KEY_BBPU (1 << 8)
-
-/* RTC_BBPU write is only acceptable when KEY_BBPU=0x43 */
-#define BBPU_MAGIC 0x4300
-
-/*
- * PLL block section
- */
-
-/* PLL registers definition */
-#define MTK_PLL_PLL (MTK_PLL_BASE + 0x00)
-#define MTK_PLL_PLL2 (MTK_PLL_BASE + 0x04)
-#define MTK_PLL_CLK_CON (MTK_PLL_BASE + 0x18)
-#define MTK_PLL_PDN_CON (MTK_PLL_BASE + 0x1C)
-
-/* MTK_PLL_PLL bit fields definitions */
-#define PLL_PLLVCOSEL (0 << 0)
-#define PLL_MPLLSEL_SYSCLK (1 << 3)
-#define PLL_MPLLSEL_PLL (2 << 3)
-#define PLL_DPLLSEL (1 << 5)
-#define PLL_UPLLSEL (1 << 6)
-#define PLL_RST (1 << 7)
-#define PLL_CALI (1 << 8)
-
-/* MTK_PLL_CLK_CON bit fields definitions */
-#define PLL_CLKSQ_DIV2_DSP (1 << 0)
-#define PLL_CLKSQ_DIV2_MCU (1 << 1)
-#define PLL_CLKSQ_PLD (1 << 2)
-#define PLL_SRCCLK (1 << 7)
-#define PLL_CLKSQ_TEST (1 << 15)
-
-/* MTK_PLL_PDN_CON bit fields definitions */
-#define PLL_PDN_CON_CLKSQ (1 << 11)
-#define PLL_PDN_CON_MCU_DIV2 (1 << 12)
-#define PLL_PDN_CON_PLL (1 << 13)
-#define PLL_PDN_CON_DSP_DIV2 (1 << 15)
-
-#endif
diff --git a/Src/osmoconbb/src/target/firmware/include/mtk/tdma_timer.h b/Src/osmoconbb/src/target/firmware/include/mtk/tdma_timer.h
deleted file mode 100644
index dec0a8a..0000000
--- a/Src/osmoconbb/src/target/firmware/include/mtk/tdma_timer.h
+++ /dev/null
@@ -1,60 +0,0 @@
-#ifndef _MTK_TDMA_H
-#define _MTK_TDMA_H
-
-/* MTK TDMA Timer */
-
-/* MT6235 Section 11 */
-
-enum mtk_tdma_reg {
- /* Read current quarter bit count */
- TDMA_TQCNT = 0x0000,
- /* Latched Qbit counter reset position */
- TDMA_WRAP = 0x0004,
- /* Direct Qbit counter reset position */
- TDMA_WRAPIMD = 0x0008,
- /* Event latch position */
- TDMA_EVTVAL = 0x000c,
- /* DSP software control */
- TDMA_DTIRQ = 0x0010,
- /* MCU software control */
- TDMA_CTIRQ1 = 0x0014,
- TDMA_CTIRQ2 = 0x0018,
- /* AFC control */
- TDMA_AFC0 = 0x0020,
- TDMA_AFC1 = 0x0024,
- TDMA_AFC2 = 0x0028,
- TDMA_AFC3 = 0x002c,
-
- /* BSI event */
- TDMA_BSI0 = 0x00b0,
- /* BPI event */
- TDMA_BPI0 = 0x0100,
- /* Auxiliary ADC event */
- TDMA_AUXEV0 = 0x0400,
- TDMA_AUXEV1 = 0x0404,
- /* Event Control */
- TDMA_EVTENA0 = 0x0150,
- TDMA_EVTENA1 = 0x0154,
- TDMA_EVTENA2 = 0x0158,
- TDMA_EVTENA3 = 0x015c,
- TDMA_EVTENA4 = 0x0160,
- TDMA_EVTENA5 = 0x0164,
- TDMA_EVTENA6 = 0x0168,
- TDMA_EVTENA6 = 0x016c,
- TDMA_WRAPOFS = 0x0170,
- TDMA_REGBIAS = 0x0174,
- TDMA_DTXCON = 0x0180,
- TDMA_RXCON = 0x0184,
- TDMA_BDLCON = 0x0188,
- TDMA_BULCON1 = 0x018c,
- TDMA_BULCON2 = 0x0190,
- TDMA_FB_FLAG = 0x0194,
- TDMA_FB_CLRI = 0x0198,
-};
-
-#define TDMA_BSI(n) (TDMA_BSI0 + (n)*4)
-#define TDMA_BPI(n) (TDMA_BPI0 + (n)*4)
-
-
-
-#endif /* _MTK_TDMA_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/rf/trf6151.h b/Src/osmoconbb/src/target/firmware/include/rf/trf6151.h
deleted file mode 100644
index f0891b6..0000000
--- a/Src/osmoconbb/src/target/firmware/include/rf/trf6151.h
+++ /dev/null
@@ -1,49 +0,0 @@
-#ifndef _TRF6151_H
-#define _TRF6151_H
-
-#include <osmocom/gsm/gsm_utils.h>
-
-/* initialize (reset + power up) */
-void trf6151_init(uint8_t tsp_uid, uint16_t tsp_reset_id);
-
-/* switch power off or on */
-void trf6151_power(int on);
-
-/* obtain the current total gain of the TRF6151 */
-uint8_t trf6151_get_gain_reg(void);
-
-/* put current set (or computed) gain to register */
-int trf6151_set_gain_reg(uint8_t dbm, int high);
-
-/* set the global gain to use */
-int trf6151_set_gain(uint8_t dbm);
-
-/* obtain the global gain set */
-uint8_t trf6151_get_gain(void);
-
-/* Request the PLL to be tuned to the given frequency */
-void trf6151_set_arfcn(uint16_t arfcn, int uplink);
-
-enum trf6151_mode {
- TRF6151_IDLE,
- TRF6151_RX,
- TRF6151_TX,
-};
-
-/* Set the operational mode of the TRF6151 chip */
-void trf6151_set_mode(enum trf6151_mode mode);
-
-void trf6151_test(uint16_t arfcn);
-void trf6151_tx_test(uint16_t arfcn);
-
-/* prepare a Rx window with the TRF6151 finished at time 'start' (in qbits) */
-void trf6151_rx_window(int16_t start_qbits, uint16_t arfcn);
-
-/* prepare a Tx window with the TRF6151 finished at time 'start' (in qbits) */
-void trf6151_tx_window(int16_t start_qbits, uint16_t arfcn);
-
-/* Given the expected input level of exp_inp dBm and the target of target_bb
- * dBm, configure the RF Frontend with the respective gain */
-void trf6151_compute_gain(int16_t exp_inp, int16_t target_bb);
-
-#endif /* TRF6151_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/rffe.h b/Src/osmoconbb/src/target/firmware/include/rffe.h
deleted file mode 100644
index 63a3a4b..0000000
--- a/Src/osmoconbb/src/target/firmware/include/rffe.h
+++ /dev/null
@@ -1,35 +0,0 @@
-#ifndef _RFFE_H
-#define _RFFE_H
-
-#include <osmocom/gsm/gsm_utils.h>
-
-extern const uint8_t system_inherent_gain;
-
-/* initialize RF Frontend */
-void rffe_init(void);
-
-/* switch RF Frontend Mode */
-void rffe_mode(enum gsm_band band, int tx);
-
-/* query RF wiring */
-enum rffe_port
-{
- PORT_LO = 0, /* Combined 850/900 port */
- PORT_HI = 1, /* Combined 1800/1900 port */
- PORT_GSM850 = 2,
- PORT_GSM900 = 3,
- PORT_DCS1800 = 4,
- PORT_PCS1900 = 5,
-};
-
-uint32_t rffe_get_rx_ports(void);
-uint32_t rffe_get_tx_ports(void);
-
-/* get current gain of RF frontend (anything between antenna and baseband in dBm */
-uint8_t rffe_get_gain(void);
-
-void rffe_set_gain(uint8_t dbm);
-
-void rffe_compute_gain(int16_t exp_inp, int16_t target_bb);
-
-#endif
diff --git a/Src/osmoconbb/src/target/firmware/include/spi.h b/Src/osmoconbb/src/target/firmware/include/spi.h
deleted file mode 100644
index 0925a9a..0000000
--- a/Src/osmoconbb/src/target/firmware/include/spi.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef _SPI_H
-#define _SPI_H
-
-void spi_init(void);
-int spi_xfer(uint8_t dev_idx, uint8_t bitlen, const void *dout, void *din);
-
-#endif /* _SPI_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/stdint.h b/Src/osmoconbb/src/target/firmware/include/stdint.h
deleted file mode 100644
index 627403f..0000000
--- a/Src/osmoconbb/src/target/firmware/include/stdint.h
+++ /dev/null
@@ -1,36 +0,0 @@
-#ifndef OSMO_STDINT_H
-#define OSMO_STDINT_H
-
-/* some older toolchains (like gnuarm-3.x) don't provide a C99
- compliant stdint.h yet, so we define our own here */
-
-/* to make matters worse newer gcc with glibc headers have
- a incompatible definition of these types. We will use the
- gcc'ism of #include_next to include the compiler's libc
- header file and then check if it has defined int8_t and
- if not we will use our own typedefs */
-
-/* another bad criteria. We can not detect __NEWLIB_H__ or
- _NEWLIB_VERSION. Assume that older GCCs have a older C library
- that did not include a stdint.h yet. This is for gnuarm-3.x
- one of the compilers producing working code right now. */
-
-#if __GNUC__ > 3
-#include_next <stdint.h>
-#endif
-
-#ifndef __int8_t_defined
-typedef signed char int8_t;
-typedef unsigned char uint8_t;
-
-typedef signed short int16_t;
-typedef unsigned short uint16_t;
-
-typedef signed int int32_t;
-typedef unsigned int uint32_t;
-
-typedef long long int int64_t;
-typedef unsigned long long int uint64_t;
-#endif
-
-#endif
diff --git a/Src/osmoconbb/src/target/firmware/include/stdio.h b/Src/osmoconbb/src/target/firmware/include/stdio.h
deleted file mode 100644
index 15ed668..0000000
--- a/Src/osmoconbb/src/target/firmware/include/stdio.h
+++ /dev/null
@@ -1,52 +0,0 @@
-#ifndef _STDIO_H
-#define _STDIO_H
-
-#ifndef NULL
-#define NULL 0
-#endif /* NULL */
-
-#include <sys/types.h>
-
-int printf(const char *format, ...);
-int sprintf(char *str, const char *format, ...);
-int snprintf(char *str, size_t size, const char *format, ...);
-
-#include <stdarg.h>
-
-int vprintf(const char *format, va_list ap);
-int vsprintf(char *str, const char *format, va_list ap);
-int vsnprintf(char *str, size_t size, const char *format, va_list ap);
-int puts(const char *s);
-
-#if 0
-/* start.S based uart console */
-#include <calypso/uart.h>
-#define putchar(c) uart_putchar_wait(1, c)
-int puts(const char *s);
-#endif
-
-#if 0
-/* regular UART console */
-#include <console.h>
-#define putchar(c) cons_putchar(c)
-#define _puts(s) cons_puts(s)
-#define ARCH_HAS_CONSOLE
-#endif
-
-#if 1
-/* sercomm based console */
-#include <comm/sercomm_cons.h>
-#define putchar(c) sercomm_putchar(c)
-#define _puts(s) sercomm_puts(s)
-#define ARCH_HAS_CONSOLE
-#endif
-
-struct __file {
-};
-
-typedef struct __file FILE;
-
-/* non-standard */
-extern void phex(unsigned int c, unsigned int len);
-
-#endif /* _STDIO_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/string.h b/Src/osmoconbb/src/target/firmware/include/string.h
deleted file mode 100644
index f060659..0000000
--- a/Src/osmoconbb/src/target/firmware/include/string.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef _STRING_H
-#define _STRING_H
-
-#include <sys/types.h>
-
-size_t strnlen(const char *s, size_t count);
-size_t strlen(const char *s);
-
-void *memset(void *s, int c, size_t n);
-void *memcpy(void *dest, const void *src, size_t n);
-
-#endif
diff --git a/Src/osmoconbb/src/target/firmware/include/swab.h b/Src/osmoconbb/src/target/firmware/include/swab.h
deleted file mode 100644
index 61be900..0000000
--- a/Src/osmoconbb/src/target/firmware/include/swab.h
+++ /dev/null
@@ -1,297 +0,0 @@
-#ifndef _LINUX_SWAB_H
-#define _LINUX_SWAB_H
-
-#include <stdint.h>
-#include <defines.h>
-#include <asm/swab.h>
-
-/*
- * casts are necessary for constants, because we never know how for sure
- * how U/UL/ULL map to uint16_t, uint32_t, uint64_t. At least not in a portable way.
- */
-#define ___constant_swab16(x) ((uint16_t)( \
- (((uint16_t)(x) & (uint16_t)0x00ffU) << 8) | \
- (((uint16_t)(x) & (uint16_t)0xff00U) >> 8)))
-
-#define ___constant_swab32(x) ((uint32_t)( \
- (((uint32_t)(x) & (uint32_t)0x000000ffUL) << 24) | \
- (((uint32_t)(x) & (uint32_t)0x0000ff00UL) << 8) | \
- (((uint32_t)(x) & (uint32_t)0x00ff0000UL) >> 8) | \
- (((uint32_t)(x) & (uint32_t)0xff000000UL) >> 24)))
-
-#define ___constant_swab64(x) ((uint64_t)( \
- (((uint64_t)(x) & (uint64_t)0x00000000000000ffULL) << 56) | \
- (((uint64_t)(x) & (uint64_t)0x000000000000ff00ULL) << 40) | \
- (((uint64_t)(x) & (uint64_t)0x0000000000ff0000ULL) << 24) | \
- (((uint64_t)(x) & (uint64_t)0x00000000ff000000ULL) << 8) | \
- (((uint64_t)(x) & (uint64_t)0x000000ff00000000ULL) >> 8) | \
- (((uint64_t)(x) & (uint64_t)0x0000ff0000000000ULL) >> 24) | \
- (((uint64_t)(x) & (uint64_t)0x00ff000000000000ULL) >> 40) | \
- (((uint64_t)(x) & (uint64_t)0xff00000000000000ULL) >> 56)))
-
-#define ___constant_swahw32(x) ((uint32_t)( \
- (((uint32_t)(x) & (uint32_t)0x0000ffffUL) << 16) | \
- (((uint32_t)(x) & (uint32_t)0xffff0000UL) >> 16)))
-
-#define ___constant_swahb32(x) ((uint32_t)( \
- (((uint32_t)(x) & (uint32_t)0x00ff00ffUL) << 8) | \
- (((uint32_t)(x) & (uint32_t)0xff00ff00UL) >> 8)))
-
-/*
- * Implement the following as inlines, but define the interface using
- * macros to allow constant folding when possible:
- * ___swab16, ___swab32, ___swab64, ___swahw32, ___swahb32
- */
-
-static inline __attribute_const__ uint16_t __fswab16(uint16_t val)
-{
-#ifdef __arch_swab16
- return __arch_swab16(val);
-#else
- return ___constant_swab16(val);
-#endif
-}
-
-static inline __attribute_const__ uint32_t __fswab32(uint32_t val)
-{
-#ifdef __arch_swab32
- return __arch_swab32(val);
-#else
- return ___constant_swab32(val);
-#endif
-}
-
-static inline __attribute_const__ uint64_t __fswab64(uint64_t val)
-{
-#ifdef __arch_swab64
- return __arch_swab64(val);
-#elif defined(__SWAB_64_THRU_32__)
- uint32_t h = val >> 32;
- uint32_t l = val & ((1ULL << 32) - 1);
- return (((uint64_t)__fswab32(l)) << 32) | ((uint64_t)(__fswab32(h)));
-#else
- return ___constant_swab64(val);
-#endif
-}
-
-static inline __attribute_const__ uint32_t __fswahw32(uint32_t val)
-{
-#ifdef __arch_swahw32
- return __arch_swahw32(val);
-#else
- return ___constant_swahw32(val);
-#endif
-}
-
-static inline __attribute_const__ uint32_t __fswahb32(uint32_t val)
-{
-#ifdef __arch_swahb32
- return __arch_swahb32(val);
-#else
- return ___constant_swahb32(val);
-#endif
-}
-
-/**
- * __swab16 - return a byteswapped 16-bit value
- * @x: value to byteswap
- */
-#define __swab16(x) \
- (__builtin_constant_p((uint16_t)(x)) ? \
- ___constant_swab16(x) : \
- __fswab16(x))
-
-/**
- * __swab32 - return a byteswapped 32-bit value
- * @x: value to byteswap
- */
-#define __swab32(x) \
- (__builtin_constant_p((uint32_t)(x)) ? \
- ___constant_swab32(x) : \
- __fswab32(x))
-
-/**
- * __swab64 - return a byteswapped 64-bit value
- * @x: value to byteswap
- */
-#define __swab64(x) \
- (__builtin_constant_p((uint64_t)(x)) ? \
- ___constant_swab64(x) : \
- __fswab64(x))
-
-/**
- * __swahw32 - return a word-swapped 32-bit value
- * @x: value to wordswap
- *
- * __swahw32(0x12340000) is 0x00001234
- */
-#define __swahw32(x) \
- (__builtin_constant_p((uint32_t)(x)) ? \
- ___constant_swahw32(x) : \
- __fswahw32(x))
-
-/**
- * __swahb32 - return a high and low byte-swapped 32-bit value
- * @x: value to byteswap
- *
- * __swahb32(0x12345678) is 0x34127856
- */
-#define __swahb32(x) \
- (__builtin_constant_p((uint32_t)(x)) ? \
- ___constant_swahb32(x) : \
- __fswahb32(x))
-
-/**
- * __swab16p - return a byteswapped 16-bit value from a pointer
- * @p: pointer to a naturally-aligned 16-bit value
- */
-static inline uint16_t __swab16p(const uint16_t *p)
-{
-#ifdef __arch_swab16p
- return __arch_swab16p(p);
-#else
- return __swab16(*p);
-#endif
-}
-
-/**
- * __swab32p - return a byteswapped 32-bit value from a pointer
- * @p: pointer to a naturally-aligned 32-bit value
- */
-static inline uint32_t __swab32p(const uint32_t *p)
-{
-#ifdef __arch_swab32p
- return __arch_swab32p(p);
-#else
- return __swab32(*p);
-#endif
-}
-
-/**
- * __swab64p - return a byteswapped 64-bit value from a pointer
- * @p: pointer to a naturally-aligned 64-bit value
- */
-static inline uint64_t __swab64p(const uint64_t *p)
-{
-#ifdef __arch_swab64p
- return __arch_swab64p(p);
-#else
- return __swab64(*p);
-#endif
-}
-
-/**
- * __swahw32p - return a wordswapped 32-bit value from a pointer
- * @p: pointer to a naturally-aligned 32-bit value
- *
- * See __swahw32() for details of wordswapping.
- */
-static inline uint32_t __swahw32p(const uint32_t *p)
-{
-#ifdef __arch_swahw32p
- return __arch_swahw32p(p);
-#else
- return __swahw32(*p);
-#endif
-}
-
-/**
- * __swahb32p - return a high and low byteswapped 32-bit value from a pointer
- * @p: pointer to a naturally-aligned 32-bit value
- *
- * See __swahb32() for details of high/low byteswapping.
- */
-static inline uint32_t __swahb32p(const uint32_t *p)
-{
-#ifdef __arch_swahb32p
- return __arch_swahb32p(p);
-#else
- return __swahb32(*p);
-#endif
-}
-
-/**
- * __swab16s - byteswap a 16-bit value in-place
- * @p: pointer to a naturally-aligned 16-bit value
- */
-static inline void __swab16s(uint16_t *p)
-{
-#ifdef __arch_swab16s
- __arch_swab16s(p);
-#else
- *p = __swab16p(p);
-#endif
-}
-/**
- * __swab32s - byteswap a 32-bit value in-place
- * @p: pointer to a naturally-aligned 32-bit value
- */
-static inline void __swab32s(uint32_t *p)
-{
-#ifdef __arch_swab32s
- __arch_swab32s(p);
-#else
- *p = __swab32p(p);
-#endif
-}
-
-/**
- * __swab64s - byteswap a 64-bit value in-place
- * @p: pointer to a naturally-aligned 64-bit value
- */
-static inline void __swab64s(uint64_t *p)
-{
-#ifdef __arch_swab64s
- __arch_swab64s(p);
-#else
- *p = __swab64p(p);
-#endif
-}
-
-/**
- * __swahw32s - wordswap a 32-bit value in-place
- * @p: pointer to a naturally-aligned 32-bit value
- *
- * See __swahw32() for details of wordswapping
- */
-static inline void __swahw32s(uint32_t *p)
-{
-#ifdef __arch_swahw32s
- __arch_swahw32s(p);
-#else
- *p = __swahw32p(p);
-#endif
-}
-
-/**
- * __swahb32s - high and low byteswap a 32-bit value in-place
- * @p: pointer to a naturally-aligned 32-bit value
- *
- * See __swahb32() for details of high and low byte swapping
- */
-static inline void __swahb32s(uint32_t *p)
-{
-#ifdef __arch_swahb32s
- __arch_swahb32s(p);
-#else
- *p = __swahb32p(p);
-#endif
-}
-
-# define swab16 __swab16
-# define swab32 __swab32
-# define swab64 __swab64
-# define swahw32 __swahw32
-# define swahb32 __swahb32
-# define swab16p __swab16p
-# define swab32p __swab32p
-# define swab64p __swab64p
-# define swahw32p __swahw32p
-# define swahb32p __swahb32p
-# define swab16s __swab16s
-# define swab32s __swab32s
-# define swab64s __swab64s
-# define swahw32s __swahw32s
-# define swahb32s __swahb32s
-
-#endif /* _LINUX_SWAB_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/uart.h b/Src/osmoconbb/src/target/firmware/include/uart.h
deleted file mode 100644
index 81d7a15..0000000
--- a/Src/osmoconbb/src/target/firmware/include/uart.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#ifndef _UART_H
-#define _UART_H
-
-#include <stdint.h>
-
-enum uart_baudrate {
- UART_38400,
- UART_57600,
- UART_115200,
- UART_230400,
- UART_460800,
- UART_614400,
- UART_921600,
-};
-
-void uart_init(uint8_t uart, uint8_t interrupts);
-void uart_putchar_wait(uint8_t uart, int c);
-int uart_putchar_nb(uint8_t uart, int c);
-int uart_getchar_nb(uint8_t uart, uint8_t *ch);
-int uart_tx_busy(uint8_t uart);
-int uart_baudrate(uint8_t uart, enum uart_baudrate bdrt);
-
-enum uart_irq {
- UART_IRQ_TX_EMPTY,
- UART_IRQ_RX_CHAR,
-};
-
-void uart_irq_enable(uint8_t uart, enum uart_irq irq, int on);
-
-void uart_poll(uint8_t uart);
-
-#endif /* _UART_H */
diff --git a/Src/osmoconbb/src/target/firmware/include/uwire.h b/Src/osmoconbb/src/target/firmware/include/uwire.h
deleted file mode 100644
index 6d34553..0000000
--- a/Src/osmoconbb/src/target/firmware/include/uwire.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef _UWIRE_H
-#define _UWIRE_H
-
-void uwire_init(void);
-int uwire_xfer(int cs, int bitlen, const void *dout, void *din);
-
-#endif /* _UWIRE_H */
diff --git a/Src/osmoconbb/src/target/firmware/layer1/Makefile b/Src/osmoconbb/src/target/firmware/layer1/Makefile
deleted file mode 100644
index 455a444..0000000
--- a/Src/osmoconbb/src/target/firmware/layer1/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-
-LIBRARIES+=layer1
-layer1_DIR=layer1
-layer1_SRCS=avg.c agc.c afc.c toa.c sync.c tdma_sched.c tpu_window.c init.c \
- l23_api.c mframe_sched.c sched_gsmtime.c async.c rfch.c apc.c
-
-layer1_SRCS += prim_pm.c prim_rach.c prim_tx_nb.c prim_rx_nb.c prim_fbsb.c \
- prim_freq.c prim_utils.c prim_tch.c
-
diff --git a/Src/osmoconbb/src/target/firmware/layer1/afc.c b/Src/osmoconbb/src/target/firmware/layer1/afc.c
deleted file mode 100644
index a51a107..0000000
--- a/Src/osmoconbb/src/target/firmware/layer1/afc.c
+++ /dev/null
@@ -1,130 +0,0 @@
-/* AFC (Automatic Frequency Correction) Implementation */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-
-#include <debug.h>
-#include <osmocom/gsm/gsm_utils.h>
-
-#include <layer1/afc.h>
-#include <layer1/avg.h>
-#include <calypso/dsp.h>
-
-#define AFC_INITIAL_DAC_VALUE -700
-
-/* Over how many TDMA frames do we want to average? (this may change in dedicated mode) */
-#define AFC_PERIOD 40
-/* How many of our measurements have to be valid? */
-#define AFC_MIN_MUN_VALID 8
-
-/* The actual AFC code */
-
-struct afc_state {
- struct running_avg ravg; /* running average */
- int16_t dac_value; /* current DAC output value */
- uint16_t arfcn;
-};
-
-static void afc_ravg_output(struct running_avg *ravg, int32_t avg);
-
-static struct afc_state afc_state = {
- .ravg = {
- .outfn = &afc_ravg_output,
- .period = AFC_PERIOD,
- .min_valid = AFC_MIN_MUN_VALID,
- },
- .dac_value = AFC_INITIAL_DAC_VALUE,
-};
-
-/* The AFC DAC in the ABB has to be configured as follows:
- * DAC = 1MHz / 947MHz * FreqErr(Hz) / AFCslop(ppm/LSB)
- * where:
- * 947 MHz is the center of EGSM
- * AFCslope is coded F1.15, thus a normalization factor of 2^15 applies
- */
-
-#define AFC_NORM_FACTOR_GSM ((1<<15) / 947)
-#define AFC_NORM_FACTOR_DCS ((1<<15) / 1894)
-
-/* we assume 8.769ppb per LSB, equals 0.008769 * 32768 == 287 */
-//#define AFC_SLOPE 320
-#define AFC_SLOPE 287
-
-/* The DSP can measure the frequency error in the following ranges:
- * FB_MODE0: +/- 20 kHz
- * FB_MODE1: +/- 4 kHz
- * Sync Burst: +/- 1 kHz
- * Normal Burst: +/- 400 Hz
- */
-
-/* Update the AFC with a frequency error, bypassing averaging */
-void afc_correct(int16_t freq_error, uint16_t arfcn)
-{
- int32_t afc_norm_factor;
- int16_t delta;
-
- switch (gsm_arfcn2band(arfcn)) {
- case GSM_BAND_900:
- case GSM_BAND_850:
- afc_norm_factor = AFC_NORM_FACTOR_GSM;
- break;
- default:
- afc_norm_factor = AFC_NORM_FACTOR_DCS;
- }
-
- delta = (int16_t) ((afc_norm_factor * (int32_t)freq_error) / AFC_SLOPE);
- printd("afc_correct(error=%dHz, arfcn=%u): delta=%d, afc_dac(old=%d,new=%d)\n",
- freq_error, arfcn, delta, afc_state.dac_value, afc_state.dac_value+delta);
- afc_state.dac_value += delta;
-
- /* The AFC DAC has only 13 bits */
- if (afc_state.dac_value > 4095)
- afc_state.dac_value = 4095;
- else if (afc_state.dac_value < -4096)
- afc_state.dac_value = -4096;
-}
-
-void afc_reset(void)
-{
- afc_state.dac_value = AFC_INITIAL_DAC_VALUE;
-}
-
-void afc_input(int32_t freq_error, uint16_t arfcn, int valid)
-{
- afc_state.arfcn = arfcn;
- runavg_input(&afc_state.ravg, freq_error, valid);
- runavg_check_output(&afc_state.ravg);
-}
-
-/* callback function for runavg */
-static void afc_ravg_output(struct running_avg *ravg, int32_t avg)
-{
- afc_correct(avg, afc_state.arfcn);
-}
-
-/* Update DSP with new AFC DAC value to be used for next TDMA frame */
-void afc_load_dsp(void)
-{
- dsp_api.db_w->d_afc = afc_state.dac_value;
- dsp_api.db_w->d_ctrl_abb |= (1 << B_AFC);
-}
diff --git a/Src/osmoconbb/src/target/firmware/layer1/agc.c b/Src/osmoconbb/src/target/firmware/layer1/agc.c
deleted file mode 100644
index b72a6e7..0000000
--- a/Src/osmoconbb/src/target/firmware/layer1/agc.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/* AFC (Automatic Gain Control) Implementation */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-
-#include <osmocom/gsm/gsm_utils.h>
-#include <debug.h>
-#include <rffe.h>
-
-#include <layer1/agc.h>
-#include <calypso/dsp.h>
-
-/* compute the input level present at the antenna based on a baseband
- * power measurement of the DSP at baseband */
-int16_t agc_inp_dbm8_by_pm(int16_t pm)
-{
- /* pm is in 1/8 dBm at baseband */
- int16_t total_gain_dbm8;
-
- /* compute total current gain */
- total_gain_dbm8 = (system_inherent_gain + rffe_get_gain()) * 8;
-
- /* subtract gain from power measurement at baseband level */
- return pm - total_gain_dbm8;
-}
-
-uint8_t agc_il_by_dbm8(int16_t dbm8)
-{
- uint16_t il;
-
- /* convert from 1/8 dBm to l1c format: [220..0] in -1/2dBm unit */
- if (dbm8 >= 0)
- il = 0;
- else
- il = -dbm8;
-
- /* saturate */
- if (il > 4 * 255)
- il = 4 * 255;
-
- return (uint8_t)(il >> 2);
-}
diff --git a/Src/osmoconbb/src/target/firmware/layer1/apc.c b/Src/osmoconbb/src/target/firmware/layer1/apc.c
deleted file mode 100644
index 480c760..0000000
--- a/Src/osmoconbb/src/target/firmware/layer1/apc.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/* APC (Automatic Power Control) Implementation */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <errno.h>
-
-#include <osmocom/core/utils.h>
-#include <osmocom/gsm/gsm_utils.h>
-
-#include <layer1/apc.h>
-
-/* calibration table defined in board file */
-extern const int16_t dbm2apc_gsm900[];
-extern const int dbm2apc_gsm900_max;
-
-
-/* determine the AUXAPC value by the Tx Power Level */
-int16_t apc_tx_dbm2auxapc(enum gsm_band band, int8_t dbm)
-{
- if (dbm < 0)
- return -ERANGE;
-
- /* FIXME: offsets for different bands! */
- if (dbm > dbm2apc_gsm900_max)
- dbm = dbm2apc_gsm900_max;
-
- return dbm2apc_gsm900[dbm];
-}
-
-/* determine the AUXAPC value by the Tx Power Level */
-int16_t apc_tx_pwrlvl2auxapc(enum gsm_band band, uint8_t lvl)
-{
- /* convert tx power level to dBm */
- int dbm = ms_pwr_dbm(band, lvl);
- if (dbm < 0)
- return dbm;
-
- return apc_tx_dbm2auxapc(band, dbm);
-}
diff --git a/Src/osmoconbb/src/target/firmware/layer1/async.c b/Src/osmoconbb/src/target/firmware/layer1/async.c
deleted file mode 100644
index cb2a2a8..0000000
--- a/Src/osmoconbb/src/target/firmware/layer1/async.c
+++ /dev/null
@@ -1,159 +0,0 @@
-/* Asynchronous part of GSM Layer 1 */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-
-#include <debug.h>
-#include <arm.h>
-#include <asm/system.h>
-
-#include <osmocom/core/msgb.h>
-#include <osmocom/gsm/protocol/gsm_04_08.h>
-
-#include <layer1/sync.h>
-#include <layer1/async.h>
-#include <layer1/mframe_sched.h>
-#include <layer1/sched_gsmtime.h>
-#include <layer1/l23_api.h>
-#include <calypso/l1_environment.h>
-
-extern const struct tdma_sched_item rach_sched_set_ul[];
-
-/* safely enable a message into the L1S TX queue */
-void l1a_txq_msgb_enq(struct llist_head *queue, struct msgb *msg)
-{
- unsigned long flags;
-
- local_firq_save(flags);
- msgb_enqueue(queue, msg);
- local_irq_restore(flags);
-}
-
-void l1a_meas_msgb_set(struct msgb *msg)
-{
- unsigned long flags;
-
- local_firq_save(flags);
- if (l1s.tx_meas)
- msgb_free(l1s.tx_meas);
- l1s.tx_meas = msg;
- local_irq_restore(flags);
-}
-
-/* safely count messages in the L1S TX queue */
-int l1a_txq_msgb_count(struct llist_head *queue)
-{
- unsigned long flags;
- int num = 0;
- struct llist_head *le;
-
- local_firq_save(flags);
- llist_for_each(le, queue)
- num++;
- local_irq_restore(flags);
-
- return num;
-}
-
-/* safely flush all pending msgb */
-void l1a_txq_msgb_flush(struct llist_head *queue)
-{
- struct msgb *msg;
- unsigned long flags;
-
- local_firq_save(flags);
- while ((msg = msgb_dequeue(queue)))
- msgb_free(msg);
- local_irq_restore(flags);
-}
-
-/* Enable a repeating multiframe task */
-void l1a_mftask_enable(enum mframe_task task)
-{
- /* we don't need locking here as L1S only reads mframe.tasks */
- mframe_enable(task);
-}
-
-/* Disable a repeating multiframe task */
-void l1a_mftask_disable(enum mframe_task task)
-{
- /* we don't need locking here as L1S only reads mframe.tasks */
- mframe_disable(task);
-}
-
-/* Set the mask for repeating multiframe tasks */
-void l1a_mftask_set(uint32_t tasks)
-{
- /* we don't need locking here as L1S only reads mframe.tasks */
- mframe_set(tasks);
-}
-
-/* Set TCH mode */
-uint8_t l1a_tch_mode_set(uint8_t mode)
-{
- switch (mode) {
- case GSM48_CMODE_SPEECH_V1:
- case GSM48_CMODE_SPEECH_EFR:
- l1s.tch_mode = mode;
- break;
- default:
- l1s.tch_mode = GSM48_CMODE_SIGN;
- }
-
- return l1s.tch_mode;
-}
-
-/* Set Audio routing mode */
-uint8_t l1a_audio_mode_set(uint8_t mode)
-{
- l1s.audio_mode = mode;
- return mode;
-}
-
-/* Initialize asynchronous part of Layer1 */
-void l1a_init(void)
-{
- l1a_l23api_init();
-}
-
-/* Execute pending L1A completions */
-void l1a_compl_execute(void)
-{
- unsigned long flags;
- unsigned int scheduled;
- unsigned int i;
-
- /* get and reset the currently scheduled tasks */
- local_firq_save(flags);
- scheduled = l1s.scheduled_compl;
- l1s.scheduled_compl = 0;
- local_irq_restore(flags);
-
- /* Iterate over list of scheduled completions, call their
- * respective completion handler */
- for (i = 0; i < 32; i++) {
- if (!(scheduled & (1 << i)))
- continue;
- /* call completion function */
- l1s.completion[i](i);
- }
-}
diff --git a/Src/osmoconbb/src/target/firmware/layer1/avg.c b/Src/osmoconbb/src/target/firmware/layer1/avg.c
deleted file mode 100644
index a4bf565..0000000
--- a/Src/osmoconbb/src/target/firmware/layer1/avg.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Averaging Implementation */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-
-#include <layer1/avg.h>
-
-/* input a new sample into the averaging process */
-void runavg_input(struct running_avg *ravg, int32_t val, int valid)
-{
- ravg->num_samples++;
- if (valid) {
- ravg->acc_val += val;
- ravg->num_samples_valid++;
- }
-}
-
-/* check if sufficient samples have been obtained, and call outfn() */
-int runavg_check_output(struct running_avg *ravg)
-{
- if (ravg->num_samples < ravg->period)
- return 0;
-
- if (ravg->num_samples_valid >= ravg->min_valid) {
- int32_t avg = ravg->acc_val / ravg->num_samples_valid;
-
- ravg->outfn(ravg, avg);
-
- ravg->num_samples = ravg->num_samples_valid = 0;
- ravg->acc_val = 0;
-
- return 1;
- }
-
- return 0;
-}
-
-
diff --git a/Src/osmoconbb/src/target/firmware/layer1/init.c b/Src/osmoconbb/src/target/firmware/layer1/init.c
deleted file mode 100644
index e7fde23..0000000
--- a/Src/osmoconbb/src/target/firmware/layer1/init.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/* OsmocomBB Layer1 initialization */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-
-#include <stdint.h>
-#include <stdio.h>
-
-#include <rffe.h>
-#include <rf/trf6151.h>
-#include <abb/twl3025.h>
-#include <calypso/tpu.h>
-#include <calypso/tsp.h>
-#include <calypso/dsp.h>
-#include <calypso/irq.h>
-
-#include <layer1/sync.h>
-#include <layer1/async.h>
-#include <layer1/l23_api.h>
-
-void layer1_init(void)
-{
-#ifndef CONFIG_TX_ENABLE
- printf("\n\nTHIS FIRMWARE WAS COMPILED WITHOUT TX SUPPORT!!!\n\n");
-#endif
-
- /* initialize asynchronous part of L1 */
- l1a_init();
- /* initialize TDMA Frame IRQ driven synchronous L1 */
- l1s_init();
- /* power up the DSP */
- dsp_power_on();
-
- /* Initialize TPU, TSP and TRF drivers */
- tpu_init();
- tsp_init();
-
- rffe_init();
-
-#if 0 /* only if RX TPU window is disabled! */
- /* Put TWL3025 in downlink mode (includes calibration) */
- twl3025_downlink(1, 1000);
-#endif
-
- /* issue the TRF and TWL initialization sequence */
- tpu_enq_sleep();
- tpu_enable(1);
- tpu_wait_idle();
-
- /* Disable RTC interrupt as it causes lost TDMA frames */
- irq_disable(IRQ_RTC_TIMER);
-
- /* inform l2 and upwards that we are ready for orders */
- l1ctl_tx_reset(L1CTL_RESET_IND, L1CTL_RES_T_BOOT);
-}
diff --git a/Src/osmoconbb/src/target/firmware/layer1/l23_api.c b/Src/osmoconbb/src/target/firmware/layer1/l23_api.c
deleted file mode 100644
index 11f07cd..0000000
--- a/Src/osmoconbb/src/target/firmware/layer1/l23_api.c
+++ /dev/null
@@ -1,633 +0,0 @@
-/* Synchronous part of GSM Layer 1: API to Layer2+ */
-
-/* (C) 2010 by Holger Hans Peter Freyther <zecke@selfish.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#define DEBUG
-
-#include <stdint.h>
-#include <stdio.h>
-#include <string.h>
-
-#include <debug.h>
-#include <byteorder.h>
-
-#include <osmocom/core/msgb.h>
-#include <osmocom/gsm/protocol/gsm_04_08.h>
-#include <comm/sercomm.h>
-
-#include <layer1/sync.h>
-#include <layer1/async.h>
-#include <layer1/mframe_sched.h>
-#include <layer1/prim.h>
-#include <layer1/tpu_window.h>
-
-#include <abb/twl3025.h>
-#include <rf/trf6151.h>
-
-#include <l1ctl_proto.h>
-
-/* the size we will allocate struct msgb* for HDLC */
-#define L3_MSG_HEAD 4
-#define L3_MSG_SIZE (sizeof(struct l1ctl_hdr)+sizeof(struct l1ctl_info_dl)+sizeof(struct l1ctl_traffic_ind) + L3_MSG_HEAD)
-
-void l1_queue_for_l2(struct msgb *msg)
-{
- /* forward via serial for now */
- sercomm_sendmsg(SC_DLCI_L1A_L23, msg);
-}
-
-enum mf_type {
- MFNONE,
- MF51,
- MF26ODD,
- MF26EVEN
-};
-static uint32_t chan_nr2mf_task_mask(uint8_t chan_nr, uint8_t neigh_mode)
-{
- uint8_t cbits = chan_nr >> 3;
- uint8_t tn = chan_nr & 0x7;
- uint8_t lch_idx;
- enum mframe_task master_task = 0;
- uint32_t neigh_task = 0;
- enum mf_type multiframe;
-
- if (cbits == 0x01) {
- lch_idx = 0;
- master_task = (tn & 1) ? MF_TASK_TCH_F_ODD : MF_TASK_TCH_F_EVEN;
- multiframe = (tn & 1) ? MF26ODD : MF26EVEN;
- } else if ((cbits & 0x1e) == 0x02) {
- lch_idx = cbits & 0x1;
- master_task = MF_TASK_TCH_H_0 + lch_idx;
- } else if ((cbits & 0x1c) == 0x04) {
- lch_idx = cbits & 0x3;
- master_task = MF_TASK_SDCCH4_0 + lch_idx;
- multiframe = MF51;
- } else if ((cbits & 0x18) == 0x08) {
- lch_idx = cbits & 0x7;
- master_task = MF_TASK_SDCCH8_0 + lch_idx;
- multiframe = MF51;
-#if 0
- } else if (cbits == 0x10) {
- /* FIXME: when to do extended BCCH? */
- master_task = MF_TASK_BCCH_NORM;
- } else if (cbits == 0x11 || cbits == 0x12) {
- /* FIXME: how to decide CCCH norm/extd? */
- master_task = MF_TASK_BCCH_CCCH;
-#endif
- }
- switch (neigh_mode) {
- case NEIGH_MODE_PM:
- switch (multiframe) {
- case MF51:
- neigh_task = (1 << MF_TASK_NEIGH_PM51);
- break;
- case MF26EVEN:
- neigh_task = (1 << MF_TASK_NEIGH_PM26E);
- break;
- case MF26ODD:
- neigh_task = (1 << MF_TASK_NEIGH_PM26O);
- break;
- }
- break;
- }
- return (1 << master_task) | neigh_task;
-}
-
-static int chan_nr2dchan_type(uint8_t chan_nr)
-{
- uint8_t cbits = chan_nr >> 3;
-
- if (cbits == 0x01) {
- return GSM_DCHAN_TCH_F;
- } else if ((cbits & 0x1e) == 0x02) {
- return GSM_DCHAN_TCH_H;
- } else if ((cbits & 0x1c) == 0x04) {
- return GSM_DCHAN_SDCCH_4;
- } else if ((cbits & 0x18) == 0x08) {
- return GSM_DCHAN_SDCCH_8;
- }
- return GSM_DCHAN_UNKNOWN;
-}
-
-static int chan_nr_is_tch(uint8_t chan_nr)
-{
- return ((chan_nr >> 3) == 0x01 || /* TCH/F */
- ((chan_nr >> 3) & 0x1e) == 0x02); /* TCH/H */
-}
-
-static void audio_set_enabled(uint8_t tch_mode, uint8_t audio_mode)
-{
- if (tch_mode == GSM48_CMODE_SIGN) {
- twl3025_unit_enable(TWL3025_UNIT_VUL, 0);
- twl3025_unit_enable(TWL3025_UNIT_VDL, 0);
- } else {
- twl3025_unit_enable(TWL3025_UNIT_VUL,
- !!(audio_mode & AUDIO_TX_MICROPHONE));
- twl3025_unit_enable(TWL3025_UNIT_VDL,
- !!(audio_mode & AUDIO_RX_SPEAKER));
- }
-}
-
-struct msgb *l1ctl_msgb_alloc(uint8_t msg_type)
-{
- struct msgb *msg;
- struct l1ctl_hdr *l1h;
-
- msg = msgb_alloc_headroom(L3_MSG_SIZE, L3_MSG_HEAD, "l1ctl");
- if (!msg) {
- while (1) {
- puts("OOPS. Out of buffers...\n");
- }
-
- return NULL;
- }
- l1h = (struct l1ctl_hdr *) msgb_put(msg, sizeof(*l1h));
- l1h->msg_type = msg_type;
- l1h->flags = 0;
-
- msg->l1h = (uint8_t *)l1h;
-
- return msg;
-}
-
-struct msgb *l1_create_l2_msg(int msg_type, uint32_t fn, uint16_t snr,
- uint16_t arfcn)
-{
- struct l1ctl_info_dl *dl;
- struct msgb *msg = l1ctl_msgb_alloc(msg_type);
-
- dl = (struct l1ctl_info_dl *) msgb_put(msg, sizeof(*dl));
- dl->frame_nr = htonl(fn);
- dl->snr = snr;
- dl->band_arfcn = htons(arfcn);
-
- return msg;
-}
-
-/* receive a L1CTL_FBSB_REQ from L23 */
-static void l1ctl_rx_fbsb_req(struct msgb *msg)
-{
- struct l1ctl_hdr *l1h = (struct l1ctl_hdr *) msg->data;
- struct l1ctl_fbsb_req *sync_req = (struct l1ctl_fbsb_req *) l1h->data;
-
- if (sizeof(*sync_req) > msg->len) {
- printf("Short sync msg. %u\n", msg->len);
- return;
- }
-
- printd("L1CTL_FBSB_REQ (arfcn=%u, flags=0x%x)\n",
- ntohs(sync_req->band_arfcn), sync_req->flags);
-
- /* reset scheduler and hardware */
- l1s_reset();
-
- /* pre-set the CCCH mode */
- l1s.serving_cell.ccch_mode = sync_req->ccch_mode;
-
- printd("Starting FCCH Recognition\n");
- l1s_fbsb_req(1, sync_req);
-}
-
-/* receive a L1CTL_DM_EST_REQ from L23 */
-static void l1ctl_rx_dm_est_req(struct msgb *msg)
-{
- struct l1ctl_hdr *l1h = (struct l1ctl_hdr *) msg->data;
- struct l1ctl_info_ul *ul = (struct l1ctl_info_ul *) l1h->data;
- struct l1ctl_dm_est_req *est_req = (struct l1ctl_dm_est_req *) ul->payload;
-
- printd("L1CTL_DM_EST_REQ (arfcn=%u, chan_nr=0x%02x, tsc=%u)\n",
- ntohs(est_req->h0.band_arfcn), ul->chan_nr, est_req->tsc);
-
- /* disable neighbour cell measurement */
- mframe_disable(MF_TASK_NEIGH_PM51);
-
- /* configure dedicated channel state */
- l1s.dedicated.type = chan_nr2dchan_type(ul->chan_nr);
- l1s.dedicated.tsc = est_req->tsc;
- l1s.dedicated.tn = ul->chan_nr & 0x7;
- l1s.dedicated.h = est_req->h;
-
- if (est_req->h) {
- int i;
- l1s.dedicated.h1.hsn = est_req->h1.hsn;
- l1s.dedicated.h1.maio = est_req->h1.maio;
- l1s.dedicated.h1.n = est_req->h1.n;
- for (i=0; i<est_req->h1.n; i++)
- l1s.dedicated.h1.ma[i] = ntohs(est_req->h1.ma[i]);
- } else {
- l1s.dedicated.h0.arfcn = ntohs(est_req->h0.band_arfcn);
- }
-
- /* TCH config */
- if (chan_nr_is_tch(ul->chan_nr)) {
- /* Mode */
- l1a_tch_mode_set(est_req->tch_mode);
- l1a_audio_mode_set(est_req->audio_mode);
-
- /* Sync */
- l1s.tch_sync = 1; /* can be set without locking */
-
- /* Audio path */
- audio_set_enabled(est_req->tch_mode, est_req->audio_mode);
- }
-
- /* figure out which MF tasks to enable */
- l1a_mftask_set(chan_nr2mf_task_mask(ul->chan_nr, NEIGH_MODE_PM));
-}
-
-/* receive a L1CTL_DM_FREQ_REQ from L23 */
-static void l1ctl_rx_dm_freq_req(struct msgb *msg)
-{
- struct l1ctl_hdr *l1h = (struct l1ctl_hdr *) msg->data;
- struct l1ctl_info_ul *ul = (struct l1ctl_info_ul *) l1h->data;
- struct l1ctl_dm_freq_req *freq_req =
- (struct l1ctl_dm_freq_req *) ul->payload;
-
- printd("L1CTL_DM_FREQ_REQ (arfcn=%u, tsc=%u)\n",
- ntohs(freq_req->h0.band_arfcn), freq_req->tsc);
-
- /* configure dedicated channel state */
- l1s.dedicated.st_tsc = freq_req->tsc;
- l1s.dedicated.st_h = freq_req->h;
-
- if (freq_req->h) {
- int i;
- l1s.dedicated.st_h1.hsn = freq_req->h1.hsn;
- l1s.dedicated.st_h1.maio = freq_req->h1.maio;
- l1s.dedicated.st_h1.n = freq_req->h1.n;
- for (i=0; i<freq_req->h1.n; i++)
- l1s.dedicated.st_h1.ma[i] = ntohs(freq_req->h1.ma[i]);
- } else {
- l1s.dedicated.st_h0.arfcn = ntohs(freq_req->h0.band_arfcn);
- }
-
- l1a_freq_req(ntohs(freq_req->fn));
-}
-
-/* receive a L1CTL_CRYPTO_REQ from L23 */
-static void l1ctl_rx_crypto_req(struct msgb *msg)
-{
- struct l1ctl_hdr *l1h = (struct l1ctl_hdr *) msg->data;
- struct l1ctl_info_ul *ul = (struct l1ctl_info_ul *) l1h->data;
- struct l1ctl_crypto_req *cr = (struct l1ctl_crypto_req *) ul->payload;
- uint8_t key_len = msg->len - sizeof(*l1h) - sizeof(*ul) - sizeof(*cr);
-
- printd("L1CTL_CRYPTO_REQ (algo=A5/%u, len=%u)\n", cr->algo, key_len);
-
- if (cr->algo && key_len != 8) {
- printd("L1CTL_CRYPTO_REQ -> Invalid key\n");
- return;
- }
-
- dsp_load_ciph_param(cr->algo, cr->key);
-}
-
-/* receive a L1CTL_DM_REL_REQ from L23 */
-static void l1ctl_rx_dm_rel_req(struct msgb *msg)
-{
- struct l1ctl_hdr *l1h = (struct l1ctl_hdr *) msg->data;
- struct l1ctl_info_ul *ul = (struct l1ctl_info_ul *) l1h->data;
-
- printd("L1CTL_DM_REL_REQ\n");
- l1a_mftask_set(0);
- l1s.dedicated.type = GSM_DCHAN_NONE;
- l1a_txq_msgb_flush(&l1s.tx_queue[L1S_CHAN_MAIN]);
- l1a_txq_msgb_flush(&l1s.tx_queue[L1S_CHAN_SACCH]);
- l1a_txq_msgb_flush(&l1s.tx_queue[L1S_CHAN_TRAFFIC]);
- l1a_meas_msgb_set(NULL);
- dsp_load_ciph_param(0, NULL);
- l1a_tch_mode_set(GSM48_CMODE_SIGN);
- audio_set_enabled(GSM48_CMODE_SIGN, 0);
- l1s.neigh_pm.n = 0;
-}
-
-/* receive a L1CTL_PARAM_REQ from L23 */
-static void l1ctl_rx_param_req(struct msgb *msg)
-{
- struct l1ctl_hdr *l1h = (struct l1ctl_hdr *) msg->data;
- struct l1ctl_info_ul *ul = (struct l1ctl_info_ul *) l1h->data;
- struct l1ctl_par_req *par_req = (struct l1ctl_par_req *) ul->payload;
-
- printd("L1CTL_PARAM_REQ (ta=%d, tx_power=%d)\n", par_req->ta,
- par_req->tx_power);
-
- l1s.ta = par_req->ta;
- l1s.tx_power = par_req->tx_power;
-}
-
-/* receive a L1CTL_RACH_REQ from L23 */
-static void l1ctl_rx_rach_req(struct msgb *msg)
-{
- struct l1ctl_hdr *l1h = (struct l1ctl_hdr *) msg->data;
- struct l1ctl_info_ul *ul = (struct l1ctl_info_ul *) l1h->data;
- struct l1ctl_rach_req *rach_req = (struct l1ctl_rach_req *) ul->payload;
-
- printd("L1CTL_RACH_REQ (ra=0x%02x, offset=%d combined=%d)\n",
- rach_req->ra, ntohs(rach_req->offset), rach_req->combined);
-
- l1a_rach_req(ntohs(rach_req->offset), rach_req->combined,
- rach_req->ra);
-}
-
-/* receive a L1CTL_DATA_REQ from L23 */
-static void l1ctl_rx_data_req(struct msgb *msg)
-{
- struct l1ctl_hdr *l1h = (struct l1ctl_hdr *) msg->data;
- struct l1ctl_info_ul *ul = (struct l1ctl_info_ul *) l1h->data;
- struct l1ctl_data_ind *data_ind = (struct l1ctl_data_ind *) ul->payload;
- struct llist_head *tx_queue;
-
- printd("L1CTL_DATA_REQ (link_id=0x%02x)\n", ul->link_id);
-
- msg->l3h = data_ind->data;
- if (ul->link_id & 0x40) {
- struct gsm48_hdr *gh = (struct gsm48_hdr *)(data_ind->data + 5);
- if (gh->proto_discr == GSM48_PDISC_RR
- && gh->msg_type == GSM48_MT_RR_MEAS_REP) {
- printd("updating measurement report\n");
- l1a_meas_msgb_set(msg);
- return;
- }
- tx_queue = &l1s.tx_queue[L1S_CHAN_SACCH];
- } else
- tx_queue = &l1s.tx_queue[L1S_CHAN_MAIN];
-
- printd("ul=%p, ul->payload=%p, data_ind=%p, data_ind->data=%p l3h=%p\n",
- ul, ul->payload, data_ind, data_ind->data, msg->l3h);
-
- l1a_txq_msgb_enq(tx_queue, msg);
-}
-
-/* receive a L1CTL_PM_REQ from L23 */
-static void l1ctl_rx_pm_req(struct msgb *msg)
-{
- struct l1ctl_hdr *l1h = (struct l1ctl_hdr *) msg->data;
- struct l1ctl_pm_req *pm_req = (struct l1ctl_pm_req *) l1h->data;
-
- switch (pm_req->type) {
- case 1:
- l1s.pm.mode = 1;
- l1s.pm.range.arfcn_start =
- ntohs(pm_req->range.band_arfcn_from);
- l1s.pm.range.arfcn_next =
- ntohs(pm_req->range.band_arfcn_from);
- l1s.pm.range.arfcn_end =
- ntohs(pm_req->range.band_arfcn_to);
- printf("L1CTL_PM_REQ start=%u end=%u\n",
- l1s.pm.range.arfcn_start, l1s.pm.range.arfcn_end);
- break;
- }
-
- l1s_pm_test(1, l1s.pm.range.arfcn_next);
-}
-
-/* Transmit a L1CTL_RESET_IND or L1CTL_RESET_CONF */
-void l1ctl_tx_reset(uint8_t msg_type, uint8_t reset_type)
-{
- struct msgb *msg = l1ctl_msgb_alloc(msg_type);
- struct l1ctl_reset *reset_resp;
- reset_resp = (struct l1ctl_reset *)
- msgb_put(msg, sizeof(*reset_resp));
- reset_resp->type = reset_type;
-
- l1_queue_for_l2(msg);
-}
-
-/* receive a L1CTL_RESET_REQ from L23 */
-static void l1ctl_rx_reset_req(struct msgb *msg)
-{
- struct l1ctl_hdr *l1h = (struct l1ctl_hdr *) msg->data;
- struct l1ctl_reset *reset_req =
- (struct l1ctl_reset *) l1h->data;
-
- switch (reset_req->type) {
- case L1CTL_RES_T_FULL:
- printf("L1CTL_RESET_REQ: FULL!\n");
- l1s_reset();
- l1s_reset_hw();
- audio_set_enabled(GSM48_CMODE_SIGN, 0);
- l1ctl_tx_reset(L1CTL_RESET_CONF, reset_req->type);
- break;
- case L1CTL_RES_T_SCHED:
- printf("L1CTL_RESET_REQ: SCHED!\n");
- l1ctl_tx_reset(L1CTL_RESET_CONF, reset_req->type);
- sched_gsmtime_reset();
- break;
- default:
- printf("unknown L1CTL_RESET_REQ type\n");
- break;
- }
-}
-
-/* Transmit a L1CTL_CCCH_MODE_CONF */
-static void l1ctl_tx_ccch_mode_conf(uint8_t ccch_mode)
-{
- struct msgb *msg = l1ctl_msgb_alloc(L1CTL_CCCH_MODE_CONF);
- struct l1ctl_ccch_mode_conf *mode_conf;
- mode_conf = (struct l1ctl_ccch_mode_conf *)
- msgb_put(msg, sizeof(*mode_conf));
- mode_conf->ccch_mode = ccch_mode;
-
- l1_queue_for_l2(msg);
-}
-
-/* receive a L1CTL_CCCH_MODE_REQ from L23 */
-static void l1ctl_rx_ccch_mode_req(struct msgb *msg)
-{
- struct l1ctl_hdr *l1h = (struct l1ctl_hdr *) msg->data;
- struct l1ctl_ccch_mode_req *ccch_mode_req =
- (struct l1ctl_ccch_mode_req *) l1h->data;
- uint8_t ccch_mode = ccch_mode_req->ccch_mode;
-
- /* pre-set the CCCH mode */
- l1s.serving_cell.ccch_mode = ccch_mode;
-
- /* Update task */
- mframe_disable(MF_TASK_CCCH_COMB);
- mframe_disable(MF_TASK_CCCH);
-
- if (ccch_mode == CCCH_MODE_COMBINED)
- mframe_enable(MF_TASK_CCCH_COMB);
- else if (ccch_mode == CCCH_MODE_NON_COMBINED)
- mframe_enable(MF_TASK_CCCH);
-
- l1ctl_tx_ccch_mode_conf(ccch_mode);
-}
-
-/* Transmit a L1CTL_TCH_MODE_CONF */
-static void l1ctl_tx_tch_mode_conf(uint8_t tch_mode, uint8_t audio_mode)
-{
- struct msgb *msg = l1ctl_msgb_alloc(L1CTL_TCH_MODE_CONF);
- struct l1ctl_tch_mode_conf *mode_conf;
- mode_conf = (struct l1ctl_tch_mode_conf *)
- msgb_put(msg, sizeof(*mode_conf));
- mode_conf->tch_mode = tch_mode;
- mode_conf->audio_mode = audio_mode;
-
- l1_queue_for_l2(msg);
-}
-
-/* receive a L1CTL_TCH_MODE_REQ from L23 */
-static void l1ctl_rx_tch_mode_req(struct msgb *msg)
-{
- struct l1ctl_hdr *l1h = (struct l1ctl_hdr *) msg->data;
- struct l1ctl_tch_mode_req *tch_mode_req =
- (struct l1ctl_tch_mode_req *) l1h->data;
- uint8_t tch_mode = tch_mode_req->tch_mode;
- uint8_t audio_mode = tch_mode_req->audio_mode;
-
- printd("L1CTL_TCH_MODE_REQ (tch_mode=0x%02x audio_mode=0x%02x)\n",
- tch_mode, audio_mode);
- tch_mode = l1a_tch_mode_set(tch_mode);
- audio_mode = l1a_audio_mode_set(audio_mode);
-
- audio_set_enabled(tch_mode, audio_mode);
-
- l1s.tch_sync = 1; /* Needed for audio to work */
-
- l1ctl_tx_tch_mode_conf(tch_mode, audio_mode);
-}
-
-/* receive a L1CTL_NEIGH_PM_REQ from L23 */
-static void l1ctl_rx_neigh_pm_req(struct msgb *msg)
-{
- struct l1ctl_hdr *l1h = (struct l1ctl_hdr *) msg->data;
- struct l1ctl_neigh_pm_req *pm_req =
- (struct l1ctl_neigh_pm_req *) l1h->data;
- int i;
-
- /* reset list in order to prevent race condition */
- l1s.neigh_pm.n = 0; /* atomic */
- l1s.neigh_pm.second = 0;
- /* now reset pointer and fill list */
- l1s.neigh_pm.pos = 0;
- l1s.neigh_pm.running = 0;
- for (i = 0; i < pm_req->n; i++)
- l1s.neigh_pm.band_arfcn[i] = ntohs(pm_req->band_arfcn[i]);
- printf("L1CTL_NEIGH_PM_REQ new list with %u entries\n", pm_req->n);
- l1s.neigh_pm.n = pm_req->n; /* atomic */
-
- /* on BCCH enable PM on frame 51 */
- if (l1s.dedicated.type == GSM_DCHAN_NONE)
- mframe_enable(MF_TASK_NEIGH_PM51);
-}
-
-/* receive a L1CTL_TRAFFIC_REQ from L23 */
-static void l1ctl_rx_traffic_req(struct msgb *msg)
-{
- struct l1ctl_hdr *l1h = (struct l1ctl_hdr *) msg->data;
- struct l1ctl_info_ul *ul = (struct l1ctl_info_ul *) l1h->data;
- struct l1ctl_traffic_req *tr = (struct l1ctl_traffic_req *) ul->payload;
- int num = 0;
-
- /* printd("L1CTL_TRAFFIC_REQ\n"); */ /* Very verbose, can overwelm serial */
-
- msg->l2h = tr->data;
-
- num = l1a_txq_msgb_count(&l1s.tx_queue[L1S_CHAN_TRAFFIC]);
- if (num >= 4) {
- printd("dropping traffic frame\n");
- msgb_free(msg);
- return;
- }
-
- l1a_txq_msgb_enq(&l1s.tx_queue[L1S_CHAN_TRAFFIC], msg);
-}
-
-/* callback from SERCOMM when L2 sends a message to L1 */
-static void l1a_l23_rx_cb(uint8_t dlci, struct msgb *msg)
-{
- struct l1ctl_hdr *l1h = (struct l1ctl_hdr *) msg->data;
-
-#if 0
- {
- int i;
- printf("l1a_l23_rx_cb (%u): ", msg->len);
- for (i = 0; i < msg->len; i++)
- printf("%02x ", msg->data[i]);
- puts("\n");
- }
-#endif
-
- msg->l1h = msg->data;
-
- if (sizeof(*l1h) > msg->len) {
- printf("l1a_l23_cb: Short message. %u\n", msg->len);
- goto exit_msgbfree;
- }
-
- switch (l1h->msg_type) {
- case L1CTL_FBSB_REQ:
- l1ctl_rx_fbsb_req(msg);
- break;
- case L1CTL_DM_EST_REQ:
- l1ctl_rx_dm_est_req(msg);
- break;
- case L1CTL_DM_REL_REQ:
- l1ctl_rx_dm_rel_req(msg);
- break;
- case L1CTL_PARAM_REQ:
- l1ctl_rx_param_req(msg);
- break;
- case L1CTL_DM_FREQ_REQ:
- l1ctl_rx_dm_freq_req(msg);
- break;
- case L1CTL_CRYPTO_REQ:
- l1ctl_rx_crypto_req(msg);
- break;
- case L1CTL_RACH_REQ:
- l1ctl_rx_rach_req(msg);
- break;
- case L1CTL_DATA_REQ:
- l1ctl_rx_data_req(msg);
- /* we have to keep the msgb, not free it! */
- goto exit_nofree;
- case L1CTL_PM_REQ:
- l1ctl_rx_pm_req(msg);
- break;
- case L1CTL_RESET_REQ:
- l1ctl_rx_reset_req(msg);
- break;
- case L1CTL_CCCH_MODE_REQ:
- l1ctl_rx_ccch_mode_req(msg);
- break;
- case L1CTL_TCH_MODE_REQ:
- l1ctl_rx_tch_mode_req(msg);
- break;
- case L1CTL_NEIGH_PM_REQ:
- l1ctl_rx_neigh_pm_req(msg);
- break;
- case L1CTL_TRAFFIC_REQ:
- l1ctl_rx_traffic_req(msg);
- /* we have to keep the msgb, not free it! */
- goto exit_nofree;
- }
-
-exit_msgbfree:
- msgb_free(msg);
-exit_nofree:
- return;
-}
-
-void l1a_l23api_init(void)
-{
- sercomm_register_rx_cb(SC_DLCI_L1A_L23, l1a_l23_rx_cb);
-}
diff --git a/Src/osmoconbb/src/target/firmware/layer1/mframe_sched.c b/Src/osmoconbb/src/target/firmware/layer1/mframe_sched.c
deleted file mode 100644
index 6281c3d..0000000
--- a/Src/osmoconbb/src/target/firmware/layer1/mframe_sched.c
+++ /dev/null
@@ -1,483 +0,0 @@
-/* GSM Multiframe Scheduler Implementation (on top of TDMA sched) */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-#include <string.h>
-
-#include <debug.h>
-
-#include <osmocom/gsm/gsm_utils.h>
-
-#include <layer1/prim.h>
-#include <layer1/sync.h>
-#include <layer1/tdma_sched.h>
-#include <layer1/mframe_sched.h>
-
-/* A multiframe operation which can be scheduled for a multiframe */
-struct mframe_sched_item {
- /* The TDMA scheduler item that shall be scheduled */
- const struct tdma_sched_item *sched_set;
- /* Which modulo shall be used on the frame number */
- uint16_t modulo;
- /* At which number inside the modulo shall we be scheduled */
- uint16_t frame_nr;
- /* bit-mask of flags */
- uint16_t flags;
-};
-
-/* FIXME: properly clean this up */
-#define NB_QUAD_DL nb_sched_set
-#define NB_QUAD_FH_DL NB_QUAD_DL
-#define NB_QUAD_UL nb_sched_set_ul
-#define NB_QUAD_FH_UL NB_QUAD_UL
-#define NEIGH_PM neigh_pm_sched_set
-
-/* BCCH Normal */
-static const struct mframe_sched_item mf_bcch_norm[] = {
- { .sched_set = NB_QUAD_DL, .modulo = 51, .frame_nr = 2 },
- { .sched_set = NULL }
-};
-
-/* BCCH Extended */
-static const struct mframe_sched_item mf_bcch_ext[] = {
- { .sched_set = NB_QUAD_DL, .modulo = 51, .frame_nr = 6 },
- { .sched_set = NULL }
-};
-
-/* Full CCCH in a pure BCCH + CCCH C0T0 */
-static const struct mframe_sched_item mf_ccch[] = {
- { .sched_set = NB_QUAD_DL, .modulo = 51, .frame_nr = 6 },
- { .sched_set = NB_QUAD_DL, .modulo = 51, .frame_nr = 12 },
- { .sched_set = NB_QUAD_DL, .modulo = 51, .frame_nr = 16 },
- { .sched_set = NB_QUAD_DL, .modulo = 51, .frame_nr = 22 },
- { .sched_set = NB_QUAD_DL, .modulo = 51, .frame_nr = 26 },
- { .sched_set = NB_QUAD_DL, .modulo = 51, .frame_nr = 32 },
- { .sched_set = NB_QUAD_DL, .modulo = 51, .frame_nr = 36 },
- { .sched_set = NB_QUAD_DL, .modulo = 51, .frame_nr = 42 },
- { .sched_set = NB_QUAD_DL, .modulo = 51, .frame_nr = 46 },
- { .sched_set = NULL }
-};
-
-/* Full CCCH in a combined CCCH on C0T0 */
-static const struct mframe_sched_item mf_ccch_comb[] = {
- { .sched_set = NB_QUAD_DL, .modulo = 51, .frame_nr = 6 },
- { .sched_set = NB_QUAD_DL, .modulo = 51, .frame_nr = 12 },
- { .sched_set = NB_QUAD_DL, .modulo = 51, .frame_nr = 16 },
- { .sched_set = NULL }
-};
-
-/* SDCCH/4 in a combined CCCH on C0T0, cannot be FH */
-static const struct mframe_sched_item mf_sdcch4_0[] = {
- { .sched_set = NB_QUAD_DL, .modulo = 51, .frame_nr = 22 },
- { .sched_set = NB_QUAD_UL, .modulo = 51, .frame_nr = 22+15 },
- { .sched_set = NB_QUAD_DL, .modulo = 2*51, .frame_nr = 42,
- .flags = MF_F_SACCH },
- { .sched_set = NB_QUAD_UL, .modulo = 2*51, .frame_nr = 42+15,
- .flags = MF_F_SACCH },
- { .sched_set = NULL }
-};
-static const struct mframe_sched_item mf_sdcch4_1[] = {
- { .sched_set = NB_QUAD_DL, .modulo = 51, .frame_nr = 26 },
- { .sched_set = NB_QUAD_UL, .modulo = 51, .frame_nr = 26+15 },
- { .sched_set = NB_QUAD_DL, .modulo = 2*51, .frame_nr = 46,
- .flags = MF_F_SACCH },
- { .sched_set = NB_QUAD_UL, .modulo = 2*51, .frame_nr = 46+15,
- .flags = MF_F_SACCH },
- { .sched_set = NULL }
-};
-static const struct mframe_sched_item mf_sdcch4_2[] = {
- { .sched_set = NB_QUAD_DL, .modulo = 51, .frame_nr = 32 },
- { .sched_set = NB_QUAD_UL, .modulo = 51, .frame_nr = 32+15 },
- { .sched_set = NB_QUAD_DL, .modulo = 2*51, .frame_nr = 51+42,
- .flags = MF_F_SACCH },
- { .sched_set = NB_QUAD_UL, .modulo = 2*51, .frame_nr = 51+42+15,
- .flags = MF_F_SACCH },
- { .sched_set = NULL }
-};
-static const struct mframe_sched_item mf_sdcch4_3[] = {
- { .sched_set = NB_QUAD_DL, .modulo = 51, .frame_nr = 36 },
- { .sched_set = NB_QUAD_UL, .modulo = 51, .frame_nr = 36+15 },
- { .sched_set = NB_QUAD_DL, .modulo = 2*51, .frame_nr = 51+46,
- .flags = MF_F_SACCH },
- { .sched_set = NB_QUAD_UL, .modulo = 2*51, .frame_nr = 51+46+15,
- .flags = MF_F_SACCH },
- { .sched_set = NULL }
-};
-
-/* SDCCH/8, can be frequency hopping (FH) */
-static const struct mframe_sched_item mf_sdcch8_0[] = {
- { .sched_set = NB_QUAD_FH_DL, .modulo = 51, .frame_nr = 0 },
- { .sched_set = NB_QUAD_FH_UL, .modulo = 51, .frame_nr = 0+15 },
- { .sched_set = NB_QUAD_FH_DL, .modulo = 2*51, .frame_nr = 32,
- .flags = MF_F_SACCH },
- { .sched_set = NB_QUAD_FH_UL, .modulo = 2*51, .frame_nr = 32+15,
- .flags = MF_F_SACCH },
- { .sched_set = NULL }
-};
-static const struct mframe_sched_item mf_sdcch8_1[] = {
- { .sched_set = NB_QUAD_FH_DL, .modulo = 51, .frame_nr = 4 },
- { .sched_set = NB_QUAD_FH_UL, .modulo = 51, .frame_nr = 4+15 },
- { .sched_set = NB_QUAD_FH_DL, .modulo = 2*51, .frame_nr = 36,
- .flags = MF_F_SACCH },
- { .sched_set = NB_QUAD_FH_UL, .modulo = 2*51, .frame_nr = 36+15,
- .flags = MF_F_SACCH },
- { .sched_set = NULL }
-};
-static const struct mframe_sched_item mf_sdcch8_2[] = {
- { .sched_set = NB_QUAD_FH_DL, .modulo = 51, .frame_nr = 8 },
- { .sched_set = NB_QUAD_FH_UL, .modulo = 51, .frame_nr = 8+15 },
- { .sched_set = NB_QUAD_FH_DL, .modulo = 2*51, .frame_nr = 40,
- .flags = MF_F_SACCH },
- { .sched_set = NB_QUAD_FH_UL, .modulo = 2*51, .frame_nr = 40+15,
- .flags = MF_F_SACCH },
- { .sched_set = NULL }
-};
-static const struct mframe_sched_item mf_sdcch8_3[] = {
- { .sched_set = NB_QUAD_FH_DL, .modulo = 51, .frame_nr = 12 },
- { .sched_set = NB_QUAD_FH_UL, .modulo = 51, .frame_nr = 12+15 },
- { .sched_set = NB_QUAD_FH_DL, .modulo = 2*51, .frame_nr = 44,
- .flags = MF_F_SACCH },
- { .sched_set = NB_QUAD_FH_UL, .modulo = 2*51, .frame_nr = 44+15,
- .flags = MF_F_SACCH },
- { .sched_set = NULL }
-};
-static const struct mframe_sched_item mf_sdcch8_4[] = {
- { .sched_set = NB_QUAD_FH_DL, .modulo = 51, .frame_nr = 16 },
- { .sched_set = NB_QUAD_FH_UL, .modulo = 51, .frame_nr = 16+15 },
- { .sched_set = NB_QUAD_FH_DL, .modulo = 2*51, .frame_nr = 51+32,
- .flags = MF_F_SACCH },
- { .sched_set = NB_QUAD_FH_UL, .modulo = 2*51, .frame_nr = 51+32+15,
- .flags = MF_F_SACCH },
- { .sched_set = NULL }
-};
-static const struct mframe_sched_item mf_sdcch8_5[] = {
- { .sched_set = NB_QUAD_FH_DL, .modulo = 51, .frame_nr = 20 },
- { .sched_set = NB_QUAD_FH_UL, .modulo = 51, .frame_nr = 20+15 },
- { .sched_set = NB_QUAD_FH_DL, .modulo = 2*51, .frame_nr = 51+36,
- .flags = MF_F_SACCH },
- { .sched_set = NB_QUAD_FH_UL, .modulo = 2*51, .frame_nr = 51+36+15,
- .flags = MF_F_SACCH },
- { .sched_set = NULL }
-};
-static const struct mframe_sched_item mf_sdcch8_6[] = {
- { .sched_set = NB_QUAD_FH_DL, .modulo = 51, .frame_nr = 24 },
- { .sched_set = NB_QUAD_FH_UL, .modulo = 51, .frame_nr = 24+15 },
- { .sched_set = NB_QUAD_FH_DL, .modulo = 2*51, .frame_nr = 51+40,
- .flags = MF_F_SACCH },
- { .sched_set = NB_QUAD_FH_UL, .modulo = 2*51, .frame_nr = 51+40+15,
- .flags = MF_F_SACCH },
- { .sched_set = NULL }
-};
-static const struct mframe_sched_item mf_sdcch8_7[] = {
- { .sched_set = NB_QUAD_FH_DL, .modulo = 51, .frame_nr = 28 },
- { .sched_set = NB_QUAD_FH_UL, .modulo = 51, .frame_nr = 28+15 },
- { .sched_set = NB_QUAD_FH_DL, .modulo = 2*51, .frame_nr = 51+44,
- .flags = MF_F_SACCH },
- { .sched_set = NB_QUAD_FH_UL, .modulo = 2*51, .frame_nr = 51+44+15,
- .flags = MF_F_SACCH },
- { .sched_set = NULL }
-};
-
-/* Measurement for MF 51 */
-static const struct mframe_sched_item mf_neigh_pm51[] = {
- { .sched_set = NEIGH_PM , .modulo = 51, .frame_nr = 50 },
- { .sched_set = NULL }
-};
-
-/* TCH */
-#define TCH tch_sched_set
-#define TCH_A tch_a_sched_set
-#define TCH_D tch_d_sched_set
-
-static const struct mframe_sched_item mf_tch_f_even[] = {
- { .sched_set = TCH, .modulo = 13, .frame_nr = 0 },
- { .sched_set = TCH, .modulo = 13, .frame_nr = 1 },
- { .sched_set = TCH, .modulo = 13, .frame_nr = 2 },
- { .sched_set = TCH, .modulo = 13, .frame_nr = 3 },
- { .sched_set = TCH, .modulo = 13, .frame_nr = 4 },
- { .sched_set = TCH, .modulo = 13, .frame_nr = 5 },
- { .sched_set = TCH, .modulo = 13, .frame_nr = 6 },
- { .sched_set = TCH, .modulo = 13, .frame_nr = 7 },
- { .sched_set = TCH, .modulo = 13, .frame_nr = 8 },
- { .sched_set = TCH, .modulo = 13, .frame_nr = 9 },
- { .sched_set = TCH, .modulo = 13, .frame_nr = 10 },
- { .sched_set = TCH, .modulo = 13, .frame_nr = 11 },
- { .sched_set = TCH_A, .modulo = 26, .frame_nr = 12,
- .flags = MF_F_SACCH },
- { .sched_set = NULL }
-};
-
-static const struct mframe_sched_item mf_tch_f_odd[] = {
- { .sched_set = TCH, .modulo = 13, .frame_nr = 0 },
- { .sched_set = TCH, .modulo = 13, .frame_nr = 1 },
- { .sched_set = TCH, .modulo = 13, .frame_nr = 2 },
- { .sched_set = TCH, .modulo = 13, .frame_nr = 3 },
- { .sched_set = TCH, .modulo = 13, .frame_nr = 4 },
- { .sched_set = TCH, .modulo = 13, .frame_nr = 5 },
- { .sched_set = TCH, .modulo = 13, .frame_nr = 6 },
- { .sched_set = TCH, .modulo = 13, .frame_nr = 7 },
- { .sched_set = TCH, .modulo = 13, .frame_nr = 8 },
- { .sched_set = TCH, .modulo = 13, .frame_nr = 9 },
- { .sched_set = TCH, .modulo = 13, .frame_nr = 10 },
- { .sched_set = TCH, .modulo = 13, .frame_nr = 11 },
- { .sched_set = TCH_A, .modulo = 26, .frame_nr = 25,
- .flags = MF_F_SACCH },
- { .sched_set = NULL }
-};
-
-static const struct mframe_sched_item mf_tch_h_0[] = {
- { .sched_set = TCH, .modulo = 13, .frame_nr = 0 },
- { .sched_set = TCH_D, .modulo = 13, .frame_nr = 1 },
- { .sched_set = TCH, .modulo = 13, .frame_nr = 2 },
- { .sched_set = TCH_D, .modulo = 13, .frame_nr = 3 },
- { .sched_set = TCH, .modulo = 13, .frame_nr = 4 },
- { .sched_set = TCH_D, .modulo = 13, .frame_nr = 5 },
- { .sched_set = TCH, .modulo = 13, .frame_nr = 6 },
- { .sched_set = TCH_D, .modulo = 13, .frame_nr = 7 },
- { .sched_set = TCH, .modulo = 13, .frame_nr = 8 },
- { .sched_set = TCH_D, .modulo = 13, .frame_nr = 9 },
- { .sched_set = TCH, .modulo = 13, .frame_nr = 10 },
- { .sched_set = TCH_D, .modulo = 13, .frame_nr = 11 },
- { .sched_set = TCH_A, .modulo = 26, .frame_nr = 12,
- .flags = MF_F_SACCH },
- { .sched_set = NULL }
-};
-
-static const struct mframe_sched_item mf_tch_h_1[] = {
- { .sched_set = TCH_D, .modulo = 13, .frame_nr = 0 },
- { .sched_set = TCH, .modulo = 13, .frame_nr = 1 },
- { .sched_set = TCH_D, .modulo = 13, .frame_nr = 2 },
- { .sched_set = TCH, .modulo = 13, .frame_nr = 3 },
- { .sched_set = TCH_D, .modulo = 13, .frame_nr = 4 },
- { .sched_set = TCH, .modulo = 13, .frame_nr = 5 },
- { .sched_set = TCH_D, .modulo = 13, .frame_nr = 6 },
- { .sched_set = TCH, .modulo = 13, .frame_nr = 7 },
- { .sched_set = TCH_D, .modulo = 13, .frame_nr = 8 },
- { .sched_set = TCH, .modulo = 13, .frame_nr = 9 },
- { .sched_set = TCH_D, .modulo = 13, .frame_nr = 10 },
- { .sched_set = TCH, .modulo = 13, .frame_nr = 11 },
- { .sched_set = TCH_A, .modulo = 26, .frame_nr = 25,
- .flags = MF_F_SACCH },
- { .sched_set = NULL }
-};
-
-/* Measurement for MF 26 */
-static const struct mframe_sched_item mf_neigh_pm26_even[] = {
- { .sched_set = NEIGH_PM , .modulo = 26, .frame_nr = 25 },
- { .sched_set = NULL }
-};
-static const struct mframe_sched_item mf_neigh_pm26_odd[] = {
- { .sched_set = NEIGH_PM , .modulo = 26, .frame_nr = 12 },
- { .sched_set = NULL }
-};
-
-/* Test TX */
-static const struct mframe_sched_item mf_tx_all_nb[] = {
- { .sched_set = NB_QUAD_FH_UL, .modulo = 4, .frame_nr = 0 },
- { .sched_set = NULL }
-};
-
-static const struct mframe_sched_item *sched_set_for_task[32] = {
- [MF_TASK_BCCH_NORM] = mf_bcch_norm,
- [MF_TASK_BCCH_EXT] = mf_bcch_ext,
- [MF_TASK_CCCH] = mf_ccch,
- [MF_TASK_CCCH_COMB] = mf_ccch_comb,
-
- [MF_TASK_SDCCH4_0] = mf_sdcch4_0,
- [MF_TASK_SDCCH4_1] = mf_sdcch4_1,
- [MF_TASK_SDCCH4_2] = mf_sdcch4_2,
- [MF_TASK_SDCCH4_3] = mf_sdcch4_3,
-
- [MF_TASK_SDCCH8_0] = mf_sdcch8_0,
- [MF_TASK_SDCCH8_1] = mf_sdcch8_1,
- [MF_TASK_SDCCH8_2] = mf_sdcch8_2,
- [MF_TASK_SDCCH8_3] = mf_sdcch8_3,
- [MF_TASK_SDCCH8_4] = mf_sdcch8_4,
- [MF_TASK_SDCCH8_5] = mf_sdcch8_5,
- [MF_TASK_SDCCH8_6] = mf_sdcch8_6,
- [MF_TASK_SDCCH8_7] = mf_sdcch8_7,
-
- [MF_TASK_TCH_F_EVEN] = mf_tch_f_even,
- [MF_TASK_TCH_F_ODD] = mf_tch_f_odd,
- [MF_TASK_TCH_H_0] = mf_tch_h_0,
- [MF_TASK_TCH_H_1] = mf_tch_h_1,
-
- [MF_TASK_NEIGH_PM51] = mf_neigh_pm51,
- [MF_TASK_NEIGH_PM26E] = mf_neigh_pm26_even,
- [MF_TASK_NEIGH_PM26O] = mf_neigh_pm26_odd,
-
- [MF_TASK_UL_ALL_NB] = mf_tx_all_nb,
-};
-
-/* encodes a channel number according to 08.58 Chapter 9.3.1 */
-uint8_t mframe_task2chan_nr(enum mframe_task mft, uint8_t ts)
-{
- uint8_t cbits;
-
- switch (mft) {
- case MF_TASK_BCCH_NORM:
- case MF_TASK_BCCH_EXT:
- cbits = 0x10;
- break;
- case MF_TASK_CCCH:
- case MF_TASK_CCCH_COMB:
- cbits = 0x12;
- break;
- case MF_TASK_SDCCH4_0:
- cbits = 0x04 + 0;
- break;
- case MF_TASK_SDCCH4_1:
- cbits = 0x04 + 1;
- break;
- case MF_TASK_SDCCH4_2:
- cbits = 0x04 + 2;
- break;
- case MF_TASK_SDCCH4_3:
- cbits = 0x04 + 3;
- break;
- case MF_TASK_SDCCH8_0:
- cbits = 0x08 + 0;
- break;
- case MF_TASK_SDCCH8_1:
- cbits = 0x08 + 1;
- break;
- case MF_TASK_SDCCH8_2:
- cbits = 0x08 + 2;
- break;
- case MF_TASK_SDCCH8_3:
- cbits = 0x08 + 3;
- break;
- case MF_TASK_SDCCH8_4:
- cbits = 0x08 + 4;
- break;
- case MF_TASK_SDCCH8_5:
- cbits = 0x08 + 5;
- break;
- case MF_TASK_SDCCH8_6:
- cbits = 0x08 + 6;
- break;
- case MF_TASK_SDCCH8_7:
- cbits = 0x08 + 7;
- break;
- case MF_TASK_TCH_F_EVEN:
- case MF_TASK_TCH_F_ODD:
- cbits = 0x01;
- break;
- case MF_TASK_TCH_H_0:
- cbits = 0x02 + 0;
- break;
- case MF_TASK_TCH_H_1:
- cbits = 0x02 + 1;
- break;
- case MF_TASK_UL_ALL_NB:
- /* ERROR: cannot express as channel number */
- cbits = 0;
- break;
- }
-
- return (cbits << 3) | (ts & 0x7);
-}
-
-/* how many TDMA frame ticks should we schedule events ahead? */
-#define SCHEDULE_AHEAD 2
-
-/* how long do we need to tell the DSP in advance what we want to do? */
-#define SCHEDULE_LATENCY 1
-
-/* (test and) schedule one particular sched_item_set by means of the TDMA scheduler */
-static void mframe_schedule_set(enum mframe_task task_id)
-{
- const struct mframe_sched_item *set = sched_set_for_task[task_id];
- const struct mframe_sched_item *si;
-
- for (si = set; si->sched_set != NULL; si++) {
- unsigned int trigger = si->frame_nr % si->modulo;
- unsigned int current = (l1s.current_time.fn + SCHEDULE_AHEAD) % si->modulo;
- if (current == trigger) {
- uint32_t fn;
- int rv;
-
- /* Schedule the set */
- /* FIXME: what to do with SACCH Flag etc? */
- rv = tdma_schedule_set(SCHEDULE_AHEAD-SCHEDULE_LATENCY,
- si->sched_set, task_id | (si->flags<<8));
-
- /* Compute the next safe time to queue a DSP command */
- fn = l1s.current_time.fn;
- ADD_MODULO(fn, rv - 2, GSM_MAX_FN); /* -2 = worst case last dsp command */
- if ((fn > l1s.mframe_sched.safe_fn) ||
- (l1s.mframe_sched.safe_fn >= GSM_MAX_FN))
- l1s.mframe_sched.safe_fn = fn;
- }
- }
-}
-
-/* Enable a specific task */
-void mframe_enable(enum mframe_task task_id)
-{
- l1s.mframe_sched.tasks_tgt |= (1 << task_id);
-}
-
-/* Disable a specific task */
-void mframe_disable(enum mframe_task task_id)
-{
- l1s.mframe_sched.tasks_tgt &= ~(1 << task_id);
-}
-
-/* Replace the current active set by the new one */
-void mframe_set(uint32_t tasks)
-{
- l1s.mframe_sched.tasks_tgt = tasks;
-}
-
-/* Schedule mframe_sched_items according to current MF TASK list */
-void mframe_schedule(void)
-{
- unsigned int i;
- int fn_diff;
-
- /* Try to enable/disable task to meet target bitmap */
- fn_diff = l1s.mframe_sched.safe_fn - l1s.current_time.fn;
- if ((fn_diff <= 0) || (fn_diff >= (GSM_MAX_FN>>1)) ||
- (l1s.mframe_sched.safe_fn >= GSM_MAX_FN))
- /* If nothing is in the way, enable new tasks */
- l1s.mframe_sched.tasks = l1s.mframe_sched.tasks_tgt;
- else
- /* Else, Disable only */
- l1s.mframe_sched.tasks &= l1s.mframe_sched.tasks_tgt;
-
- /* Schedule any active pending set */
- for (i = 0; i < 32; i++) {
- if (l1s.mframe_sched.tasks & (1 << i))
- mframe_schedule_set(i);
- }
-}
-
-/* reset the scheduler, disabling all tasks */
-void mframe_reset(void)
-{
- l1s.mframe_sched.tasks = 0;
- l1s.mframe_sched.tasks_tgt = 0;
- l1s.mframe_sched.safe_fn = -1UL; /* Force safe */
-}
-
diff --git a/Src/osmoconbb/src/target/firmware/layer1/prim_fbsb.c b/Src/osmoconbb/src/target/firmware/layer1/prim_fbsb.c
deleted file mode 100644
index 53e30c8..0000000
--- a/Src/osmoconbb/src/target/firmware/layer1/prim_fbsb.c
+++ /dev/null
@@ -1,573 +0,0 @@
-/* Layer 1 - FCCH and SCH burst handling */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <errno.h>
-
-#include <defines.h>
-#include <debug.h>
-#include <memory.h>
-#include <byteorder.h>
-#include <osmocom/gsm/gsm_utils.h>
-#include <osmocom/core/msgb.h>
-#include <calypso/dsp_api.h>
-#include <calypso/irq.h>
-#include <calypso/tpu.h>
-#include <calypso/tsp.h>
-#include <calypso/dsp.h>
-#include <calypso/timer.h>
-#include <comm/sercomm.h>
-
-#include <layer1/sync.h>
-#include <layer1/afc.h>
-#include <layer1/toa.h>
-#include <layer1/tdma_sched.h>
-#include <layer1/mframe_sched.h>
-#include <layer1/tpu_window.h>
-#include <layer1/l23_api.h>
-
-#include <l1ctl_proto.h>
-
-#define FB0_RETRY_COUNT 3
-#define AFC_RETRY_COUNT 30
-
-extern uint16_t rf_arfcn; // TODO
-
-struct mon_state {
- uint32_t fnr_report; /* frame number when DSP reported it */
- int attempt; /* which attempt was this ? */
-
- int16_t toa;
- uint16_t pm;
- uint16_t angle;
- uint16_t snr;
-
- /* computed values */
- int16_t freq_diff;
-
- /* Sync Burst (SB) */
- uint8_t bsic;
- struct gsm_time time;
-};
-
-struct l1a_fb_state {
- struct mon_state mon;
- struct l1ctl_fbsb_req req;
- int16_t initial_freq_err;
- uint8_t fb_retries;
- uint8_t afc_retries;
-};
-
-static struct l1a_fb_state fbs;
-static struct mon_state *last_fb = &fbs.mon;
-
-static void dump_mon_state(struct mon_state *fb)
-{
-#if 0
- printf("(%u:%u): TOA=%5u, Power=%4ddBm, Angle=%5dHz, "
- "SNR=%04x(%d.%u) OFFSET=%u SYNCHRO=%u\n",
- fb->fnr_report, fb->attempt, fb->toa,
- agc_inp_dbm8_by_pm(fb->pm)/8, ANGLE_TO_FREQ(fb->angle),
- fb->snr, l1s_snr_int(fb->snr), l1s_snr_fract(fb->snr),
- tpu_get_offset(), tpu_get_synchro());
-#else
- printf("(%u:%u): TOA=%5u, Power=%4ddBm, Angle=%5dHz\n",
- fb->fnr_report, fb->attempt, fb->toa,
- agc_inp_dbm8_by_pm(fb->pm)/8, ANGLE_TO_FREQ(fb->angle));
-#endif
-}
-
-static int l1ctl_fbsb_resp(uint8_t res)
-{
- struct msgb *msg;
- struct l1ctl_fbsb_conf *resp;
-
- msg = l1_create_l2_msg(L1CTL_FBSB_CONF, fbs.mon.time.fn,
- l1s_snr_int(fbs.mon.snr),
- fbs.req.band_arfcn);
- if (!msg)
- return -ENOMEM;
-
- resp = (struct l1ctl_fbsb_conf *) msgb_put(msg, sizeof(*resp));
- resp->initial_freq_err = htons(fbs.initial_freq_err);
- resp->result = res;
- resp->bsic = fbs.mon.bsic;
-
- /* no need to set BSIC, as it is never used here */
- l1_queue_for_l2(msg);
-
- return 0;
-}
-
-/* SCH Burst Detection ********************************************************/
-
-/* determine the GSM time and BSIC from a Sync Burst */
-static uint8_t l1s_decode_sb(struct gsm_time *time, uint32_t sb)
-{
- uint8_t bsic = (sb >> 2) & 0x3f;
- uint8_t t3p;
-
- memset(time, 0, sizeof(*time));
-
- /* TS 05.02 Chapter 3.3.2.2.1 SCH Frame Numbers */
- time->t1 = ((sb >> 23) & 1) | ((sb >> 7) & 0x1fe) | ((sb << 9) & 0x600);
- time->t2 = (sb >> 18) & 0x1f;
- t3p = ((sb >> 24) & 1) | ((sb >> 15) & 6);
- time->t3 = t3p*10 + 1;
-
- /* TS 05.02 Chapter 4.3.3 TDMA frame number */
- time->fn = gsm_gsmtime2fn(time);
-
- time->tc = (time->fn / 51) % 8;
-
- return bsic;
-}
-
-static void read_sb_result(struct mon_state *st, int attempt)
-{
- st->toa = dsp_api.db_r->a_serv_demod[D_TOA];
- st->pm = dsp_api.db_r->a_serv_demod[D_PM]>>3;
- st->angle = dsp_api.db_r->a_serv_demod[D_ANGLE];
- st->snr = dsp_api.db_r->a_serv_demod[D_SNR];
-
- st->freq_diff = ANGLE_TO_FREQ(st->angle);
- st->fnr_report = l1s.current_time.fn;
- st->attempt = attempt;
-
- dump_mon_state(st);
-
- if (st->snr > AFC_SNR_THRESHOLD)
- afc_input(st->freq_diff, rf_arfcn, 1);
- else
- afc_input(st->freq_diff, rf_arfcn, 0);
-
- dsp_api.r_page_used = 1;
-}
-
-/* Note: When we get the SB response, it is 2 TDMA frames after the SB
- * actually happened, as it is a "C W W R" task */
-#define SB2_LATENCY 2
-
-static int l1s_sbdet_resp(__unused uint8_t p1, uint8_t attempt,
- __unused uint16_t p3)
-{
- uint32_t sb;
- int qbits, fn_offset;
- struct l1_cell_info *cinfo = &l1s.serving_cell;
- int fnr_delta, bits_delta;
- struct l1ctl_sync_new_ccch_resp *l1;
- struct msgb *msg;
-
- putchart('s');
-
- if (dsp_api.db_r->a_sch[0] & (1<<B_SCH_CRC)) {
- /* mark READ page as being used */
- dsp_api.r_page_used = 1;
-
- /* after 2nd attempt, we failed */
- if (attempt == 2) {
- last_fb->attempt = 13;
- l1s_compl_sched(L1_COMPL_FB);
- }
-
- /* after 1st attempt, we simply wait for 2nd */
- return 0;
- }
-
- printf("SB%d ", attempt);
- read_sb_result(last_fb, attempt);
-
- sb = dsp_api.db_r->a_sch[3] | dsp_api.db_r->a_sch[4] << 16;
- fbs.mon.bsic = l1s_decode_sb(&fbs.mon.time, sb);
- printf("=> SB 0x%08x: BSIC=%u ", sb, fbs.mon.bsic);
- l1s_time_dump(&fbs.mon.time);
-
- l1s.serving_cell.bsic = fbs.mon.bsic;
-
- /* calculate synchronisation value (TODO: only complete for qbits) */
- last_fb->toa -= 23;
- qbits = last_fb->toa * 4;
- fn_offset = l1s.current_time.fn; // TODO
-
- if (qbits > QBITS_PER_TDMA) {
- qbits -= QBITS_PER_TDMA;
- fn_offset -= 1;
- } else if (qbits < 0) {
- qbits += QBITS_PER_TDMA;
- fn_offset += 1;
- }
-
- fnr_delta = last_fb->fnr_report - attempt;
- bits_delta = fnr_delta * BITS_PER_TDMA;
-
- cinfo->fn_offset = fnr_delta;
- cinfo->time_alignment = qbits;
- cinfo->arfcn = rf_arfcn;
-
- if (last_fb->toa > bits_delta)
- printf("=> DSP reports SB in bit that is %d bits in the "
- "future?!?\n", last_fb->toa - bits_delta);
- else
- printf(" qbits=%u\n", qbits);
-
- synchronize_tdma(&l1s.serving_cell);
-
- /* if we have recived a SYNC burst, update our local GSM time */
- gsm_fn2gsmtime(&l1s.current_time, fbs.mon.time.fn + SB2_LATENCY);
- /* compute next time from new current time */
- l1s.next_time = l1s.current_time;
- l1s_time_inc(&l1s.next_time, 1);
-
- /* If we call tdma_sched_reset(), which is only needed if there
- * are further l1s_sbdet_resp() scheduled, we will bring
- * dsp_api.db_r and dsp_api.db_w out of sync because we changed
- * dsp_api.db_w for l1s_sbdet_cmd() and canceled
- * l1s_sbdet_resp() which would change dsp_api.db_r. The DSP
- * however expects dsp_api.db_w and dsp_api.db_r to be in sync
- * (either "0 - 0" or "1 - 1"). So we have to bring dsp_api.db_w
- * and dsp_api.db_r into sync again, otherwise NB reading will
- * complain. We probably don't need the Abort command and could
- * just bring dsp_api.db_w and dsp_api.db_r into sync. */
- if (attempt != 2) {
- tdma_sched_reset();
- l1s_dsp_abort();
- }
-
- l1s_reset_hw();
- /* enable the MF Task for BCCH reading */
- mframe_enable(MF_TASK_BCCH_NORM);
- if (l1s.serving_cell.ccch_mode == CCCH_MODE_COMBINED)
- mframe_enable(MF_TASK_CCCH_COMB);
- else if (l1s.serving_cell.ccch_mode == CCCH_MODE_NON_COMBINED)
- mframe_enable(MF_TASK_CCCH);
-
- l1s_compl_sched(L1_COMPL_FB);
-
- return 0;
-}
-
-static int l1s_sbdet_cmd(__unused uint8_t p1, __unused uint8_t p2,
- __unused uint16_t p3)
-{
- putchart('S');
-
- fbs.mon.bsic = 0;
- fbs.mon.time.fn = 0;
-
- dsp_api.db_w->d_task_md = SB_DSP_TASK;
- dsp_api.ndb->d_fb_mode = 0; /* wideband search */
-
- /* Program TPU */
- l1s_rx_win_ctrl(rf_arfcn, L1_RXWIN_SB, 0);
-
- return 0;
-}
-
-/* This is how it is done by the TSM30 */
-static const struct tdma_sched_item sb_sched_set[] = {
- SCHED_ITEM_DT(l1s_sbdet_cmd, 0, 0, 1), SCHED_END_FRAME(),
- SCHED_ITEM_DT(l1s_sbdet_cmd, 0, 0, 2), SCHED_END_FRAME(),
- SCHED_END_FRAME(),
- SCHED_ITEM(l1s_sbdet_resp, -4, 0, 1), SCHED_END_FRAME(),
- SCHED_ITEM(l1s_sbdet_resp, -4, 0, 2), SCHED_END_FRAME(),
- SCHED_END_SET()
-};
-
-void l1s_sb_test(uint8_t base_fn)
-{
- tdma_schedule_set(base_fn, sb_sched_set, 0);
-}
-/* FCCH Burst *****************************************************************/
-
-static int read_fb_result(struct mon_state *st, int attempt)
-{
- st->toa = dsp_api.ndb->a_sync_demod[D_TOA];
- st->pm = dsp_api.ndb->a_sync_demod[D_PM]>>3;
- st->angle = dsp_api.ndb->a_sync_demod[D_ANGLE];
- st->snr = dsp_api.ndb->a_sync_demod[D_SNR];
-
- //last_fb->angle = clip_int16(last_fb->angle, AFC_MAX_ANGLE);
- st->freq_diff = ANGLE_TO_FREQ(last_fb->angle);
- st->fnr_report = l1s.current_time.fn;
- st->attempt = attempt;
-
- dump_mon_state(st);
-
- dsp_api.ndb->d_fb_det = 0;
- dsp_api.ndb->a_sync_demod[D_TOA] = 0; /* TSM30 does it (really needed ?) */
-
- /* Update AFC with current frequency offset */
- afc_correct(st->freq_diff, rf_arfcn);
-
- //tpu_dsp_frameirq_enable();
- return 1;
-}
-
-static void fbinfo2cellinfo(struct l1_cell_info *cinfo,
- const struct mon_state *mon)
-{
- int ntdma, qbits, fn_offset, fnr_delta, bits_delta;
-
- /* FIXME: where did this magic 23 come from? */
- last_fb->toa -= 23;
-
- if (last_fb->toa < 0) {
- qbits = (last_fb->toa + BITS_PER_TDMA) * 4;
- ntdma = -1;
- } else {
- ntdma = (last_fb->toa) / BITS_PER_TDMA;
- qbits = (last_fb->toa - ntdma * BITS_PER_TDMA) * 4;
- }
-
- fn_offset = l1s.current_time.fn - last_fb->attempt + ntdma;
- fnr_delta = last_fb->fnr_report - last_fb->attempt;
- bits_delta = fnr_delta * BITS_PER_TDMA;
-
- cinfo->fn_offset = fnr_delta;
- cinfo->time_alignment = qbits;
- cinfo->arfcn = rf_arfcn;
-
- if (last_fb->toa > bits_delta)
- printf("=> DSP reports FB in bit that is %d bits in "
- "the future?!?\n", last_fb->toa - bits_delta);
- else {
- int fb_fnr = (last_fb->fnr_report - last_fb->attempt)
- + last_fb->toa/BITS_PER_TDMA;
- printf("=>FB @ FNR %u fn_offset=%d qbits=%u\n",
- fb_fnr, fn_offset, qbits);
- }
-}
-
-/* scheduler callback to issue a FB detection task to the DSP */
-static int l1s_fbdet_cmd(__unused uint8_t p1, __unused uint8_t p2,
- uint16_t fb_mode)
-{
- if (fb_mode == 0) {
- putchart('F');
- } else {
- putchart('V');
- }
-
- l1s.fb.mode = fb_mode;
-
- /* Tell the RF frontend to set the gain appropriately */
- rffe_compute_gain(-85, CAL_DSP_TGT_BB_LVL);
-
- /* Program DSP */
- dsp_api.db_w->d_task_md = FB_DSP_TASK; /* maybe with I/Q swap? */
- dsp_api.ndb->d_fb_mode = fb_mode;
-
- /* Program TPU */
- l1s_rx_win_ctrl(fbs.req.band_arfcn, L1_RXWIN_FB, 0);
-
- return 0;
-}
-
-#if 0
-#define FB0_SNR_THRESH 2000
-#define FB1_SNR_THRESH 3000
-#else
-#define FB0_SNR_THRESH 0
-#define FB1_SNR_THRESH 0
-#endif
-
-static const struct tdma_sched_item fb_sched_set[];
-
-/* scheduler callback to check for a FB detection response */
-static int l1s_fbdet_resp(__unused uint8_t p1, uint8_t attempt,
- uint16_t fb_mode)
-{
- putchart('f');
-
- if (!dsp_api.ndb->d_fb_det) {
- /* we did not detect a FB */
-
- /* attempt < 12, do nothing */
- if (attempt < 12)
- return 0;
-
- /* attempt >= 12, we simply don't find one */
-
- /* If we don't reset here, we get DSP DMA errors */
- tdma_sched_reset();
-
- if (fbs.fb_retries < FB0_RETRY_COUNT) {
- /* retry once more */
- tdma_schedule_set(1, fb_sched_set, 0);
- fbs.fb_retries++;
- } else {
- last_fb->attempt = 13;
- l1s_compl_sched(L1_COMPL_FB);
- }
-
- return 0;
- }
-
- /* We found a frequency burst, reset everything */
- l1s_reset_hw();
-
- printf("FB%u ", dsp_api.ndb->d_fb_mode);
- read_fb_result(last_fb, attempt);
-
- /* if this is the first success, save freq err */
- if (!fbs.initial_freq_err)
- fbs.initial_freq_err = last_fb->freq_diff;
-
- /* If we don't reset here, we get DSP DMA errors */
- tdma_sched_reset();
-
- /* Immediately schedule further TDMA tasklets, if requested. Doing
- * this directly from L1S means we can do this quickly without any
- * additional delays */
- if (fb_mode == 0) {
- if (fbs.req.flags & L1CTL_FBSB_F_FB1) {
- /* If we don't reset here, we get DSP DMA errors */
- tdma_sched_reset();
- /* FIXME: don't only use the last but an average */
- if (abs(last_fb->freq_diff) < fbs.req.freq_err_thresh1 &&
- last_fb->snr > FB0_SNR_THRESH) {
- /* continue with FB1 task in DSP */
- tdma_schedule_set(1, fb_sched_set, 1);
- } else {
- if (fbs.afc_retries < AFC_RETRY_COUNT) {
- tdma_schedule_set(1, fb_sched_set, 0);
- fbs.afc_retries++;
- } else {
- /* Abort */
- last_fb->attempt = 13;
- l1s_compl_sched(L1_COMPL_FB);
- }
- }
- } else
- l1s_compl_sched(L1_COMPL_FB);
- } else if (fb_mode == 1) {
- if (fbs.req.flags & L1CTL_FBSB_F_SB) {
-
- int ntdma, qbits;
- /* FIXME: where did this magic 23 come from? */
- last_fb->toa -= 23;
-
- if (last_fb->toa < 0) {
- qbits = (last_fb->toa + BITS_PER_TDMA) * 4;
- ntdma = -1;
- } else {
- ntdma = (last_fb->toa) / BITS_PER_TDMA;
- qbits = (last_fb->toa - ntdma * BITS_PER_TDMA) * 4;
- }
-
-
- int fn_offset = l1s.current_time.fn - last_fb->attempt + ntdma;
- int delay = fn_offset + 11 - l1s.current_time.fn - 1;
- printf(" fn_offset=%d (fn=%u + attempt=%u + ntdma = %d)\m",
- fn_offset, l1s.current_time.fn, last_fb->attempt, ntdma);
- printf(" delay=%d (fn_offset=%d + 11 - fn=%u - 1\n", delay,
- fn_offset, l1s.current_time.fn);
- printf(" scheduling next FB/SB detection task with delay %u\n", delay);
- if (abs(last_fb->freq_diff) < fbs.req.freq_err_thresh2 &&
- last_fb->snr > FB1_SNR_THRESH) {
- /* synchronize before reading SB */
- fbinfo2cellinfo(&l1s.serving_cell, last_fb);
- synchronize_tdma(&l1s.serving_cell);
- tdma_schedule_set(delay, sb_sched_set, 0);
- } else
- tdma_schedule_set(delay, fb_sched_set, 1);
- } else
- l1s_compl_sched(L1_COMPL_FB);
- }
-
- return 0;
-}
-
-/* FB detection */
-static const struct tdma_sched_item fb_sched_set[] = {
- SCHED_ITEM_DT(l1s_fbdet_cmd, 0, 0, 0), SCHED_END_FRAME(),
- SCHED_END_FRAME(),
- SCHED_ITEM(l1s_fbdet_resp, -4, 0, 1), SCHED_END_FRAME(),
- SCHED_ITEM(l1s_fbdet_resp, -4, 0, 2), SCHED_END_FRAME(),
- SCHED_ITEM(l1s_fbdet_resp, -4, 0, 3), SCHED_END_FRAME(),
- SCHED_ITEM(l1s_fbdet_resp, -4, 0, 4), SCHED_END_FRAME(),
- SCHED_ITEM(l1s_fbdet_resp, -4, 0, 5), SCHED_END_FRAME(),
- SCHED_ITEM(l1s_fbdet_resp, -4, 0, 6), SCHED_END_FRAME(),
- SCHED_ITEM(l1s_fbdet_resp, -4, 0, 7), SCHED_END_FRAME(),
- SCHED_ITEM(l1s_fbdet_resp, -4, 0, 8), SCHED_END_FRAME(),
- SCHED_ITEM(l1s_fbdet_resp, -4, 0, 9), SCHED_END_FRAME(),
- SCHED_ITEM(l1s_fbdet_resp, -4, 0, 10), SCHED_END_FRAME(),
- SCHED_ITEM(l1s_fbdet_resp, -4, 0, 11), SCHED_END_FRAME(),
- SCHED_ITEM(l1s_fbdet_resp, -4, 0, 12), SCHED_END_FRAME(),
- SCHED_END_SET()
-};
-
-/* Asynchronous completion handler for FB detection */
-static void l1a_fb_compl(__unused enum l1_compl c)
-{
- struct l1_cell_info *cinfo = &l1s.serving_cell;
-
- if (last_fb->attempt >= 13) {
- /* FB detection failed, signal this via L1CTL */
- return l1ctl_fbsb_resp(255);
- }
-
- /* FIME: use l1s.neigh_cell[fbs.cinfo_idx] */
- fbinfo2cellinfo(&l1s.serving_cell, last_fb);
-
- /* send FBSB_CONF success message via L1CTL */
- l1ctl_fbsb_resp(0);
-}
-
-void l1s_fbsb_req(uint8_t base_fn, struct l1ctl_fbsb_req *req)
-{
- /* copy + endian convert request data */
- fbs.req.band_arfcn = ntohs(req->band_arfcn);
- fbs.req.timeout = ntohs(req->timeout);
- fbs.req.freq_err_thresh1 = ntohs(req->freq_err_thresh1);
- fbs.req.freq_err_thresh2 = ntohs(req->freq_err_thresh2);
- fbs.req.num_freqerr_avg = req->num_freqerr_avg;
- fbs.req.flags = req->flags;
- fbs.req.sync_info_idx = req->sync_info_idx;
-
- /* clear initial frequency error */
- fbs.initial_freq_err = 0;
- fbs.fb_retries = 0;
- fbs.afc_retries = 0;
-
- /* Make sure we start at a 'center' AFCDAC output value */
- afc_reset();
-
- /* Reset the TOA loop counters */
- toa_reset();
-
- if (fbs.req.flags & L1CTL_FBSB_F_FB0)
- tdma_schedule_set(base_fn, fb_sched_set, 0);
- else if (fbs.req.flags & L1CTL_FBSB_F_FB1)
- tdma_schedule_set(base_fn, fb_sched_set, 0);
- else if (fbs.req.flags & L1CTL_FBSB_F_SB)
- tdma_schedule_set(base_fn, sb_sched_set, 0);
-
-}
-
-static __attribute__ ((constructor)) void l1s_prim_fbsb_init(void)
-{
- l1s.completion[L1_COMPL_FB] = &l1a_fb_compl;
-}
diff --git a/Src/osmoconbb/src/target/firmware/layer1/prim_freq.c b/Src/osmoconbb/src/target/firmware/layer1/prim_freq.c
deleted file mode 100644
index 88bc453..0000000
--- a/Src/osmoconbb/src/target/firmware/layer1/prim_freq.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/* Layer 1 Frequency redefinition at "starting time" */
-
-/* (C) 2010 by Andreas Eversverg <jolly@eversberg.eu>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include <defines.h>
-#include <debug.h>
-#include <memory.h>
-#include <byteorder.h>
-#include <osmocom/gsm/gsm_utils.h>
-#include <osmocom/core/msgb.h>
-#include <calypso/dsp_api.h>
-#include <calypso/irq.h>
-#include <calypso/tpu.h>
-#include <calypso/tsp.h>
-#include <calypso/dsp.h>
-#include <calypso/timer.h>
-#include <comm/sercomm.h>
-#include <asm/system.h>
-
-#include <layer1/sync.h>
-#include <layer1/async.h>
-#include <layer1/tdma_sched.h>
-#include <layer1/tpu_window.h>
-#include <layer1/l23_api.h>
-
-#include <l1ctl_proto.h>
-
-struct {
- uint32_t fn;
- uint16_t band_arfcn;
-} last_rach;
-
-/* if the "starting time" is reached, use frequencies "after time" */
-static int l1s_freq_cmd(__unused uint8_t p1, __unused uint8_t p2, __unused uint16_t p3)
-{
- putchart('F');
-
- printf("Reached starting time, altering frequency set\n");
-
- l1s.dedicated.tsc = l1s.dedicated.st_tsc;
- l1s.dedicated.h = l1s.dedicated.st_h;
- if (l1s.dedicated.h)
- memcpy(&l1s.dedicated.h1, &l1s.dedicated.st_h1,
- sizeof(l1s.dedicated.h1));
- else
- memcpy(&l1s.dedicated.h0, &l1s.dedicated.st_h0,
- sizeof(l1s.dedicated.h0));
-
- return 0;
-}
-
-/* sched set for frequency change */
-const struct tdma_sched_item freq_sched_set[] = {
- SCHED_ITEM(l1s_freq_cmd, -3, 1, 0),
- SCHED_END_SET()
-};
-
-/* request a frequency change at the given frame number
- * Note: The fn_sched parameter must be in range 0..42431. */
-void l1a_freq_req(uint32_t fn_sched)
-{
- int32_t diff;
- unsigned long flags;
-
- /* We must check here, if the time already elapsed.
- * This is required, because we may have an undefined delay between
- * layer 1 and layer 3.
- */
- diff = fn_sched - (l1s.current_time.fn % 42432);
- if (diff < 0)
- diff += 42432;
- /* note: 5 is used to give scheduler some time */
- if (diff == 5 || diff >= 32024) {
- l1s_freq_cmd(0, 0, 0);
- return;
- }
-
- /* calculate (full range) frame number */
- fn_sched = l1s.current_time.fn + diff;
- if (fn_sched >= GSM_MAX_FN)
- fn_sched -= GSM_MAX_FN;
- printf("Scheduling frequency change at fn=%u, currently fn=%u\n",
- fn_sched, l1s.current_time.fn);
-
- local_firq_save(flags);
- sched_gsmtime(freq_sched_set, fn_sched, 0);
- local_irq_restore(flags);
-}
-
diff --git a/Src/osmoconbb/src/target/firmware/layer1/prim_pm.c b/Src/osmoconbb/src/target/firmware/layer1/prim_pm.c
deleted file mode 100644
index c2d85ac..0000000
--- a/Src/osmoconbb/src/target/firmware/layer1/prim_pm.c
+++ /dev/null
@@ -1,238 +0,0 @@
-/* Layer 1 Power Measurement */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include <defines.h>
-#include <debug.h>
-#include <memory.h>
-#include <byteorder.h>
-#include <osmocom/gsm/gsm_utils.h>
-#include <osmocom/core/msgb.h>
-#include <calypso/dsp_api.h>
-#include <calypso/irq.h>
-#include <calypso/tpu.h>
-#include <calypso/tsp.h>
-#include <calypso/dsp.h>
-#include <calypso/timer.h>
-#include <comm/sercomm.h>
-#include <asm/system.h>
-
-#include <layer1/sync.h>
-#include <layer1/agc.h>
-#include <layer1/tdma_sched.h>
-#include <layer1/tpu_window.h>
-#include <layer1/l23_api.h>
-#include <layer1/prim.h>
-#include <rffe.h>
-
-#include <l1ctl_proto.h>
-
-static void l1ddsp_meas_read(uint8_t nbmeas, uint16_t *pm)
-{
- uint8_t i;
-
- for (i = 0; i < nbmeas; i++)
- pm[i] = (uint16_t) ((dsp_api.db_r->a_pm[i] & 0xffff) >> 3);
- dsp_api.r_page_used = 1;
-}
-
-/* scheduler callback to issue a power measurement task to the DSP */
-static int l1s_pm_cmd(uint8_t num_meas,
- __unused uint8_t p2, uint16_t arfcn)
-{
- putchart('P');
-
- dsp_api.db_w->d_task_md = num_meas; /* number of measurements */
- dsp_api.ndb->d_fb_mode = 0; /* wideband search */
-
- /* Tell the RF frontend to set the gain appropriately */
- rffe_compute_gain(-85, CAL_DSP_TGT_BB_LVL);
-
- /* Program TPU */
- /* FIXME: RXWIN_PW needs to set up multiple times in case
- * num_meas > 1 */
- l1s_rx_win_ctrl(arfcn, L1_RXWIN_PW, 0);
- //l1s_rx_win_ctrl(arfcn, L1_RXWIN_NB);
-
- return 0;
-}
-
-/* scheduler callback to read power measurement resposnse from the DSP */
-static int l1s_pm_resp(uint8_t num_meas, __unused uint8_t p2,
- uint16_t arfcn)
-{
- struct l1ctl_pm_conf *pmr;
- uint16_t pm_level[2];
-
- putchart('p');
-
- l1ddsp_meas_read(num_meas, pm_level);
-
- printf("PM MEAS: ARFCN=%u, %-4d dBm at baseband, %-4d dBm at RF\n",
- arfcn, pm_level[0]/8, agc_inp_dbm8_by_pm(pm_level[0])/8);
-
- printd("PM MEAS: %-4d dBm, %-4d dBm ARFCN=%u\n",
- agc_inp_dbm8_by_pm(pm_level[0])/8,
- agc_inp_dbm8_by_pm(pm_level[1])/8, arfcn);
-
- if (!l1s.pm.msg)
- l1s.pm.msg = l1ctl_msgb_alloc(L1CTL_PM_CONF);
-
- if (msgb_tailroom(l1s.pm.msg) < sizeof(*pmr)) {
- /* flush current msgb */
- l1_queue_for_l2(l1s.pm.msg);
- /* allocate a new msgb and initialize header */
- l1s.pm.msg = l1ctl_msgb_alloc(L1CTL_PM_CONF);
- }
-
- pmr = msgb_put(l1s.pm.msg, sizeof(*pmr));
- pmr->band_arfcn = htons(arfcn);
- /* FIXME: do this as RxLev rather than DBM8 ? */
- pmr->pm[0] = dbm2rxlev(agc_inp_dbm8_by_pm(pm_level[0])/8);
- if (num_meas > 1)
- pmr->pm[1] = dbm2rxlev(agc_inp_dbm8_by_pm(pm_level[1])/8);
- else
- pmr->pm[1] = 0;
-
- if (l1s.pm.mode == 1) {
- if (l1s.pm.range.arfcn_next <= l1s.pm.range.arfcn_end) {
- /* schedule PM for next ARFCN in range */
- l1s_pm_test(1, l1s.pm.range.arfcn_next);
- l1s.pm.range.arfcn_next++;
- } else {
- /* we have finished, flush the msgb to L2 */
- struct l1ctl_hdr *l1h = l1s.pm.msg->l1h;
- l1h->flags |= L1CTL_F_DONE;
- l1_queue_for_l2(l1s.pm.msg);
- l1s.pm.msg = NULL;
- }
- }
-
- return 0;
-}
-
-static const struct tdma_sched_item pm_sched_set[] = {
- SCHED_ITEM_DT(l1s_pm_cmd, 0, 1, 0), SCHED_END_FRAME(),
- SCHED_END_FRAME(),
- SCHED_ITEM(l1s_pm_resp, -4, 1, 0), SCHED_END_FRAME(),
- SCHED_END_SET()
-};
-
-/* Schedule a power measurement test */
-void l1s_pm_test(uint8_t base_fn, uint16_t arfcn)
-{
- unsigned long flags;
-
- printd("l1s_pm_test(%u, %u)\n", base_fn, arfcn);
-
- local_firq_save(flags);
- tdma_schedule_set(base_fn, pm_sched_set, arfcn);
- local_irq_restore(flags);
-}
-
-/*
- * perform measurements of neighbour cells
- */
-
-/* scheduler callback to issue a power measurement task to the DSP */
-static int l1s_neigh_pm_cmd(uint8_t num_meas,
- __unused uint8_t p2, __unused uint16_t p3)
-{
- uint8_t last_gain = rffe_get_gain();
-
- dsp_api.db_w->d_task_md = num_meas; /* number of measurements */
-// dsp_api.ndb->d_fb_mode = 0; /* wideband search */
-
- /* Tell the RF frontend to set the gain appropriately (keep last) */
- rffe_compute_gain(-85, CAL_DSP_TGT_BB_LVL);
-
- /* Program TPU */
- /* FIXME: RXWIN_PW needs to set up multiple times in case
- * num_meas > 1 */
- /* do measurement dummy, in case l1s.neigh_pm.n == 0 */
- l1s_rx_win_ctrl((l1s.neigh_pm.n) ?
- l1s.neigh_pm.band_arfcn[l1s.neigh_pm.pos] : 0, L1_RXWIN_PW, 0);
-
- /* restore last gain */
- rffe_set_gain(last_gain);
-
- l1s.neigh_pm.running = 1;
-
- return 0;
-}
-
-/* scheduler callback to read power measurement resposnse from the DSP */
-static int l1s_neigh_pm_resp(__unused uint8_t p1, __unused uint8_t p2,
- __unused uint16_t p3)
-{
- uint16_t dbm;
- uint8_t level;
-
- dsp_api.r_page_used = 1;
-
- if (l1s.neigh_pm.n == 0 || !l1s.neigh_pm.running)
- goto out;
-
- dbm = (uint16_t) ((dsp_api.db_r->a_pm[0] & 0xffff) >> 3);
- level = dbm2rxlev(agc_inp_dbm8_by_pm(dbm)/8);
-
- l1s.neigh_pm.level[l1s.neigh_pm.pos] = level;
-
- if (++l1s.neigh_pm.pos >= l1s.neigh_pm.n) {
- struct msgb *msg;
- struct l1ctl_neigh_pm_ind *mi;
- int i;
-
- l1s.neigh_pm.pos = 0;
- /* return result */
- msg = l1ctl_msgb_alloc(L1CTL_NEIGH_PM_IND);
- for (i = 0; i < l1s.neigh_pm.n; i++) {
- if (msgb_tailroom(msg) < (int) sizeof(*mi)) {
- l1_queue_for_l2(msg);
- msg = l1ctl_msgb_alloc(L1CTL_NEIGH_PM_IND);
- }
- mi = (struct l1ctl_neigh_pm_ind *)
- msgb_put(msg, sizeof(*mi));
- mi->band_arfcn = htons(l1s.neigh_pm.band_arfcn[i]);
- mi->pm[0] = l1s.neigh_pm.level[i];
- mi->pm[1] = 0;
- }
- l1_queue_for_l2(msg);
- }
-
-out:
- l1s.neigh_pm.running = 0;
-
- return 0;
-}
-
-const struct tdma_sched_item neigh_pm_sched_set[] = {
- SCHED_ITEM_DT(l1s_neigh_pm_cmd, 0, 1, 0), SCHED_END_FRAME(),
- SCHED_END_FRAME(),
- SCHED_ITEM(l1s_neigh_pm_resp, -4, 1, 0), SCHED_END_FRAME(),
- SCHED_END_SET()
-};
-
diff --git a/Src/osmoconbb/src/target/firmware/layer1/prim_rach.c b/Src/osmoconbb/src/target/firmware/layer1/prim_rach.c
deleted file mode 100644
index 47f7424..0000000
--- a/Src/osmoconbb/src/target/firmware/layer1/prim_rach.c
+++ /dev/null
@@ -1,159 +0,0 @@
-/* Layer 1 Random Access Channel Burst */
-
-/* (C) 2010 by Dieter Spaar <spaar@mirider.augusta.de>
- * (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include <defines.h>
-#include <debug.h>
-#include <memory.h>
-#include <byteorder.h>
-#include <osmocom/gsm/gsm_utils.h>
-#include <osmocom/core/msgb.h>
-#include <calypso/dsp_api.h>
-#include <calypso/irq.h>
-#include <calypso/tpu.h>
-#include <calypso/tsp.h>
-#include <calypso/dsp.h>
-#include <calypso/timer.h>
-#include <comm/sercomm.h>
-#include <asm/system.h>
-
-#include <layer1/sync.h>
-#include <layer1/async.h>
-#include <layer1/tdma_sched.h>
-#include <layer1/tpu_window.h>
-#include <layer1/l23_api.h>
-
-#include <l1ctl_proto.h>
-
-struct {
- uint32_t fn;
- uint16_t band_arfcn;
-} last_rach;
-
-/* p1: type of operation (0: one NB, 1: one RACH burst, 2: four NB */
-static int l1s_tx_rach_cmd(__unused uint8_t p1, __unused uint8_t p2, __unused uint16_t p3)
-{
- int i;
- uint16_t *info_ptr;
- uint8_t data[2];
-
- putchart('T');
-
- l1s_tx_apc_helper(l1s.serving_cell.arfcn);
-
- data[0] = l1s.serving_cell.bsic << 2;
- data[1] = l1s.rach.ra;
-
- info_ptr = &dsp_api.ndb->d_rach;
- info_ptr[0] = ((uint16_t)(data[0])) | ((uint16_t)(data[1])<<8);
-
- dsp_api.db_w->d_task_ra = RACH_DSP_TASK;
-
- l1s_tx_win_ctrl(l1s.serving_cell.arfcn, L1_TXWIN_AB, 0, 3);
-
- return 0;
-}
-
-/* p1: type of operation (0: one NB, 1: one RACH burst, 2: four NB */
-static int l1s_tx_rach_resp(__unused uint8_t p1, __unused uint8_t burst_id,
- __unused uint16_t p3)
-{
- putchart('t');
-
- dsp_api.r_page_used = 1;
-
- /* schedule a confirmation back indicating the GSM time at which
- * the RACH burst was transmitted to the BTS */
- last_rach.fn = l1s.current_time.fn - 1;
- last_rach.band_arfcn = l1s.serving_cell.arfcn;
- l1s_compl_sched(L1_COMPL_RACH);
-
- return 0;
-}
-
-/* sched sets for uplink */
-const struct tdma_sched_item rach_sched_set_ul[] = {
- SCHED_ITEM_DT(l1s_tx_rach_cmd, 3, 1, 0), SCHED_END_FRAME(),
- SCHED_END_FRAME(),
- SCHED_ITEM(l1s_tx_rach_resp, -4, 1, 0), SCHED_END_FRAME(),
- SCHED_END_SET()
-};
-
-/* Asynchronous completion handler for FB detection */
-static void l1a_rach_compl(__unused enum l1_compl c)
-{
- struct msgb *msg;
-
- msg = l1_create_l2_msg(L1CTL_RACH_CONF, last_rach.fn, 0,
- last_rach.band_arfcn);
- l1_queue_for_l2(msg);
-}
-
-static uint8_t t3_to_rach_comb[51] = {
- 0, 0, 0, 0,
- 0, 1,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 25, 25, 25, 25, 25, 25, 25,
- 25, 26,
- 27, 27, 27, 27};
-static uint8_t rach_to_t3_comb[27] = {
- 4, 5,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 45, 46};
-
-/* request a RACH request at the next multiframe T3 = fn51 */
-void l1a_rach_req(uint16_t offset, uint8_t combined, uint8_t ra)
-{
- uint32_t fn_sched;
- unsigned long flags;
-
- offset += 3;
-
- local_firq_save(flags);
- if (combined) {
- /* add elapsed RACH slots to offset */
- offset += t3_to_rach_comb[l1s.current_time.t3];
- /* offset is the number of RACH slots in the future */
- fn_sched = l1s.current_time.fn - l1s.current_time.t3;
- fn_sched += offset / 27 * 51;
- fn_sched += rach_to_t3_comb[offset % 27];
- } else
- fn_sched = l1s.current_time.fn + offset;
- l1s.rach.ra = ra;
- sched_gsmtime(rach_sched_set_ul, fn_sched, 0);
- local_irq_restore(flags);
-
- memset(&last_rach, 0, sizeof(last_rach));
-}
-
-static __attribute__ ((constructor)) void prim_rach_init(void)
-{
- l1s.completion[L1_COMPL_RACH] = &l1a_rach_compl;
-}
diff --git a/Src/osmoconbb/src/target/firmware/layer1/prim_rx_nb.c b/Src/osmoconbb/src/target/firmware/layer1/prim_rx_nb.c
deleted file mode 100644
index 7eb4548..0000000
--- a/Src/osmoconbb/src/target/firmware/layer1/prim_rx_nb.c
+++ /dev/null
@@ -1,215 +0,0 @@
-/* Layer 1 - Receiving Normal Bursts */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include <defines.h>
-#include <debug.h>
-#include <memory.h>
-#include <byteorder.h>
-#include <osmocom/gsm/gsm_utils.h>
-#include <osmocom/core/msgb.h>
-#include <calypso/dsp_api.h>
-#include <calypso/irq.h>
-#include <calypso/tpu.h>
-#include <calypso/tsp.h>
-#include <calypso/dsp.h>
-#include <calypso/timer.h>
-#include <comm/sercomm.h>
-
-#include <layer1/sync.h>
-#include <layer1/afc.h>
-#include <layer1/toa.h>
-#include <layer1/tdma_sched.h>
-#include <layer1/mframe_sched.h>
-#include <layer1/tpu_window.h>
-#include <layer1/l23_api.h>
-#include <layer1/rfch.h>
-#include <layer1/prim.h>
-
-#include <l1ctl_proto.h>
-
-struct l1s_rxnb_state {
- struct l1s_meas_hdr meas[4];
-
- struct msgb *msg;
- struct l1ctl_info_dl *dl;
- struct l1ctl_data_ind *di;
-};
-
-static struct l1s_rxnb_state rxnb;
-
-static int l1s_nb_resp(__unused uint8_t p1, uint8_t burst_id, uint16_t p3)
-{
- struct gsm_time rx_time;
- uint8_t mf_task_id = p3 & 0xff;
- uint8_t mf_task_flags = p3 >> 8;
- uint16_t rf_arfcn;
- uint8_t tsc, tn;
-
- putchart('n');
-
- /* just for debugging, d_task_d should not be 0 */
- if (dsp_api.db_r->d_task_d == 0) {
- puts("EMPTY\n");
- return 0;
- }
-
- /* DSP burst ID needs to correspond with what we expect */
- if (dsp_api.db_r->d_burst_d != burst_id) {
- printf("BURST ID %u!=%u\n", dsp_api.db_r->d_burst_d, burst_id);
- return 0;
- }
-
- /* get radio parameters for _this_ burst */
- gsm_fn2gsmtime(&rx_time, l1s.current_time.fn - 1);
- rfch_get_params(&rx_time, &rf_arfcn, &tsc, &tn);
-
- /* collect measurements */
- rxnb.meas[burst_id].toa_qbit = dsp_api.db_r->a_serv_demod[D_TOA];
- rxnb.meas[burst_id].pm_dbm8 =
- agc_inp_dbm8_by_pm(dsp_api.db_r->a_serv_demod[D_PM] >> 3);
- rxnb.meas[burst_id].freq_err =
- ANGLE_TO_FREQ(dsp_api.db_r->a_serv_demod[D_ANGLE]);
- rxnb.meas[burst_id].snr = dsp_api.db_r->a_serv_demod[D_SNR];
-
- /* feed computed frequency error into AFC loop */
- if (rxnb.meas[burst_id].snr > AFC_SNR_THRESHOLD)
- afc_input(rxnb.meas[burst_id].freq_err, rf_arfcn, 1);
- else
- afc_input(rxnb.meas[burst_id].freq_err, rf_arfcn, 0);
-
- /* feed computed TOA into TA loop */
- toa_input(rxnb.meas[burst_id].toa_qbit << 2, rxnb.meas[burst_id].snr);
-
- /* Tell the RF frontend to set the gain appropriately */
- rffe_compute_gain(rxnb.meas[burst_id].pm_dbm8/8, CAL_DSP_TGT_BB_LVL);
-
- /* 4th burst, get frame data */
- if (dsp_api.db_r->d_burst_d == 3) {
- uint8_t i;
- uint16_t num_biterr;
- uint32_t avg_snr = 0;
- int32_t avg_dbm8 = 0;
-
- /* Get radio parameters for the first burst */
- gsm_fn2gsmtime(&rx_time, l1s.current_time.fn - 4);
- rfch_get_params(&rx_time, &rf_arfcn, &tsc, &tn);
-
- /* Set Channel Number depending on MFrame Task ID */
- rxnb.dl->chan_nr = mframe_task2chan_nr(mf_task_id, tn);
-
- /* Set SACCH indication in Link IDentifier */
- if (mf_task_flags & MF_F_SACCH)
- rxnb.dl->link_id = 0x40;
- else
- rxnb.dl->link_id = 0x00;
-
- rxnb.dl->band_arfcn = htons(rf_arfcn);
-
- rxnb.dl->frame_nr = htonl(rx_time.fn);
-
- /* compute average snr and rx level */
- for (i = 0; i < 4; ++i) {
- avg_snr += rxnb.meas[i].snr;
- avg_dbm8 += rxnb.meas[i].pm_dbm8;
- }
- rxnb.dl->snr = avg_snr / 4;
- rxnb.dl->rx_level = dbm2rxlev(avg_dbm8 / (8*4));
-
- num_biterr = dsp_api.ndb->a_cd[2] & 0xffff;
- if (num_biterr > 0xff)
- rxnb.dl->num_biterr = 0xff;
- else
- rxnb.dl->num_biterr = num_biterr;
-
- rxnb.dl->fire_crc = ((dsp_api.ndb->a_cd[0] & 0xffff) & ((1 << B_FIRE1) | (1 << B_FIRE0))) >> B_FIRE0;
-
- /* update rx level for pm report */
- pu_update_rx_level(rxnb.dl->rx_level);
-
- /* copy actual data, skipping the information block [0,1,2] */
- dsp_memcpy_from_api(rxnb.di->data, &dsp_api.ndb->a_cd[3], 23, 0);
-
- l1_queue_for_l2(rxnb.msg);
- rxnb.msg = NULL; rxnb.dl = NULL; rxnb.di = NULL;
-
- /* clear downlink task */
- dsp_api.db_w->d_task_d = 0;
- }
-
- /* mark READ page as being used */
- dsp_api.r_page_used = 1;
-
- return 0;
-}
-
-static int l1s_nb_cmd(__unused uint8_t p1, uint8_t burst_id,
- __unused uint16_t p3)
-{
- uint16_t arfcn;
- uint8_t tsc, tn;
-
- putchart('N');
-
- if (burst_id == 1) {
- /* allocate message only at 2nd burst in case of
- * consecutive/overlapping normal burst RX tasks */
- /* FIXME: we actually want all allocation out of L1S! */
- if (rxnb.msg) {
- /* Can happen when resetting ... */
- printf("nb_cmd(0) and rxnb.msg != NULL\n");
- msgb_free(rxnb.msg);
- }
- /* allocate msgb as needed. FIXME: from L1A ?? */
- rxnb.msg = l1ctl_msgb_alloc(L1CTL_DATA_IND);
- if (!rxnb.msg)
- printf("nb_cmd(0): unable to allocate msgb\n");
- rxnb.dl = (struct l1ctl_info_dl *) msgb_put(rxnb.msg, sizeof(*rxnb.dl));
- rxnb.di = (struct l1ctl_data_ind *) msgb_put(rxnb.msg, sizeof(*rxnb.di));
- }
-
- rfch_get_params(&l1s.next_time, &arfcn, &tsc, &tn);
-
- /* DDL_DSP_TASK, four normal bursts */
- dsp_load_tch_param(&l1s.next_time,
- SIG_ONLY_MODE, SDCCH_4, 0, 0, 0, tn);
-
- dsp_load_rx_task(ALLC_DSP_TASK, burst_id, tsc);
-
- l1s_rx_win_ctrl(arfcn, L1_RXWIN_NB, 0);
-
- return 0;
-}
-
-const struct tdma_sched_item nb_sched_set[] = {
- SCHED_ITEM_DT(l1s_nb_cmd, 0, 0, 0), SCHED_END_FRAME(),
- SCHED_ITEM_DT(l1s_nb_cmd, 0, 0, 1), SCHED_END_FRAME(),
- SCHED_ITEM(l1s_nb_resp, -4, 0, 0), SCHED_ITEM_DT(l1s_nb_cmd, 0, 0, 2), SCHED_END_FRAME(),
- SCHED_ITEM(l1s_nb_resp, -4, 0, 1), SCHED_ITEM_DT(l1s_nb_cmd, 0, 0, 3), SCHED_END_FRAME(),
- SCHED_ITEM(l1s_nb_resp, -4, 0, 2), SCHED_END_FRAME(),
- SCHED_ITEM(l1s_nb_resp, -4, 0, 3), SCHED_END_FRAME(),
- SCHED_END_SET()
-};
diff --git a/Src/osmoconbb/src/target/firmware/layer1/prim_tch.c b/Src/osmoconbb/src/target/firmware/layer1/prim_tch.c
deleted file mode 100644
index 96858fb..0000000
--- a/Src/osmoconbb/src/target/firmware/layer1/prim_tch.c
+++ /dev/null
@@ -1,752 +0,0 @@
-/* Layer 1 - TCH */
-
-/* (C) 2010 by Dieter Spaar <spaar@mirider.augusta.de>
- * (C) 2010 by Sylvain Munaut <tnt@246tnt.com>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include <defines.h>
-#include <debug.h>
-#include <memory.h>
-#include <byteorder.h>
-#include <osmocom/gsm/gsm_utils.h>
-#include <osmocom/gsm/protocol/gsm_04_08.h>
-#include <osmocom/core/msgb.h>
-#include <calypso/dsp_api.h>
-#include <calypso/irq.h>
-#include <calypso/tpu.h>
-#include <calypso/tsp.h>
-#include <calypso/dsp.h>
-#include <calypso/timer.h>
-#include <comm/sercomm.h>
-
-#include <rffe.h>
-#include <layer1/sync.h>
-#include <layer1/afc.h>
-#include <layer1/agc.h>
-#include <layer1/toa.h>
-#include <layer1/tdma_sched.h>
-#include <layer1/mframe_sched.h>
-#include <layer1/tpu_window.h>
-#include <layer1/l23_api.h>
-#include <layer1/rfch.h>
-#include <layer1/prim.h>
-
-#include <l1ctl_proto.h>
-
-
-/* This computes various parameters both for the DSP and for
- * our logic. Not all are used all the time, but it's easier
- * to build all in one place */
-static void tch_get_params(struct gsm_time *time, uint8_t chan_nr,
- uint32_t *fn_report, uint8_t *tch_f_hn,
- uint8_t *tch_sub, uint8_t *tch_mode)
-{
- uint8_t tn = chan_nr & 0x07;
- uint8_t cbits = chan_nr >> 3;
-
- *tch_f_hn = (cbits & 2) ? 0 : 1;
-
- if (*tch_f_hn) {
- *fn_report = (time->fn - (tn * 13) + 104) % 104;
- *tch_sub = 0;
- } else {
- uint8_t chan_sub = cbits & 1;
- uint8_t tn_report = (tn & ~1) | chan_sub;
- *fn_report = (time->fn - (tn_report * 13) + 104) % 104;
- *tch_sub = chan_sub;
- }
-
- if (tch_mode) {
- switch (l1s.tch_mode) {
- case GSM48_CMODE_SPEECH_V1:
- *tch_mode = *tch_f_hn ? TCH_FS_MODE : TCH_HS_MODE;
- break;
- case GSM48_CMODE_SPEECH_EFR:
- *tch_mode = *tch_f_hn ? TCH_EFR_MODE : SIG_ONLY_MODE;
- break;
- default:
- *tch_mode = SIG_ONLY_MODE;
- }
- }
-}
-
-
-/* -------------------------------------------------------------------------
- * Shared completion handler
- * ------------------------------------------------------------------------- */
-
-/*
- * FIXME We really need a better way to handle completion, where we can
- * pass arguments and such ...
- *
- * Right now, we just 'hope' it gets processed before the next one ...
- */
-
-#define TX_TYPE_SACCH (1<<0)
-#define TX_TYPE_FACCH (1<<1)
-#define TX_TYPE_TRAFFIC (1<<2)
-
-static uint16_t last_tx_tch_fn;
-static uint16_t last_tx_tch_type;
-
-static void l1a_tx_tch_compl(__unused enum l1_compl c)
-{
- struct msgb *msg;
-
- if (last_tx_tch_type & (TX_TYPE_SACCH | TX_TYPE_FACCH)) {
- msg = l1_create_l2_msg(L1CTL_DATA_CONF, last_tx_tch_fn, 0, 0);
- l1_queue_for_l2(msg);
- }
-
- if (last_tx_tch_type & TX_TYPE_TRAFFIC) {
- msg = l1_create_l2_msg(L1CTL_TRAFFIC_CONF, last_tx_tch_fn, 0, 0);
- l1_queue_for_l2(msg);
- }
-
- last_tx_tch_type = 0;
-}
-
-static __attribute__ ((constructor)) void prim_tch_init(void)
-{
- l1s.completion[L1_COMPL_TX_TCH] = &l1a_tx_tch_compl;
-}
-
-
-/* -------------------------------------------------------------------------
- * TCH: Voice & FACCH
- * ------------------------------------------------------------------------- */
-
-/*
- * Voice and FACCH data are spread in various ways depending on a lot of
- * factors. Trying to handle that with the mframe scheduler is just a mess,
- * so we schedule it burst by burst and handle the complex logic inside the
- * primitive task code itself.
- */
-
-
-#define FACCH_MEAS_HIST 8 /* Up to 8 bursts history */
-struct l1s_rx_tch_state {
- struct l1s_meas_hdr meas[FACCH_MEAS_HIST];
-};
-
-static struct l1s_rx_tch_state rx_tch;
-
-
-static int l1s_tch_resp(__unused uint8_t p1, __unused uint8_t p2, uint16_t p3)
-{
- static uint8_t meas_id = 0;
- uint8_t mf_task_id = p3 & 0xff;
- struct gsm_time rx_time;
- uint8_t chan_nr;
- uint16_t arfcn;
- uint8_t tsc, tn;
- uint8_t tch_f_hn, tch_sub;
- uint32_t fn_report;
- int facch_rx_now, traffic_rx_now;
-
- /* Get/compute various parameters */
- gsm_fn2gsmtime(&rx_time, (l1s.current_time.fn - 1 + GSM_MAX_FN) % GSM_MAX_FN);
- rfch_get_params(&rx_time, &arfcn, &tsc, &tn);
- chan_nr = mframe_task2chan_nr(mf_task_id, tn);
- tch_get_params(&rx_time, chan_nr, &fn_report, &tch_f_hn, &tch_sub, NULL);
-
- meas_id = (meas_id + 1) % FACCH_MEAS_HIST; /* absolute value doesn't matter */
-
- /* Collect measurements */
- rx_tch.meas[meas_id].toa_qbit = dsp_api.db_r->a_serv_demod[D_TOA];
- rx_tch.meas[meas_id].pm_dbm8 =
- agc_inp_dbm8_by_pm(dsp_api.db_r->a_serv_demod[D_PM] >> 3);
- rx_tch.meas[meas_id].freq_err =
- ANGLE_TO_FREQ(dsp_api.db_r->a_serv_demod[D_ANGLE]);
- rx_tch.meas[meas_id].snr = dsp_api.db_r->a_serv_demod[D_SNR];
-
- /* feed computed frequency error into AFC loop */
- if (rx_tch.meas[meas_id].snr > AFC_SNR_THRESHOLD)
- afc_input(rx_tch.meas[meas_id].freq_err, arfcn, 1);
- else
- afc_input(rx_tch.meas[meas_id].freq_err, arfcn, 0);
-
- /* feed computed TOA into TA loop */
- toa_input(rx_tch.meas[meas_id].toa_qbit << 2, rx_tch.meas[meas_id].snr);
-
- /* Tell the RF frontend to set the gain appropriately */
- rffe_compute_gain(rx_tch.meas[meas_id].pm_dbm8 / 8,
- CAL_DSP_TGT_BB_LVL);
-
- /* FACCH Block end ? */
- if (tch_f_hn) {
- /* FACCH/F: B0(0...7),B1(4...11),B2(8...11,0...3) (mod 13) */
- facch_rx_now = ((rx_time.fn % 13) % 4) == 3;
- } else {
- /* FAACH/H: See GSM 05.02 Clause 7 Table 1of9 */
- uint8_t t2_norm = rx_time.t2 - tch_sub;
- facch_rx_now = (t2_norm == 15) ||
- (t2_norm == 23) ||
- (t2_norm == 6);
- }
-
- if (facch_rx_now && (dsp_api.ndb->a_fd[0] & (1<<B_BLUD))) {
- struct msgb *msg;
- struct l1ctl_info_dl *dl;
- struct l1ctl_data_ind *di;
- uint16_t num_biterr;
- uint32_t avg_snr = 0;
- int32_t avg_dbm8 = 0;
- int i, n;
-
- /* Allocate msgb */
- /* FIXME: we actually want all allocation out of L1S! */
- msg = l1ctl_msgb_alloc(L1CTL_DATA_IND);
- if(!msg) {
- printf("TCH FACCH: unable to allocate msgb\n");
- goto skip_rx_facch;
- }
-
- dl = (struct l1ctl_info_dl *) msgb_put(msg, sizeof(*dl));
- di = (struct l1ctl_data_ind *) msgb_put(msg, sizeof(*di));
-
- /* Fill DL header (should be about the first burst ... here is the last) */
- dl->chan_nr = chan_nr;
- dl->link_id = 0x00; /* FACCH */
- dl->band_arfcn = htons(arfcn);
- dl->frame_nr = htonl(rx_time.fn);
-
- /* Average SNR & RX level */
- n = tch_f_hn ? 8 : 6;
- for (i=0; i<n; i++) {
- int j = (meas_id + FACCH_MEAS_HIST - i) % FACCH_MEAS_HIST;
- avg_snr += rx_tch.meas[j].snr;
- avg_dbm8 += rx_tch.meas[j].pm_dbm8;
- }
-
- dl->snr = avg_snr / n;
- dl->rx_level = dbm2rxlev(avg_dbm8 / (8*n));
-
- /* Errors & CRC status */
- num_biterr = dsp_api.ndb->a_fd[2] & 0xffff;
- if (num_biterr > 0xff)
- dl->num_biterr = 0xff;
- else
- dl->num_biterr = num_biterr;
-
- dl->fire_crc = ((dsp_api.ndb->a_fd[0] & 0xffff) & ((1 << B_FIRE1) | (1 << B_FIRE0))) >> B_FIRE0;
-
- /* Update rx level for pm report */
- pu_update_rx_level(dl->rx_level);
-
- /* Copy actual data, skipping the information block [0,1,2] */
- dsp_memcpy_from_api(di->data, &dsp_api.ndb->a_fd[3], 23, 0);
-
- /* Give message to up layer */
- l1_queue_for_l2(msg);
-
- skip_rx_facch:
- /* Reset A_FD header (needed by DSP) */
- /* B_FIRE1 =1, B_FIRE0 =0 , BLUD =0 */
- dsp_api.ndb->a_fd[0] = (1<<B_FIRE1);
- dsp_api.ndb->a_fd[2] = 0xffff;
-
- /* Reset A_DD_0 header in NDB (needed by DSP) */
- dsp_api.ndb->a_dd_0[0] = 0;
- dsp_api.ndb->a_dd_0[2] = 0xffff;
-
- /* Reset A_DD_1 header in NDB (needed by DSP) */
- dsp_api.ndb->a_dd_1[0] = 0;
- dsp_api.ndb->a_dd_1[2] = 0xffff;
- }
-
- /* Traffic now ? */
- if (tch_f_hn) {
- /* TCH/F: B0(0...7),B1(4...11),B2(8...11,0...3) (mod 13)*/
- traffic_rx_now = ((rx_time.fn % 13) % 4) == 3;
- } else {
- /* TCH/H0: B0(0,2,4,6),B1(4,6,8,10),B2(8,10,0,2) (mod 13) */
- /* H1: B0(1,3,5,7),B1(5,7,9,11),B2(9,11,1,3) (mod 13) */
- traffic_rx_now = (((rx_time.fn - tch_sub + 13) % 13) % 4) == 2;
- }
-
- if (traffic_rx_now) {
- volatile uint16_t *traffic_buf;
-
- traffic_buf = tch_sub ? dsp_api.ndb->a_dd_1 : dsp_api.ndb->a_dd_0;
-
- if (traffic_buf[0] & (1<<B_BLUD)) {
- /* Send the data to upper layers (if interested and good frame) */
- if ((l1s.audio_mode & AUDIO_RX_TRAFFIC_IND) &&
- !(dsp_api.ndb->a_dd_0[0] & (1<<B_BFI))) {
- struct msgb *msg;
- struct l1ctl_info_dl *dl;
- struct l1ctl_traffic_ind *ti;
-
- /* Allocate msgb */
- /* FIXME: we actually want all allocation out of L1S! */
- msg = l1ctl_msgb_alloc(L1CTL_TRAFFIC_IND);
- if(!msg) {
- printf("TCH traffic: unable to allocate msgb\n");
- goto skip_rx_traffic;
- }
-
- dl = (struct l1ctl_info_dl *) msgb_put(msg, sizeof(*dl));
- ti = (struct l1ctl_traffic_ind *) msgb_put(msg, sizeof(*ti));
-
- /* Copy actual data, skipping the information block [0,1,2] */
- dsp_memcpy_from_api(ti->data, &traffic_buf[3], 33, 1);
-
- /* Give message to up layer */
- l1_queue_for_l2(msg);
- }
-
- skip_rx_traffic:
- /* Reset traffic buffer header in NDB (needed by DSP) */
- traffic_buf[0] = 0;
- traffic_buf[2] = 0xffff;
- }
- }
-
- /* mark READ page as being used */
- dsp_api.r_page_used = 1;
-
- return 0;
-}
-
-static int l1s_tch_cmd(__unused uint8_t p1, __unused uint8_t p2, uint16_t p3)
-{
- uint8_t mf_task_id = p3 & 0xff;
- uint8_t chan_nr;
- uint16_t arfcn;
- uint8_t tsc, tn;
- uint8_t tch_f_hn, tch_sub, tch_mode;
- uint32_t fn_report;
- uint8_t sync = 0;
- static int icnt;
- int facch_tx_now, traffic_tx_now;
-
- /* Get/compute various parameters */
- rfch_get_params(&l1s.next_time, &arfcn, &tsc, &tn);
- chan_nr = mframe_task2chan_nr(mf_task_id, tn);
- tch_get_params(&l1s.next_time, chan_nr, &fn_report, &tch_f_hn, &tch_sub, &tch_mode);
-
- /* Sync & FACCH delay */
- if (l1s.tch_sync) {
- l1s.tch_sync = 0;
- sync = 1;
- icnt = 0;
- } else if (icnt <= 26)
- icnt++;
-
- /* Load FACCH data if we start a new burst */
- /* (the DSP wants the data on the CMD of the burst _preceding_ the
- * first burst) */
- if (tch_f_hn) {
- /* FACCH/F: B0(0...7),B1(4...11),B2(8...11,0...3) */
- facch_tx_now = ((l1s.next_time.fn % 13) % 4) == 3;
- } else {
- /* FAACH/H: See GSM 05.02 Clause 7 Table 1of9 */
- uint8_t t2_norm = l1s.next_time.t2 - tch_sub;
- facch_tx_now = (t2_norm == 23) ||
- (t2_norm == 6) ||
- (t2_norm == 15);
- }
-
- if (facch_tx_now) {
- uint16_t *info_ptr = dsp_api.ndb->a_fu;
- struct msgb *msg;
- const uint8_t *data;
-
- /* Pull FACCH data (if ready) */
- if (icnt > 26)
- msg = msgb_dequeue(&l1s.tx_queue[L1S_CHAN_MAIN]);
- else
- msg = NULL;
-
- /* If TX is empty and we're signalling only, use dummy frame */
- if (msg)
- data = msg->l3h;
- else if (tch_mode == SIG_ONLY_MODE)
- data = pu_get_idle_frame();
- else
- data = NULL;
-
- /* Do we really send something ? */
- if (data) {
- /* Fill data block header */
- info_ptr[0] = (1 << B_BLUD); /* 1st word: Set B_BLU bit. */
- info_ptr[1] = 0; /* 2nd word: cleared. */
- info_ptr[2] = 0; /* 3nd word: cleared. */
-
- /* Copy the actual data after the header */
- dsp_memcpy_to_api(&info_ptr[3], data, 23, 0);
- }
-
- /* Indicate completion (FIXME: early but easier this way for now) */
- if (msg) {
- last_tx_tch_fn = l1s.next_time.fn;
- last_tx_tch_type |= TX_TYPE_FACCH;
- l1s_compl_sched(L1_COMPL_TX_TCH);
- }
-
- /* Free msg now that we're done with it */
- if (msg)
- msgb_free(msg);
- }
-
- /* Traffic now ? */
- if (tch_f_hn) {
- /* TCH/F: B0(0...7),B1(4...11),B2(8...11,0...3) (mod 13)*/
- traffic_tx_now = ((l1s.next_time.fn % 13) % 4) == 3;
- } else {
- /* TCH/H0: B0(0,2,4,6),B1(4,6,8,10),B2(8,10,0,2) (mod 13) */
- /* H1: B0(1,3,5,7),B1(5,7,9,11),B2(9,11,1,3) (mod 13) */
- traffic_tx_now = (((l1s.next_time.fn - tch_sub + 13) % 13) % 4) == 2;
- }
-
- if (traffic_tx_now) {
- volatile uint16_t *traffic_buf;
- struct msgb *msg;
- const uint8_t *data;
-
- /* Reset play mode */
- dsp_api.ndb->d_tch_mode &= ~B_PLAY_UL;
-
- /* Check l1s audio mode */
- if (!(l1s.audio_mode & AUDIO_TX_TRAFFIC_REQ))
- goto skip_tx_traffic;
-
- /* Traffic buffer = !tch_sub */
- traffic_buf = tch_sub ? dsp_api.ndb->a_du_0 : dsp_api.ndb->a_du_1;
-
- /* Pull Traffic data (if any) */
- msg = msgb_dequeue(&l1s.tx_queue[L1S_CHAN_TRAFFIC]);
-
- /* Copy actual data, skipping the information block [0,1,2] */
- if (msg) {
- data = msg->l2h;
- dsp_memcpy_to_api(&traffic_buf[3], data, 33, 1);
-
- traffic_buf[0] = (1 << B_BLUD); /* 1st word: Set B_BLU bit. */
- traffic_buf[1] = 0; /* 2nd word: cleared. */
- traffic_buf[2] = 0; /* 3nd word: cleared. */
- }
-
- if (msg)
- dsp_api.ndb->d_tch_mode |= B_PLAY_UL;
-
- /* Indicate completion (FIXME: early but easier this way for now) */
- if (msg) {
- last_tx_tch_fn = l1s.next_time.fn;
- last_tx_tch_type |= TX_TYPE_TRAFFIC;
- l1s_compl_sched(L1_COMPL_TX_TCH);
- }
-
- /* Free msg now that we're done with it */
- if (msg)
- msgb_free(msg);
- }
-skip_tx_traffic:
-
- /* Configure DSP for TX/RX */
- l1s_tx_apc_helper(arfcn);
-
- dsp_load_tch_param(
- &l1s.next_time,
- tch_mode, tch_f_hn ? TCH_F : TCH_H, tch_sub,
- 0, sync, tn
- );
-
- dsp_load_rx_task(TCHT_DSP_TASK, 0, tsc); /* burst_id unused for TCH */
- l1s_rx_win_ctrl(arfcn, L1_RXWIN_NB, 0);
-
- dsp_load_tx_task(TCHT_DSP_TASK, 0, tsc); /* burst_id unused for TCH */
- l1s_tx_win_ctrl(arfcn, L1_TXWIN_NB, 0, 3);
-
- return 0;
-}
-
-
-const struct tdma_sched_item tch_sched_set[] = {
- SCHED_ITEM_DT(l1s_tch_cmd, 0, 0, 0), SCHED_END_FRAME(),
- SCHED_END_FRAME(),
- SCHED_ITEM(l1s_tch_resp, 0, 0, -4), SCHED_END_FRAME(),
- SCHED_END_SET()
-};
-
-
-/* -------------------------------------------------------------------------
- * TCH/H: Dummy
- * ------------------------------------------------------------------------- */
-
-/* This task is needed to perform some operation in the DSP when there is
- * no data to be exchanged */
-
-static int l1s_tch_d_resp(__unused uint8_t p1, __unused uint8_t p2, uint16_t p3)
-{
- /* mark READ page as being used */
- dsp_api.r_page_used = 1;
-
- return 0;
-}
-
-static int l1s_tch_d_cmd(__unused uint8_t p1, __unused uint8_t p2, uint16_t p3)
-{
- uint8_t mf_task_id = p3 & 0xff;
- uint8_t chan_nr;
- uint8_t tsc, tn;
- uint8_t tch_f_hn, tch_sub, tch_mode;
- uint32_t fn_report;
-
- /* Get/compute various parameters */
- rfch_get_params(&l1s.next_time, NULL, &tsc, &tn);
- chan_nr = mframe_task2chan_nr(mf_task_id, tn);
- tch_get_params(&l1s.next_time, chan_nr, &fn_report, &tch_f_hn, &tch_sub, &tch_mode);
-
- /* Configure DSP */
- dsp_load_tch_param(
- &l1s.next_time,
- tch_mode, tch_f_hn ? TCH_F : TCH_H, tch_sub,
- 0, 0, tn
- );
-
- dsp_load_rx_task(TCHD_DSP_TASK, 0, tsc); /* burst_id unused for TCH */
- dsp_load_tx_task(TCHD_DSP_TASK, 0, tsc); /* burst_id unused for TCH */
-
- return 0;
-}
-
-const struct tdma_sched_item tch_d_sched_set[] = {
- SCHED_ITEM_DT(l1s_tch_d_cmd, 0, 0, 0), SCHED_END_FRAME(),
- SCHED_END_FRAME(),
- SCHED_ITEM(l1s_tch_d_resp, 0, 0, -4), SCHED_END_FRAME(),
- SCHED_END_SET()
-};
-
-
-/* -------------------------------------------------------------------------
- * TCH: SACCH
- * ------------------------------------------------------------------------- */
-
-/*
- * SACCH data are spread over 4 bursts, however they are so far appart that
- * we can't use the normal scheduler to schedule all them at once in a single
- * set.
- * Therefore, the task code itself decides in which burst it is, if it's the
- * start/end, and act appropriately.
- */
-
-
-struct l1s_rx_tch_a_state {
- struct l1s_meas_hdr meas[4];
-
- struct msgb *msg;
- struct l1ctl_info_dl *dl;
- struct l1ctl_data_ind *di;
-};
-
-static struct l1s_rx_tch_a_state rx_tch_a;
-
-
-static int l1s_tch_a_resp(__unused uint8_t p1, __unused uint8_t p2, uint16_t p3)
-{
- uint8_t mf_task_id = p3 & 0xff;
- struct gsm_time rx_time;
- uint8_t chan_nr;
- uint16_t arfcn;
- uint8_t tsc, tn;
- uint8_t tch_f_hn, tch_sub;
- uint32_t fn_report;
- uint8_t burst_id;
-
- /* It may happen we've never gone through cmd(0) yet, skip until then */
- if (!rx_tch_a.msg)
- goto skip;
-
- /* Get/compute various parameters */
- gsm_fn2gsmtime(&rx_time, (l1s.current_time.fn - 1 + GSM_MAX_FN) % GSM_MAX_FN);
- rfch_get_params(&rx_time, &arfcn, &tsc, &tn);
- chan_nr = mframe_task2chan_nr(mf_task_id, tn);
- tch_get_params(&rx_time, chan_nr, &fn_report, &tch_f_hn, &tch_sub, NULL);
- burst_id = (fn_report - 12) / 26;
-
- /* Collect measurements */
- rx_tch_a.meas[burst_id].toa_qbit = dsp_api.db_r->a_serv_demod[D_TOA];
- rx_tch_a.meas[burst_id].pm_dbm8 =
- agc_inp_dbm8_by_pm(dsp_api.db_r->a_serv_demod[D_PM] >> 3);
- rx_tch_a.meas[burst_id].freq_err =
- ANGLE_TO_FREQ(dsp_api.db_r->a_serv_demod[D_ANGLE]);
- rx_tch_a.meas[burst_id].snr = dsp_api.db_r->a_serv_demod[D_SNR];
-
- /* feed computed frequency error into AFC loop */
- if (rx_tch_a.meas[burst_id].snr > AFC_SNR_THRESHOLD)
- afc_input(rx_tch_a.meas[burst_id].freq_err, arfcn, 1);
- else
- afc_input(rx_tch_a.meas[burst_id].freq_err, arfcn, 0);
-
- /* feed computed TOA into TA loop */
- toa_input(rx_tch_a.meas[burst_id].toa_qbit << 2, rx_tch_a.meas[burst_id].snr);
-
- /* Tell the RF frontend to set the gain appropriately */
- rffe_compute_gain(rx_tch_a.meas[burst_id].pm_dbm8 / 8,
- CAL_DSP_TGT_BB_LVL);
-
- /* Last burst, read data & send to the up layer */
- if ((burst_id == 3) && (dsp_api.ndb->a_cd[0] & (1<<B_BLUD))) {
- unsigned int i;
- uint16_t num_biterr;
- uint32_t avg_snr = 0;
- int32_t avg_dbm8 = 0;
-
- /* Average SNR & RX level + error & crc status */
- for (i=0; i<4; i++) {
- avg_snr += rx_tch_a.meas[i].snr;
- avg_dbm8 += rx_tch_a.meas[i].pm_dbm8;
- }
- rx_tch_a.dl->snr = avg_snr / 4;
- rx_tch_a.dl->rx_level = dbm2rxlev(avg_dbm8 / (8*4));
-
- num_biterr = dsp_api.ndb->a_cd[2];
- if (num_biterr > 0xff)
- rx_tch_a.dl->num_biterr = 0xff;
- else
- rx_tch_a.dl->num_biterr = num_biterr;
-
- rx_tch_a.dl->fire_crc = ((dsp_api.ndb->a_cd[0] & 0xffff) & ((1 << B_FIRE1) | (1 << B_FIRE0))) >> B_FIRE0;
-
- /* Update rx level for pm report */
- pu_update_rx_level(rx_tch_a.dl->rx_level);
-
- /* Copy actual data, skipping the information block [0,1,2] */
- dsp_memcpy_from_api(rx_tch_a.di->data, &dsp_api.ndb->a_cd[3], 23, 0);
-
- /* Give message to up layer */
- l1_queue_for_l2(rx_tch_a.msg);
- rx_tch_a.msg = NULL; rx_tch_a.dl = NULL; rx_tch_a.di = NULL;
-
- /* Reset header */
- dsp_api.ndb->a_cd[0] = (1<<B_FIRE1);
- dsp_api.ndb->a_cd[2] = 0xffff;
- }
-
-skip:
- /* mark READ page as being used */
- dsp_api.r_page_used = 1;
-
- return 0;
-}
-
-static int l1s_tch_a_cmd(__unused uint8_t p1, __unused uint8_t p2, uint16_t p3)
-{
- uint8_t mf_task_id = p3 & 0xff;
- uint8_t chan_nr;
- uint16_t arfcn;
- uint8_t tsc, tn;
- uint8_t tch_f_hn, tch_sub, tch_mode;
- uint32_t fn_report;
- uint8_t burst_id;
-
- /* Get/compute various parameters */
- rfch_get_params(&l1s.next_time, &arfcn, &tsc, &tn);
- chan_nr = mframe_task2chan_nr(mf_task_id, tn);
- tch_get_params(&l1s.next_time, chan_nr, &fn_report, &tch_f_hn, &tch_sub, &tch_mode);
- burst_id = (fn_report - 12) / 26;
-
- /* Load SACCH data if we start a new burst */
- if (burst_id == 0) {
- uint16_t *info_ptr = dsp_api.ndb->a_cu;
- struct msgb *msg;
- const uint8_t *data;
-
- /* If the TX queue is empty, send dummy measurement */
- msg = msgb_dequeue(&l1s.tx_queue[L1S_CHAN_SACCH]);
- data = msg ? msg->l3h : pu_get_meas_frame();
-
- /* Fill data block header */
- info_ptr[0] = (1 << B_BLUD); /* 1st word: Set B_BLU bit. */
- info_ptr[1] = 0; /* 2nd word: cleared. */
- info_ptr[2] = 0; /* 3nd word: cleared. */
-
- /* Copy the actual data after the header */
- dsp_memcpy_to_api(&info_ptr[3], data, 23, 0);
-
- /* Indicate completion (FIXME: early but easier this way for now) */
- if (msg) {
- last_tx_tch_fn = l1s.next_time.fn;
- last_tx_tch_type |= TX_TYPE_SACCH;
- l1s_compl_sched(L1_COMPL_TX_TCH);
- }
-
- /* Free msg now that we're done with it */
- if (msg)
- msgb_free(msg);
- }
-
- /* Allocate RX burst */
- if (burst_id == 0) {
- /* Clear 'dangling' msgb */
- if (rx_tch_a.msg) {
- /* Can happen if the task was shutdown in the middle of
- * 4 bursts ... */
- msgb_free(rx_tch_a.msg);
- }
-
- /* Allocate burst */
- /* FIXME: we actually want all allocation out of L1S! */
- rx_tch_a.msg = l1ctl_msgb_alloc(L1CTL_DATA_IND);
- if (!rx_tch_a.msg)
- printf("tch_a_cmd(0): unable to allocate msgb\n");
-
- rx_tch_a.dl = (struct l1ctl_info_dl *) msgb_put(rx_tch_a.msg, sizeof(*rx_tch_a.dl));
- rx_tch_a.di = (struct l1ctl_data_ind *) msgb_put(rx_tch_a.msg, sizeof(*rx_tch_a.di));
-
- /* Pre-fill DL header with some info about burst(0) */
- rx_tch_a.dl->chan_nr = chan_nr;
- rx_tch_a.dl->link_id = 0x40; /* SACCH */
- rx_tch_a.dl->band_arfcn = htons(arfcn);
- rx_tch_a.dl->frame_nr = htonl(l1s.next_time.fn);
- }
-
- /* Configure DSP for TX/RX */
- l1s_tx_apc_helper(arfcn);
-
- dsp_load_tch_param(
- &l1s.next_time,
- tch_mode, tch_f_hn ? TCH_F : TCH_H, tch_sub,
- 0, 0, tn
- );
-
- dsp_load_rx_task(TCHA_DSP_TASK, 0, tsc); /* burst_id unused for TCHA */
- l1s_rx_win_ctrl(arfcn, L1_RXWIN_NB, 0);
-
- dsp_load_tx_task(TCHA_DSP_TASK, 0, tsc); /* burst_id unused for TCHA */
- l1s_tx_win_ctrl(arfcn, L1_TXWIN_NB, 0, 3);
-
- return 0;
-}
-
-
-const struct tdma_sched_item tch_a_sched_set[] = {
- SCHED_ITEM_DT(l1s_tch_a_cmd, 0, 0, 0), SCHED_END_FRAME(),
- SCHED_END_FRAME(),
- SCHED_ITEM(l1s_tch_a_resp, 0, 0, -4), SCHED_END_FRAME(),
- SCHED_END_SET()
-};
diff --git a/Src/osmoconbb/src/target/firmware/layer1/prim_tx_nb.c b/Src/osmoconbb/src/target/firmware/layer1/prim_tx_nb.c
deleted file mode 100644
index 3038178..0000000
--- a/Src/osmoconbb/src/target/firmware/layer1/prim_tx_nb.c
+++ /dev/null
@@ -1,173 +0,0 @@
-/* Layer 1 - Transmit Normal Burst */
-
-/* (C) 2010 by Dieter Spaar <spaar@mirider.augusta.de>
- * (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include <defines.h>
-#include <debug.h>
-#include <memory.h>
-#include <byteorder.h>
-#include <osmocom/gsm/gsm_utils.h>
-#include <osmocom/core/msgb.h>
-#include <calypso/dsp_api.h>
-#include <calypso/irq.h>
-#include <calypso/tpu.h>
-#include <calypso/tsp.h>
-#include <calypso/dsp.h>
-#include <calypso/timer.h>
-#include <comm/sercomm.h>
-
-#include <layer1/sync.h>
-#include <layer1/agc.h>
-#include <layer1/tdma_sched.h>
-#include <layer1/mframe_sched.h>
-#include <layer1/tpu_window.h>
-#include <layer1/l23_api.h>
-#include <layer1/rfch.h>
-#include <layer1/prim.h>
-
-#include <l1ctl_proto.h>
-
-
-static uint32_t last_txnb_fn;
-
-/* p1: type of operation (0: one NB, 1: one RACH burst, 2: four NB) */
-static int l1s_tx_resp(__unused uint8_t p1, __unused uint8_t burst_id,
- __unused uint16_t p3)
-{
- putchart('t');
-
- dsp_api.r_page_used = 1;
-
- if (burst_id == 3) {
- last_txnb_fn = l1s.current_time.fn - 4;
- l1s_compl_sched(L1_COMPL_TX_NB);
- }
-
- return 0;
-}
-
-/* p1: type of operation (0: one NB, 1: one RACH burst, 2: four NB) */
-static int l1s_tx_cmd(uint8_t p1, uint8_t burst_id, uint16_t p3)
-{
- uint16_t arfcn;
- uint8_t tsc, tn;
- uint8_t mf_task_id = p3 & 0xff;
- uint8_t mf_task_flags = p3 >> 8;
-
- putchart('T');
-
- /* before sending first of the four bursts, copy data to API ram */
- if (burst_id == 0) {
- uint16_t *info_ptr = dsp_api.ndb->a_cu;
- struct msgb *msg;
- const uint8_t *data;
-
- /* distinguish between DCCH and ACCH */
- if (mf_task_flags & MF_F_SACCH) {
- msg = msgb_dequeue(&l1s.tx_queue[L1S_CHAN_SACCH]);
- data = msg ? msg->l3h : pu_get_meas_frame();
- } else {
- msg = msgb_dequeue(&l1s.tx_queue[L1S_CHAN_MAIN]);
- data = msg ? msg->l3h : pu_get_idle_frame();
- }
-
- /* Fill data block Header */
- info_ptr[0] = (1 << B_BLUD); // 1st word: Set B_BLU bit.
- info_ptr[1] = 0; // 2nd word: cleared.
- info_ptr[2] = 0; // 3rd word: cleared.
-
- /* Copy the actual data after the header */
- dsp_memcpy_to_api(&info_ptr[3], data, 23, 0);
-
- if (msg)
- msgb_free(msg);
- }
-
- rfch_get_params(&l1s.next_time, &arfcn, &tsc, &tn);
-
- l1s_tx_apc_helper(arfcn);
-
- if (p1 == 0)
- /* DUL_DSP_TASK, one normal burst */
- dsp_load_tch_param(&l1s.next_time,
- SIG_ONLY_MODE, INVALID_CHANNEL, 0, 0, 0, tn);
-
- else if (p1 == 2)
- /* DUL_DSP_TASK, four normal bursts */
- dsp_load_tch_param(&l1s.next_time,
- SIG_ONLY_MODE, SDCCH_4, 0, 0, 0, tn);
-
- dsp_load_tx_task(DUL_DSP_TASK, burst_id, tsc);
-
- l1s_tx_win_ctrl(arfcn, L1_TXWIN_NB, 0, 3);
-
- return 0;
-}
-
-/* Asynchronous completion handler for NB transmit */
-static void l1a_tx_nb_compl(__unused enum l1_compl c)
-{
- struct msgb *msg;
-
- msg = l1_create_l2_msg(L1CTL_DATA_CONF, last_txnb_fn, 0, 0);
- l1_queue_for_l2(msg);
-}
-
-void l1s_tx_test(uint8_t base_fn, uint8_t type)
-{
- printf("Starting TX %d\n", type);
-
- if (type == 0) {// one normal burst
- tdma_schedule(base_fn, &l1s_tx_cmd, 0, 0, 0, 3);
- tdma_schedule(base_fn + 2, &l1s_tx_resp, 0, 0, 0, 3);
- } else if (type == 2) { // four normal bursts
- tdma_schedule(base_fn, &l1s_tx_cmd, 2, 0, 0, 3);
- tdma_schedule(base_fn + 1, &l1s_tx_cmd, 2, 1, 0, 3);
- tdma_schedule(base_fn + 2, &l1s_tx_resp, 2, 0, 0, 3);
- tdma_schedule(base_fn + 2, &l1s_tx_cmd, 2, 2, 0, 3);
- tdma_schedule(base_fn + 3, &l1s_tx_resp, 2, 1, 0, 3);
- tdma_schedule(base_fn + 3, &l1s_tx_cmd, 2, 3, 0, 3);
- tdma_schedule(base_fn + 4, &l1s_tx_resp, 2, 2, 0, 3);
- tdma_schedule(base_fn + 5, &l1s_tx_resp, 2, 3, 0, 3);
- }
-}
-
-/* sched sets for uplink */
-const struct tdma_sched_item nb_sched_set_ul[] = {
- SCHED_ITEM_DT(l1s_tx_cmd, 3, 2, 0), SCHED_END_FRAME(),
- SCHED_ITEM_DT(l1s_tx_cmd, 3, 2, 1), SCHED_END_FRAME(),
- SCHED_ITEM(l1s_tx_resp, -4, 2, 0), SCHED_ITEM_DT(l1s_tx_cmd, 3, 2, 2), SCHED_END_FRAME(),
- SCHED_ITEM(l1s_tx_resp, -4, 2, 1), SCHED_ITEM_DT(l1s_tx_cmd, 3, 2, 3), SCHED_END_FRAME(),
- SCHED_ITEM(l1s_tx_resp, -4, 2, 2), SCHED_END_FRAME(),
- SCHED_ITEM(l1s_tx_resp, -4, 2, 3), SCHED_END_FRAME(),
- SCHED_END_SET()
-};
-
-static __attribute__ ((constructor)) void prim_tx_nb_init(void)
-{
- l1s.completion[L1_COMPL_TX_NB] = &l1a_tx_nb_compl;
-}
diff --git a/Src/osmoconbb/src/target/firmware/layer1/prim_utils.c b/Src/osmoconbb/src/target/firmware/layer1/prim_utils.c
deleted file mode 100644
index c85da71..0000000
--- a/Src/osmoconbb/src/target/firmware/layer1/prim_utils.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/* Layer 1 Various primitive utilities */
-
-/* (C) 2010 by Sylvain Munaut <tnt@246tNt.com>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-
-#include <osmocom/core/msgb.h>
-#include <layer1/sync.h>
-
-
-static const uint8_t ubUui[23] = {
- /* dummy lapdm header */
- 0x01, 0x03, 0x01,
-
- /* fill bytes */
- 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
- 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
- 0x2b, 0x2b, 0x2b, 0x2b
-};
-
-static uint8_t ubMeas[23] = {
- /* L1 SAACH pseudo-header */
- 0x0f, 0x00,
-
- /* lapdm header */
- 0x01, 0x03, 0x49,
-
- /* Measurement report */
- 0x06, 0x15, 0x36, 0x36, 0x01, 0xC0, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00
-};
-
-
-const uint8_t *pu_get_idle_frame(void)
-{
- return ubUui;
-}
-
-void pu_update_rx_level(uint8_t rx_level)
-{
- ubMeas[7] = ubMeas[8] = rx_level;
-}
-
-const uint8_t *pu_get_meas_frame(void)
-{
- if (l1s.tx_meas) {
- return l1s.tx_meas->l3h;
- } else {
- /* Update L1 SAACH pseudo-header */
- ubMeas[0] = l1s.tx_power;
- ubMeas[1] = l1s.ta;
-
- return ubMeas;
- }
-}
diff --git a/Src/osmoconbb/src/target/firmware/layer1/rfch.c b/Src/osmoconbb/src/target/firmware/layer1/rfch.c
deleted file mode 100644
index d0818d0..0000000
--- a/Src/osmoconbb/src/target/firmware/layer1/rfch.c
+++ /dev/null
@@ -1,152 +0,0 @@
-/* RF Channel utilities */
-
-/* (C) 2010 by Sylvain Munaut <tnt@246tNt.com>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-
-#include <osmocom/gsm/gsm_utils.h>
-
-#include <layer1/sync.h>
-
-
-/*
- * Hopping sequence generation
- *
- * The algorithm is explained in GSM 05.02 Section 6.2.3
- *
- * if HSN = 0 (cyclic hopping) then:
- * MAI, integer (0 .. N-1) :
- * MAI = (FN + MAIO) modulo N
- *
- * else:
- * M, integer (0 .. 152) :
- * M = T2 + RNTABLE((HSN xor T1R) + T3)
- *
- * S, integer (0 .. N-1) :
- * M' = M modulo (2 ^ NBIN)
- * T' = T3 modulo (2 ^ NBIN)
- *
- * if M' < N then:
- * S = M'
- * else:
- * S = (M'+T') modulo N
- *
- * MAI, integer (0 .. N-1) :
- * MAI = (S + MAIO) modulo N
- */
-
-static uint8_t rn_table[114] = {
- 48, 98, 63, 1, 36, 95, 78, 102, 94, 73,
- 0, 64, 25, 81, 76, 59, 124, 23, 104, 100,
- 101, 47, 118, 85, 18, 56, 96, 86, 54, 2,
- 80, 34, 127, 13, 6, 89, 57, 103, 12, 74,
- 55, 111, 75, 38, 109, 71, 112, 29, 11, 88,
- 87, 19, 3, 68, 110, 26, 33, 31, 8, 45,
- 82, 58, 40, 107, 32, 5, 106, 92, 62, 67,
- 77, 108, 122, 37, 60, 66, 121, 42, 51, 126,
- 117, 114, 4, 90, 43, 52, 53, 113, 120, 72,
- 16, 49, 7, 79, 119, 61, 22, 84, 9, 97,
- 91, 15, 21, 24, 46, 39, 93, 105, 65, 70,
- 125, 99, 17, 123,
-};
-
-
-static int pow_nbin_mask(int n)
-{
- int x;
- x = (n ) |
- (n >> 1) |
- (n >> 2) |
- (n >> 3) |
- (n >> 4) |
- (n >> 5) |
- (n >> 6);
- return x;
-}
-
-static int16_t rfch_hop_seq_gen(struct gsm_time *t,
- uint8_t hsn, uint8_t maio,
- uint8_t n, uint16_t *arfcn_tbl)
-{
- int mai;
-
- if (!hsn) {
- /* cyclic hopping */
- mai = (t->fn + maio) % n;
- } else {
- /* pseudo random hopping */
- int m, mp, tp, s, pnm;
-
- pnm = pow_nbin_mask(n);
-
- m = t->t2 + rn_table[(hsn ^ (t->t1 & 63)) + t->t3];
- mp = m & pnm;
-
- if (mp < n)
- s = mp;
- else {
- tp = t->t3 & pnm;
- s = (mp + tp) % n;
- }
-
- mai = (s + maio) % n;
- }
-
- return arfcn_tbl ? arfcn_tbl[mai] : mai;
-}
-
-
-/* RF Channel parameters */
-void rfch_get_params(struct gsm_time *t,
- uint16_t *arfcn_p, uint8_t *tsc_p, uint8_t *tn_p)
-{
- if (l1s.dedicated.type == GSM_DCHAN_NONE) {
- /* Serving cell only */
- if (arfcn_p)
- *arfcn_p = l1s.serving_cell.arfcn;
-
- if (tsc_p)
- *tsc_p = l1s.serving_cell.bsic & 0x7;
-
- if (tn_p)
- *tn_p = 0;
- } else {
- /* Dedicated channel */
- if (arfcn_p) {
- if (l1s.dedicated.h) {
- *arfcn_p = rfch_hop_seq_gen(t,
- l1s.dedicated.h1.hsn,
- l1s.dedicated.h1.maio,
- l1s.dedicated.h1.n,
- l1s.dedicated.h1.ma);
- } else {
- *arfcn_p = l1s.dedicated.h0.arfcn;
- }
- }
-
- if (tsc_p)
- *tsc_p = l1s.dedicated.tsc;
-
- if (tn_p)
- *tn_p = l1s.dedicated.tn;
- }
-}
-
diff --git a/Src/osmoconbb/src/target/firmware/layer1/sched_gsmtime.c b/Src/osmoconbb/src/target/firmware/layer1/sched_gsmtime.c
deleted file mode 100644
index 01e22ca..0000000
--- a/Src/osmoconbb/src/target/firmware/layer1/sched_gsmtime.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/* GSM-Time One-shot Event Scheduler Implementation (on top of TDMA sched) */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <errno.h>
-
-#include <debug.h>
-#include <osmocom/core/linuxlist.h>
-
-#include <layer1/tdma_sched.h>
-#include <layer1/sched_gsmtime.h>
-
-static struct sched_gsmtime_event sched_gsmtime_events[16];
-static LLIST_HEAD(active_evts);
-static LLIST_HEAD(inactive_evts);
-
-/* Scheduling of a tdma_sched_item list one-shot at a given GSM time */
-int sched_gsmtime(const struct tdma_sched_item *si, uint32_t fn, uint16_t p3)
-{
- struct llist_head *lh;
- struct sched_gsmtime_event *evt, *cur;
-
- printd("sched_gsmtime(si=%p, fn=%u)\n", si, fn);
-
- /* obtain a free/inactive event structure */
- if (llist_empty(&inactive_evts))
- return -EBUSY;
- lh = inactive_evts.next;
- llist_del(lh);
- evt = llist_entry(lh, struct sched_gsmtime_event, list);
-
- evt->fn = fn;
- evt->si = si;
- evt->p3 = p3;
-
- /* do a sorted insert into the list, i.e. insert the new
- * event _before_ the first entry that has a higher fn */
- llist_for_each_entry(cur, &active_evts, list) {
- if (cur->fn > evt->fn) {
- llist_add_tail(lh, &cur->list);
- return 0;
- }
- }
-
- /* if we reach here, active_evts is empty _OR_ new event
- * is after all the other events: append at end of list */
- llist_add_tail(lh, &active_evts);
-
- return 0;
-}
-
-/* how many TDMA frame ticks should we schedule events ahead? */
-#define SCHEDULE_AHEAD 2
-
-/* how long do we need to tell the DSP in advance what we want to do? */
-#define SCHEDULE_LATENCY 1
-
-/* execute all GSMTIME one-shot events pending for 'fn' */
-int sched_gsmtime_execute(uint32_t fn)
-{
- struct sched_gsmtime_event *evt, *evt2;
- int num = 0;
-
- llist_for_each_entry_safe(evt, evt2, &active_evts, list) {
- if (evt->fn == fn + SCHEDULE_AHEAD) {
- printd("sched_gsmtime_execute(time=%u): fn=%u si=%p\n", fn, evt->fn, evt->si);
- tdma_schedule_set(SCHEDULE_AHEAD-SCHEDULE_LATENCY,
- evt->si, evt->p3);
- llist_del(&evt->list);
- /* put event back in list of inactive (free) events */
- llist_add(&evt->list, &inactive_evts);
- num++;
- } if (evt->fn > fn + SCHEDULE_AHEAD) {
- /* break the loop as our list is ordered */
- break;
- }
- }
- return num;
-}
-
-void sched_gsmtime_init(void)
-{
- unsigned int i;
-
- printd("sched_gsmtime_init()\n");
-
- for (i = 0; i < ARRAY_SIZE(sched_gsmtime_events); i++)
- llist_add(&sched_gsmtime_events[i].list, &inactive_evts);
-}
-
-void sched_gsmtime_reset(void)
-{
- struct sched_gsmtime_event *evt, *evt2;
-
- llist_for_each_entry_safe(evt, evt2, &active_evts, list) {
- llist_del(&evt->list);
- /* put event back in list of inactive (free) events */
- llist_add(&evt->list, &inactive_evts);
- }
-}
diff --git a/Src/osmoconbb/src/target/firmware/layer1/sync.c b/Src/osmoconbb/src/target/firmware/layer1/sync.c
deleted file mode 100644
index 36f4297..0000000
--- a/Src/osmoconbb/src/target/firmware/layer1/sync.c
+++ /dev/null
@@ -1,402 +0,0 @@
-/* Synchronous part of GSM Layer 1 */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- * (C) 2010 by Dieter Spaar <spaar@mirider.augusta.de>
- * (C) 2010 by Holger Hans Peter Freyther <zecke@selfish.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include <defines.h>
-#include <debug.h>
-#include <memory.h>
-#include <byteorder.h>
-#include <asm/system.h>
-
-#include <osmocom/gsm/gsm_utils.h>
-#include <osmocom/core/msgb.h>
-#include <calypso/dsp_api.h>
-#include <calypso/irq.h>
-#include <calypso/tpu.h>
-#include <calypso/tsp.h>
-#include <calypso/dsp.h>
-#include <calypso/timer.h>
-#include <comm/sercomm.h>
-
-#include <abb/twl3025.h>
-
-//#define DEBUG_EVERY_TDMA
-
-#include <layer1/sync.h>
-#include <layer1/afc.h>
-#include <layer1/agc.h>
-#include <layer1/apc.h>
-#include <layer1/tdma_sched.h>
-#include <layer1/mframe_sched.h>
-#include <layer1/sched_gsmtime.h>
-#include <layer1/tpu_window.h>
-#include <layer1/l23_api.h>
-
-#include <l1ctl_proto.h>
-
-struct l1s_state l1s;
-
-void l1s_time_inc(struct gsm_time *time, uint32_t delta_fn)
-{
- ADD_MODULO(time->fn, delta_fn, GSM_MAX_FN);
-
- if (delta_fn == 1) {
- ADD_MODULO(time->t2, 1, 26);
- ADD_MODULO(time->t3, 1, 51);
-
- /* if the new frame number is a multiple of 51 */
- if (time->t3 == 0) {
- ADD_MODULO(time->tc, 1, 8);
-
- /* if new FN is multiple of 51 and 26 */
- if (time->t2 == 0)
- ADD_MODULO(time->t1, 1, 2048);
- }
- } else
- gsm_fn2gsmtime(time, time->fn);
-}
-
-void l1s_time_dump(const struct gsm_time *time)
-{
- printf("fn=%lu(%u/%2u/%2u)", time->fn, time->t1, time->t2, time->t3);
-}
-
-/* clip a signed 16bit value at a certain limit */
-int16_t clip_int16(int16_t angle, int16_t clip_at)
-{
- if (angle > clip_at)
- angle = clip_at;
- else if (angle < -clip_at)
- angle = -clip_at;
-
- return angle;
-}
-
-int16_t l1s_snr_int(uint16_t snr)
-{
- return snr >> 10;
-}
-
-uint16_t l1s_snr_fract(uint16_t snr)
-{
- uint32_t fract = snr & 0x3ff;
- fract = fract * 1000 / (2 << 10);
-
- return fract & 0xffff;
-}
-
-#define AFC_MAX_ANGLE 328 /* 0.01 radian in fx1.15 */
-
-/* synchronize the L1S to a new timebase (typically a new cell */
-void synchronize_tdma(struct l1_cell_info *cinfo)
-{
- int32_t fn_offset;
- uint32_t tpu_shift = cinfo->time_alignment;
-
- /* NB detection only works if the TOA of the SB
- * is within 0...8. We have to add 75 to get an SB TOA of 4. */
- tpu_shift += 75;
-
- tpu_shift = (l1s.tpu_offset + tpu_shift) % QBITS_PER_TDMA;
-
- fn_offset = cinfo->fn_offset - 1;
-
- /* if we're already very close to the end of the TPU frame, the
- * next interrupt will basically occur now and we need to
- * compensate */
- if (tpu_shift < SWITCH_TIME)
- fn_offset++;
-
-#if 0 /* probably wrong as we already added "offset" and "shift" above */
- /* increment the TPU quarter-bit offset */
- l1s.tpu_offset = (l1s.tpu_offset + tpu_shift) % TPU_RANGE;
-#else
- l1s.tpu_offset = tpu_shift;
-#endif
-
- puts("Synchronize_TDMA\n");
- /* request the TPU to adjust the SYNCHRO and OFFSET registers */
- tpu_enq_at(SWITCH_TIME);
- tpu_enq_sync(l1s.tpu_offset);
-#if 0
- /* FIXME: properly end the TPU window at the emd of l1_sync() */
- tpu_end_scenario();
-#endif
-
- /* Change the current time to reflect the new value */
- l1s_time_inc(&l1s.current_time, fn_offset);
- l1s.next_time = l1s.current_time;
- l1s_time_inc(&l1s.next_time, 1);
-
- /* The serving cell now no longer has a frame or bit offset */
- cinfo->fn_offset = 0;
- cinfo->time_alignment = 0;
-}
-
-void l1s_reset_hw(void)
-{
- dsp_api.w_page = 0;
- dsp_api.r_page = 0;
- dsp_api.r_page_used = 0;
- dsp_api.db_w = (T_DB_MCU_TO_DSP *) BASE_API_W_PAGE_0;
- dsp_api.db_r = (T_DB_DSP_TO_MCU *) BASE_API_R_PAGE_0;
- dsp_api.ndb->d_dsp_page = 0;
-
- /* we have to really reset the TPU, otherwise FB detection
- * somtimes returns wrong TOA values. */
- tpu_reset(1);
- tpu_reset(0);
- tpu_rewind();
- tpu_enq_wait(5); /* really needed ? */
- tpu_enq_sync(l1s.tpu_offset);
- tpu_end_scenario();
-}
-
-/* Lost TDMA interrupt detection. This works by starting a hardware timer
- * that is clocked by the same master clock source (VCTCXO). We expect
- * 1875 timer ticks in the duration of a TDMA frame (5000 qbits / 1250 bits) */
-
-/* Timer for detecting lost IRQ */
-#define TIMER_TICKS_PER_TDMA 1875
-#define TIMER_TICK_JITTER 1
-
-static int last_timestamp;
-
-static inline void check_lost_frame(void)
-{
- int diff, timestamp = hwtimer_read(1);
-
- if (last_timestamp < timestamp)
- last_timestamp += (4*TIMER_TICKS_PER_TDMA);
-
- diff = last_timestamp - timestamp;
-
- /* allow for a bit of jitter */
- if (diff < TIMER_TICKS_PER_TDMA - TIMER_TICK_JITTER ||
- diff > TIMER_TICKS_PER_TDMA + TIMER_TICK_JITTER)
- printf("LOST %d!\n", diff);
-
- last_timestamp = timestamp;
-}
-
-/* schedule a completion */
-void l1s_compl_sched(enum l1_compl c)
-{
- unsigned long flags;
-
- local_firq_save(flags);
- l1s.scheduled_compl |= (1 << c);
- local_irq_restore(flags);
-}
-
-/* main routine for synchronous part of layer 1, called by frame interrupt
- * generated by TPU once every TDMA frame */
-static void l1_sync(void)
-{
- uint16_t sched_flags;
-
- putchart('+');
-
- check_lost_frame();
-
- /* Increment Time */
- l1s.current_time = l1s.next_time;
- l1s_time_inc(&l1s.next_time, 1);
- //l1s_time_dump(&l1s.current_time); putchar(' ');
-
- dsp_api.frame_ctr++;
- dsp_api.r_page_used = 0;
-
- /* Update pointers */
- if (dsp_api.w_page == 0)
- dsp_api.db_w = (T_DB_MCU_TO_DSP *) BASE_API_W_PAGE_0;
- else
- dsp_api.db_w = (T_DB_MCU_TO_DSP *) BASE_API_W_PAGE_1;
-
- if (dsp_api.r_page == 0)
- dsp_api.db_r = (T_DB_DSP_TO_MCU *) BASE_API_R_PAGE_0;
- else
- dsp_api.db_r = (T_DB_DSP_TO_MCU *) BASE_API_R_PAGE_1;
-
- /* Reset MCU->DSP page */
- dsp_api_memset((uint16_t *) dsp_api.db_w, sizeof(*dsp_api.db_w));
-
- /* Update AFC */
- afc_load_dsp();
-
- if (dsp_api.ndb->d_error_status) {
- printf("DSP Error Status: %u\n", dsp_api.ndb->d_error_status);
- dsp_api.ndb->d_error_status = 0;
- }
-
- /* execute the sched_items that have been scheduled for this
- * TDMA frame (including setup/cleanup steps) */
- sched_flags = tdma_sched_flag_scan();
-
- if (sched_flags & TDMA_IFLG_TPU)
- l1s_win_init();
-
- tdma_sched_execute();
-
- if (dsp_api.r_page_used) {
- /* clear and switch the read page */
- dsp_api_memset((uint16_t *) dsp_api.db_r,
- sizeof(*dsp_api.db_r));
-
- /* TSM30 does it (really needed ?):
- * Set crc result as "SB not found". */
- dsp_api.db_r->a_sch[0] = (1<<B_SCH_CRC); /* B_SCH_CRC =1, BLUD =0 */
-
- dsp_api.r_page ^= 1;
- }
-
- if (sched_flags & TDMA_IFLG_DSP)
- dsp_end_scenario();
-
- if (sched_flags & TDMA_IFLG_TPU)
- tpu_end_scenario();
-
- /* schedule new / upcoming TDMA items */
- mframe_schedule();
- /* schedule new / upcoming one-shot events */
- sched_gsmtime_execute(l1s.current_time.fn);
-
- tdma_sched_advance();
-}
-
-/* ABORT command ********************************************************/
-
-static int l1s_abort_cmd(__unused uint8_t p1, __unused uint8_t p2,
- __unused uint16_t p3)
-{
- putchart('A');
-
- /* similar to l1s_reset_hw() without touching the TPU */
-
- dsp_api.w_page = 0;
- dsp_api.r_page = 0;
- dsp_api.r_page_used = 0;
- dsp_api.db_w = (T_DB_MCU_TO_DSP *) BASE_API_W_PAGE_0;
- dsp_api.db_r = (T_DB_DSP_TO_MCU *) BASE_API_R_PAGE_0;
-
- /* Reset task commands. */
- dsp_api.db_w->d_task_d = NO_DSP_TASK; /* Init. RX task to NO TASK */
- dsp_api.db_w->d_task_u = NO_DSP_TASK; /* Init. TX task to NO TASK */
- dsp_api.db_w->d_task_ra = NO_DSP_TASK; /* Init. RA task to NO TASK */
- dsp_api.db_w->d_task_md = NO_DSP_TASK; /* Init. MONITORING task to NO TASK */
- dsp_api.ndb->d_dsp_page = 0;
-
- /* Set "b_abort" to TRUE, dsp will reset current and pending tasks */
- dsp_api.db_w->d_ctrl_system |= (1 << B_TASK_ABORT);
- return 0;
-}
-
-void l1s_dsp_abort(void)
-{
- /* abort right now */
- tdma_schedule(0, &l1s_abort_cmd, 0, 0, 0, 10);
-}
-
-void l1s_tx_apc_helper(uint16_t arfcn)
-{
- int16_t auxapc;
- enum gsm_band band;
- int i;
-
- /* Get DAC setting */
- band = gsm_arfcn2band(arfcn);
- auxapc = apc_tx_pwrlvl2auxapc(band, l1s.tx_power);
-
- /* Load the ApcOffset into the DSP */
- #define MY_OFFSET 4
- dsp_api.ndb->d_apcoff = ABB_VAL(APCOFF, (1 << 6) | MY_OFFSET) | 1; /* 2x slope for the GTA-02 ramp */
-
- /* Load the TX Power into the DSP */
- /*
- If the power is too low (below 0 dBm) the ramp is not OK,
- especially for GSM-1800. However an MS does not send below
- 0dBm anyway.
- */
- dsp_api.db_w->d_power_ctl = ABB_VAL(AUXAPC, auxapc);
-
- /* Update the ramp according to the PCL */
- for (i = 0; i < 16; i++)
- dsp_api.ndb->a_ramp[i] = ABB_VAL(APCRAM, twl3025_default_ramp[i]);
-
- /* The Ramp Table is sent to ABB only once after RF init routine called */
- dsp_api.db_w->d_ctrl_abb |= (1 << B_RAMP) | (1 << B_BULRAMPDEL);
-}
-
-/* Interrupt handler */
-static void frame_irq(__unused enum irq_nr nr)
-{
- l1_sync();
-}
-
-/* reset the layer1 as part of synchronizing to a new cell */
-void l1s_reset(void)
-{
- /* Reset state */
- l1s.fb.mode = 0;
- l1s.tx_power = 7; /* initial power reset */
-
- /* Leave dedicated mode */
- l1s.dedicated.type = GSM_DCHAN_NONE;
-
- /* reset scheduler and hardware */
- sched_gsmtime_reset();
- mframe_reset();
- tdma_sched_reset();
- l1s_dsp_abort();
-
- /* Cipher off */
- dsp_load_ciph_param(0, NULL);
-}
-
-void l1s_init(void)
-{
- unsigned int i;
-
- for (i = 0; i < ARRAY_SIZE(l1s.tx_queue); i++)
- INIT_LLIST_HEAD(&l1s.tx_queue[i]);
- l1s.tx_meas = NULL;
-
- sched_gsmtime_init();
-
- /* register FRAME interrupt as FIQ so it can interrupt normal IRQs */
- irq_register_handler(IRQ_TPU_FRAME, &frame_irq);
- irq_config(IRQ_TPU_FRAME, 1, 1, 0);
- irq_enable(IRQ_TPU_FRAME);
-
- /* configure timer 1 to be auto-reload and have a prescale of 12 (13MHz/12 == qbit clock) */
- hwtimer_enable(1, 1);
- hwtimer_load(1, (1875*4)-1);
- hwtimer_config(1, 0, 1);
- hwtimer_enable(1, 1);
-}
-
diff --git a/Src/osmoconbb/src/target/firmware/layer1/tdma_sched.c b/Src/osmoconbb/src/target/firmware/layer1/tdma_sched.c
deleted file mode 100644
index 8812992..0000000
--- a/Src/osmoconbb/src/target/firmware/layer1/tdma_sched.c
+++ /dev/null
@@ -1,244 +0,0 @@
-/* TDMA Scheduler Implementation */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-#include <string.h>
-
-#include <defines.h>
-#include <debug.h>
-#include <osmocom/gsm/gsm_utils.h>
-
-#include <layer1/tdma_sched.h>
-#include <layer1/sync.h>
-
-#include <calypso/dsp.h>
-
-/* dummy function to mark end of set */
-int tdma_end_set(__unused uint8_t p1, __unused uint8_t p2,
- __unused uint16_t p3)
-{
- return 0;
-}
-
-static uint8_t wrap_bucket(uint8_t offset)
-{
- uint16_t bucket;
-
- bucket = (l1s.tdma_sched.cur_bucket + offset)
- % ARRAY_SIZE(l1s.tdma_sched.bucket);
-
- return bucket;
-}
-
-/* Schedule an item at 'frame_offset' TDMA frames in the future */
-int tdma_schedule(uint8_t frame_offset, tdma_sched_cb *cb,
- uint8_t p1, uint8_t p2, uint16_t p3, int16_t prio)
-{
- struct tdma_scheduler *sched = &l1s.tdma_sched;
- uint8_t bucket_nr = wrap_bucket(frame_offset);
- struct tdma_sched_bucket *bucket = &sched->bucket[bucket_nr];
- struct tdma_sched_item *sched_item;
-
- if (bucket->num_items >= ARRAY_SIZE(bucket->item)) {
- puts("tdma_schedule bucket overflow\n");
- return -1;
- }
-
- sched_item = &bucket->item[bucket->num_items++];
-
- sched_item->cb = cb;
- sched_item->p1 = p1;
- sched_item->p2 = p2;
- sched_item->p3 = p3;
- sched_item->prio = prio;
-
- return 0;
-}
-
-/* Schedule a set of items starting from 'frame_offset' TDMA frames in the future */
-int tdma_schedule_set(uint8_t frame_offset, const struct tdma_sched_item *item_set, uint16_t p3)
-{
- struct tdma_scheduler *sched = &l1s.tdma_sched;
- uint8_t bucket_nr = wrap_bucket(frame_offset);
- int i, j;
-
- for (i = 0, j = 0; 1; i++) {
- const struct tdma_sched_item *sched_item = &item_set[i];
- struct tdma_sched_bucket *bucket = &sched->bucket[bucket_nr];
-
- if (sched_item->cb == &tdma_end_set) {
- /* end of scheduler set, return */
- break;
- }
-
- if (sched_item->cb == NULL) {
- /* advance to next bucket (== TDMA frame) */
- bucket_nr = wrap_bucket(++frame_offset);
- j++;
- continue;
- }
- /* check for bucket overflow */
- if (bucket->num_items >= ARRAY_SIZE(bucket->item)) {
- puts("tdma_schedule bucket overflow\n");
- return -1;
- }
- /* copy the item from the set into the current bucket item position */
- memcpy(&bucket->item[bucket->num_items], sched_item, sizeof(*sched_item));
- bucket->item[bucket->num_items].p3 = p3;
- bucket->num_items++;
- }
-
- return j;
-}
-
-/* Advance TDMA scheduler to the next bucket */
-void tdma_sched_advance(void)
-{
- struct tdma_scheduler *sched = &l1s.tdma_sched;
- uint8_t next_bucket;
-
- /* advance to the next bucket */
- next_bucket = wrap_bucket(1);
- sched->cur_bucket = next_bucket;
-}
-
-/* Scan current frame scheduled items for flags */
-uint16_t tdma_sched_flag_scan(void)
-{
- struct tdma_scheduler *sched = &l1s.tdma_sched;
- struct tdma_sched_bucket *bucket;
- int i;
- uint16_t flags = 0;
-
- /* determine current bucket */
- bucket = &sched->bucket[sched->cur_bucket];
-
- /* iterate over items in this bucket and call callback function */
- for (i=0; i<bucket->num_items; i++) {
- struct tdma_sched_item *item = &bucket->item[i];
- flags |= item->flags;
- }
-
- return flags;
-}
-
-/* Sort a bucket entries by priority */
-static void _tdma_sched_bucket_sort(struct tdma_sched_bucket *bucket, int *seq)
-{
- int i, j, k;
- struct tdma_sched_item *item_i, *item_j;
-
- /* initial sequence */
- /* we need all the items because some call back may schedule
- * new call backs 'on the fly' */
- for (i=0; i<TDMASCHED_NUM_CB; i++)
- seq[i] = i;
-
- /* iterate over items in this bucket and sort them */
- for (i=0; i<bucket->num_items; i++)
- {
- item_i = &bucket->item[seq[i]];
-
- for (j=i+1; j<bucket->num_items; j++)
- {
- item_j = &bucket->item[seq[j]];
-
- if (item_i->prio > item_j->prio)
- {
- item_i = item_j;
- k = seq[i];
- seq[i] = seq[j];
- seq[j] = k;
- }
- }
- }
-}
-
-/* Execute pre-scheduled events for current frame */
-int tdma_sched_execute(void)
-{
- struct tdma_scheduler *sched = &l1s.tdma_sched;
- struct tdma_sched_bucket *bucket;
- int i, num_events = 0;
- int seq[TDMASCHED_NUM_CB];
-
- /* determine current bucket */
- bucket = &sched->bucket[sched->cur_bucket];
-
- /* get sequence in priority order */
- _tdma_sched_bucket_sort(bucket, seq);
-
- /* iterate over items in this bucket and call callback function */
- for (i = 0; i < bucket->num_items; i++) {
- struct tdma_sched_item *item = &bucket->item[seq[i]];
- int rc;
-
- num_events++;
-
- rc = item->cb(item->p1, item->p2, item->p3);
- if (rc < 0) {
- printf("Error %d during processing of item %u of bucket %u\n",
- rc, i, sched->cur_bucket);
- return rc;
- }
- /* if the cb() we just called has scheduled more items for the
- * current TDMA, bucket->num_items will have increased and we
- * will simply continue to execute them as intended. Priorities
- * won't work though ! */
- }
-
- /* clear/reset the bucket */
- bucket->num_items = 0;
-
- /* return number of items that we called */
- return num_events;
-}
-
-void tdma_sched_reset(void)
-{
- struct tdma_scheduler *sched = &l1s.tdma_sched;
- unsigned int bucket_nr;
-
- for (bucket_nr = 0; bucket_nr < ARRAY_SIZE(sched->bucket); bucket_nr++) {
- struct tdma_sched_bucket *bucket = &sched->bucket[bucket_nr];
- /* current bucket will be reset by iteration code above! */
- if (bucket_nr != sched->cur_bucket)
- bucket->num_items = 0;
- }
-
- /* Don't reset cur_bucket, as it would upset the bucket iteration code
- * in tdma_sched_execute() */
-}
-
-void tdma_sched_dump(void)
-{
- unsigned int i;
-
- printf("\n(%2u)", l1s.tdma_sched.cur_bucket);
- for (i = 0; i < ARRAY_SIZE(l1s.tdma_sched.bucket); i++) {
- int bucket_nr = wrap_bucket(i);
- struct tdma_sched_bucket *bucket = &l1s.tdma_sched.bucket[bucket_nr];
- printf("%u:", bucket->num_items);
- }
- putchar('\n');
-}
diff --git a/Src/osmoconbb/src/target/firmware/layer1/toa.c b/Src/osmoconbb/src/target/firmware/layer1/toa.c
deleted file mode 100644
index 7d80d95..0000000
--- a/Src/osmoconbb/src/target/firmware/layer1/toa.c
+++ /dev/null
@@ -1,80 +0,0 @@
-/* AFC (Automatic Frequency Correction) Implementation */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- * (C) 2011 by Andreas Eversberg <jolly@eversberg.eu>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-
-#include <debug.h>
-#include <osmocom/gsm/gsm_utils.h>
-
-#include <layer1/toa.h>
-#include <layer1/avg.h>
-#include <layer1/sync.h>
-
-/* Over how many TDMA frames do we want to average? */
-#define TOA_PERIOD 250
-/* How many of our measurements have to be valid? */
-#define TOA_MIN_MUN_VALID 125
-
-// FIXME:
-#define TOA_SNR_THRESHOLD 2560 /* 2.5 dB in fx6.10 */
-
-struct toa_state {
- struct running_avg ravg; /* running average */
-};
-
-
-static void toa_ravg_output(struct running_avg *ravg, int32_t avg);
-
-static struct toa_state toa_state = {
- .ravg = {
- .outfn = &toa_ravg_output,
- .period = TOA_PERIOD,
- .min_valid = TOA_MIN_MUN_VALID,
- },
-};
-
-void toa_input(int32_t offset, uint32_t snr)
-{
- int valid = 1;
-
- if (snr < TOA_SNR_THRESHOLD || offset < 0 || offset >31)
- valid = 0;
- runavg_input(&toa_state.ravg, offset, valid);
- runavg_check_output(&toa_state.ravg);
-}
-
-void toa_reset(void)
-{
- toa_state.ravg.num_samples = toa_state.ravg.num_samples_valid = 0;
- toa_state.ravg.acc_val = 0;
-}
-
-/* callback function for runavg */
-static void toa_ravg_output(struct running_avg *ravg, int32_t avg)
-{
- if (avg != 16) {
- printf("TOA AVG is not 16 qbits, correcting (got %ld)\n", avg);
- l1s.tpu_offset_correction = avg - 16;
- }
-}
diff --git a/Src/osmoconbb/src/target/firmware/layer1/tpu_window.c b/Src/osmoconbb/src/target/firmware/layer1/tpu_window.c
deleted file mode 100644
index 1ac4ce4..0000000
--- a/Src/osmoconbb/src/target/firmware/layer1/tpu_window.c
+++ /dev/null
@@ -1,167 +0,0 @@
-/* TPU window control routines for Layer 1 */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <debug.h>
-#include <defines.h>
-#include <stdio.h>
-
-#include <rffe.h>
-#include <calypso/tpu.h>
-#include <calypso/tsp.h>
-#include <abb/twl3025.h>
-#include <rf/trf6151.h>
-
-#include <layer1/sync.h>
-#include <layer1/tpu_window.h>
-
-/* all units in GSM quarter-bits (923.1ns) */
-#define L1_TDMA_LENGTH_Q 5000
-#define L1_BURST_LENGTH_Q 625 /* L1_TDMA_LENGTH_Q/8 */
-
-#define L1_NB_MARGIN_Q (3 * 4)
-#define L1_SB_MARGIN_Q (23 * 4)
-#define L1_TAIL_DURATION_Q (3 * 4)
-
-/* Sample length as required by the Calypso DSP */
-#define L1_NB_DURATION_Q (L1_BURST_LENGTH_Q + 2 * L1_NB_MARGIN_Q - L1_TAIL_DURATION_Q)
-#define L1_SB_DURATION_Q (L1_BURST_LENGTH_Q + 2 * L1_SB_MARGIN_Q - L1_TAIL_DURATION_Q)
-#define L1_FB_DURATION_Q (11 * L1_TDMA_LENGTH_Q + 2057) /* more than 11 full slots */
-#define L1_FB26_DURATION_Q (L1_TDMA_LENGTH_Q + 798)
-#define L1_PW_DURATION_Q 289
-
-#define DSP_SETUP_TIME 66
-
-static const uint16_t rx_burst_duration[_NUM_L1_RXWIN] = {
- [L1_RXWIN_PW] = L1_PW_DURATION_Q,
- [L1_RXWIN_FB] = L1_FB_DURATION_Q,
- [L1_RXWIN_SB] = L1_SB_DURATION_Q,
- [L1_RXWIN_NB] = L1_NB_DURATION_Q,
-};
-
-#define L1_TX_NB_DURATION_Q 626
-#define L1_TX_AB_DURATION_Q 386
-
-static const uint16_t tx_burst_duration[_NUM_L1_TXWIN] = {
- [L1_TXWIN_NB] = L1_TX_NB_DURATION_Q,
- [L1_TXWIN_AB] = L1_TX_AB_DURATION_Q,
-};
-
-
-static int _win_setup(__unused uint8_t p1, __unused uint8_t p2, __unused uint16_t p3)
-{
- uint8_t tn;
-
- rfch_get_params(&l1s.next_time, NULL, NULL, &tn);
-
- l1s.tpu_offset = (5000 + l1s.tpu_offset + l1s.tpu_offset_correction) % 5000;
- l1s.tpu_offset_correction = 0;
-
- tpu_enq_at(4740);
- tpu_enq_sync((5000 + l1s.tpu_offset + (L1_BURST_LENGTH_Q * tn)) % 5000);
-
- return 0;
-}
-
-static int _win_cleanup(__unused uint8_t p1, __unused uint8_t p2, __unused uint16_t p3)
-{
- uint8_t tn;
-
- rfch_get_params(&l1s.next_time, NULL, NULL, &tn);
-
- /* restore offset */
- tpu_enq_offset((5000 + l1s.tpu_offset + (L1_BURST_LENGTH_Q * tn)) % 5000);
-
- return 0;
-}
-
-void l1s_win_init(void)
-{
- tdma_schedule(0, _win_setup, 0, 0, 0, -2);
- tdma_schedule(0, _win_cleanup, 0, 0, 0, 9);
-}
-
-void l1s_rx_win_ctrl(uint16_t arfcn, enum l1_rxwin_type wtype, uint8_t tn_ofs)
-{
- int16_t start;
- int32_t stop; /* prevent overflow of int16_t in L1_RXWIN_FB */
-
- /* TN offset & TA adjust */
- start = DSP_SETUP_TIME;
- start += L1_BURST_LENGTH_Q * tn_ofs;
-
- stop = start + rx_burst_duration[wtype] - 1;
-
- /* window open for TRF6151 */
- /* FIXME: why do we need the magic value 100 ? */
- rffe_mode(gsm_arfcn2band(arfcn), 0);
- trf6151_rx_window(start - 100, arfcn);
-
- /* Window open for ABB */
- twl3025_downlink(1, start);
-
- /* Delay 11 full TDMA frames */
- if (wtype == L1_RXWIN_FB) {
- uint8_t i;
- for (i = 0; i < 11; i++)
- tpu_enq_at(0);
-
- stop -= 11 * L1_TDMA_LENGTH_Q;
- }
-
- /* Window close for ABB */
- twl3025_downlink(0, stop & 0xffff);
-
- /* window close for TRF6151 */
- trf6151_set_mode(TRF6151_IDLE);
-}
-
-void l1s_tx_win_ctrl(uint16_t arfcn, enum l1_txwin_type wtype, uint8_t pwr, uint8_t tn_ofs)
-{
- uint16_t offset;
-
- /* TN offset & TA adjust */
- offset = 28; /* ("+ 32" gives a TA of 1) */
- offset += L1_BURST_LENGTH_Q * tn_ofs;
- offset -= l1s.ta << 2;
-
-#ifdef CONFIG_TX_ENABLE
- /* window open for TRF6151 and RFFE */
- rffe_mode(gsm_arfcn2band(arfcn), 1);
- trf6151_tx_window(offset, arfcn);
-#endif
-
- /* Window open for ABB */
- twl3025_uplink(1, offset);
-
- /* Window close for ABB */
- twl3025_uplink(0, tx_burst_duration[wtype] + offset + 2); // TODO: "+ 2"
-
- /* window close for TRF6151 and RFFE */
- trf6151_set_mode(TRF6151_IDLE);
-}
-
-void tpu_end_scenario(void)
-{
- tpu_enq_sleep();
- tpu_enable(1);
-}
diff --git a/Src/osmoconbb/src/target/firmware/lib/Makefile b/Src/osmoconbb/src/target/firmware/lib/Makefile
deleted file mode 100644
index 83f9966..0000000
--- a/Src/osmoconbb/src/target/firmware/lib/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-
-LIBRARIES+=mini
-mini_DIR=lib
-mini_SRCS=vsprintf.c string.c ctype.c printf.c console.c ctors.c \
- changebit.S clearbit.S delay.c div64.S lib1funcs.S memcpy.S memset.S setbit.S testchangebit.S testclearbit.S testsetbit.S
-
-
diff --git a/Src/osmoconbb/src/target/firmware/lib/bitops.h b/Src/osmoconbb/src/target/firmware/lib/bitops.h
deleted file mode 100644
index 428c9a6..0000000
--- a/Src/osmoconbb/src/target/firmware/lib/bitops.h
+++ /dev/null
@@ -1,33 +0,0 @@
- .macro bitop, instr
- and r2, r0, #7
- mov r3, #1
- mov r3, r3, lsl r2
- save_and_disable_irqs ip
- ldrb r2, [r1, r0, lsr #3]
- \instr r2, r2, r3
- strb r2, [r1, r0, lsr #3]
- restore_irqs ip
- mov pc, lr
- .endm
-
-/**
- * testop - implement a test_and_xxx_bit operation.
- * @instr: operational instruction
- * @store: store instruction
- *
- * Note: we can trivially conditionalise the store instruction
- * to avoid dirting the data cache.
- */
- .macro testop, instr, store
- add r1, r1, r0, lsr #3
- and r3, r0, #7
- mov r0, #1
- save_and_disable_irqs ip
- ldrb r2, [r1]
- tst r2, r0, lsl r3
- \instr r2, r2, r0, lsl r3
- \store r2, [r1]
- restore_irqs ip
- moveq r0, #0
- mov pc, lr
- .endm
diff --git a/Src/osmoconbb/src/target/firmware/lib/changebit.S b/Src/osmoconbb/src/target/firmware/lib/changebit.S
deleted file mode 100644
index 7c709fb..0000000
--- a/Src/osmoconbb/src/target/firmware/lib/changebit.S
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * linux/arch/arm/lib/changebit.S
- *
- * Copyright (C) 1995-1996 Russell King
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-#include <asm/linkage.h>
-#include <asm/assembler.h>
-#include "bitops.h"
- .text
-
-/* Purpose : Function to change a bit
- * Prototype: int change_bit(int bit, void *addr)
- */
-ENTRY(_change_bit_be)
- eor r0, r0, #0x18 @ big endian byte ordering
-ENTRY(_change_bit_le)
- bitop eor
diff --git a/Src/osmoconbb/src/target/firmware/lib/clearbit.S b/Src/osmoconbb/src/target/firmware/lib/clearbit.S
deleted file mode 100644
index cb48f7a..0000000
--- a/Src/osmoconbb/src/target/firmware/lib/clearbit.S
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * linux/arch/arm/lib/clearbit.S
- *
- * Copyright (C) 1995-1996 Russell King
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-#include <asm/linkage.h>
-#include <asm/assembler.h>
-#include "bitops.h"
- .text
-
-/*
- * Purpose : Function to clear a bit
- * Prototype: int clear_bit(int bit, void *addr)
- */
-ENTRY(_clear_bit_be)
- eor r0, r0, #0x18 @ big endian byte ordering
-ENTRY(_clear_bit_le)
- bitop bic
diff --git a/Src/osmoconbb/src/target/firmware/lib/console.c b/Src/osmoconbb/src/target/firmware/lib/console.c
deleted file mode 100644
index 7135ae2..0000000
--- a/Src/osmoconbb/src/target/firmware/lib/console.c
+++ /dev/null
@@ -1,190 +0,0 @@
-/* Ringbuffer based serial console layer, imported from OpenPCD */
-
-/* (C) 2006-2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <string.h>
-#include <console.h>
-#include <uart.h>
-
-#include <asm/system.h>
-
-struct cons {
- char buf[CONS_RB_SIZE];
- char *next_inbyte;
- char *next_outbyte;
- int initialized;
-};
-static struct cons cons;
-
-void cons_init(void)
-{
- memset(cons.buf, 0, sizeof(cons.buf));
- cons.next_inbyte = &cons.buf[0];
- cons.next_outbyte = &cons.buf[0];
- cons.initialized = 1;
-}
-
-/* determine how many bytes are left in the ringbuffer without overwriting
- bytes that haven't been written to the console yet */
-static int __cons_rb_space(void)
-{
- if (cons.next_inbyte == cons.next_outbyte)
- return sizeof(cons.buf)-1;
- else if (cons.next_outbyte > cons.next_inbyte)
- return (cons.next_outbyte - cons.next_inbyte) -1;
- else
- return sizeof(cons.buf) - 1 - (cons.next_inbyte - cons.next_outbyte);
-}
-
-/* pull one char out of debug ring buffer */
-static int cons_rb_pull(char *ret)
-{
- unsigned long flags;
-
- local_irq_save(flags);
-
- if (cons.next_outbyte == cons.next_inbyte) {
- local_irq_restore(flags);
- return -1;
- }
-
- *ret = *cons.next_outbyte;
-
- cons.next_outbyte++;
- if (cons.next_outbyte >= &cons.buf[0]+sizeof(cons.buf)) {
- cons.next_outbyte = &cons.buf[0];
- }
-#if 0
- else if (cons.next_outbyte > &cons.buf[0]+sizeof(cons.buf)) {
- cons.next_outbyte -= sizeof(cons.buf);
- }
-#endif
-
- local_irq_restore(flags);
-
- return 0;
-}
-
-/* returns if everything was flushed (1) or if there's more to flush (0) */
-static void __rb_flush_wait(void)
-{
- char ch;
- while (cons_rb_pull(&ch) >= 0)
- uart_putchar_wait(CONS_UART_NR, ch);
-}
-
-/* returns if everything was flushed (1) or if there's more to flush (0) */
-static int __rb_flush(void)
-{
- while (!uart_tx_busy(CONS_UART_NR)) {
- char ch;
- if (cons_rb_pull(&ch) < 0) {
- /* no more data to write, disable interest in Tx FIFO interrupts */
- return 1;
- }
- uart_putchar_nb(CONS_UART_NR, ch);
- }
-
- /* if we reach here, UART Tx FIFO is busy again */
- return 0;
-}
-
-/* flush pending data from debug ring buffer to serial port */
-int cons_rb_flush(void)
-{
- return __rb_flush();
-}
-
-/* Append bytes to ring buffer, not more than we have left! */
-static void __cons_rb_append(const char *data, int len)
-{
- if (cons.next_inbyte + len >= &cons.buf[0]+sizeof(cons.buf)) {
- int before_tail = (&cons.buf[0]+sizeof(cons.buf)) - cons.next_inbyte;
- /* copy the first part before we wrap */
- memcpy(cons.next_inbyte, data, before_tail);
- data += before_tail;
- len -= before_tail;
- /* reset the buffer */
- cons.next_inbyte = &cons.buf[0];
- }
- memcpy(cons.next_inbyte, data, len);
- cons.next_inbyte += len;
-}
-
-/* append bytes to the ringbuffer, do one wrap */
-int cons_rb_append(const char *data, int len)
-{
- unsigned long flags;
- int bytes_left;
- const char *data_cur;
-
- /* we will never be able to write more than the console buffer */
- if (len > (int) sizeof(cons.buf))
- len = sizeof(cons.buf);
-
- local_irq_save(flags);
-
- bytes_left = __cons_rb_space();
- data_cur = data;
-
- if (len > bytes_left) {
- /* append what we can */
- __cons_rb_append(data_cur, bytes_left);
- /* busy-wait for all characters to be transmitted */
- __rb_flush_wait();
- /* fill it with the remaining bytes */
- len -= bytes_left;
- data_cur += bytes_left;
- }
- __cons_rb_append(data_cur, len);
-
- /* we want to get Tx FIFO interrupts */
- uart_irq_enable(CONS_UART_NR, UART_IRQ_TX_EMPTY, 1);
-
- local_irq_restore(flags);
-
- return len;
-}
-
-int cons_puts(const char *s)
-{
- if (cons.initialized) {
- return cons_rb_append(s, strlen(s));
- } else {
- /* if the console is not active yet, we need to fall back */
- int i = strlen(s);
- while (i--)
- uart_putchar_wait(CONS_UART_NR, *s++);
- return i;
- }
-}
-
-int cons_putchar(char c)
-{
- if (cons.initialized)
- return cons_rb_append(&c, 1);
- else {
- /* if the console is not active yet, we need to fall back */
- uart_putchar_wait(CONS_UART_NR, c);
- return 0;
- }
-}
diff --git a/Src/osmoconbb/src/target/firmware/lib/copy_template.S b/Src/osmoconbb/src/target/firmware/lib/copy_template.S
deleted file mode 100644
index cab355c..0000000
--- a/Src/osmoconbb/src/target/firmware/lib/copy_template.S
+++ /dev/null
@@ -1,255 +0,0 @@
-/*
- * linux/arch/arm/lib/copy_template.s
- *
- * Code template for optimized memory copy functions
- *
- * Author: Nicolas Pitre
- * Created: Sep 28, 2005
- * Copyright: MontaVista Software, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-/*
- * This can be used to enable code to cacheline align the source pointer.
- * Experiments on tested architectures (StrongARM and XScale) didn't show
- * this a worthwhile thing to do. That might be different in the future.
- */
-//#define CALGN(code...) code
-#define CALGN(code...)
-
-/*
- * Theory of operation
- * -------------------
- *
- * This file provides the core code for a forward memory copy used in
- * the implementation of memcopy(), copy_to_user() and copy_from_user().
- *
- * The including file must define the following accessor macros
- * according to the need of the given function:
- *
- * ldr1w ptr reg abort
- *
- * This loads one word from 'ptr', stores it in 'reg' and increments
- * 'ptr' to the next word. The 'abort' argument is used for fixup tables.
- *
- * ldr4w ptr reg1 reg2 reg3 reg4 abort
- * ldr8w ptr, reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 abort
- *
- * This loads four or eight words starting from 'ptr', stores them
- * in provided registers and increments 'ptr' past those words.
- * The'abort' argument is used for fixup tables.
- *
- * ldr1b ptr reg cond abort
- *
- * Similar to ldr1w, but it loads a byte and increments 'ptr' one byte.
- * It also must apply the condition code if provided, otherwise the
- * "al" condition is assumed by default.
- *
- * str1w ptr reg abort
- * str8w ptr reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 abort
- * str1b ptr reg cond abort
- *
- * Same as their ldr* counterparts, but data is stored to 'ptr' location
- * rather than being loaded.
- *
- * enter reg1 reg2
- *
- * Preserve the provided registers on the stack plus any additional
- * data as needed by the implementation including this code. Called
- * upon code entry.
- *
- * exit reg1 reg2
- *
- * Restore registers with the values previously saved with the
- * 'preserv' macro. Called upon code termination.
- */
-
-
- enter r4, lr
-
- subs r2, r2, #4
- blt 8f
- ands ip, r0, #3
- PLD( pld [r1, #0] )
- bne 9f
- ands ip, r1, #3
- bne 10f
-
-1: subs r2, r2, #(28)
- stmfd sp!, {r5 - r8}
- blt 5f
-
- CALGN( ands ip, r1, #31 )
- CALGN( rsb r3, ip, #32 )
- CALGN( sbcnes r4, r3, r2 ) @ C is always set here
- CALGN( bcs 2f )
- CALGN( adr r4, 6f )
- CALGN( subs r2, r2, r3 ) @ C gets set
- CALGN( add pc, r4, ip )
-
- PLD( pld [r1, #0] )
-2: PLD( subs r2, r2, #96 )
- PLD( pld [r1, #28] )
- PLD( blt 4f )
- PLD( pld [r1, #60] )
- PLD( pld [r1, #92] )
-
-3: PLD( pld [r1, #124] )
-4: ldr8w r1, r3, r4, r5, r6, r7, r8, ip, lr, abort=20f
- subs r2, r2, #32
- str8w r0, r3, r4, r5, r6, r7, r8, ip, lr, abort=20f
- bge 3b
- PLD( cmn r2, #96 )
- PLD( bge 4b )
-
-5: ands ip, r2, #28
- rsb ip, ip, #32
- addne pc, pc, ip @ C is always clear here
- b 7f
-6: nop
- ldr1w r1, r3, abort=20f
- ldr1w r1, r4, abort=20f
- ldr1w r1, r5, abort=20f
- ldr1w r1, r6, abort=20f
- ldr1w r1, r7, abort=20f
- ldr1w r1, r8, abort=20f
- ldr1w r1, lr, abort=20f
-
- add pc, pc, ip
- nop
- nop
- str1w r0, r3, abort=20f
- str1w r0, r4, abort=20f
- str1w r0, r5, abort=20f
- str1w r0, r6, abort=20f
- str1w r0, r7, abort=20f
- str1w r0, r8, abort=20f
- str1w r0, lr, abort=20f
-
- CALGN( bcs 2b )
-
-7: ldmfd sp!, {r5 - r8}
-
-8: movs r2, r2, lsl #31
- ldr1b r1, r3, ne, abort=21f
- ldr1b r1, r4, cs, abort=21f
- ldr1b r1, ip, cs, abort=21f
- str1b r0, r3, ne, abort=21f
- str1b r0, r4, cs, abort=21f
- str1b r0, ip, cs, abort=21f
-
- exit r4, pc
-
-9: rsb ip, ip, #4
- cmp ip, #2
- ldr1b r1, r3, gt, abort=21f
- ldr1b r1, r4, ge, abort=21f
- ldr1b r1, lr, abort=21f
- str1b r0, r3, gt, abort=21f
- str1b r0, r4, ge, abort=21f
- subs r2, r2, ip
- str1b r0, lr, abort=21f
- blt 8b
- ands ip, r1, #3
- beq 1b
-
-10: bic r1, r1, #3
- cmp ip, #2
- ldr1w r1, lr, abort=21f
- beq 17f
- bgt 18f
-
-
- .macro forward_copy_shift pull push
-
- subs r2, r2, #28
- blt 14f
-
- CALGN( ands ip, r1, #31 )
- CALGN( rsb ip, ip, #32 )
- CALGN( sbcnes r4, ip, r2 ) @ C is always set here
- CALGN( subcc r2, r2, ip )
- CALGN( bcc 15f )
-
-11: stmfd sp!, {r5 - r9}
-
- PLD( pld [r1, #0] )
- PLD( subs r2, r2, #96 )
- PLD( pld [r1, #28] )
- PLD( blt 13f )
- PLD( pld [r1, #60] )
- PLD( pld [r1, #92] )
-
-12: PLD( pld [r1, #124] )
-13: ldr4w r1, r4, r5, r6, r7, abort=19f
- mov r3, lr, pull #\pull
- subs r2, r2, #32
- ldr4w r1, r8, r9, ip, lr, abort=19f
- orr r3, r3, r4, push #\push
- mov r4, r4, pull #\pull
- orr r4, r4, r5, push #\push
- mov r5, r5, pull #\pull
- orr r5, r5, r6, push #\push
- mov r6, r6, pull #\pull
- orr r6, r6, r7, push #\push
- mov r7, r7, pull #\pull
- orr r7, r7, r8, push #\push
- mov r8, r8, pull #\pull
- orr r8, r8, r9, push #\push
- mov r9, r9, pull #\pull
- orr r9, r9, ip, push #\push
- mov ip, ip, pull #\pull
- orr ip, ip, lr, push #\push
- str8w r0, r3, r4, r5, r6, r7, r8, r9, ip, , abort=19f
- bge 12b
- PLD( cmn r2, #96 )
- PLD( bge 13b )
-
- ldmfd sp!, {r5 - r9}
-
-14: ands ip, r2, #28
- beq 16f
-
-15: mov r3, lr, pull #\pull
- ldr1w r1, lr, abort=21f
- subs ip, ip, #4
- orr r3, r3, lr, push #\push
- str1w r0, r3, abort=21f
- bgt 15b
- CALGN( cmp r2, #0 )
- CALGN( bge 11b )
-
-16: sub r1, r1, #(\push / 8)
- b 8b
-
- .endm
-
-
- forward_copy_shift pull=8 push=24
-
-17: forward_copy_shift pull=16 push=16
-
-18: forward_copy_shift pull=24 push=8
-
-
-/*
- * Abort preamble and completion macros.
- * If a fixup handler is required then those macros must surround it.
- * It is assumed that the fixup code will handle the private part of
- * the exit macro.
- */
-
- .macro copy_abort_preamble
-19: ldmfd sp!, {r5 - r9}
- b 21f
-20: ldmfd sp!, {r5 - r8}
-21:
- .endm
-
- .macro copy_abort_end
- ldmfd sp!, {r4, pc}
- .endm
-
diff --git a/Src/osmoconbb/src/target/firmware/lib/ctors.c b/Src/osmoconbb/src/target/firmware/lib/ctors.c
deleted file mode 100644
index 982169d..0000000
--- a/Src/osmoconbb/src/target/firmware/lib/ctors.c
+++ /dev/null
@@ -1,15 +0,0 @@
-
-/* iterate over list of constructor functions and call each element */
-void do_global_ctors(const char *_ctors_start, const char *ctors_end)
-{
- typedef void (*func_ptr)(void);
- func_ptr *func, *ctors_start = (func_ptr *) _ctors_start;
-
- /* skip the first entry, as it contains the number of
- * constructors which we don't use */
- ctors_start++;
-
- for (func = ctors_start;
- *func && (func != (func_ptr *) ctors_end); func++)
- (*func)();
-}
diff --git a/Src/osmoconbb/src/target/firmware/lib/ctype.c b/Src/osmoconbb/src/target/firmware/lib/ctype.c
deleted file mode 100644
index f373214..0000000
--- a/Src/osmoconbb/src/target/firmware/lib/ctype.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * linux/lib/ctype.c
- *
- * Copyright (C) 1991, 1992 Linus Torvalds
- */
-
-#include <ctype.h>
-
-unsigned char _ctype[] = {
-_C,_C,_C,_C,_C,_C,_C,_C, /* 0-7 */
-_C,_C|_S,_C|_S,_C|_S,_C|_S,_C|_S,_C,_C, /* 8-15 */
-_C,_C,_C,_C,_C,_C,_C,_C, /* 16-23 */
-_C,_C,_C,_C,_C,_C,_C,_C, /* 24-31 */
-_S|_SP,_P,_P,_P,_P,_P,_P,_P, /* 32-39 */
-_P,_P,_P,_P,_P,_P,_P,_P, /* 40-47 */
-_D,_D,_D,_D,_D,_D,_D,_D, /* 48-55 */
-_D,_D,_P,_P,_P,_P,_P,_P, /* 56-63 */
-_P,_U|_X,_U|_X,_U|_X,_U|_X,_U|_X,_U|_X,_U, /* 64-71 */
-_U,_U,_U,_U,_U,_U,_U,_U, /* 72-79 */
-_U,_U,_U,_U,_U,_U,_U,_U, /* 80-87 */
-_U,_U,_U,_P,_P,_P,_P,_P, /* 88-95 */
-_P,_L|_X,_L|_X,_L|_X,_L|_X,_L|_X,_L|_X,_L, /* 96-103 */
-_L,_L,_L,_L,_L,_L,_L,_L, /* 104-111 */
-_L,_L,_L,_L,_L,_L,_L,_L, /* 112-119 */
-_L,_L,_L,_P,_P,_P,_P,_C, /* 120-127 */
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 128-143 */
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 144-159 */
-_S|_SP,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P, /* 160-175 */
-_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P, /* 176-191 */
-_U,_U,_U,_U,_U,_U,_U,_U,_U,_U,_U,_U,_U,_U,_U,_U, /* 192-207 */
-_U,_U,_U,_U,_U,_U,_U,_P,_U,_U,_U,_U,_U,_U,_U,_L, /* 208-223 */
-_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L, /* 224-239 */
-_L,_L,_L,_L,_L,_L,_L,_P,_L,_L,_L,_L,_L,_L,_L,_L}; /* 240-255 */
-
diff --git a/Src/osmoconbb/src/target/firmware/lib/delay.c b/Src/osmoconbb/src/target/firmware/lib/delay.c
deleted file mode 100644
index 443ca82..0000000
--- a/Src/osmoconbb/src/target/firmware/lib/delay.c
+++ /dev/null
@@ -1,16 +0,0 @@
-#include <delay.h>
-
-/* FIXME: We need properly calibrated delay loops at some point! */
-void delay_us(unsigned int us)
-{
- volatile unsigned int i;
-
- for (i= 0; i < us*4; i++) { i; }
-}
-
-void delay_ms(unsigned int ms)
-{
- volatile unsigned int i;
-
- for (i= 0; i < ms*1300; i++) { i; }
-}
diff --git a/Src/osmoconbb/src/target/firmware/lib/div64.S b/Src/osmoconbb/src/target/firmware/lib/div64.S
deleted file mode 100644
index 7eeef50..0000000
--- a/Src/osmoconbb/src/target/firmware/lib/div64.S
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * linux/arch/arm/lib/div64.S
- *
- * Optimized computation of 64-bit dividend / 32-bit divisor
- *
- * Author: Nicolas Pitre
- * Created: Oct 5, 2003
- * Copyright: Monta Vista Software, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#include <asm/linkage.h>
-
-#ifdef __ARMEB__
-#define xh r0
-#define xl r1
-#define yh r2
-#define yl r3
-#else
-#define xl r0
-#define xh r1
-#define yl r2
-#define yh r3
-#endif
-
-/*
- * __do_div64: perform a division with 64-bit dividend and 32-bit divisor.
- *
- * Note: Calling convention is totally non standard for optimal code.
- * This is meant to be used by do_div() from include/asm/div64.h only.
- *
- * Input parameters:
- * xh-xl = dividend (clobbered)
- * r4 = divisor (preserved)
- *
- * Output values:
- * yh-yl = result
- * xh = remainder
- *
- * Clobbered regs: xl, ip
- */
-
-ENTRY(__do_div64)
-
- @ Test for easy paths first.
- subs ip, r4, #1
- bls 9f @ divisor is 0 or 1
- tst ip, r4
- beq 8f @ divisor is power of 2
-
- @ See if we need to handle upper 32-bit result.
- cmp xh, r4
- mov yh, #0
- blo 3f
-
- @ Align divisor with upper part of dividend.
- @ The aligned divisor is stored in yl preserving the original.
- @ The bit position is stored in ip.
-
-#if __LINUX_ARM_ARCH__ >= 5
-
- clz yl, r4
- clz ip, xh
- sub yl, yl, ip
- mov ip, #1
- mov ip, ip, lsl yl
- mov yl, r4, lsl yl
-
-#else
-
- mov yl, r4
- mov ip, #1
-1: cmp yl, #0x80000000
- cmpcc yl, xh
- movcc yl, yl, lsl #1
- movcc ip, ip, lsl #1
- bcc 1b
-
-#endif
-
- @ The division loop for needed upper bit positions.
- @ Break out early if dividend reaches 0.
-2: cmp xh, yl
- orrcs yh, yh, ip
- subcss xh, xh, yl
- movnes ip, ip, lsr #1
- mov yl, yl, lsr #1
- bne 2b
-
- @ See if we need to handle lower 32-bit result.
-3: cmp xh, #0
- mov yl, #0
- cmpeq xl, r4
- movlo xh, xl
- movlo pc, lr
-
- @ The division loop for lower bit positions.
- @ Here we shift remainer bits leftwards rather than moving the
- @ divisor for comparisons, considering the carry-out bit as well.
- mov ip, #0x80000000
-4: movs xl, xl, lsl #1
- adcs xh, xh, xh
- beq 6f
- cmpcc xh, r4
-5: orrcs yl, yl, ip
- subcs xh, xh, r4
- movs ip, ip, lsr #1
- bne 4b
- mov pc, lr
-
- @ The top part of remainder became zero. If carry is set
- @ (the 33th bit) this is a false positive so resume the loop.
- @ Otherwise, if lower part is also null then we are done.
-6: bcs 5b
- cmp xl, #0
- moveq pc, lr
-
- @ We still have remainer bits in the low part. Bring them up.
-
-#if __LINUX_ARM_ARCH__ >= 5
-
- clz xh, xl @ we know xh is zero here so...
- add xh, xh, #1
- mov xl, xl, lsl xh
- mov ip, ip, lsr xh
-
-#else
-
-7: movs xl, xl, lsl #1
- mov ip, ip, lsr #1
- bcc 7b
-
-#endif
-
- @ Current remainder is now 1. It is worthless to compare with
- @ divisor at this point since divisor can not be smaller than 3 here.
- @ If possible, branch for another shift in the division loop.
- @ If no bit position left then we are done.
- movs ip, ip, lsr #1
- mov xh, #1
- bne 4b
- mov pc, lr
-
-8: @ Division by a power of 2: determine what that divisor order is
- @ then simply shift values around
-
-#if __LINUX_ARM_ARCH__ >= 5
-
- clz ip, r4
- rsb ip, ip, #31
-
-#else
-
- mov yl, r4
- cmp r4, #(1 << 16)
- mov ip, #0
- movhs yl, yl, lsr #16
- movhs ip, #16
-
- cmp yl, #(1 << 8)
- movhs yl, yl, lsr #8
- addhs ip, ip, #8
-
- cmp yl, #(1 << 4)
- movhs yl, yl, lsr #4
- addhs ip, ip, #4
-
- cmp yl, #(1 << 2)
- addhi ip, ip, #3
- addls ip, ip, yl, lsr #1
-
-#endif
-
- mov yh, xh, lsr ip
- mov yl, xl, lsr ip
- rsb ip, ip, #32
- orr yl, yl, xh, lsl ip
- mov xh, xl, lsl ip
- mov xh, xh, lsr ip
- mov pc, lr
-
- @ eq -> division by 1: obvious enough...
-9: moveq yl, xl
- moveq yh, xh
- moveq xh, #0
- moveq pc, lr
-
- @ Division by 0:
- str lr, [sp, #-8]!
- bl __div0
-
- @ as wrong as it could be...
- mov yl, #0
- mov yh, #0
- mov xh, #0
- ldr pc, [sp], #8
-
diff --git a/Src/osmoconbb/src/target/firmware/lib/lib1funcs.S b/Src/osmoconbb/src/target/firmware/lib/lib1funcs.S
deleted file mode 100644
index b02a85e..0000000
--- a/Src/osmoconbb/src/target/firmware/lib/lib1funcs.S
+++ /dev/null
@@ -1,334 +0,0 @@
-/*
- * linux/arch/arm/lib/lib1funcs.S: Optimized ARM division routines
- *
- * Author: Nicolas Pitre <nico@cam.org>
- * - contributed to gcc-3.4 on Sep 30, 2003
- * - adapted for the Linux kernel on Oct 2, 2003
- */
-
-/* Copyright 1995, 1996, 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
-
-This file is free software; you can redistribute it and/or modify it
-under the terms of the GNU General Public License as published by the
-Free Software Foundation; either version 2, or (at your option) any
-later version.
-
-In addition to the permissions in the GNU General Public License, the
-Free Software Foundation gives you unlimited permission to link the
-compiled version of this file into combinations with other programs,
-and to distribute those combinations without any restriction coming
-from the use of this file. (The General Public License restrictions
-do apply in other respects; for example, they cover modification of
-the file, and distribution when not linked into a combine
-executable.)
-
-This file 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; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-
-#include <asm/linkage.h>
-#include <asm/assembler.h>
-
-
-.macro ARM_DIV_BODY dividend, divisor, result, curbit
-
-#if __LINUX_ARM_ARCH__ >= 5
-
- clz \curbit, \divisor
- clz \result, \dividend
- sub \result, \curbit, \result
- mov \curbit, #1
- mov \divisor, \divisor, lsl \result
- mov \curbit, \curbit, lsl \result
- mov \result, #0
-
-#else
-
- @ Initially shift the divisor left 3 bits if possible,
- @ set curbit accordingly. This allows for curbit to be located
- @ at the left end of each 4 bit nibbles in the division loop
- @ to save one loop in most cases.
- tst \divisor, #0xe0000000
- moveq \divisor, \divisor, lsl #3
- moveq \curbit, #8
- movne \curbit, #1
-
- @ Unless the divisor is very big, shift it up in multiples of
- @ four bits, since this is the amount of unwinding in the main
- @ division loop. Continue shifting until the divisor is
- @ larger than the dividend.
-1: cmp \divisor, #0x10000000
- cmplo \divisor, \dividend
- movlo \divisor, \divisor, lsl #4
- movlo \curbit, \curbit, lsl #4
- blo 1b
-
- @ For very big divisors, we must shift it a bit at a time, or
- @ we will be in danger of overflowing.
-1: cmp \divisor, #0x80000000
- cmplo \divisor, \dividend
- movlo \divisor, \divisor, lsl #1
- movlo \curbit, \curbit, lsl #1
- blo 1b
-
- mov \result, #0
-
-#endif
-
- @ Division loop
-1: cmp \dividend, \divisor
- subhs \dividend, \dividend, \divisor
- orrhs \result, \result, \curbit
- cmp \dividend, \divisor, lsr #1
- subhs \dividend, \dividend, \divisor, lsr #1
- orrhs \result, \result, \curbit, lsr #1
- cmp \dividend, \divisor, lsr #2
- subhs \dividend, \dividend, \divisor, lsr #2
- orrhs \result, \result, \curbit, lsr #2
- cmp \dividend, \divisor, lsr #3
- subhs \dividend, \dividend, \divisor, lsr #3
- orrhs \result, \result, \curbit, lsr #3
- cmp \dividend, #0 @ Early termination?
- movnes \curbit, \curbit, lsr #4 @ No, any more bits to do?
- movne \divisor, \divisor, lsr #4
- bne 1b
-
-.endm
-
-
-.macro ARM_DIV2_ORDER divisor, order
-
-#if __LINUX_ARM_ARCH__ >= 5
-
- clz \order, \divisor
- rsb \order, \order, #31
-
-#else
-
- cmp \divisor, #(1 << 16)
- movhs \divisor, \divisor, lsr #16
- movhs \order, #16
- movlo \order, #0
-
- cmp \divisor, #(1 << 8)
- movhs \divisor, \divisor, lsr #8
- addhs \order, \order, #8
-
- cmp \divisor, #(1 << 4)
- movhs \divisor, \divisor, lsr #4
- addhs \order, \order, #4
-
- cmp \divisor, #(1 << 2)
- addhi \order, \order, #3
- addls \order, \order, \divisor, lsr #1
-
-#endif
-
-.endm
-
-
-.macro ARM_MOD_BODY dividend, divisor, order, spare
-
-#if __LINUX_ARM_ARCH__ >= 5
-
- clz \order, \divisor
- clz \spare, \dividend
- sub \order, \order, \spare
- mov \divisor, \divisor, lsl \order
-
-#else
-
- mov \order, #0
-
- @ Unless the divisor is very big, shift it up in multiples of
- @ four bits, since this is the amount of unwinding in the main
- @ division loop. Continue shifting until the divisor is
- @ larger than the dividend.
-1: cmp \divisor, #0x10000000
- cmplo \divisor, \dividend
- movlo \divisor, \divisor, lsl #4
- addlo \order, \order, #4
- blo 1b
-
- @ For very big divisors, we must shift it a bit at a time, or
- @ we will be in danger of overflowing.
-1: cmp \divisor, #0x80000000
- cmplo \divisor, \dividend
- movlo \divisor, \divisor, lsl #1
- addlo \order, \order, #1
- blo 1b
-
-#endif
-
- @ Perform all needed substractions to keep only the reminder.
- @ Do comparisons in batch of 4 first.
- subs \order, \order, #3 @ yes, 3 is intended here
- blt 2f
-
-1: cmp \dividend, \divisor
- subhs \dividend, \dividend, \divisor
- cmp \dividend, \divisor, lsr #1
- subhs \dividend, \dividend, \divisor, lsr #1
- cmp \dividend, \divisor, lsr #2
- subhs \dividend, \dividend, \divisor, lsr #2
- cmp \dividend, \divisor, lsr #3
- subhs \dividend, \dividend, \divisor, lsr #3
- cmp \dividend, #1
- mov \divisor, \divisor, lsr #4
- subges \order, \order, #4
- bge 1b
-
- tst \order, #3
- teqne \dividend, #0
- beq 5f
-
- @ Either 1, 2 or 3 comparison/substractions are left.
-2: cmn \order, #2
- blt 4f
- beq 3f
- cmp \dividend, \divisor
- subhs \dividend, \dividend, \divisor
- mov \divisor, \divisor, lsr #1
-3: cmp \dividend, \divisor
- subhs \dividend, \dividend, \divisor
- mov \divisor, \divisor, lsr #1
-4: cmp \dividend, \divisor
- subhs \dividend, \dividend, \divisor
-5:
-.endm
-
-
-ENTRY(__udivsi3)
-ENTRY(__aeabi_uidiv)
-
- subs r2, r1, #1
- moveq pc, lr
- bcc Ldiv0
- cmp r0, r1
- bls 11f
- tst r1, r2
- beq 12f
-
- ARM_DIV_BODY r0, r1, r2, r3
-
- mov r0, r2
- mov pc, lr
-
-11: moveq r0, #1
- movne r0, #0
- mov pc, lr
-
-12: ARM_DIV2_ORDER r1, r2
-
- mov r0, r0, lsr r2
- mov pc, lr
-
-
-ENTRY(__umodsi3)
-
- subs r2, r1, #1 @ compare divisor with 1
- bcc Ldiv0
- cmpne r0, r1 @ compare dividend with divisor
- moveq r0, #0
- tsthi r1, r2 @ see if divisor is power of 2
- andeq r0, r0, r2
- movls pc, lr
-
- ARM_MOD_BODY r0, r1, r2, r3
-
- mov pc, lr
-
-
-ENTRY(__divsi3)
-ENTRY(__aeabi_idiv)
-
- cmp r1, #0
- eor ip, r0, r1 @ save the sign of the result.
- beq Ldiv0
- rsbmi r1, r1, #0 @ loops below use unsigned.
- subs r2, r1, #1 @ division by 1 or -1 ?
- beq 10f
- movs r3, r0
- rsbmi r3, r0, #0 @ positive dividend value
- cmp r3, r1
- bls 11f
- tst r1, r2 @ divisor is power of 2 ?
- beq 12f
-
- ARM_DIV_BODY r3, r1, r0, r2
-
- cmp ip, #0
- rsbmi r0, r0, #0
- mov pc, lr
-
-10: teq ip, r0 @ same sign ?
- rsbmi r0, r0, #0
- mov pc, lr
-
-11: movlo r0, #0
- moveq r0, ip, asr #31
- orreq r0, r0, #1
- mov pc, lr
-
-12: ARM_DIV2_ORDER r1, r2
-
- cmp ip, #0
- mov r0, r3, lsr r2
- rsbmi r0, r0, #0
- mov pc, lr
-
-
-ENTRY(__modsi3)
-
- cmp r1, #0
- beq Ldiv0
- rsbmi r1, r1, #0 @ loops below use unsigned.
- movs ip, r0 @ preserve sign of dividend
- rsbmi r0, r0, #0 @ if negative make positive
- subs r2, r1, #1 @ compare divisor with 1
- cmpne r0, r1 @ compare dividend with divisor
- moveq r0, #0
- tsthi r1, r2 @ see if divisor is power of 2
- andeq r0, r0, r2
- bls 10f
-
- ARM_MOD_BODY r0, r1, r2, r3
-
-10: cmp ip, #0
- rsbmi r0, r0, #0
- mov pc, lr
-
-ENTRY(__aeabi_uidivmod)
-
- stmfd sp!, {r0, r1, ip, lr}
- bl __aeabi_uidiv
- ldmfd sp!, {r1, r2, ip, lr}
- mul r3, r0, r2
- sub r1, r1, r3
- mov pc, lr
-
-ENTRY(__aeabi_idivmod)
-
- stmfd sp!, {r0, r1, ip, lr}
- bl __aeabi_idiv
- ldmfd sp!, {r1, r2, ip, lr}
- mul r3, r0, r2
- sub r1, r1, r3
- mov pc, lr
-
-Ldiv0:
-
- str lr, [sp, #-8]!
- bl __div0
- mov r0, #0 @ About as wrong as it could be.
- ldr pc, [sp], #8
-
-ENTRY(__div0)
- mov pc, lr
diff --git a/Src/osmoconbb/src/target/firmware/lib/memcpy.S b/Src/osmoconbb/src/target/firmware/lib/memcpy.S
deleted file mode 100644
index 2bbd569..0000000
--- a/Src/osmoconbb/src/target/firmware/lib/memcpy.S
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * linux/arch/arm/lib/memcpy.S
- *
- * Author: Nicolas Pitre
- * Created: Sep 28, 2005
- * Copyright: MontaVista Software, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#include <asm/linkage.h>
-#include <asm/assembler.h>
-
- .macro ldr1w ptr reg abort
- ldr \reg, [\ptr], #4
- .endm
-
- .macro ldr4w ptr reg1 reg2 reg3 reg4 abort
- ldmia \ptr!, {\reg1, \reg2, \reg3, \reg4}
- .endm
-
- .macro ldr8w ptr reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 abort
- ldmia \ptr!, {\reg1, \reg2, \reg3, \reg4, \reg5, \reg6, \reg7, \reg8}
- .endm
-
- .macro ldr1b ptr reg cond=al abort
- ldr\cond\()b \reg, [\ptr], #1
- .endm
-
- .macro str1w ptr reg abort
- str \reg, [\ptr], #4
- .endm
-
- .macro str8w ptr reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 abort
- stmia \ptr!, {\reg1, \reg2, \reg3, \reg4, \reg5, \reg6, \reg7, \reg8}
- .endm
-
- .macro str1b ptr reg cond=al abort
- str\cond\()b \reg, [\ptr], #1
- .endm
-
- .macro enter reg1 reg2
- stmdb sp!, {r0, \reg1, \reg2}
- .endm
-
- .macro exit reg1 reg2
- ldmfd sp!, {r0, \reg1, \reg2}
- .endm
-
- .text
-
-/* Prototype: void *memcpy(void *dest, const void *src, size_t n); */
-
-ENTRY(memcpy)
-
-#include "copy_template.S"
-
diff --git a/Src/osmoconbb/src/target/firmware/lib/memset.S b/Src/osmoconbb/src/target/firmware/lib/memset.S
deleted file mode 100644
index 04e254a..0000000
--- a/Src/osmoconbb/src/target/firmware/lib/memset.S
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * linux/arch/arm/lib/memset.S
- *
- * Copyright (C) 1995-2000 Russell King
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * ASM optimised string functions
- */
-#include <asm/linkage.h>
-#include <asm/assembler.h>
-
- .text
- .align 5
- .word 0
-
-1: subs r2, r2, #4 @ 1 do we have enough
- blt 5f @ 1 bytes to align with?
- cmp r3, #2 @ 1
- strltb r1, [r0], #1 @ 1
- strleb r1, [r0], #1 @ 1
- strb r1, [r0], #1 @ 1
- add r2, r2, r3 @ 1 (r2 = r2 - (4 - r3))
-/*
- * The pointer is now aligned and the length is adjusted. Try doing the
- * memzero again.
- */
-
-ENTRY(memset)
- ands r3, r0, #3 @ 1 unaligned?
- bne 1b @ 1
-/*
- * we know that the pointer in r0 is aligned to a word boundary.
- */
- orr r1, r1, r1, lsl #8
- orr r1, r1, r1, lsl #16
- mov r3, r1
- cmp r2, #16
- blt 4f
-/*
- * We need an extra register for this loop - save the return address and
- * use the LR
- */
- str lr, [sp, #-4]!
- mov ip, r1
- mov lr, r1
-
-2: subs r2, r2, #64
- stmgeia r0!, {r1, r3, ip, lr} @ 64 bytes at a time.
- stmgeia r0!, {r1, r3, ip, lr}
- stmgeia r0!, {r1, r3, ip, lr}
- stmgeia r0!, {r1, r3, ip, lr}
- bgt 2b
- LOADREGS(eqfd, sp!, {pc}) @ Now <64 bytes to go.
-/*
- * No need to correct the count; we're only testing bits from now on
- */
- tst r2, #32
- stmneia r0!, {r1, r3, ip, lr}
- stmneia r0!, {r1, r3, ip, lr}
- tst r2, #16
- stmneia r0!, {r1, r3, ip, lr}
- ldr lr, [sp], #4
-
-4: tst r2, #8
- stmneia r0!, {r1, r3}
- tst r2, #4
- strne r1, [r0], #4
-/*
- * When we get here, we've got less than 4 bytes to zero. We
- * may have an unaligned pointer as well.
- */
-5: tst r2, #2
- strneb r1, [r0], #1
- strneb r1, [r0], #1
- tst r2, #1
- strneb r1, [r0], #1
- RETINSTR(mov,pc,lr)
diff --git a/Src/osmoconbb/src/target/firmware/lib/printf.c b/Src/osmoconbb/src/target/firmware/lib/printf.c
deleted file mode 100644
index a4fc687..0000000
--- a/Src/osmoconbb/src/target/firmware/lib/printf.c
+++ /dev/null
@@ -1,19 +0,0 @@
-
-#include <stdio.h>
-#include <stdarg.h>
-
-static char printf_buffer[1024];
-
-int printf(const char *fmt, ...)
-{
- va_list args;
- int r;
-
- va_start(args, fmt);
- r = vsnprintf(printf_buffer, sizeof(printf_buffer), fmt, args);
- va_end(args);
-
- puts(printf_buffer);
-
- return r;
-}
diff --git a/Src/osmoconbb/src/target/firmware/lib/setbit.S b/Src/osmoconbb/src/target/firmware/lib/setbit.S
deleted file mode 100644
index 9009bc1..0000000
--- a/Src/osmoconbb/src/target/firmware/lib/setbit.S
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * linux/arch/arm/lib/setbit.S
- *
- * Copyright (C) 1995-1996 Russell King
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-#include <asm/linkage.h>
-#include <asm/assembler.h>
-#include "bitops.h"
- .text
-
-/*
- * Purpose : Function to set a bit
- * Prototype: int set_bit(int bit, void *addr)
- */
-ENTRY(_set_bit_be)
- eor r0, r0, #0x18 @ big endian byte ordering
-ENTRY(_set_bit_le)
- bitop orr
diff --git a/Src/osmoconbb/src/target/firmware/lib/string.c b/Src/osmoconbb/src/target/firmware/lib/string.c
deleted file mode 100644
index 9703652..0000000
--- a/Src/osmoconbb/src/target/firmware/lib/string.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * linux/lib/string.c
- *
- * Copyright (C) 1991, 1992 Linus Torvalds
- */
-
-/*
- * stupid library routines.. The optimized versions should generally be found
- * as inline code in <asm-xx/string.h>
- *
- * These are buggy as well..
- *
- * * Fri Jun 25 1999, Ingo Oeser <ioe@informatik.tu-chemnitz.de>
- * - Added strsep() which will replace strtok() soon (because strsep() is
- * reentrant and should be faster). Use only strsep() in new code, please.
- *
- * * Sat Feb 09 2002, Jason Thomas <jason@topic.com.au>,
- * Matthew Hawkins <matt@mh.dropbear.id.au>
- * - Kissed strtok() goodbye
- */
-
-#include <sys/types.h>
-#include <string.h>
-#include <ctype.h>
-
-
-#ifndef __HAVE_ARCH_STRNLEN
-/**
- * strnlen - Find the length of a length-limited string
- * @s: The string to be sized
- * @count: The maximum number of bytes to search
- */
-size_t strnlen(const char *s, size_t count)
-{
- const char *sc;
-
- for (sc = s; count-- && *sc != '\0'; ++sc)
- /* nothing */;
- return sc - s;
-}
-#endif
-
-size_t strlen(const char *s)
-{
- const char *sc;
-
- for (sc = s; *sc != '\0'; ++sc)
- /* nothing */;
- return sc - s;
-}
diff --git a/Src/osmoconbb/src/target/firmware/lib/testchangebit.S b/Src/osmoconbb/src/target/firmware/lib/testchangebit.S
deleted file mode 100644
index 37c303e..0000000
--- a/Src/osmoconbb/src/target/firmware/lib/testchangebit.S
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * linux/arch/arm/lib/testchangebit.S
- *
- * Copyright (C) 1995-1996 Russell King
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-#include <asm/linkage.h>
-#include <asm/assembler.h>
-#include "bitops.h"
- .text
-
-ENTRY(_test_and_change_bit_be)
- eor r0, r0, #0x18 @ big endian byte ordering
-ENTRY(_test_and_change_bit_le)
- testop eor, strb
diff --git a/Src/osmoconbb/src/target/firmware/lib/testclearbit.S b/Src/osmoconbb/src/target/firmware/lib/testclearbit.S
deleted file mode 100644
index 985c399..0000000
--- a/Src/osmoconbb/src/target/firmware/lib/testclearbit.S
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * linux/arch/arm/lib/testclearbit.S
- *
- * Copyright (C) 1995-1996 Russell King
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-#include <asm/linkage.h>
-#include <asm/assembler.h>
-#include "bitops.h"
- .text
-
-ENTRY(_test_and_clear_bit_be)
- eor r0, r0, #0x18 @ big endian byte ordering
-ENTRY(_test_and_clear_bit_le)
- testop bicne, strneb
diff --git a/Src/osmoconbb/src/target/firmware/lib/testsetbit.S b/Src/osmoconbb/src/target/firmware/lib/testsetbit.S
deleted file mode 100644
index 4a8a164..0000000
--- a/Src/osmoconbb/src/target/firmware/lib/testsetbit.S
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * linux/arch/arm/lib/testsetbit.S
- *
- * Copyright (C) 1995-1996 Russell King
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-#include <asm/linkage.h>
-#include <asm/assembler.h>
-#include "bitops.h"
- .text
-
-ENTRY(_test_and_set_bit_be)
- eor r0, r0, #0x18 @ big endian byte ordering
-ENTRY(_test_and_set_bit_le)
- testop orreq, streqb
diff --git a/Src/osmoconbb/src/target/firmware/lib/vsprintf.c b/Src/osmoconbb/src/target/firmware/lib/vsprintf.c
deleted file mode 100644
index 80e8c1a..0000000
--- a/Src/osmoconbb/src/target/firmware/lib/vsprintf.c
+++ /dev/null
@@ -1,847 +0,0 @@
-/*
- * linux/lib/vsprintf.c
- *
- * Copyright (C) 1991, 1992 Linus Torvalds
- */
-
-/* vsprintf.c -- Lars Wirzenius & Linus Torvalds. */
-/*
- * Wirzenius wrote this portably, Torvalds fucked it up :-)
- */
-
-/*
- * Fri Jul 13 2001 Crutcher Dunnavant <crutcher+kernel@datastacks.com>
- * - changed to provide snprintf and vsnprintf functions
- * So Feb 1 16:51:32 CET 2004 Juergen Quade <quade@hsnr.de>
- * - scnprintf and vscnprintf
- */
-
-#include <stdio.h>
-#include <limits.h>
-#include <stdarg.h>
-#include <sys/types.h>
-#include <string.h>
-#include <ctype.h>
-
-#include <asm/div64.h>
-
-/**
- * strtoul - convert a string to an unsigned long
- * @cp: The start of the string
- * @endp: A pointer to the end of the parsed string will be placed here
- * @base: The number base to use
- */
-unsigned long strtoul(const char *cp,char **endp,unsigned int base)
-{
- unsigned long result = 0,value;
-
- if (!base) {
- base = 10;
- if (*cp == '0') {
- base = 8;
- cp++;
- if ((toupper(*cp) == 'X') && isxdigit(cp[1])) {
- cp++;
- base = 16;
- }
- }
- } else if (base == 16) {
- if (cp[0] == '0' && toupper(cp[1]) == 'X')
- cp += 2;
- }
- while (isxdigit(*cp) &&
- (value = isdigit(*cp) ? *cp-'0' : toupper(*cp)-'A'+10) < base) {
- result = result*base + value;
- cp++;
- }
- if (endp)
- *endp = (char *)cp;
- return result;
-}
-
-
-/**
- * strtol - convert a string to a signed long
- * @cp: The start of the string
- * @endp: A pointer to the end of the parsed string will be placed here
- * @base: The number base to use
- */
-long strtol(const char *cp,char **endp,unsigned int base)
-{
- if(*cp=='-')
- return -strtoul(cp+1,endp,base);
- return strtoul(cp,endp,base);
-}
-
-
-/**
- * strtoull - convert a string to an unsigned long long
- * @cp: The start of the string
- * @endp: A pointer to the end of the parsed string will be placed here
- * @base: The number base to use
- */
-unsigned long long strtoull(const char *cp,char **endp,unsigned int base)
-{
- unsigned long long result = 0,value;
-
- if (!base) {
- base = 10;
- if (*cp == '0') {
- base = 8;
- cp++;
- if ((toupper(*cp) == 'X') && isxdigit(cp[1])) {
- cp++;
- base = 16;
- }
- }
- } else if (base == 16) {
- if (cp[0] == '0' && toupper(cp[1]) == 'X')
- cp += 2;
- }
- while (isxdigit(*cp) && (value = isdigit(*cp) ? *cp-'0' : (islower(*cp)
- ? toupper(*cp) : *cp)-'A'+10) < base) {
- result = result*base + value;
- cp++;
- }
- if (endp)
- *endp = (char *)cp;
- return result;
-}
-
-
-/**
- * strtoll - convert a string to a signed long long
- * @cp: The start of the string
- * @endp: A pointer to the end of the parsed string will be placed here
- * @base: The number base to use
- */
-long long strtoll(const char *cp,char **endp,unsigned int base)
-{
- if(*cp=='-')
- return -strtoull(cp+1,endp,base);
- return strtoull(cp,endp,base);
-}
-
-static int skip_atoi(const char **s)
-{
- int i=0;
-
- while (isdigit(**s))
- i = i*10 + *((*s)++) - '0';
- return i;
-}
-
-#define ZEROPAD 1 /* pad with zero */
-#define SIGN 2 /* unsigned/signed long */
-#define PLUS 4 /* show plus */
-#define SPACE 8 /* space if plus */
-#define LEFT 16 /* left justified */
-#define SPECIAL 32 /* 0x */
-#define LARGE 64 /* use 'ABCDEF' instead of 'abcdef' */
-
-static char * number(char * buf, char * end, unsigned long long num, int base, int size, int precision, int type)
-{
- char c,sign,tmp[66];
- const char *digits;
- static const char small_digits[] = "0123456789abcdefghijklmnopqrstuvwxyz";
- static const char large_digits[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
- int i;
-
- digits = (type & LARGE) ? large_digits : small_digits;
- if (type & LEFT)
- type &= ~ZEROPAD;
- if (base < 2 || base > 36)
- return NULL;
- c = (type & ZEROPAD) ? '0' : ' ';
- sign = 0;
- if (type & SIGN) {
- if ((signed long long) num < 0) {
- sign = '-';
- num = - (signed long long) num;
- size--;
- } else if (type & PLUS) {
- sign = '+';
- size--;
- } else if (type & SPACE) {
- sign = ' ';
- size--;
- }
- }
- if (type & SPECIAL) {
- if (base == 16)
- size -= 2;
- else if (base == 8)
- size--;
- }
- i = 0;
- if (num == 0)
- tmp[i++]='0';
- else while (num != 0)
- tmp[i++] = digits[do_div(num,base)];
- if (i > precision)
- precision = i;
- size -= precision;
- if (!(type&(ZEROPAD+LEFT))) {
- while(size-->0) {
- if (buf <= end)
- *buf = ' ';
- ++buf;
- }
- }
- if (sign) {
- if (buf <= end)
- *buf = sign;
- ++buf;
- }
- if (type & SPECIAL) {
- if (base==8) {
- if (buf <= end)
- *buf = '0';
- ++buf;
- } else if (base==16) {
- if (buf <= end)
- *buf = '0';
- ++buf;
- if (buf <= end)
- *buf = digits[33];
- ++buf;
- }
- }
- if (!(type & LEFT)) {
- while (size-- > 0) {
- if (buf <= end)
- *buf = c;
- ++buf;
- }
- }
- while (i < precision--) {
- if (buf <= end)
- *buf = '0';
- ++buf;
- }
- while (i-- > 0) {
- if (buf <= end)
- *buf = tmp[i];
- ++buf;
- }
- while (size-- > 0) {
- if (buf <= end)
- *buf = ' ';
- ++buf;
- }
- return buf;
-}
-
-/**
- * vsnprintf - Format a string and place it in a buffer
- * @buf: The buffer to place the result into
- * @size: The size of the buffer, including the trailing null space
- * @fmt: The format string to use
- * @args: Arguments for the format string
- *
- * The return value is the number of characters which would
- * be generated for the given input, excluding the trailing
- * '\0', as per ISO C99. If you want to have the exact
- * number of characters written into @buf as return value
- * (not including the trailing '\0'), use vscnprintf. If the
- * return is greater than or equal to @size, the resulting
- * string is truncated.
- *
- * Call this function if you are already dealing with a va_list.
- * You probably want snprintf instead.
- */
-int vsnprintf(char *buf, size_t size, const char *fmt, va_list args)
-{
- int len;
- unsigned long long num;
- int i, base;
- char *str, *end, c;
- const char *s;
-
- int flags; /* flags to number() */
-
- int field_width; /* width of output field */
- int precision; /* min. # of digits for integers; max
- number of chars for from string */
- int qualifier; /* 'h', 'l', or 'L' for integer fields */
- /* 'z' support added 23/7/1999 S.H. */
- /* 'z' changed to 'Z' --davidm 1/25/99 */
- /* 't' added for ptrdiff_t */
-
- /* Reject out-of-range values early */
- if ((int) size < 0) {
- return 0;
- }
-
- str = buf;
- end = buf + size - 1;
-
- if (end < buf - 1) {
- end = ((void *) -1);
- size = end - buf + 1;
- }
-
- for (; *fmt ; ++fmt) {
- if (*fmt != '%') {
- if (str <= end)
- *str = *fmt;
- ++str;
- continue;
- }
-
- /* process flags */
- flags = 0;
- repeat:
- ++fmt; /* this also skips first '%' */
- switch (*fmt) {
- case '-': flags |= LEFT; goto repeat;
- case '+': flags |= PLUS; goto repeat;
- case ' ': flags |= SPACE; goto repeat;
- case '#': flags |= SPECIAL; goto repeat;
- case '0': flags |= ZEROPAD; goto repeat;
- }
-
- /* get field width */
- field_width = -1;
- if (isdigit(*fmt))
- field_width = skip_atoi(&fmt);
- else if (*fmt == '*') {
- ++fmt;
- /* it's the next argument */
- field_width = va_arg(args, int);
- if (field_width < 0) {
- field_width = -field_width;
- flags |= LEFT;
- }
- }
-
- /* get the precision */
- precision = -1;
- if (*fmt == '.') {
- ++fmt;
- if (isdigit(*fmt))
- precision = skip_atoi(&fmt);
- else if (*fmt == '*') {
- ++fmt;
- /* it's the next argument */
- precision = va_arg(args, int);
- }
- if (precision < 0)
- precision = 0;
- }
-
- /* get the conversion qualifier */
- qualifier = -1;
- if (*fmt == 'h' || *fmt == 'l' || *fmt == 'L' ||
- *fmt =='Z' || *fmt == 'z' || *fmt == 't') {
- qualifier = *fmt;
- ++fmt;
- if (qualifier == 'l' && *fmt == 'l') {
- qualifier = 'L';
- ++fmt;
- }
- }
-
- /* default base */
- base = 10;
-
- switch (*fmt) {
- case 'c':
- if (!(flags & LEFT)) {
- while (--field_width > 0) {
- if (str <= end)
- *str = ' ';
- ++str;
- }
- }
- c = (unsigned char) va_arg(args, int);
- if (str <= end)
- *str = c;
- ++str;
- while (--field_width > 0) {
- if (str <= end)
- *str = ' ';
- ++str;
- }
- continue;
-
- case 's':
- s = va_arg(args, char *);
-
- len = strnlen(s, precision);
-
- if (!(flags & LEFT)) {
- while (len < field_width--) {
- if (str <= end)
- *str = ' ';
- ++str;
- }
- }
- for (i = 0; i < len; ++i) {
- if (str <= end)
- *str = *s;
- ++str; ++s;
- }
- while (len < field_width--) {
- if (str <= end)
- *str = ' ';
- ++str;
- }
- continue;
-
- case 'p':
- if (field_width == -1) {
- field_width = 2*sizeof(void *);
- flags |= ZEROPAD;
- }
- str = number(str, end,
- (unsigned long) va_arg(args, void *),
- 16, field_width, precision, flags);
- continue;
-
-
- case 'n':
- /* FIXME:
- * What does C99 say about the overflow case here? */
- if (qualifier == 'l') {
- long * ip = va_arg(args, long *);
- *ip = (str - buf);
- } else if (qualifier == 'Z' || qualifier == 'z') {
- size_t * ip = va_arg(args, size_t *);
- *ip = (str - buf);
- } else {
- int * ip = va_arg(args, int *);
- *ip = (str - buf);
- }
- continue;
-
- case '%':
- if (str <= end)
- *str = '%';
- ++str;
- continue;
-
- /* integer number formats - set up the flags and "break" */
- case 'o':
- base = 8;
- break;
-
- case 'X':
- flags |= LARGE;
- case 'x':
- base = 16;
- break;
-
- case 'd':
- case 'i':
- flags |= SIGN;
- case 'u':
- break;
-
- default:
- if (str <= end)
- *str = '%';
- ++str;
- if (*fmt) {
- if (str <= end)
- *str = *fmt;
- ++str;
- } else {
- --fmt;
- }
- continue;
- }
- if (qualifier == 'L')
- num = va_arg(args, long long);
- else if (qualifier == 'l') {
- num = va_arg(args, unsigned long);
- if (flags & SIGN)
- num = (signed long) num;
- } else if (qualifier == 'Z' || qualifier == 'z') {
- num = va_arg(args, size_t);
- } else if (qualifier == 't') {
- num = va_arg(args, long);
- } else if (qualifier == 'h') {
- num = (unsigned short) va_arg(args, int);
- if (flags & SIGN)
- num = (signed short) num;
- } else {
- num = va_arg(args, unsigned int);
- if (flags & SIGN)
- num = (signed int) num;
- }
- str = number(str, end, num, base,
- field_width, precision, flags);
- }
- if (str <= end)
- *str = '\0';
- else if (size > 0)
- /* don't write out a null byte if the buf size is zero */
- *end = '\0';
- /* the trailing null byte doesn't count towards the total
- * ++str;
- */
- return str-buf;
-}
-
-
-/**
- * vscnprintf - Format a string and place it in a buffer
- * @buf: The buffer to place the result into
- * @size: The size of the buffer, including the trailing null space
- * @fmt: The format string to use
- * @args: Arguments for the format string
- *
- * The return value is the number of characters which have been written into
- * the @buf not including the trailing '\0'. If @size is <= 0 the function
- * returns 0.
- *
- * Call this function if you are already dealing with a va_list.
- * You probably want scnprintf instead.
- */
-int vscnprintf(char *buf, size_t size, const char *fmt, va_list args)
-{
- unsigned int i;
-
- i=vsnprintf(buf,size,fmt,args);
- return (i >= size) ? (size - 1) : i;
-}
-
-
-/**
- * snprintf - Format a string and place it in a buffer
- * @buf: The buffer to place the result into
- * @size: The size of the buffer, including the trailing null space
- * @fmt: The format string to use
- * @...: Arguments for the format string
- *
- * The return value is the number of characters which would be
- * generated for the given input, excluding the trailing null,
- * as per ISO C99. If the return is greater than or equal to
- * @size, the resulting string is truncated.
- */
-int snprintf(char * buf, size_t size, const char *fmt, ...)
-{
- va_list args;
- int i;
-
- va_start(args, fmt);
- i=vsnprintf(buf,size,fmt,args);
- va_end(args);
- return i;
-}
-
-
-/**
- * scnprintf - Format a string and place it in a buffer
- * @buf: The buffer to place the result into
- * @size: The size of the buffer, including the trailing null space
- * @fmt: The format string to use
- * @...: Arguments for the format string
- *
- * The return value is the number of characters written into @buf not including
- * the trailing '\0'. If @size is <= 0 the function returns 0. If the return is
- * greater than or equal to @size, the resulting string is truncated.
- */
-
-int scnprintf(char * buf, size_t size, const char *fmt, ...)
-{
- va_list args;
- unsigned int i;
-
- va_start(args, fmt);
- i = vsnprintf(buf, size, fmt, args);
- va_end(args);
- return (i >= size) ? (size - 1) : i;
-}
-
-/**
- * vsprintf - Format a string and place it in a buffer
- * @buf: The buffer to place the result into
- * @fmt: The format string to use
- * @args: Arguments for the format string
- *
- * The function returns the number of characters written
- * into @buf. Use vsnprintf or vscnprintf in order to avoid
- * buffer overflows.
- *
- * Call this function if you are already dealing with a va_list.
- * You probably want sprintf instead.
- */
-int vsprintf(char *buf, const char *fmt, va_list args)
-{
- return vsnprintf(buf, INT_MAX, fmt, args);
-}
-
-
-/**
- * sprintf - Format a string and place it in a buffer
- * @buf: The buffer to place the result into
- * @fmt: The format string to use
- * @...: Arguments for the format string
- *
- * The function returns the number of characters written
- * into @buf. Use snprintf or scnprintf in order to avoid
- * buffer overflows.
- */
-int sprintf(char * buf, const char *fmt, ...)
-{
- va_list args;
- int i;
-
- va_start(args, fmt);
- i=vsnprintf(buf, INT_MAX, fmt, args);
- va_end(args);
- return i;
-}
-
-
-/**
- * vsscanf - Unformat a buffer into a list of arguments
- * @buf: input buffer
- * @fmt: format of buffer
- * @args: arguments
- */
-int vsscanf(const char * buf, const char * fmt, va_list args)
-{
- const char *str = buf;
- char *next;
- char digit;
- int num = 0;
- int qualifier;
- int base;
- int field_width;
- int is_sign = 0;
-
- while(*fmt && *str) {
- /* skip any white space in format */
- /* white space in format matchs any amount of
- * white space, including none, in the input.
- */
- if (isspace(*fmt)) {
- while (isspace(*fmt))
- ++fmt;
- while (isspace(*str))
- ++str;
- }
-
- /* anything that is not a conversion must match exactly */
- if (*fmt != '%' && *fmt) {
- if (*fmt++ != *str++)
- break;
- continue;
- }
-
- if (!*fmt)
- break;
- ++fmt;
-
- /* skip this conversion.
- * advance both strings to next white space
- */
- if (*fmt == '*') {
- while (!isspace(*fmt) && *fmt)
- fmt++;
- while (!isspace(*str) && *str)
- str++;
- continue;
- }
-
- /* get field width */
- field_width = -1;
- if (isdigit(*fmt))
- field_width = skip_atoi(&fmt);
-
- /* get conversion qualifier */
- qualifier = -1;
- if (*fmt == 'h' || *fmt == 'l' || *fmt == 'L' ||
- *fmt == 'Z' || *fmt == 'z') {
- qualifier = *fmt++;
- if (qualifier == *fmt) {
- if (qualifier == 'h') {
- qualifier = 'H';
- fmt++;
- } else if (qualifier == 'l') {
- qualifier = 'L';
- fmt++;
- }
- }
- }
- base = 10;
- is_sign = 0;
-
- if (!*fmt || !*str)
- break;
-
- switch(*fmt++) {
- case 'c':
- {
- char *s = (char *) va_arg(args,char*);
- if (field_width == -1)
- field_width = 1;
- do {
- *s++ = *str++;
- } while (--field_width > 0 && *str);
- num++;
- }
- continue;
- case 's':
- {
- char *s = (char *) va_arg(args, char *);
- if(field_width == -1)
- field_width = INT_MAX;
- /* first, skip leading white space in buffer */
- while (isspace(*str))
- str++;
-
- /* now copy until next white space */
- while (*str && !isspace(*str) && field_width--) {
- *s++ = *str++;
- }
- *s = '\0';
- num++;
- }
- continue;
- case 'n':
- /* return number of characters read so far */
- {
- int *i = (int *)va_arg(args,int*);
- *i = str - buf;
- }
- continue;
- case 'o':
- base = 8;
- break;
- case 'x':
- case 'X':
- base = 16;
- break;
- case 'i':
- base = 0;
- case 'd':
- is_sign = 1;
- case 'u':
- break;
- case '%':
- /* looking for '%' in str */
- if (*str++ != '%')
- return num;
- continue;
- default:
- /* invalid format; stop here */
- return num;
- }
-
- /* have some sort of integer conversion.
- * first, skip white space in buffer.
- */
- while (isspace(*str))
- str++;
-
- digit = *str;
- if (is_sign && digit == '-')
- digit = *(str + 1);
-
- if (!digit
- || (base == 16 && !isxdigit(digit))
- || (base == 10 && !isdigit(digit))
- || (base == 8 && (!isdigit(digit) || digit > '7'))
- || (base == 0 && !isdigit(digit)))
- break;
-
- switch(qualifier) {
- case 'H': /* that's 'hh' in format */
- if (is_sign) {
- signed char *s = (signed char *) va_arg(args,signed char *);
- *s = (signed char) strtol(str,&next,base);
- } else {
- unsigned char *s = (unsigned char *) va_arg(args, unsigned char *);
- *s = (unsigned char) strtoul(str, &next, base);
- }
- break;
- case 'h':
- if (is_sign) {
- short *s = (short *) va_arg(args,short *);
- *s = (short) strtol(str,&next,base);
- } else {
- unsigned short *s = (unsigned short *) va_arg(args, unsigned short *);
- *s = (unsigned short) strtoul(str, &next, base);
- }
- break;
- case 'l':
- if (is_sign) {
- long *l = (long *) va_arg(args,long *);
- *l = strtol(str,&next,base);
- } else {
- unsigned long *l = (unsigned long*) va_arg(args,unsigned long*);
- *l = strtoul(str,&next,base);
- }
- break;
- case 'L':
- if (is_sign) {
- long long *l = (long long*) va_arg(args,long long *);
- *l = strtoll(str,&next,base);
- } else {
- unsigned long long *l = (unsigned long long*) va_arg(args,unsigned long long*);
- *l = strtoull(str,&next,base);
- }
- break;
- case 'Z':
- case 'z':
- {
- size_t *s = (size_t*) va_arg(args,size_t*);
- *s = (size_t) strtoul(str,&next,base);
- }
- break;
- default:
- if (is_sign) {
- int *i = (int *) va_arg(args, int*);
- *i = (int) strtol(str,&next,base);
- } else {
- unsigned int *i = (unsigned int*) va_arg(args, unsigned int*);
- *i = (unsigned int) strtoul(str,&next,base);
- }
- break;
- }
- num++;
-
- if (!next)
- break;
- str = next;
- }
- return num;
-}
-
-
-/**
- * sscanf - Unformat a buffer into a list of arguments
- * @buf: input buffer
- * @fmt: formatting of buffer
- * @...: resulting arguments
- */
-int sscanf(const char * buf, const char * fmt, ...)
-{
- va_list args;
- int i;
-
- va_start(args,fmt);
- i = vsscanf(buf,fmt,args);
- va_end(args);
- return i;
-}
-
-/* generic puts() implementation independent of who provides putchar() */
-int puts(const char *s)
-{
-#ifdef ARCH_HAS_CONSOLE
- return _puts(s);
-#else
- while (1) {
- char c = *s++;
- if (c == 0)
- return;
- putchar(c);
- }
- return 0;
-#endif
-}
diff --git a/Src/osmoconbb/src/target/firmware/rf/mt6139.c b/Src/osmoconbb/src/target/firmware/rf/mt6139.c
deleted file mode 100644
index a9a6d32..0000000
--- a/Src/osmoconbb/src/target/firmware/rf/mt6139.c
+++ /dev/null
@@ -1,205 +0,0 @@
-/* Driver for RF Transceiver Circuit (MT6139) */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-
-#include <debug.h>
-#include <memory.h>
-#include <keypad.h>
-#include <osmocom/gsm/gsm_utils.h>
-
-#include <layer1/agc.h>
-#include <rffe.h>
-
-#include <mtk/mt6139.h>
-
-static void mt6139_compute_pll(uint32_t f_vco_100khz,
- uint16_t *nint, uint16_t *nfrac)
-{
- /* To compute Nint, we assume Nfrac is zero */
- *nint = (fvco_100khz / (10 * 2 * 26)) - (0 / 130);
-
- if (nint > 127)
- printf("VCO Frequency %u kHz is out of spec\n", f_vco_100khz);
-
- /* Compute Nfract using the pre-computed Nint */
- /* Nfrac = ( (Fvco/2*26) - Nint) * 130 */
- /* Nfrac = ( (Fvco*130)/(2*26) - (Nint * 130) */
- *nfrac = (f_vco_100khz*130)/(52*10) - (nint * 130);
-}
-
-/* Set ARFCN. Takes 2 reg_write, i.e. 8 TPU instructions */
-void mt6139_set_arfcn(uint16_t arfcn, int uplink)
-{
- uint32_t regval = 0;
- uint32_t vco_mult;
- uint32_t freq_khz, f_vco_100khz;
- uint16_t nint, nfrac;
-
- freq_khz = gsm_arfcn2freq10(arfcn, uplink) * 100;
- printd("ARFCN %u -> %u kHz\n", arfcn, freq_khz);
-
- switch (gsm_arfcn2band(arfcn)) {
- case GSM_BAND_850:
- if (uplink)
- regval |= MT6139_CW1_TRX_850;
- regval |= (0 << MT6139_CW1_BAND_SHIFT);
- vco_mult = 4;
- break;
- case GSM_BAND_900:
- regval |= (1 << MT6139_CW1_BAND_SHIFT);
- vco_mult = 4;
- break;
- case GSM_BAND_1800:
- regval |= (2 << MT6139_CW1_BAND_SHIFT);
- vco_mult = 2;
- break;
- case GSM_BAND_1900:
- regval |= (3 << MT6139_CW1_BAND_SHIFT);
- vco_mult = 2;
- break;
- default:
- printf("Unsupported rf_band.\n");
- break;
- }
-
- /* Compute VCO frequency for channel frequency */
- f_vco_100khz = (freq_khz / 100) * vco_mult;
-
- /* Compute Nint and Nfract */
- mt6139_compute_pll(f_vco_100khz, &nint, &nfrac);
-
- /* mask-in the Nint / Nfrac bits in CW1 */
- regval |= (nfrac & 0xff) << MT6139_CW1_NFRACT_SHIFT;
- regval |= (nint & 0x7f) << MT6139_CW1_NINT_SHIFT;
-
-}
-
-void mt6139_init()
-{
- uint32_t val;
-
- /* reset and get it out of reset again */
- val = MT6139_CW0_DIEN | (0x20 << MT6139_CW0_AFC_SHIFT);
- mt6139_reg_write(0, val | MT6139_CW0_POR);
- mt6139_reg_write(0, val);
-
- /* Turn off AM and A loop calibration function (CM9) */
- val = (0x40 << MT6139_CW9_DCD_CQ_SHIFT) |
- (0x40 << MT6139_CW9_DCD_BQ_SHIFT) |
- MT6139_CW9_PWR_DAC_C | MT6139_CW9_PWR_DAC_B;
- mt6139_reg_write(9, val);
-
- /* Move to SLEEP mode */
- val = (0x3e << MT6139_CW2_GAINTBL_SHIFT) |
- (MODE_SLEEP << MT6139_CW2_MODE_SHIFT) |
- MT6139_CW2_AUTO_CAL |
- (0x20 << MT6139_CW2_DCD_AQ_SHIFT) |
- (0x20 << MT6139_CW2_DCD_AI_SHIFT);
- mt6139_reg_write(2, val);
-}
-
-void mt6139_rx_burst()
-{
- uint8_t pga_gain;
-
- /* Turn on the synthesizer and move into Warm-up mode */
- val = (0x3e << MT6139_CW2_GAINTBL_SHIFT) |
- (MODE_WARM_UP << MT6139_CW2_MODE_SHIFT) |
- MT6139_CW2_AUTO_CAL |
- (0x20 << MT6139_CW2_DCD_AQ_SHIFT) |
- (0x20 << MT6139_CW2_DCD_AI_SHIFT);
- mt6139_reg_write(2, val);
-
- /* Program the frequency synthesizer N counter and band selection */
- /* FIXME: see above for mt6139_set_arfcn() */
-
- /* Set receive mode, PGA gain */
- val = (pga_gain << MT6139_CW2_GAINTBL_SHIFT) |
- (MODE_RECEIVE << MT6139_CW2_MODE_SHIFT) |
- MT6139_CW2_AUTO_CAL |
- (0x20 << MT6139_CW2_DCD_AQ_SHIFT) |
- (0x20 << MT6139_CW2_DCD_AI_SHIFT);
- mt6139_reg_write(2, val);
-
- /* FIXME: Do the actual burst Rx */
-
- /* Set Sleep mode */
- val = (0x3e << MT6139_CW2_GAINTBL_SHIFT) |
- (MODE_SLEEP << MT6139_CW2_MODE_SHIFT) |
- MT6139_CW2_AUTO_CAL |
- (0x20 << MT6139_CW2_DCD_AQ_SHIFT) |
- (0x20 << MT6139_CW2_DCD_AI_SHIFT);
- mt6139_reg_write(2, val);
-}
-
-void mt6139_tx_burst()
-{
- /* Turn on the synthesizer and move into Warm-up mode */
- val = (0x3e << MT6139_CW2_GAINTBL_SHIFT) |
- (MODE_WARM_UP << MT6139_CW2_MODE_SHIFT) |
- MT6139_CW2_AUTO_CAL |
- (0x20 << MT6139_CW2_DCD_AQ_SHIFT) |
- (0x20 << MT6139_CW2_DCD_AI_SHIFT);
- mt6139_reg_write(2, val);
-
- /* Program the frequency synthesizer N counter and band selection */
- /* FIXME: see above for mt6139_set_arfcn() */
-
- /* Send Tx setting */
- val = MT6139_CW11_TX_CTL |
- MT6139_CW11_TXG_IQM |
- MT6139_CW11_TXD_IQM |
- MT6139_CW11_TX_DIV2 |
- MT6139_CW11_TX_DIV4 |
- MT6139_CW11_TXG_BUF |
- MT6139_CW11_TXD_BUF |
- (3 << MT6139_CW11_TX_FLT_SHIFT) |
- (1 << MT6139_CW11_TXAPC_SHIFT) |
- (3 << MT6139_CW11_TXPW_SHIFT) |
- (2 << MT6139_CW11_TXBIAST_SHIFT) |
- MT6139_CW11_TXDIV_GC0;
- if (1) // low band
- mt6139_reg_write(11, val | (0 << MT6139_CW11_TXMODGAIN_SHIFT));
- else
- mt6139_reg_write(11, val | (4 << MT6139_CW11_TXMODGAIN_SHIFT));
-
- /* Set Transmit mode */
- val = (0x3e << MT6139_CW2_GAINTBL_SHIFT) |
- (MODE_TRANSMIT << MT6139_CW2_MODE_SHIFT) |
- MT6139_CW2_AUTO_CAL |
- (0x20 << MT6139_CW2_DCD_AQ_SHIFT) |
- (0x20 << MT6139_CW2_DCD_AI_SHIFT);
- mt6139_reg_write(2, val);
-
- /* FIXME: Do the actual burst Tx */
-
- /* Set Sleep mode */
- val = (0x3e << MT6139_CW2_GAINTBL_SHIFT) |
- (MODE_SLEEP << MT6139_CW2_MODE_SHIFT) |
- MT6139_CW2_AUTO_CAL |
- (0x20 << MT6139_CW2_DCD_AQ_SHIFT) |
- (0x20 << MT6139_CW2_DCD_AI_SHIFT);
- mt6139_reg_write(2, val);
-}
-
diff --git a/Src/osmoconbb/src/target/firmware/rf/trf6151.c b/Src/osmoconbb/src/target/firmware/rf/trf6151.c
deleted file mode 100644
index 5360402..0000000
--- a/Src/osmoconbb/src/target/firmware/rf/trf6151.c
+++ /dev/null
@@ -1,601 +0,0 @@
-/* Driver for RF Transceiver Circuit (TRF6151) */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdint.h>
-#include <stdio.h>
-
-#include <debug.h>
-#include <memory.h>
-#include <keypad.h>
-#include <osmocom/gsm/gsm_utils.h>
-
-#include <calypso/tpu.h>
-#include <calypso/tsp.h>
-#include <layer1/agc.h>
-#include <rffe.h>
-
-#include <rf/trf6151.h>
-
-/* #define WARN_OUT_OF_SPEC 1 */
-
-enum trf6151_reg {
- REG_RX = 0, /* RF general settings */
- REG_PLL = 1, /* PLL settings */
- REG_PWR = 2, /* Power on/off functional blocks */
- REG_CFG = 3, /* Transceiver and PA controller settings */
- REG_TEST1 = 4,
- REG_TEST2 = 5,
- REG_TEST3 = 6,
- REG_TEST4 = 7,
- _MAX_REG
-};
-
-/* REG_RX */
-#define RX_READ_EN (1 << 7)
-#define RX_CAL_MODE (1 << 8)
-#define RX_RF_GAIN_HIGH (3 << 9)
-#define RX_VGA_GAIN_SHIFT 11
-
-/* REG_PWR */
-#define PWR_BANDGAP_SHIFT 3
-#define PWR_BANDGAP_OFF (0 << PWR_BANDGAP_SHIFT)
-#define PWR_BANDGAP_ON_SPEEDUP (2 << PWR_BANDGAP_SHIFT)
-#define PWR_BANDGAP_ON (3 << PWR_BANDGAP_SHIFT)
-#define PWR_REGUL_ON (1 << 5)
-#define PWR_SYNTHE_OFF (0)
-#define PWR_SYNTHE_RX_ON (1 << 9)
-#define PWR_SYNTHE_TX_ON (1 << 10)
-#define PWR_RX_MODE (1 << 11)
-#define PWR_TX_MODE (1 << 13)
-#define PWR_PACTRL_APC (1 << 14)
-#define PWR_PACTRL_APCEN (1 << 15)
-
-/* REG_CFG */
-#define CFG_TX_LOOP_MANU (1 << 3)
-#define CFG_PACTLR_IDIOD_30uA (0 << 4)
-#define CFG_PACTLR_IDIOD_300uA (1 << 4)
-#define CFG_PACTLR_RES_OPEN (0 << 10)
-#define CFG_PACTLR_RES_150k (1 << 10)
-#define CFG_PACTLR_RES_300k (2 << 10)
-#define CFG_PACTLR_CAP_0pF (0 << 12)
-#define CFG_PACTLR_CAP_12p5F (1 << 12)
-#define CFG_PACTLR_CAP_25pF (3 << 12)
-#define CFG_PACTLR_CAP_50pF (2 << 12)
-#define CFG_TEMP_SENSOR (1 << 14)
-#define CFG_ILOGIC_INIT_DIS (1 << 15)
-
-/* FIXME: This must be defined in the RFFE configuration */
-#define TRF6151_TSP_UID 2
-#define TRF6151_PACTRL_CFG (CFG_PACTLR_RES_OPEN|CFG_PACTLR_CAP_0pF|CFG_PACTLR_IDIOD_30uA)
-
-#define PLL_VAL(a, b) ((a << 3) | (((b)-64) << 9))
-
-/* All values in qbits unless otherwise specified */
-#define TRF6151_LDO_DELAY_TS 6 /* six TDMA frames (at least 25ms) */
-#define TRF6151_RX_PLL_DELAY 184 /* 170 us */
-#define TRF6151_TX_PLL_DELAY 260 /* 240 us */
-
-
-enum trf6151_pwr_unit {
- TRF1651_PACTLR_APC,
- TRF6151_PACTRL_APCEN,
- TRF6151_TRANSMITTER,
- TRF6151_REGULATORS,
-};
-
-enum trf6151_gsm_band {
- GSM900 = 1,
- GSM1800 = 2,
- GSM850_LOW = 4,
- GSM850_HIGH = 5,
- GSM1900 = 6,
-};
-
-
-uint16_t rf_arfcn = 871; /* TODO: this needs to be private */
-static uint16_t rf_band;
-
-static uint8_t trf6151_tsp_uid;
-static uint8_t trf6151_vga_dbm = 40;
-static int trf6151_gain_high = 1;
-
-static uint16_t trf6151_reg_cache[_MAX_REG] = {
- [REG_RX] = 0x9E00,
- [REG_PLL] = 0x0000,
- [REG_PWR] = 0x0000,
- [REG_CFG] = 0x2980,
-};
-
-/* Write to a TRF6151 register (4 TPU instructions) */
-static void trf6151_reg_write(uint16_t reg, uint16_t val)
-{
- printd("trf6151_reg_write(reg=%u, val=0x%04x)\n", reg, val);
- /* each TSP write takes 4 TPU instructions */
- tsp_write(trf6151_tsp_uid, 16, (reg | val));
- trf6151_reg_cache[reg] = val;
-}
-
-/* Frontend gain can be switched high or low (dB) */
-#define TRF6151_FE_GAIN_LOW 7
-#define TRF6151_FE_GAIN_HIGH 27
-
-/* VGA at baseband can be adjusted in this range (dB) */
-#define TRF6151_VGA_GAIN_MIN 14
-#define TRF6151_VGA_GAIN_MAX 40
-
-/* put current set (or computed) gain to register */
-int trf6151_set_gain_reg(uint8_t dbm, int high)
-{
- uint16_t reg = trf6151_reg_cache[REG_RX] & 0x07ff;
- printd("trf6151_set_gain_reg(%u, %d)\n", dbm, high);
-
- if (dbm < TRF6151_VGA_GAIN_MIN || dbm > TRF6151_VGA_GAIN_MAX)
- return -1;
-
- /* clear the gain bits first */
- reg &= ~((0x1F) << RX_VGA_GAIN_SHIFT);
- /* OR-in the new gain value */
- reg |= (6 + (dbm-TRF6151_VGA_GAIN_MIN)/2) << RX_VGA_GAIN_SHIFT;
-
- if (high)
- reg |= RX_RF_GAIN_HIGH;
- else
- reg &= ~RX_RF_GAIN_HIGH;
-
- trf6151_reg_write(REG_RX, reg);
-
- return 0;
-}
-
-int trf6151_set_gain(uint8_t dbm)
-{
- int high = 0;
-
- printd("trf6151_set_gain(%u, %d)\n", dbm);
- /* If this is negative or less than TRF6151_GAIN_MIN, we are pretty
- * much lost as we cannot reduce the system inherent gain. If it is
- * positive, it corresponds to the gain that we need to configure */
- if (dbm < TRF6151_FE_GAIN_LOW + TRF6151_VGA_GAIN_MIN) {
- printd("AGC Input level overflow\n");
- trf6151_vga_dbm = TRF6151_VGA_GAIN_MIN;
- trf6151_gain_high = 0;
- return 0;
- } else if (dbm >= TRF6151_FE_GAIN_HIGH + TRF6151_VGA_GAIN_MIN) {
- high = 1;
- dbm -= TRF6151_FE_GAIN_HIGH;
- } else
- dbm -= TRF6151_FE_GAIN_LOW;
- if (dbm > TRF6151_VGA_GAIN_MAX)
- dbm = TRF6151_VGA_GAIN_MAX;
-
- /* update the static global variables which are used when programming
- * the window */
- trf6151_vga_dbm = dbm;
- trf6151_gain_high = high;
-
- return 0;
-}
-
-#define SCALE_100KHZ 100
-
-/* Compute TRF6151 PLL valuese */
-static void trf6151_pll_rx(uint32_t freq_khz,
- uint16_t *pll_config, enum trf6151_gsm_band *band)
-{
- const uint32_t p=64, r=65;
- uint32_t freq_100khz, vco_freq_100khz;
- uint32_t l, n;
- uint32_t a, b;
-
- /* Scale into 100kHz unit (avoid overflow in intermediates) */
- freq_100khz = freq_khz / SCALE_100KHZ;
-
- /* L selects hi/lo band */
- l = (freq_khz > 1350000) ? 2 : 4; /* cut at mid point :) */
-
- /* VCO frequency */
- vco_freq_100khz = freq_100khz * l;
-
- /* vco_freq = 26MHz / R * N with R=65 and N=B*P+A */
- n = (vco_freq_100khz * r) / 260;
- a = n % p;
- b = n / p;
-
- *pll_config = PLL_VAL(a, b);
-
- /* Out-of-spec tuning warning */
-#ifdef WARN_OUT_OF_SPEC
- if ((l == 4 && (b < 135 || b > 150)) ||
- (l == 2 && (b < 141 || b > 155)))
- printf("Frequency %u kHz is out of spec\n", (unsigned int)freq_khz);
-#endif
-
- /* Select band */
- if (l==4) {
- /* If in the low band, same port for both GSM850/GSM900, so we
- * choose the best VCO (VCOMAIN1=3.37GHz, VCOMAIN2=3.8GHz) */
- if (vco_freq_100khz < 35850) /* midpoint */
- *band = GSM850_LOW;
- else
- *band = GSM900;
-
- /* Out-of-spec freq check */
-#ifdef WARN_OUT_OF_SPEC
- if (!(freq_khz >= 869000 && freq_khz <= 894000) &&
- !(freq_khz >= 921000 && freq_khz <= 960000)) /* include GSM-R */
- printf("Frequency %u outside normal filter range for selected port\n", (unsigned int)freq_khz);
-#endif
- } else {
- /* In the high band, different ports for DCS/PCS, so
- * take what's best and available */
- /* We're stuck to VCOMAIN2=3.8GHz though ... */
- uint32_t rx_ports = rffe_get_rx_ports();
- uint32_t port;
-
- /* Select port */
- port = (freq_khz < 1905000) ? (1 << PORT_DCS1800) : (1 << PORT_PCS1900);
- port = (port & rx_ports) ? port : rx_ports;
-
- /* Select band */
- *band = (port & (1 << PORT_DCS1800)) ? GSM1800 : GSM1900;
-
- /* Out-of-spec freq check */
-#ifdef WARN_OUT_OF_SPEC
- if ((*band == GSM1800 && (freq_khz < 1805000 || freq_khz > 1880000)) ||
- (*band == GSM1900 && (freq_khz < 1930000 || freq_khz > 1990000)))
- printf("Frequency %u outside normal filter range for selected port\n", (unsigned int)freq_khz);
-#endif
- }
-
- /* Debug */
- printd("RX Freq %u kHz => A = %u, B = %u, band = %d, vco_freq = %u kHz\n", freq_khz, a, b, *band, vco_freq_100khz*100);
-
- /* All done */
- return;
-}
-
-/* Compute TRF6151 PLL TX values */
-static void trf6151_pll_tx(uint32_t freq_khz,
- uint16_t *pll_config, enum trf6151_gsm_band *band)
-{
- const uint32_t p=64;
- uint32_t r, l, m, m_op_l; /* m_op_l = m +/- l depending on mode */
- uint32_t freq_100khz;
- uint32_t n, a, b, b_min, b_max;
-
- /* Scale into 100kHz unit (avoid overflow in intermediates) */
- freq_100khz = freq_khz / SCALE_100KHZ;
-
- /* Select band (and PLL mode) */
- if (freq_khz > 1350000) {
- /* High band, so only 1 real PLL mode. band doesn't matter
- * that much (or at all) but we still do it :p */
- *band = (freq_khz < 1817500) ? GSM1800 : GSM1900;
- r = 70;
- l = 2;
- m = 26;
- m_op_l = m + l;
- b_min = 133;
- b_max = 149;
- } else {
- /* Low band. We have 3 possible PLL modes that output on
- * the right port: GSM900, GSM850_HIGH, GSM850_LOW.
- *
- * The transistion points have been chosen looking at the VCO
- * and IF frequencies for various frequencies for theses modes
- */
- if (freq_khz < 837100) {
- /* GSM850_LOW */
- *band = GSM850_LOW;
- r = 55;
- l = 4;
- m = 26;
- m_op_l = m - l;
- b_min = 128;
- b_max = 130;
- } else if (freq_khz < 850000) {
- /* GSM850_HIGH */
- *band = GSM850_HIGH;
- r = 30;
- l = 4;
- m = 52;
- m_op_l = m - l;
- b_min = 65;
- b_max = 66;
- } else {
- /* GSM900 */
- *band = GSM900;
- r = 35;
- l = 4;
- m = 52;
- m_op_l = m + l;
- b_min = 68;
- b_max = 71;
- }
- }
-
- /* vco_freq = f * M * L / (M +- L) */
- /* = 26MHz / R * N with R=65 and N=B*P+A */
- n = (freq_100khz * m * l * r) / (m_op_l * 260);
- a = n % p;
- b = n / p;
-
- *pll_config = PLL_VAL(a, b);
-
- /* Debug */
- printd("TX Freq %u kHz => A = %u, B = %u, band = %d\n", freq_khz, a, b, *band);
-
- /* Out-of-spec tuning warning */
-#ifdef WARN_OUT_OF_SPEC
- if (b < b_min || b > b_max)
- printf("Frequency %u kHz is out of spec\n", (unsigned int)freq_khz);
-#endif
-
- /* All done */
- return;
-}
-
-static inline void trf6151_reset(uint16_t reset_id)
-{
- /* pull the nRESET line low */
- tsp_act_disable(reset_id);
- tpu_enq_wait(50);
- /* release nRESET */
- tsp_act_enable(reset_id);
-}
-
-void trf6151_init(uint8_t tsp_uid, uint16_t tsp_reset_id)
-{
- trf6151_tsp_uid = tsp_uid;
-
- /* Configure the TSPEN which is connected to TRF6151 STROBE */
- tsp_setup(trf6151_tsp_uid, 0, 1, 1);
-
- trf6151_reset(tsp_reset_id);
-
- /* configure TRF6151 for operation */
- trf6151_power(1);
- trf6151_reg_write(REG_CFG, TRF6151_PACTRL_CFG | CFG_ILOGIC_INIT_DIS);
-
- /* FIXME: Uplink / Downlink Calibration */
-}
-
-void trf6151_power(int on)
-{
- if (on) {
- trf6151_reg_write(REG_PWR, PWR_REGUL_ON | PWR_BANDGAP_ON);
- /* wait until regulators are stable (25ms == 27100 qbits) */
- tpu_enq_wait(5000);
- tpu_enq_wait(5000);
- tpu_enq_wait(5000);
- tpu_enq_wait(5000);
- tpu_enq_wait(5000);
- tpu_enq_wait(2100);
- } else
- trf6151_reg_write(REG_PWR, PWR_BANDGAP_ON);
-}
-
-/* Set the operational mode of the TRF6151 chip */
-void trf6151_set_mode(enum trf6151_mode mode)
-{
- uint16_t pwr = (PWR_REGUL_ON | PWR_BANDGAP_ON | (rf_band<<6));
-
- switch (mode) {
- case TRF6151_IDLE:
- /* should we switch of the RF gain for power saving? */
- break;
- case TRF6151_RX:
- pwr |= (PWR_SYNTHE_RX_ON | PWR_RX_MODE);
- break;
- case TRF6151_TX:
-#if 0
- pwr |= (PWR_SYNTHE_TX_ON | PWR_TX_MODE);
-#else // Dieter: we should turn power control on (for TPU: check timing and order !)
- pwr |= (PWR_SYNTHE_TX_ON | PWR_TX_MODE | PWR_PACTRL_APC | PWR_PACTRL_APCEN); // Dieter: TODO
-#endif
- break;
- }
- trf6151_reg_write(REG_PWR, pwr);
-}
-
-static void trf6151_band_select(enum trf6151_gsm_band band)
-{
- uint16_t pwr = trf6151_reg_cache[REG_PWR];
-
- pwr &= ~(3 << 6);
- pwr |= (band << 6);
-
- trf6151_reg_write(REG_PWR, pwr);
-}
-
-/* Set ARFCN. Takes 2 reg_write, i.e. 8 TPU instructions */
-void trf6151_set_arfcn(uint16_t arfcn, int uplink)
-{
- uint32_t freq_khz;
- uint16_t pll_config;
- enum trf6151_gsm_band pll_band;
-
- switch (gsm_arfcn2band(arfcn)) {
- case GSM_BAND_850:
- case GSM_BAND_900:
- case GSM_BAND_1800:
- case GSM_BAND_1900:
- /* Supported */
- break;
- case GSM_BAND_450:
- case GSM_BAND_480:
- case GSM_BAND_750:
- case GSM_BAND_810:
- printf("Unsupported band ! YMMV.\n");
- break;
- }
-
- freq_khz = gsm_arfcn2freq10(arfcn, uplink) * 100;
- printd("ARFCN %u -> %u kHz\n", arfcn, freq_khz);
-
- if (uplink == 0)
- trf6151_pll_rx(freq_khz, &pll_config, &pll_band);
- else
- trf6151_pll_tx(freq_khz, &pll_config, &pll_band);
-
- trf6151_band_select(pll_band);
- trf6151_reg_write(REG_PLL, pll_config);
-
- rf_band = pll_band;
- rf_arfcn = arfcn; // TODO: arfcn is referenced at other places
-}
-
-void trf6151_calib_dc_offs(void)
-{
- uint16_t rx = trf6151_reg_cache[REG_RX];
-
- /* Set RX CAL Mode bit, it will re-set automatically */
- trf6151_reg_write(REG_RX, rx | RX_CAL_MODE);
- /* DC offset calibration can take up to 50us, i.e. 54.16 * 923ns*/
- tpu_enq_wait(55);
-}
-
-uint8_t trf6151_get_gain_reg(void)
-{
- uint16_t vga, reg_rx = trf6151_reg_cache[REG_RX];
- uint8_t gain = 0;
-
- switch ((reg_rx >> 9) & 3) {
- case 0:
- gain += TRF6151_FE_GAIN_LOW;
- break;
- case 3:
- gain += TRF6151_FE_GAIN_HIGH;
- break;
- }
-
- vga = (reg_rx >> RX_VGA_GAIN_SHIFT) & 0x1f;
- if (vga < 6)
- vga = 6;
-
- gain += TRF6151_VGA_GAIN_MIN + (vga - 6) * 2;
-
- return gain;
-}
-
-uint8_t trf6151_get_gain(void)
-{
- uint8_t gain;
-
- gain = trf6151_vga_dbm;
- if (trf6151_gain_high)
- gain += TRF6151_FE_GAIN_HIGH;
- else
- gain += TRF6151_FE_GAIN_LOW;
-
- return gain;
-}
-
-void trf6151_test(uint16_t arfcn)
-{
- /* Select ARFCN 871 downlink */
- trf6151_set_arfcn(arfcn, 0);
-
- trf6151_set_mode(TRF6151_RX);
- //trf6151_reg_write(REG_PWR, (PWR_SYNTHE_RX_ON | PWR_RX_MODE | PWR_REGUL_ON | (rf_band<<6) | PWR_BANDGAP_ON));
- /* Wait for PLL stabilization (170us max) */
- tpu_enq_wait(TRF6151_RX_PLL_DELAY);
-
- /* Use DC offset calibration after RX mode has been switched on
- * (might not be needed) */
- trf6151_calib_dc_offs();
-
- tpu_enq_sleep();
- tpu_enable(1);
- tpu_wait_idle();
-}
-
-void trf6151_tx_test(uint16_t arfcn)
-{
- /* Select ARFCN uplink */
- trf6151_set_arfcn(arfcn, 1);
-
- trf6151_set_mode(TRF6151_TX);
- tpu_enq_wait(TRF6151_RX_PLL_DELAY);
-
- tpu_enq_sleep();
- tpu_enable(1);
- tpu_wait_idle();
-}
-
-#define TRF6151_REGWR_QBITS 8 /* 4 GSM qbits + 4 TPU instructions */
-#define TRF6151_RX_TPU_INSTR 4 /* set_gain_reg(1), set_arfcn(2), set_mode(1) */
-
-/* delay caused by this driver programming the TPU for RX mode */
-#define TRF6151_RX_TPU_DELAY (TRF6151_RX_TPU_INSTR * TRF6151_REGWR_QBITS)
-
-/* prepare a Rx window with the TRF6151 finished at time 'start' (in qbits) */
-void trf6151_rx_window(int16_t start_qbits, uint16_t arfcn)
-{
- int16_t start_pll_qbits;
-
- /* power up at the right time _before_ the 'start_qbits' point in time */
- start_pll_qbits = add_mod5000(start_qbits, -(TRF6151_RX_PLL_DELAY + TRF6151_RX_TPU_DELAY));
- tpu_enq_at(start_pll_qbits);
-
- /* Set the AGC and PLL registers */
- trf6151_set_arfcn(arfcn, 0);
- trf6151_set_gain_reg(trf6151_vga_dbm, trf6151_gain_high);
- trf6151_set_mode(TRF6151_RX);
-
- /* FIXME: power down at the right time again */
-}
-
-/* prepare a Tx window with the TRF6151 finished at time 'start' (in qbits) */
-void trf6151_tx_window(int16_t start_qbits, uint16_t arfcn)
-{
-#ifdef CONFIG_TX_ENABLE
- int16_t start_pll_qbits;
-
- /* power up at the right time _before_ the 'start_qbits' point in time */
- start_pll_qbits = add_mod5000(start_qbits, -(TRF6151_TX_PLL_DELAY + TRF6151_RX_TPU_DELAY));
- tpu_enq_at(start_pll_qbits);
-
- trf6151_set_arfcn(arfcn, 1);
- trf6151_set_mode(TRF6151_TX);
-
- /* FIXME: power down at the right time again */
-#endif
-}
-
-/* Given the expected input level of exp_inp dBm and the target of target_bb
- * dBm, configure the RF Frontend with the respective gain */
-void trf6151_compute_gain(int16_t exp_inp, int16_t target_bb)
-{
- /* TRF6151 VGA gain between 14 to 40 dB, plus 20db high/low */
- int16_t exp_bb, delta;
-
- /* calculate the dBm8 that we expect at the baseband */
- exp_bb = exp_inp + system_inherent_gain;
-
- /* calculate the error that we expect. */
- delta = target_bb - exp_bb;
-
- printd("computed gain %d\n", delta);
- trf6151_set_gain(delta);
-}
-
diff --git a/Src/osmoconbb/src/target/ui-experiment/README b/Src/osmoconbb/src/target/ui-experiment/README
deleted file mode 100644
index 81b34d7..0000000
--- a/Src/osmoconbb/src/target/ui-experiment/README
+++ /dev/null
@@ -1,11 +0,0 @@
-
-This is some exploratory and experimental code related
-to the development of a proper lcd-based ui.
-
-It has been written by Ingo Albrecht <prom@berlin.ccc.de>
-and, lacking further arrangements, should be considered to
-be licensed under the GNU GPL v2 or later.
-
-I have placed this here due to general interest. All of it
-can safely be removed once we have a proper ui.
-
diff --git a/Src/osmoconbb/src/target/ui-experiment/display.h b/Src/osmoconbb/src/target/ui-experiment/display.h
deleted file mode 100644
index 5591370..0000000
--- a/Src/osmoconbb/src/target/ui-experiment/display.h
+++ /dev/null
@@ -1,46 +0,0 @@
-
-#ifndef _UI_DISPLAY_H
-#define _UI_DISPLAY_H
-
-#include <ui/pixel.h>
-#include <ui/image.h>
-
-/**
- * Displays - physical display devices
- *
- * This layer is introduced tentatively, expecting use
- * of OSMOCOM on multi-display phones, most likely
- * with a main screen and a cover screen.
- *
- */
-struct display {
- const char *name;
-
- pxtype_t pixeltype;
- pxsize_t width;
- pxsize_t height;
-
- /* We always operate on an in-memory frame buffer that
- * can be put on display using damage functions provided
- * by the image class.
- */
- struct image *fbuf;
-
- /*
- * We display a top-level widget.
- */
- struct widget *widget;
-
- /*
- * We hold a graphics context, configured for the target
- * pixel format.
- */
- struct graphics *graphics;
-
-
- void (*draw) (struct display *display);
-
- void *priv;
-};
-
-#endif
diff --git a/Src/osmoconbb/src/target/ui-experiment/font.h b/Src/osmoconbb/src/target/ui-experiment/font.h
deleted file mode 100644
index 5dc6eae..0000000
--- a/Src/osmoconbb/src/target/ui-experiment/font.h
+++ /dev/null
Binary files differ
diff --git a/Src/osmoconbb/src/target/ui-experiment/image.h b/Src/osmoconbb/src/target/ui-experiment/image.h
deleted file mode 100644
index 13c11f5..0000000
--- a/Src/osmoconbb/src/target/ui-experiment/image.h
+++ /dev/null
@@ -1,166 +0,0 @@
-
-#ifndef _UI_IMAGE_H
-#define _UI_IMAGE_H
-
-/* for exit() */
-#include <stdlib.h>
-
-#include <ui/pixel.h>
-#include <ui/font.h>
-
-struct image {
- pxtype_t type;
- pxdims_t size;
- unsigned char *data;
-};
-
-
-struct image font_img_v = {
- .type = PXTYPE_MONO_V8,
- .size = {8, 2048},
- .data = &fontdata_r8x8,
-};
-
-struct image font_img_h = {
- .type = PXTYPE_MONO_H8,
- .size = {8, 2048},
- .data = &fontdata_r8x8_horiz,
-};
-
-px_t
-image_get_pixel(struct image *img, pxoff_t x, pxoff_t y) {
- unsigned stride, base, offset;
- const uint8_t *p8;
- const uint16_t *p16;
-
- switch(img->type) {
- case PXTYPE_MONO_V8:
- stride = img->size.w;
- base = y / 8;
- offset = y % 8;
- p8 = (uint8_t*)(img->data + x + base * stride);
- return px_from_mono(((*p8) >> offset) & 1);
- case PXTYPE_MONO_H8:
- stride = img->size.w / 8;
- base = x / 8;
- offset = x % 8;
- p8 = (uint8_t*)(img->data + base + y * stride);
- return px_from_mono(((*p8) >> offset) & 1);
- case PXTYPE_RGB444:
- stride = img->size.w * 2;
- p16 = (uint16_t*)(img->data + x * 2 + y * stride);
- return px_from_rgb444(*p16);
- }
-
- return 0;
-}
-
-void
-image_set_pixel(struct image *img, pxoff_t x, pxoff_t y, px_t v) {
- unsigned stride, base, offset;
- uint8_t *p8;
- uint16_t *p16;
-
- switch(img->type) {
- case PXTYPE_MONO_V8:
- stride = img->size.w;
- base = y / 8;
- offset = y % 8;
- p8 = (uint8_t*)(img->data + x + base * stride);
- *p8 |= (px_to_mono(v) << offset);
- break;
- case PXTYPE_MONO_H8:
- stride = img->size.w / 8;
- base = x / 8;
- offset = x % 8;
- p8 = (uint8_t*)(img->data + base + y * stride);
- *p8 |= (px_to_mono(v) << offset);
- break;
- case PXTYPE_RGB444:
- stride = img->size.w * 2;
- p16 = (uint16_t*)(img->data + x * 2 + y * stride);
- *p16 = px_to_rgb444(v);
- break;
- }
-}
-
-void
-image_blit(struct image *dst, pxposn_t dstp,
- struct image *src, pxposn_t srcp,
- pxdims_t d)
-{
- unsigned x, y, s;
-
- printf("blit %dx%d from %dx%d to %dx%d\n", d.w, d.h, srcp.x, srcp.y, dstp.x, dstp.y);
-
- // *cough* slow.
- for(y = 0; y < d.h; y++) {
- for(x = 0; x < d.w; x++) {
- px_t p = image_get_pixel(src, srcp.x + x, srcp.y + y);
- image_set_pixel(dst, dstp.x + x, dstp.y + y, p);
- }
- }
-}
-
-void
-image_draw_char(struct image *dst, pxposn_t p, char chr) {
- unsigned char c = (unsigned char)chr;
- pxposn_t pf = {0,c*8};
- pxdims_t d = {8,8};
- image_blit(dst, p, &font_img_h, pf, d);
-}
-
-void
-image_draw_string(struct image *dst, pxposn_t p, char *str) {
- while(*str) {
- image_draw_char(dst, p, *str);
- p.x += 8;
- str++;
- }
-}
-
-static void
-image_fill_rect_rgb444(struct image *dst, pxrect_t rect, uint16_t color) {
- unsigned x, y, s;
- uint16_t *p;
-
- unsigned stride = dst->size.w * 2;
-
- for(y = rect.p.y; y < rect.p.y + rect.d.h; y++) {
- for(x = rect.p.x; x < rect.p.x + rect.d.w; x++) {
- p = (uint16_t*)&dst->data[x * 2 + y * stride];
- *p = color;
- }
- }
-}
-
-void
-image_fill_rect(struct image *dst, pxrect_t rect, px_t color)
-{
- switch(dst->type) {
- case PXTYPE_MONO_V8:
- break;
- case PXTYPE_MONO_H8:
- break;
- case PXTYPE_RGB444:
- image_fill_rect_rgb444(dst, rect, px_to_rgb444(color));
- break;
- }
-}
-
-void
-image_draw_hline(struct image *dst, pxposn_t posn, pxoff_t len, px_t color)
-{
-}
-
-void
-image_draw_vline(struct image *dst, pxposn_t posn, pxoff_t len, px_t color)
-{
-}
-
-void
-image_draw_rect(struct image *dst, pxrect_t rect, px_t color)
-{
-}
-
-#endif
diff --git a/Src/osmoconbb/src/target/ui-experiment/menu.h b/Src/osmoconbb/src/target/ui-experiment/menu.h
deleted file mode 100644
index d9cc97b..0000000
--- a/Src/osmoconbb/src/target/ui-experiment/menu.h
+++ /dev/null
@@ -1,18 +0,0 @@
-
-/**
- * Menus - menus and menu items
- *
- * We represent both menus and menu items in a single structure.
- *
- * They share the properties of having a title as well as having
- * interaction callbacks such as on_select.
- *
- * Menus have a child item array that is indexed by menu position.
- * The position of items in this array is used for numeric menu navigation.
- *
- */
-struct menu {
- const char *title;
- void (*on_select)(void);
- struct menu *children[10];
-};
diff --git a/Src/osmoconbb/src/target/ui-experiment/pixel.h b/Src/osmoconbb/src/target/ui-experiment/pixel.h
deleted file mode 100644
index dde28e2..0000000
--- a/Src/osmoconbb/src/target/ui-experiment/pixel.h
+++ /dev/null
@@ -1,113 +0,0 @@
-
-#ifndef _UI_PIXEL_H
-#define _UI_PIXEL_H
-
-#include <stdint.h>
-#include <stdio.h>
-
-/** Supported pixel types */
-typedef enum {
- _PXTYPE_INVALID,
-
- /** "Generic" pixel type (24/32bit RGB) */
- PXTYPE_GENERIC,
-
- /** 8 horizontal mono pixels per byte */
- PXTYPE_MONO_H8,
-
- /** 8 vertical mono pixels per byte */
- PXTYPE_MONO_V8,
-
- /** 12bit RGB444 colors */
- PXTYPE_RGB444,
-
-} pxtype_t;
-
-
-/** Generic pixel type */
-typedef uint32_t px_t;
-
-#define PX_R(p) ((uint8_t)((v) >> 16 & 0xFF))
-#define PX_G(p) ((uint8_t)((v) >> 8 & 0xFF))
-#define PX_B(p) ((uint8_t)((v) >> 0 / 0xFF))
-
-#define PX_RGB(r,g,b) ((px_t)((r)<<16|(g)<<8|(b)))
-
-#define PX_BLACK ((px_t)0x000000)
-#define PX_RED ((px_t)0xFF0000)
-#define PX_GREEN ((px_t)0x00FF00)
-#define PX_BLUE ((px_t)0x0000FF)
-#define PX_WHITE ((px_t)0xFFFFFF)
-
-
-/* Mono types */
-typedef uint8_t px_mono_t;
-
-#define PX_MONO_BLACK ((px_mono_t)0)
-#define PX_MONO_WHITE ((px_mono_t)1)
-
-inline px_t
-px_from_mono(uint8_t v) {
- return v ? PX_WHITE : PX_BLACK;
-}
-
-inline uint8_t
-px_to_mono(px_t v) {
- uint16_t a = (PX_R(v) + PX_G(v) + PX_B(v)) / 3;
- return (a >= 0x7f) ? 1 : 0;
-}
-
-/* RGB444 */
-typedef uint16_t px_rgb444_t;
-
-#define PX_RGB444_R(p) ((p) >> 8 & 0xf)
-#define PX_RGB444_G(p) ((p) >> 4 & 0xf)
-#define PX_RGB444_B(p) ((p) >> 0 & 0xf)
-
-#define PX_RGB444_RGB(r,g,b) ((px_rgb444_t)((r)<<8|(g)<<4|(b)))
-
-inline px_t
-px_from_rgb444(px_rgb444_t v) {
- return
- PX_RGB444_R(v) << 16 | PX_RGB444_R(v) << 20
- | PX_RGB444_G(v) << 8 | PX_RGB444_G(v) << 12
- | PX_RGB444_B(v) << 0 | PX_RGB444_B(v) << 4;
-}
-
-inline uint16_t
-px_to_rgb444(px_t v) {
- uint8_t r = (v >> 20) & 0xF;
- uint8_t g = (v >> 12) & 0xF;
- uint8_t b = (v >> 4) & 0xF;
-
- uint16_t res = (r<< 8) | (g << 4) | (b << 0);
-
- return res;
-}
-
-
-/** Size in pixels */
-typedef uint16_t pxsize_t;
-
-/** Offset in pixels */
-typedef int16_t pxoff_t;
-
-/** 2D position in pixels */
-typedef struct {
- pxoff_t x;
- pxoff_t y;
-} pxposn_t;
-
-/** 2D dimensions in pixels */
-typedef struct {
- pxsize_t w;
- pxsize_t h;
-} pxdims_t;
-
-/** 2D rectangle in pixels */
-typedef struct {
- pxposn_t p;
- pxdims_t d;
-} pxrect_t;
-
-#endif
diff --git a/Src/osmoconbb/src/target/ui-experiment/png2tiny.c b/Src/osmoconbb/src/target/ui-experiment/png2tiny.c
deleted file mode 100644
index d314b9a..0000000
--- a/Src/osmoconbb/src/target/ui-experiment/png2tiny.c
+++ /dev/null
@@ -1,51 +0,0 @@
-
-#include <stdlib.h>
-
-#include <SDL_image.h>
-
-enum {
- FORMAT_NONE,
- FORMAT_C
-};
-
-void
-version(const char *name) {
- puts(name);
- //printf("%s rev %s\n", name, REVISION);
- exit(2);
-}
-
-void
-usage(const char *name) {
- printf("Usage: %s [-hv] [-f outfmt] [-s outsym] <infile> <outfile>\n");
- exit(2);
-}
-
-int
-main(int argc, char **argv) {
- int opt, outfmt;
- const char *outsym = NULL;
- SDL_Surface *img;
-
- while((opt = getopt(argc, argv, "f:s:hv")) != -1) {
- switch(opt) {
- case 'f':
- if(!strcmp(optarg, "c")) {
- outfmt = FORMAT_C;
- }
- break;
- case 's':
- outsym = optarg;
- break;
- case 'v':
- version(argv[0]);
- break;
- case 'h':
- default:
- usage(argv[0]);
- break;
- }
- }
-
- return 0;
-}
diff --git a/Src/osmoconbb/src/target/ui-experiment/screen.h b/Src/osmoconbb/src/target/ui-experiment/screen.h
deleted file mode 100644
index 1174d9e..0000000
--- a/Src/osmoconbb/src/target/ui-experiment/screen.h
+++ /dev/null
@@ -1,21 +0,0 @@
-
-/**
- * Screens - full-screen dialogs
- *
- * These compose the first level of interaction in the UI.
- *
- * There is always exactly one active screen, which is in
- * control of the entire display on which it is displayed.
- *
- * Screen activations are stacked, providing interaction depth.
- *
- */
-struct screen {
- const char *name;
- void (*on_enter)(void);
- void (*on_leave)(void);
- void (*on_render)(void);
- void (*on_key_press)(void);
- void (*on_key_release)(void);
-};
-
diff --git a/Src/osmoconbb/src/target/ui-experiment/sdl.c b/Src/osmoconbb/src/target/ui-experiment/sdl.c
deleted file mode 100644
index e6daac7..0000000
--- a/Src/osmoconbb/src/target/ui-experiment/sdl.c
+++ /dev/null
@@ -1,250 +0,0 @@
-
-#include <ui/display.h>
-#include <ui/image.h>
-#include <ui/sdl.h>
-
-#include <stdio.h>
-
-#include <SDL.h>
-
-#define SDL_PRIV(d) ((struct sdl_display*)(d)->priv)
-
-#define REFRESH_INTERVAL_MSEC 50
-
-struct sdl_display {
- SDL_Surface *display;
- SDL_TimerID refresh;
- unsigned width;
- unsigned height;
- unsigned scale;
-};
-
-static Uint32 sdl_redraw_callback(Uint32 interval, void *param) {
- struct display *display = (struct display*)param;
-
- display->draw(display);
-
- return interval;
-}
-
-void
-sdl_init(struct display *display,
- unsigned width, unsigned height, unsigned scale)
-{
- if(SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER)) {
- printf("Failed to initialize SDL: %s\n", SDL_GetError());
- exit(1);
- }
-
- atexit(&SDL_Quit);
-
- struct sdl_display *priv = SDL_PRIV(display);
-
- priv->width = width;
- priv->height = height;
- priv->scale = scale;
-
- priv->display = SDL_SetVideoMode(width * scale, height * scale, 32, 0);
- if(!priv->display) {
- printf("Failed to set SDL video mode: %s\n", SDL_GetError());
- exit(1);
- }
-
- priv->refresh = SDL_AddTimer(REFRESH_INTERVAL_MSEC,
- &sdl_redraw_callback, display);
- if(!priv->refresh) {
- printf("Failed to add refresh timer: %s\n", SDL_GetError());
- exit(1);
- }
-}
-
-void
-sdl_draw(struct display *display)
-{
- struct sdl_display *priv = SDL_PRIV(display);
-
- struct image *img = display->fbuf;
-
- SDL_Rect r;
-
- r.w = priv->scale;
- r.h = priv->scale;
-
- if(img->type == PXTYPE_RGB444) {
- unsigned stride = img->size.w * 2;
-
- unsigned x, y;
- for(y = 0; y < img->size.h; y++) {
- for(x = 0; x < img->size.w; x++) {
- px_t color = image_get_pixel(img, x, y);
-
- r.x = x * priv->scale;
- r.y = y * priv->scale;
-
- SDL_FillRect(priv->display, &r, color);
- }
- }
- } else {
- puts("Unsupported framebuffer type for SDL emulator.");
- exit(1);
- }
-
- SDL_UpdateRect(priv->display, 0, 0, 0, 0);
-}
-
-
-static struct sdl_display display_sdl_priv;
-
-uint8_t sdl_fbuf[96*64*2];
-
-struct image display_sdl_fbuf = {
- .type = PXTYPE_RGB444,
- .size = {96, 64},
- .data = &sdl_fbuf
-};
-
-struct display display_sdl = {
- .name = "Main Display",
- .fbuf = &display_sdl_fbuf,
- .priv = &display_sdl_priv,
- .draw = &sdl_draw
-};
-
-uint16_t fnord_buf[] = {
- 0x0F00,
- 0x00F0,
- 0x000F,
- 0x00FF,
- 0x0F00,
- 0x00F0,
- 0x000F,
- 0x00FF,
- 0x0F00,
- 0x00F0,
- 0x000F,
- 0x00FF,
- 0x0F00,
- 0x00F0,
- 0x000F,
- 0x00FF,
- 0x0F00,
- 0x00F0,
- 0x000F,
- 0x00FF,
- 0x0F00,
- 0x00F0,
- 0x000F,
- 0x00FF,
- 0x0F00,
- 0x00F0,
- 0x000F,
- 0x00FF,
- 0x0F00,
- 0x00F0,
- 0x000F,
- 0x00FF
-
-};
-
-struct image fnord = {
- .type = PXTYPE_RGB444,
- .size = {8,4},
- .data = &fnord_buf
-};
-
-uint8_t fubar_img[] = {
- 0x01, 0x02, 0x03, 0x04,
- 0x05, 0x06, 0x07, 0x08,
- 0x09, 0x0a, 0x0b, 0x0c,
- 0x0d, 0x0e, 0x0f, 0x0f
-
-};
-
-struct image fubar = {
- .type = PXTYPE_MONO_V8,
- .size = {8,16},
- .data = &fubar_img
-};
-
-void
-sdl_run(void)
-{
- int r;
- SDL_Event e;
-
- while((r = SDL_WaitEvent(&e))) {
-
- if(e.type == SDL_KEYDOWN) {
- if(e.key.keysym.sym == SDLK_ESCAPE) {
- puts("Bloody quitter!");
- break;
- }
- if(e.key.keysym.sym == SDLK_SPACE) {
- pxposn_t dp = {0,0};
- pxposn_t sp = {0,0};
- pxdims_t d = {8,4};
-
- image_blit(&display_sdl_fbuf, dp,
- &fnord, sp,
- d);
-
- sp.x = 0;
- sp.y = 0;
- dp.x = 5;
- dp.y = 10;
- d.w = 8;
- d.h = 16;
-
- image_blit(&display_sdl_fbuf, dp,
- &fubar, sp,
- d);
-
- pxrect_t r = {{12,0},{40,20}};
- image_fill_rect(&display_sdl_fbuf,
- r,
- 0xFF00FF);
-
-
-#if 0
- dp.x = 0;
- dp.y = 0;
-
- image_draw_string(&display_sdl_fbuf, dp,
- "ABCDEFGHI");
-
- dp.y += 10;
-
- image_draw_string(&display_sdl_fbuf, dp,
- "abcdefghi");
-
-#endif
-
- sdl_draw(&display_sdl);
-
- }
- }
-
- switch(e.type) {
- case SDL_KEYDOWN:
- case SDL_KEYUP:
- printf("Key %d %d\n", e.key.keysym.sym, e.key.state);
- break;
- }
- }
-
- if(!r) {
- printf("Failed to wait for SDL event: %s\n", SDL_GetError());
- exit(1);
- }
-
-}
-
-int
-main(void)
-{
- sdl_init(&display_sdl, 96, 64, 4);
-
- sdl_run();
-
- return 0;
-}
diff --git a/Src/osmoconbb/src/target/ui-experiment/sdl.h b/Src/osmoconbb/src/target/ui-experiment/sdl.h
deleted file mode 100644
index 5a3d475..0000000
--- a/Src/osmoconbb/src/target/ui-experiment/sdl.h
+++ /dev/null
@@ -1,9 +0,0 @@
-
-#ifndef _UI_SDL_H
-#define _UI_SDL_H
-
-#include <ui/display.h>
-
-extern struct display display_sdl;
-
-#endif
diff --git a/Src/osmoconbb/src/target/ui-experiment/ui.h b/Src/osmoconbb/src/target/ui-experiment/ui.h
deleted file mode 100644
index 9bc7c32..0000000
--- a/Src/osmoconbb/src/target/ui-experiment/ui.h
+++ /dev/null
@@ -1,81 +0,0 @@
-
-/****** MESSAGING MENU ******/
-
-struct menu menu_message_compose = {
- .title = "Compose",
- .help = "Write a new text message."
-};
-
-struct menu menu_message_inbox = {
- .title = "Inbox",
- .help = "Incoming text messages"
-};
-
-struct menu menu_message_outbox = {
- .title = "Outbox",
- .help = "Outgoing text messages"
-};
-
-struct menu menu_message_sent = {
- .title = "Sent",
- .help = "Previously sent text messages"
-};
-
-struct menu menu_messages = {
- .title = "Messages",
- .help = "Short message service options",
- .children = {
- [0] = &menu_message_compose,
- [1] = &menu_message_inbox,
- [2] = &menu_message_outbox,
- [3] = &menu_message_sent
- }
-};
-
-/****** NETWORK MENU ******/
-
-struct menu menu_network_about = {
- .title = "About this network",
- .help = "Information about your current network",
-};
-
-struct menu menu_network = {
- .title = "Network",
- .help = "Network interaction options",
- .children = {
- }
-};
-
-/****** SETTINGS MENU ******/
-
-struct menu menu_settings = {
- .title = "Settings",
- .help = "Configure your phone",
- .children = {
- }
-};
-
-/****** MAIN MENU ******/
-
-struct menu menu_about = {
- .title = "About",
- .help = "Information about this phone",
-};
-
-struct menu menu_main = {
- .title = "Main Menu",
- .children = {
- [0] = &menu_messages,
- [7] = &menu_network,
- [8] = &menu_settings,
- [9] = &menu_about,
- },
-};
-
-
-
-int
-main(void) {
- &menu_main;
- return 0;
-};
diff --git a/Src/osmoconbb/src/target_dsp/.gitignore b/Src/osmoconbb/src/target_dsp/.gitignore
deleted file mode 100644
index 5cf144e..0000000
--- a/Src/osmoconbb/src/target_dsp/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-*.o
-*.a
-*.coff
-*.bin
diff --git a/Src/osmoconbb/src/target_dsp/calypso/Makefile b/Src/osmoconbb/src/target_dsp/calypso/Makefile
deleted file mode 100644
index 40ee4ec..0000000
--- a/Src/osmoconbb/src/target_dsp/calypso/Makefile
+++ /dev/null
@@ -1,15 +0,0 @@
-all: dsp_dump.bin
-
-CROSS=tic54x-coff-
-
-%.o: %.S
- $(CROSS)as $< -o $@
-
-%.bin: %.coff
- $(CROSS)objcopy -j .text -O binary $< $@
-
-dsp_dump.coff: bl_stage3.o dsp_dump.lds
- $(CROSS)ld --script dsp_dump.lds bl_stage3.o -o $@
-
-clean:
- rm -f *.o *.bin *.coff
diff --git a/Src/osmoconbb/src/target_dsp/calypso/bin2cfile.py b/Src/osmoconbb/src/target_dsp/calypso/bin2cfile.py
deleted file mode 100755
index 9456a6a..0000000
--- a/Src/osmoconbb/src/target_dsp/calypso/bin2cfile.py
+++ /dev/null
@@ -1,57 +0,0 @@
-#!/usr/bin/env python
-
-import struct
-import sys
-
-def group_by_n(s, n, do_join=True):
- return ( ''.join(x) for x in zip(*[s[i::n] for i in range(n)]) )
-
-
-def main(pn, filename):
- # Get all bytes
- f = open(filename, 'r')
- d = f.read()
- f.close()
-
- # Get the data
- ops = ''.join([
- '0x%04x,%s' % (
- struct.unpack('=H', x)[0],
- '\n\t\t\t' if (i&3==3) else ' '
- )
- for i, x
- in enumerate(group_by_n(d, 2))
- ])[:-1]
-
- ops = '\t\t\t' + ops
- if ops[-1] == '\t':
- ops = ops[:-4]
-
- # Name
- name = filename.split('.',1)[0]
-
- # Header / footer
- print """
-#define _SA_DECL (const uint16_t *)&(const uint16_t [])
-
-static const struct dsp_section %s[] = {
- {
- .addr = 0x,
- .size = 0x%04x,
- .data = _SA_DECL {
-%s
- },
- },
- { /* Guard */
- .addr = 0,
- .size = 0,
- .data = NULL,
- },
-};
-
-#undef _SA_DECL
-""" % (name, len(d)/2, ops)
-
-
-if __name__ == "__main__":
- main(*sys.argv)
diff --git a/Src/osmoconbb/src/target_dsp/calypso/bl_stage3.S b/Src/osmoconbb/src/target_dsp/calypso/bl_stage3.S
deleted file mode 100644
index 402c3c5..0000000
--- a/Src/osmoconbb/src/target_dsp/calypso/bl_stage3.S
+++ /dev/null
@@ -1,142 +0,0 @@
-
-BCSR .equ 0x29
-
-CMD_IDLE .equ 1 ; Do nothing / DSP ready for commands
-CMD_COPY_BLOCK .equ 2 ; (if size == 0, then exec)
-CMD_COPY_MODE .equ 4 ; Select copy mode
- ; (0=code write, 1=data write,
- ; 2=code read, 3=data read,
- ; 4=prom read, 5=drom read)
-CMD_VERSION .equ 0xffff ; API_RAM[0] = bootloader version
-
-VERSION .equ 0x0100 ; 1.00
-
-
- .section .apiram
-
- .org 0x07fc
-bl_addr_hi .ds 1
-bl_size .ds 1
-bl_addr_lo .ds 1
-bl_status .ds 1
-
-
- .text
- .mmregs
-_start:
- orm #2, *(BCSR) ; ?
-
- ld #0x1f, DP
- stm #0x1100, SP
- stm #0, AR4
-_done:
- stm #_api_ram, AR2
- st #CMD_IDLE, @bl_status
-_loop:
- ; Version
- cmpm @bl_status, #CMD_VERSION
- bc 1f, ntc
-
- bd _done
- st #VERSION, *AR2
-1:
-
- ; Select copy mode
- cmpm @bl_status, #CMD_COPY_MODE
- bc 1f, ntc
-
- bd _done
- mvdm @_api_ram, AR4
-1:
-
- ; Copy
- cmpm @bl_status, #CMD_COPY_BLOCK
- bc _loop, ntc
-
- ; Capture values for copy operations
- ; A = full address
- ; AR1 size-1
- ; AR2 api_ram (set previously)
- ; AR3 data/code address
- ; AR4 mode
-
- ldu @bl_addr_lo, A
- stlm A, AR3
- add @bl_addr_hi, 16, A
-
- ldu @bl_size, B
- stlm B, AR1
- ; mar *AR1- ; We do this in a delay slot later on ...
-
- ; Start
- bc 1f, bneq ; B still contains size
- bacc A
-
-1:
- ; Select
- stm #AR4, AR5 ; AR5 = &AR4
- bit *AR5, 13 ; Test mode(2)
- bcd _read_rom, tc
- mar *AR1-
- bit *AR5, 15 ; Test mode(0) lsb
- bcd _copy_data, tc
- bit *AR5, 14 ; Test mode(1)
- nop
-
- ; Copy to/from Program space
-_copy_prog:
- bc _read_prog, tc
-
- ; Copy from API -> prog space (mode 0)
-_write_prog:
- rpt *(AR1)
- writa *AR2+
- b _done
-
- ; Copy from prog space -> API (mode 2)
-_read_prog:
- rpt *(AR1)
- reada *AR2+
- b _done
-
- ; Copy to/from Data space
-_copy_data:
- bc _read_data, tc
-
- ; Copy from API -> data space (mode 1)
-_write_data:
- rpt *(AR1)
- mvdd *AR2+, *AR3+
- b _done
-
- ; Copy from data space -> API (mode 3)
-_read_data:
- rpt *(AR1)
- mvdd *AR3+, *AR2+
- b _done
-
- ; Read from {D,P}ROM bypassing protection
-_read_rom:
- ldm AR1, B ; Can't put those two ops in the delay slot of
- stlm B, BRC ; 'bc' because of unprotected pipeline conflicts
- bc _read_rom_data, tc
-
-_read_rom_prog:
- rptb 1f - 1
- call prom_read_xplt
-1:
- b _done
-
-_read_rom_data:
- rptb 1f - 1
- call drom_read_xplt
-1:
- b _done
-
-
-drom_read_xplt .equ 0xe4b8
-prom_read_xplt .equ 0x7213
-
-
- .end
-
diff --git a/Src/osmoconbb/src/target_dsp/calypso/dsp_dump.lds b/Src/osmoconbb/src/target_dsp/calypso/dsp_dump.lds
deleted file mode 100644
index 5663302..0000000
--- a/Src/osmoconbb/src/target_dsp/calypso/dsp_dump.lds
+++ /dev/null
@@ -1,22 +0,0 @@
-OUTPUT_FORMAT("coff1-c54x")
-OUTPUT_ARCH("")
-MEMORY
-{
- apiram (RWXI) : ORIGIN = 0x0800, LENGTH = 0x2000
-}
-SECTIONS
-{
- . = 0x0800;
-
- .apiram :
- {
- PROVIDE(_api_ram = .);
- *(.apiram)
- } > apiram
-
- .text :
- {
- *(.text)
- } > apiram
-}
-
diff --git a/Src/osmoconbb/src/target_dsp/calypso/dump2coff.py b/Src/osmoconbb/src/target_dsp/calypso/dump2coff.py
deleted file mode 100755
index 67a49e8..0000000
--- a/Src/osmoconbb/src/target_dsp/calypso/dump2coff.py
+++ /dev/null
@@ -1,261 +0,0 @@
-#!/usr/bin/env python
-
-from collections import namedtuple
-import re
-import sys
-import struct
-
-DATA = 0
-DATA = 1
-
-
-class Section(object):
-
- DATA = 0
- CODE = 1
-
- STYP_NOLOAD = 0x0002
- STYP_TEXT = 0x0020
- STYP_DATA = 0x0040
- STYP_BSS = 0x0080
-
- def __init__(self, name, type, start, size, data=None):
- self.name = name
- self.type = type
- self.start = start
- self.size = size
- self.data = data
-
- @property
- def flags(self):
- if self.type == Section.DATA:
- return Section.STYP_DATA if self.data else Section.STYP_BSS
- else:
- return Section.STYP_TEXT if self.data else Section.STYP_NOLOAD
-
-
-class CalypsoCOFF(object):
-
- F_RELFLG = 0x0001 # Relocation information stripped from the file
- F_EXEC = 0x0002 # File is executable (i.e., no unresolved external references)
- F_LNNO = 0x0004 # Line numbers stripped from the file
- F_LSYMS = 0x0010 # Local symbols stripped from the file
- F_LITTLE = 0x0100 # Little endian
-
- def __init__(self, data_seg_base=0x80000000):
- self.sections = {}
- self.data_seg_base = data_seg_base
- self.ver_magic = 0x00c1
- self.tgt_magic = 0x0098
- self.flags = \
- CalypsoCOFF.F_RELFLG | \
- CalypsoCOFF.F_EXEC | \
- CalypsoCOFF.F_LNNO | \
- CalypsoCOFF.F_LSYMS | \
- CalypsoCOFF.F_LITTLE
-
- def _data_pack(self, d):
- return ''.join(struct.pack('<H', x) for x in d)
-
- def save(self, filename):
- # Formats
- HDR_FILE = '<HHlllHHH'
- HDR_SECTIONS = '<8sLLllllHHHcc'
-
- # Optional header
- oh = ''
-
- # File header
- fh = struct.pack(HDR_FILE,
- self.ver_magic, # unsigned short f_ver_magic; /* version magic number */
- len(self.sections), # unsigned short f_nscns; /* number of section */
- 0, # long f_timdat; /* time and date stamp */
- 0, # long f_symptr; /* file ptr to symbol table */
- 0, # long f_nsyms; /* number entries in the sym table */
- len(oh), # unsigned short f_opthdr; /* size of optional header */
- self.flags, # unsigned short f_flags; /* flags */
- self.tgt_magic, # unsigned short f_tgt_magic; /* target magic number */
- )
-
- # File header size + #sections * sizeof(section header)
- dptr = struct.calcsize(HDR_FILE) + len(oh) + len(self.sections) * struct.calcsize(HDR_SECTIONS)
-
- # Section headers
- sh = []
- sd = []
-
- sk = lambda x: self.data_seg_base + x.start if x.type==Section.DATA else x.start
-
- for s in sorted(self.sections.values(), key=sk):
- # Values
- if s.type == Section.DATA:
- mp = 0x80
- sa = s.start
- else:
- mp = 0
- sa = s.start
- sptr = dptr if s.data else 0
-
- # Header
- sh.append(struct.pack(HDR_SECTIONS,
- s.name, # char[8] s_name; /* 8-character null padded section name */
- sa, # long int s_paddr; /* Physical address of section */
- sa, # long int s_vaddr; /* Virtual address of section */
- s.size, # long int s_size; /* Section size in bytes */
- sptr, # long int s_scnptr; /* File pointer to raw data */
- 0, # long int s_relptr; /* File pointer to relocation entries */
- 0, # long int s_lnnoptr;/* File pointer to line number entries */
- 0, # unsigned short s_nreloc; /* Number of relocation entrie */
- 0, # unsigned short s_nlnno; /* Number of line number entries */
- s.flags,# unsigned short s_flags; /* Flags (see ``Section header flags'') */
- '\x00', # /
- chr(mp),# char s_mempage;/* Memory page number */
- ))
-
- # Data
- if s.data:
- sd.append(self._data_pack(s.data))
- dptr += s.size * 2
-
- # Write the thing
- f = open(filename, 'wb')
-
- f.write(fh)
- f.write(oh)
- f.write(''.join(sh))
- f.write(''.join(sd))
-
- f.close()
-
- def add_section(self, name, type, addr, size, data=None):
- self.sections[name] = Section(name, type, addr, size, data=data)
-
-
-# ----------------------------------------------------------------------------
-# Dump loading
-# ----------------------------------------------------------------------------
-
-RE_DUMP_HDR = re.compile(
- r"^DSP dump: (\w*) \[([0-9a-fA-F]{5})-([0-9a-fA-F]{5})\]$"
-)
-
-
-def _file_strip_gen(f):
- while True:
- l = f.readline()
- if not l:
- return
- yield l.strip()
-
-
-def dump_load_section(fg, sa, ea):
- data = []
- ca = sa
- for l in fg:
- if not l:
- break
-
- ra = int(l[0:5], 16)
- if ra != ca:
- raise ValueError('Invalid dump address %05x != %05x', ra, ca)
-
- v = l[8:].split()
- if len(v) != 16:
- raise ValueError('Invalid dump format')
-
- v = [int(x,16) for x in v]
- data.extend(v)
-
- ca += 0x10
-
- if ca != ea:
- raise ValueError('Missing dump data %05x != %05x', ra, ea)
-
- return data
-
-
-def dump_load(filename):
- # Open file
- f = open(filename, 'r')
- fg = _file_strip_gen(f)
-
- # Scan line by line for a dump header line
- sections = []
-
- for l in fg:
- m = RE_DUMP_HDR.match(l)
- if not m:
- continue
-
- name = m.group(1)
- sa = int(m.group(2), 16)
- ea = int(m.group(3), 16) + 1
-
- sections.append((
- name, sa, ea,
- dump_load_section(fg, sa, ea),
- ))
-
- # Done
- f.close()
-
- return sections
-
-
-# ----------------------------------------------------------------------------
-# Main
-# ----------------------------------------------------------------------------
-
-def main(pname, dump_filename, out_filename):
-
- # Section to place in the COFF
- sections = [
- # name type start size
- ('.regs', Section.DATA, 0x00000, 0x0060),
- ('.scratch', Section.DATA, 0x00060, 0x0020),
- ('.drom', Section.DATA, 0x09000, 0x5000),
- ('.pdrom', Section.CODE, 0x0e000, 0x2000),
- ('.prom0', Section.CODE, 0x07000, 0x7000),
- ('.prom1', Section.CODE, 0x18000, 0x8000),
- ('.prom2', Section.CODE, 0x28000, 0x8000),
- ('.prom3', Section.CODE, 0x38000, 0x2000),
- ('.daram0', Section.DATA, 0x00080, 0x0780),
- ('.api', Section.DATA, 0x00800, 0x2000),
- ('.daram1', Section.DATA, 0x02800, 0x4800),
- ]
-
- # COFF name -> dump name
- dump_mapping = {
- # '.regs' : 'Registers',
- '.drom' : 'DROM',
- '.pdrom' : 'PDROM',
- '.prom0' : 'PROM0',
- '.prom1' : 'PROM1',
- '.prom2' : 'PROM2',
- '.prom3' : 'PROM3',
- }
-
- # Load the dump
- dump_sections = dict([(s[0], s) for s in dump_load(dump_filename)])
-
- # Create the COFF
- coff = CalypsoCOFF()
-
- # Add each section (with data if we have some)
- for name, type, start, size in sections:
- # Dumped data ?
- d_data = None
- if (name in dump_mapping) and (dump_mapping[name] in dump_sections):
- d_name, d_sa, d_ea, d_data = dump_sections[dump_mapping[name]]
-
- # Add sections
- coff.add_section(name, type, start, size, d_data)
-
- # Save result
- coff.save(out_filename)
-
- return 0
-
-
-if __name__ == '__main__':
- sys.exit(main(*sys.argv))
diff --git a/Src/osmoconbb/src/target_dsp/calypso/ida/README.txt b/Src/osmoconbb/src/target_dsp/calypso/ida/README.txt
deleted file mode 100644
index a793908..0000000
--- a/Src/osmoconbb/src/target_dsp/calypso/ida/README.txt
+++ /dev/null
@@ -1,73 +0,0 @@
-Here's a few steps to get started quickly and get something readable:
-
- - Compile a patched for the IDA TMS320C54 module
-
- I made several enhancement to it to support the calypso better (the tms320c54
- module is part of the SDK and can be modded and recompiled) :
-
- - Add support for memory mappings so that the same memory zone can
- 'appear' at several place in the address space (to handle data & code
- overlay)
- - Fix the section handling when loading a file:
- . to set XPC properly,
- . to not override section name
- . to support more than 2 sections
- - Fix a bug in cross reference detection when dealing with section
- having selectors != 0
- - Add stub support for the type system. This allows loading of a .h
- header file with the NDB structure definition
- - Add definition for the IO ports so that they are symbolically
- displayed
-
- I can't publically distribute the IDA processor module modification
- because even just the patch contains some hex-rays code, so I'll handle
- this on a case by case basis. (just ask me privately and we'll work it out)
-
- - Dump the DSP ROM
-
- Using the compal_dsp_dump.bin, you must create a text dump of the DSP ROM,
- just piping the console output to a text file.
-
- - Generate COFF image
-
- The dump2coff.py script can convert the text dump into a usable COFF file
- containing all the correct sections and addresses.
-
- - Load this COFF image into IDA
-
- In the load dialog make sure :
- - Uncheck the 'Fill segment gaps (COFF)' checkbox
- - Select 'TMS320C54' in 'Change processor'
- - In 'Analysis Options/Processor specific analysis options' :
- - 'Choose device name': CALYPSO
- - 'Data segment address': 0x80000000
- - 'Add mapping' (do it several time)
- - From 0x00000060 -> 0x80000060 size 0x6FA0
- - From 0x00010060 -> 0x80000060 size 0x6FA0
- - From 0x00020060 -> 0x80000060 size 0x6FA0
- - From 0x00030060 -> 0x80000060 size 0x6FA0
- - From 0x8000E000 -> 0x0000E000 size 0x2000
-
- - Set 'stub' compiler options to allow the type system to load .h files
-
- In 'Options/Compiler':
- - Compiler: 'GNU C++'
- - Calling convention: 'Cdecl'
- - Memory model: 'Code Near, Data Near'
- - Pointer size: 'Near 16bit, Far 32bit'
- - Include directory: '/usr/include' (or a directory with your includes
- ... needs to exist)
-
- - Load the NDB types
-
- - Load the ndb.h file
- - In the local types view, import all structure / enum into the database
- - Then declare the following symbol and set them as struct type
- appropriately.
-
- 0x80000800 api_w_page_0 db_mcu_to_dsp
- 0x80000814 api_w_page_1 db_mcu_to_dsp
- 0x80000828 api_r_page_0 db_dsp_to_mcu
- 0x8000083c api_r_page_1 db_dsp_to_mcu
- 0x800008d4 ndb ndb_mcu_dsp
-
diff --git a/Src/osmoconbb/src/target_dsp/calypso/ida/ndb.h b/Src/osmoconbb/src/target_dsp/calypso/ida/ndb.h
deleted file mode 100644
index ad9c105..0000000
--- a/Src/osmoconbb/src/target_dsp/calypso/ida/ndb.h
+++ /dev/null
@@ -1,294 +0,0 @@
-typedef unsigned char API;
-typedef signed char API_SIGNED;
-
-struct db_mcu_to_dsp
-{
- API d_task_d;
- API d_burst_d;
- API d_task_u;
- API d_burst_u;
- API d_task_md;
- API d_background;
- API d_debug;
- API d_task_ra;
- API d_fn;
- API d_ctrl_tch;
- API hole;
- API d_ctrl_abb;
- API a_a5fn[2];
- API d_power_ctl;
- API d_afc;
- API d_ctrl_system;
-};
-
-struct db_dsp_to_mcu
-{
- API d_task_d;
- API d_burst_d;
- API d_task_u;
- API d_burst_u;
- API d_task_md;
- API d_background;
- API d_debug;
- API d_task_ra;
- API a_serv_demod[4];
- API a_pm[3];
- API a_sch[5];
-};
-
-struct param_mcu_dsp
-{
- API_SIGNED d_transfer_rate;
- API_SIGNED d_lat_mcu_bridge;
- API_SIGNED d_lat_mcu_hom2sam;
- API_SIGNED d_lat_mcu_bef_fast_access;
- API_SIGNED d_lat_dsp_after_sam;
- API_SIGNED d_gprs_install_address;
- API_SIGNED d_misc_config;
- API_SIGNED d_cn_sw_workaround;
- API_SIGNED d_hole2_param[4];
- API_SIGNED d_fb_margin_beg;
- API_SIGNED d_fb_margin_end;
- API_SIGNED d_nsubb_idle;
- API_SIGNED d_nsubb_dedic;
- API_SIGNED d_fb_thr_det_iacq;
- API_SIGNED d_fb_thr_det_track;
- API_SIGNED d_dc_off_thres;
- API_SIGNED d_dummy_thres;
- API_SIGNED d_dem_pond_gewl;
- API_SIGNED d_dem_pond_red;
- API_SIGNED d_maccthresh1;
- API_SIGNED d_mldt;
- API_SIGNED d_maccthresh;
- API_SIGNED d_gu;
- API_SIGNED d_go;
- API_SIGNED d_attmax;
- API_SIGNED d_sm;
- API_SIGNED d_b;
- API_SIGNED d_v42b_switch_hyst;
- API_SIGNED d_v42b_switch_min;
- API_SIGNED d_v42b_switch_max;
- API_SIGNED d_v42b_reset_delay;
- API_SIGNED d_ldT_hr;
- API_SIGNED d_maccthresh_hr;
- API_SIGNED d_maccthresh1_hr;
- API_SIGNED d_gu_hr;
- API_SIGNED d_go_hr;
- API_SIGNED d_b_hr;
- API_SIGNED d_sm_hr;
- API_SIGNED d_attmax_hr;
- API_SIGNED c_mldt_efr;
- API_SIGNED c_maccthresh_efr;
- API_SIGNED c_maccthresh1_efr;
- API_SIGNED c_gu_efr;
- API_SIGNED c_go_efr;
- API_SIGNED c_b_efr;
- API_SIGNED c_sm_efr;
- API_SIGNED c_attmax_efr;
- API_SIGNED d_sd_min_thr_tchfs;
- API_SIGNED d_ma_min_thr_tchfs;
- API_SIGNED d_md_max_thr_tchfs;
- API_SIGNED d_md1_max_thr_tchfs;
- API_SIGNED d_sd_min_thr_tchhs;
- API_SIGNED d_ma_min_thr_tchhs;
- API_SIGNED d_sd_av_thr_tchhs;
- API_SIGNED d_md_max_thr_tchhs;
- API_SIGNED d_md1_max_thr_tchhs;
- API_SIGNED d_sd_min_thr_tchefs;
- API_SIGNED d_ma_min_thr_tchefs;
- API_SIGNED d_md_max_thr_tchefs;
- API_SIGNED d_md1_max_thr_tchefs;
- API_SIGNED d_wed_fil_ini;
- API_SIGNED d_wed_fil_tc;
- API_SIGNED d_x_min;
- API_SIGNED d_x_max;
- API_SIGNED d_slope;
- API_SIGNED d_y_min;
- API_SIGNED d_y_max;
- API_SIGNED d_wed_diff_threshold;
- API_SIGNED d_mabfi_min_thr_tchhs;
- API_SIGNED d_facch_thr;
- API_SIGNED d_max_ovsp_ul;
- API_SIGNED d_sync_thres;
- API_SIGNED d_idle_thres;
- API_SIGNED d_m1_thres;
- API_SIGNED d_max_ovsp_dl;
- API_SIGNED d_gsm_bgd_mgt;
- API a_fir_holes[4];
- API a_fir31_uplink[31];
- API a_fir31_downlink[31];
-};
-
-struct ndb_mcu_dsp
-{
- API d_dsp_page;
- API d_error_status;
- API d_spcx_rif;
- API d_tch_mode;
- API d_debug1;
- API d_dsp_test;
- API d_version_number1;
- API d_version_number2;
- API d_debug_ptr;
- API d_debug_bk;
- API d_pll_config;
- API p_debug_buffer;
- API d_debug_buffer_size;
- API d_debug_trace_type;
- API d_dsp_state;
- API d_hole1_ndb[2];
- API d_hole_debug_amr;
- API d_hole2_ndb[1];
- API d_mcsi_select;
- API d_apcdel1_bis;
- API d_apcdel2_bis;
- API d_apcdel2;
- API d_vbctrl2;
- API d_bulgcal;
- API d_afcctladd;
- API d_vbuctrl;
- API d_vbdctrl;
- API d_apcdel1;
- API d_apcoff;
- API d_bulioff;
- API d_bulqoff;
- API d_dai_onoff;
- API d_auxdac;
- API d_vbctrl1;
- API d_bbctrl;
- API d_fb_det;
- API d_fb_mode;
- API a_sync_demod[4];
- API a_sch26[5];
- API d_audio_gain_ul;
- API d_audio_gain_dl;
- API d_audio_compressor_ctrl;
- API d_audio_init;
- API d_audio_status;
- API d_toneskb_init;
- API d_toneskb_status;
- API d_k_x1_t0;
- API d_k_x1_t1;
- API d_k_x1_t2;
- API d_pe_rep;
- API d_pe_off;
- API d_se_off;
- API d_bu_off;
- API d_t0_on;
- API d_t0_off;
- API d_t1_on;
- API d_t1_off;
- API d_t2_on;
- API d_t2_off;
- API d_k_x1_kt0;
- API d_k_x1_kt1;
- API d_dur_kb;
- API d_shiftdl;
- API d_shiftul;
- API d_aec_ctrl;
- API d_es_level_api;
- API d_mu_api;
- API d_melo_osc_used;
- API d_melo_osc_active;
- API a_melo_note0[4];
- API a_melo_note1[4];
- API a_melo_note2[4];
- API a_melo_note3[4];
- API a_melo_note4[4];
- API a_melo_note5[4];
- API a_melo_note6[4];
- API a_melo_note7[4];
- API d_melody_selection;
- API a_melo_holes[3];
- API d_sr_status;
- API d_sr_param;
- API d_sr_bit_exact_test;
- API d_sr_nb_words;
- API d_sr_db_level;
- API d_sr_db_noise;
- API d_sr_mod_size;
- API a_n_best_words[4];
- API a_n_best_score[8];
- API a_dd_1[22];
- API a_du_1[22];
- API d_v42b_nego0;
- API d_v42b_nego1;
- API d_v42b_control;
- API d_v42b_ratio_ind;
- API d_mcu_control;
- API d_mcu_control_sema;
- API d_background_enable;
- API d_background_abort;
- API d_background_state;
- API d_max_background;
- API a_background_tasks[16];
- API a_back_task_io[16];
- API d_gea_mode_ovly;
- API a_gea_kc_ovly[4];
- API d_hole3_ndb[7];
- API d_thr_usf_detect;
- API d_a5mode;
- API d_sched_mode_gprs_ovly;
- API d_hole4_ndb[5];
- API a_ramp[16];
- API a_cd[15];
- API a_fd[15];
- API a_dd_0[22];
- API a_cu[15];
- API a_fu[15];
- API a_du_0[22];
- API d_rach;
- API a_kc[4];
- API d_ra_conf;
- API d_ra_act;
- API d_ra_test;
- API d_ra_statu;
- API d_ra_statd;
- API d_fax;
- API a_data_buf_ul[21];
- API a_data_buf_dl[37];
- API a_tty_holes[8];
- API a_sr_holes0[414];
- API a_new_aec_holes[12];
- // API a_sr_holes1[145];
- struct param_mcu_dsp params;
- API d_cport_init;
- API d_cport_ctrl;
- API a_cport_cfr[2];
- API d_cport_tcl_tadt;
- API d_cport_tdat;
- API d_cport_tvs;
- API d_cport_status;
- API d_cport_reg_value;
- API a_cport_holes[1011];
- API a_model[1041];
- API a_eotd_holes[22];
- API a_amr_config[4];
- API a_ratscch_ul[6];
- API a_ratscch_dl[6];
- API d_amr_snr_est;
- API a_voice_memo_amr_holes[1];
- API d_thr_onset_afs;
- API d_thr_sid_first_afs;
- API d_thr_ratscch_afs;
- API d_thr_update_afs;
- API d_thr_onset_ahs;
- API d_thr_sid_ahs;
- API d_thr_ratscch_marker;
- API d_thr_sp_dgr;
- API d_thr_soft_bits;
- API d_holes[61];
-};
-
-enum dsp_error {
- DSP_ERR_RHEA = 0x0001,
- DSP_ERR_IQ_SAMPLES = 0x0004,
- DSP_ERR_DMA_PROG = 0x0008,
- DSP_ERR_DMA_TASK = 0x0010,
- DSP_ERR_DMA_PEND = 0x0020,
- DSP_ERR_VM = 0x0080,
- DSP_ERR_DMA_UL_TASK = 0x0100,
- DSP_ERR_DMA_UL_PROG = 0x0200,
- DSP_ERR_DMA_UL_PEND = 0x0400,
- DSP_ERR_STACK_OV = 0x0800,
-};
diff --git a/Src/osmoconbb/src/target_dsp/calypso/ida/tms320c54.cfg b/Src/osmoconbb/src/target_dsp/calypso/ida/tms320c54.cfg
deleted file mode 100644
index 7962bee..0000000
--- a/Src/osmoconbb/src/target_dsp/calypso/ida/tms320c54.cfg
+++ /dev/null
@@ -1,136 +0,0 @@
-; Append this to the tms320c54.cfg shipped with IDA
-
-.CALYPSO
-
-; entry _reset 0xff80 Reset vector
-
-; RIF
-RIF_DXR 0x0000
-RIF_DRR 0x0001
-RIF_SPCX 0x0002
-RIF_SPCR 0x0003
-
-; CYPHER
-CYPHER_CNTL 0x2800
-CYPHER_CNTL.START 0
-CYPHER_CNTL.RESETSW 1
-CYPHER_CNTL.MODE0 2
-CYPHER_CNTL.MODE1 3
-CYPHER_CNTL.CLK_EN 4
-CYPHER_CNTL.CYPHER_ONLY 5
-
-CYPHER_STATUS_IRQ 0x2801
-CYPHER_STATUS_IRQ.LT_FIN 0
-
-CYPHER_STATUS_WORK 0x2802
-CYPHER_STATUS_WORK.WORKING 0
-
-CYPHER_KC_1 0x2803
-CYPHER_KC_2 0x2804
-CYPHER_KC_3 0x2805
-CYPHER_KC_4 0x2806
-CYPHER_COUNT_1 0x2807
-CYPHER_COUNT_2 0x2808
-CYPHER_DECI_1 0x2809
-CYPHER_DECI_2 0x280A
-CYPHER_DECI_3 0x280B
-CYPHER_DECI_4 0x280C
-CYPHER_DECI_5 0x280D
-CYPHER_DECI_6 0x280E
-CYPHER_DECI_7 0x280F
-CYPHER_DECI_8 0x2810
-CYPHER_ENCI_1 0x2811
-CYPHER_ENCI_2 0x2812
-CYPHER_ENCI_3 0x2813
-CYPHER_ENCI_4 0x2814
-CYPHER_ENCI_5 0x2815
-CYPHER_ENCI_6 0x2816
-CYPHER_ENCI_7 0x2817
-CYPHER_ENCI_8 0x2818
-
-; MCSI
-MCSI_CONTROL 0x0800
-MCSI_MAIN-PARAMETERS 0x0801
-MCSI_INTERRUPTS 0x0802
-MCSI_CHANNEL-USED 0x0803
-MCSI_OVER-CLK 0x0804
-MCSI_CLK-FREQ 0x0805
-MCSI_STATUS 0x0806
-MCSI_TX0 0x0820
-MCSI_TX1 0x0821
-MCSI_TX2 0x0822
-MCSI_TX3 0x0823
-MCSI_TX4 0x0824
-MCSI_TX5 0x0825
-MCSI_TX6 0x0826
-MCSI_TX7 0x0827
-MCSI_TX8 0x0828
-MCSI_TX9 0x0829
-MCSI_TX10 0x082A
-MCSI_TX11 0x082B
-MCSI_TX12 0x082C
-MCSI_TX13 0x082D
-MCSI_TX14 0x082E
-MCSI_TX15 0x082F
-MCSI_RX0 0x0830
-MCSI_RX1 0x0831
-MCSI_RX2 0x0832
-MCSI_RX3 0x0833
-MCSI_RX4 0x0834
-MCSI_RX5 0x0835
-MCSI_RX6 0x0836
-MCSI_RX7 0x0837
-MCSI_RX8 0x0838
-MCSI_RX9 0x0839
-MCSI_RX10 0x083A
-MCSI_RX11 0x083B
-MCSI_RX12 0x083C
-MCSI_RX13 0x083D
-MCSI_RX14 0x083E
-MCSI_RX15 0x083F
-
-; RHEA
-RHEA_TRANSFER_RATE 0xF800
-
-RHEA_BRIDGE-CTRL 0xF801
-RHEA_BRIDGE-CTRL.TIMEOUT_ENABLE 8
-RHEA_BRIDGE-CTRL.NSUPV 9
-
-; API
-API_CONF 0xF900
-API_CONF.RESERVED0 0
-API_CONF.API_HOM 1
-API_CONF.BRIDGE_CLK_EN 2
-
-; Interrupts
-INT_CNTRL 0xFA00
-INT_CLEAR 0xFA01
-
-; DMA
-DMA_CONTROLLER_CONF 0xFC00
-DMA_ALLOC_CONFIG 0xFC02
-DMA1_RAD 0xFC10
-DMA1_RDPTH 0xFC12
-DMA1_AAD 0xFC14
-DMA1_ALGTH 0xFC16
-DMA1_CTRL 0xFC18
-DMA1_CUR_OFFSET_API 0xFC1A
-DMA2_RAD 0xFC20
-DMA2_RDPTH 0xFC22
-DMA2_AAD 0xFC24
-DMA2_ALGTH 0xFC26
-DMA2_CTRL 0xFC28
-DMA2_CUR_OFFSET_API 0xFC2A
-DMA3_RAD 0xFC30
-DMA3_RDPTH 0xFC32
-DMA3_AAD 0xFC34
-DMA3_ALGTH 0xFC36
-DMA3_CTRL 0xFC38
-DMA3_CUR_OFFSET_API 0xFC3A
-DMA4_RAD 0xFC40
-DMA4_RDPTH 0xFC42
-DMA4_AAD 0xFC44
-DMA4_ALGTH 0xFC46
-DMA4_CTRL 0xFC48
-DMA4_CUR_OFFSET_API 0xFC4A
-
diff --git a/Src/osmoconbb/src/wireshark/gsmtap.patch b/Src/osmoconbb/src/wireshark/gsmtap.patch
deleted file mode 100644
index 019c8b4..0000000
--- a/Src/osmoconbb/src/wireshark/gsmtap.patch
+++ /dev/null
@@ -1,445 +0,0 @@
-Index: epan/dissectors/packet-gsmtap.c
-===================================================================
---- /dev/null
-+++ epan/dissectors/packet-gsmtap.c
-@@ -0,0 +1,345 @@
-+/* packet-gsmtap.c
-+ * Routines for GSMTAP captures
-+ *
-+ * (C) 2008-2010 by Harald Welte <laforge@gnumonks.org>
-+ *
-+ * $Id$
-+ *
-+ * Wireshark - Network traffic analyzer
-+ * By Gerald Combs <gerald@wireshark.org>
-+ * Copyright 1998 Gerald Combs
-+ *
-+ * 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.
-+ *
-+ */
-+
-+/* GSMTAP is a generic header format for GSM protocol captures,
-+ * it uses the IANA-assigned UDP port number 4729 and carries
-+ * payload in various formats of GSM interfaces such as Um MAC
-+ * blocks or Um bursts.
-+ *
-+ * Example programs generating GSMTAP data are airprobe
-+ * (http://airprobe.org/) or OsmocomBB (http://bb.osmocom.org/)
-+ */
-+
-+#ifdef HAVE_CONFIG_H
-+# include "config.h"
-+#endif
-+
-+#include <glib.h>
-+#include <epan/packet.h>
-+#include <epan/prefs.h>
-+
-+#include "packet-gsmtap.h"
-+
-+static int proto_gsmtap = -1;
-+
-+static int hf_gsmtap_version = -1;
-+static int hf_gsmtap_hdrlen = -1;
-+static int hf_gsmtap_type = -1;
-+static int hf_gsmtap_timeslot = -1;
-+static int hf_gsmtap_subslot = -1;
-+static int hf_gsmtap_arfcn = -1;
-+static int hf_gsmtap_uplink = -1;
-+static int hf_gsmtap_noise_dbm = -1;
-+static int hf_gsmtap_signal_dbm = -1;
-+static int hf_gsmtap_frame_nr = -1;
-+static int hf_gsmtap_burst_type = -1;
-+static int hf_gsmtap_channel_type = -1;
-+static int hf_gsmtap_antenna = -1;
-+
-+static int hf_sacch_l1h_power_lev = -1;
-+static int hf_sacch_l1h_fpc = -1;
-+static int hf_sacch_l1h_ta = -1;
-+
-+static gint ett_gsmtap = -1;
-+
-+enum {
-+ GSMTAP_SUB_DATA = 0,
-+ GSMTAP_SUB_UM,
-+ GSMTAP_SUB_UM_LAPDM,
-+ GSMTAP_SUB_ABIS,
-+
-+ GSMTAP_SUB_MAX
-+};
-+
-+static dissector_handle_t sub_handles[GSMTAP_SUB_MAX];
-+
-+static const value_string gsmtap_bursts[] = {
-+ { GSMTAP_BURST_UNKNOWN, "UNKNOWN" },
-+ { GSMTAP_BURST_FCCH, "FCCH" },
-+ { GSMTAP_BURST_PARTIAL_SCH, "PARTIAL SCH" },
-+ { GSMTAP_BURST_SCH, "SCH" },
-+ { GSMTAP_BURST_CTS_SCH, "CTS SCH" },
-+ { GSMTAP_BURST_COMPACT_SCH, "COMPACT SCH" },
-+ { GSMTAP_BURST_NORMAL, "NORMAL" },
-+ { GSMTAP_BURST_DUMMY, "DUMMY" },
-+ { GSMTAP_BURST_ACCESS, "RACH" },
-+ { 0, NULL },
-+};
-+
-+static const value_string gsmtap_channels[] = {
-+ { GSMTAP_CHANNEL_UNKNOWN, "UNKNOWN" },
-+ { GSMTAP_CHANNEL_BCCH, "BCCH" },
-+ { GSMTAP_CHANNEL_CCCH, "CCCH" },
-+ { GSMTAP_CHANNEL_RACH, "RACH" },
-+ { GSMTAP_CHANNEL_AGCH, "AGCH" },
-+ { GSMTAP_CHANNEL_PCH, "PCH" },
-+ { GSMTAP_CHANNEL_SDCCH, "SDCCH" },
-+ { GSMTAP_CHANNEL_SDCCH4, "SDCCH/4" },
-+ { GSMTAP_CHANNEL_SDCCH8, "SDCCH/8" },
-+ { GSMTAP_CHANNEL_TCH_F, "FACCH/F" },
-+ { GSMTAP_CHANNEL_TCH_H, "FACCH/H" },
-+ { GSMTAP_CHANNEL_ACCH|
-+ GSMTAP_CHANNEL_SDCCH, "LSACCH" },
-+ { GSMTAP_CHANNEL_ACCH|
-+ GSMTAP_CHANNEL_SDCCH4, "SACCH/4" },
-+ { GSMTAP_CHANNEL_ACCH|
-+ GSMTAP_CHANNEL_SDCCH8, "SACCH/8" },
-+ { GSMTAP_CHANNEL_ACCH|
-+ GSMTAP_CHANNEL_TCH_F, "SACCH/F" },
-+ { GSMTAP_CHANNEL_ACCH|
-+ GSMTAP_CHANNEL_TCH_F, "SACCH/H" },
-+ { 0, NULL },
-+};
-+
-+static const value_string gsmtap_types[] = {
-+ { GSMTAP_TYPE_UM, "GSM Um (MS<->BTS)" },
-+ { GSMTAP_TYPE_ABIS, "GSM Abis (BTS<->BSC)" },
-+ { GSMTAP_TYPE_UM_BURST, "GSM Um burst (MS<->BTS)" },
-+ { 0, NULL },
-+};
-+
-+/* dissect a SACCH L1 header which is included in the first 2 bytes
-+ * of every SACCH frame (according to TS 04.04) */
-+static void
-+dissect_sacch_l1h(tvbuff_t *tvb, proto_tree *tree)
-+{
-+ proto_item *ti;
-+ proto_tree *l1h_tree = NULL;
-+
-+ if (!tree)
-+ return;
-+
-+ ti = proto_tree_add_protocol_format(tree, proto_gsmtap, tvb, 0, 2,
-+ "SACCH L1 Header, Power Level: %u, Timing Advance: %u",
-+ tvb_get_guint8(tvb, 0) & 0x1f,
-+ tvb_get_guint8(tvb, 1));
-+ l1h_tree = proto_item_add_subtree(ti, ett_gsmtap);
-+ /* Power Level */
-+ proto_tree_add_item(l1h_tree, hf_sacch_l1h_power_lev, tvb, 0, 1, FALSE);
-+ /* Fast Power Control */
-+ proto_tree_add_item(l1h_tree, hf_sacch_l1h_fpc, tvb, 0, 1, FALSE);
-+ /* Acutal Timing Advance */
-+ proto_tree_add_item(l1h_tree, hf_sacch_l1h_ta, tvb, 1, 1, FALSE);
-+}
-+
-+/* dissect a GSMTAP header and hand payload off to respective dissector */
-+static void
-+dissect_gsmtap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
-+{
-+ int sub_handle, len, offset = 0;
-+ proto_item *ti;
-+ proto_tree *gsmtap_tree = NULL;
-+ tvbuff_t *payload_tvb, *l1h_tvb = NULL;
-+ guint8 hdr_len, type, sub_type;
-+ guint16 arfcn;
-+
-+ len = tvb_length(tvb);
-+
-+ hdr_len = tvb_get_guint8(tvb, offset + 1) <<2;
-+ type = tvb_get_guint8(tvb, offset + 2);
-+ sub_type = tvb_get_guint8(tvb, offset + 12);
-+ arfcn = tvb_get_ntohs(tvb, offset + 4);
-+
-+ /* In case of a SACCH, there is a two-byte L1 header in front
-+ * of the packet (see TS 04.04) */
-+ if (type == GSMTAP_TYPE_UM &&
-+ sub_type & GSMTAP_CHANNEL_ACCH) {
-+ l1h_tvb = tvb_new_subset(tvb, hdr_len, 2, 2);
-+ payload_tvb = tvb_new_subset(tvb, hdr_len+2, len-(hdr_len+2),
-+ len-(hdr_len+2));
-+ } else {
-+ payload_tvb = tvb_new_subset(tvb, hdr_len, len-hdr_len,
-+ len-hdr_len);
-+ }
-+
-+ /* We don't want any UDP related info left in the INFO field, as the
-+ * gsm_a_dtap dissector will not clear but only append */
-+ col_clear(pinfo->cinfo, COL_INFO);
-+
-+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "GSMTAP");
-+
-+ if (arfcn & GSMTAP_ARFCN_F_UPLINK) {
-+ col_append_str(pinfo->cinfo, COL_RES_NET_SRC, "MS");
-+ col_append_str(pinfo->cinfo, COL_RES_NET_DST, "BTS");
-+ /* p2p_dir is used by the LAPDm dissector */
-+ pinfo->p2p_dir = P2P_DIR_SENT;
-+ } else {
-+ col_set_str(pinfo->cinfo, COL_RES_NET_SRC, "BTS");
-+ switch (sub_type & ~GSMTAP_CHANNEL_ACCH) {
-+ case GSMTAP_CHANNEL_BCCH:
-+ case GSMTAP_CHANNEL_CCCH:
-+ case GSMTAP_CHANNEL_PCH:
-+ case GSMTAP_CHANNEL_AGCH:
-+ col_set_str(pinfo->cinfo, COL_RES_NET_DST, "Broadcast");
-+ break;
-+ default:
-+ col_set_str(pinfo->cinfo, COL_RES_NET_DST, "MS");
-+ break;
-+ }
-+ /* p2p_dir is used by the LAPDm dissector */
-+ pinfo->p2p_dir = P2P_DIR_RECV;
-+ }
-+
-+ if (tree) {
-+ ti = proto_tree_add_protocol_format(tree, proto_gsmtap, tvb, 0, hdr_len,
-+ "GSM TAP Header, ARFCN: %u (%s), TS: %u, Channel: %s (%u)",
-+ arfcn & GSMTAP_ARFCN_MASK,
-+ arfcn & GSMTAP_ARFCN_F_UPLINK ? "Uplink" : "Downlink",
-+ tvb_get_guint8(tvb, offset+3),
-+ match_strval(tvb_get_guint8(tvb, offset+12), gsmtap_channels),
-+ tvb_get_guint8(tvb, offset+14));
-+ gsmtap_tree = proto_item_add_subtree(ti, ett_gsmtap);
-+ proto_tree_add_item(gsmtap_tree, hf_gsmtap_version,
-+ tvb, offset, 1, FALSE);
-+ proto_tree_add_uint_format(gsmtap_tree, hf_gsmtap_hdrlen,
-+ tvb, offset+1, 1, hdr_len,
-+ "Header length: %u bytes", hdr_len);
-+ proto_tree_add_item(gsmtap_tree, hf_gsmtap_type,
-+ tvb, offset+2, 1, FALSE);
-+ proto_tree_add_item(gsmtap_tree, hf_gsmtap_timeslot,
-+ tvb, offset+3, 1, FALSE);
-+ proto_tree_add_item(gsmtap_tree, hf_gsmtap_arfcn,
-+ tvb, offset+4, 2, FALSE);
-+ proto_tree_add_item(gsmtap_tree, hf_gsmtap_uplink,
-+ tvb, offset+4, 2, FALSE);
-+ proto_tree_add_item(gsmtap_tree, hf_gsmtap_noise_dbm,
-+ tvb, offset+6, 1, FALSE);
-+ proto_tree_add_item(gsmtap_tree, hf_gsmtap_signal_dbm,
-+ tvb, offset+7, 1, FALSE);
-+ proto_tree_add_item(gsmtap_tree, hf_gsmtap_frame_nr,
-+ tvb, offset+8, 4, FALSE);
-+ if (type == GSMTAP_TYPE_UM_BURST)
-+ proto_tree_add_item(gsmtap_tree, hf_gsmtap_burst_type,
-+ tvb, offset+12, 1, FALSE);
-+ else if (type == GSMTAP_TYPE_UM)
-+ proto_tree_add_item(gsmtap_tree, hf_gsmtap_channel_type,
-+ tvb, offset+12, 1, FALSE);
-+ proto_tree_add_item(gsmtap_tree, hf_gsmtap_antenna,
-+ tvb, offset+13, 1, FALSE);
-+ proto_tree_add_item(gsmtap_tree, hf_gsmtap_subslot,
-+ tvb, offset+14, 1, FALSE);
-+ }
-+
-+ switch (type) {
-+ case GSMTAP_TYPE_UM:
-+ if (l1h_tvb)
-+ dissect_sacch_l1h(l1h_tvb, tree);
-+ switch (sub_type & ~GSMTAP_CHANNEL_ACCH) {
-+ case GSMTAP_CHANNEL_BCCH:
-+ case GSMTAP_CHANNEL_CCCH:
-+ case GSMTAP_CHANNEL_PCH:
-+ case GSMTAP_CHANNEL_AGCH:
-+ /* FIXME: we might want to skip idle frames */
-+ sub_handle = GSMTAP_SUB_UM;
-+ break;
-+ case GSMTAP_CHANNEL_SDCCH:
-+ case GSMTAP_CHANNEL_SDCCH4:
-+ case GSMTAP_CHANNEL_SDCCH8:
-+ case GSMTAP_CHANNEL_TCH_F:
-+ case GSMTAP_CHANNEL_TCH_H:
-+ sub_handle = GSMTAP_SUB_UM_LAPDM;
-+ break;
-+ case GSMTAP_CHANNEL_RACH:
-+ default:
-+ sub_handle = GSMTAP_SUB_DATA;
-+ break;
-+ }
-+ break;
-+ case GSMTAP_TYPE_UM_BURST:
-+ default:
-+ sub_handle = GSMTAP_SUB_DATA;
-+ break;
-+ }
-+ call_dissector(sub_handles[sub_handle], payload_tvb, pinfo, tree);
-+}
-+
-+static const true_false_string sacch_l1h_fpc_mode_vals = {
-+ "In use",
-+ "Not in use"
-+};
-+
-+void
-+proto_register_gsmtap(void)
-+{
-+ static hf_register_info hf[] = {
-+ { &hf_gsmtap_version, { "Version", "gsmtap.version",
-+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL } },
-+ { &hf_gsmtap_hdrlen, { "Header Length", "gsmtap.hdr_len",
-+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL } },
-+ { &hf_gsmtap_type, { "Payload Type", "gsmtap.type",
-+ FT_UINT8, BASE_DEC, VALS(gsmtap_types), 0, NULL, HFILL } },
-+ { &hf_gsmtap_timeslot, { "Time Slot", "gsmtap.ts",
-+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL } },
-+ { &hf_gsmtap_arfcn, { "ARFCN", "gsmtap.arfcn",
-+ FT_UINT16, BASE_DEC, NULL, GSMTAP_ARFCN_MASK, NULL, HFILL } },
-+ { &hf_gsmtap_uplink, { "Uplink", "gsmtap.uplink",
-+ FT_UINT16, BASE_DEC, NULL, GSMTAP_ARFCN_F_UPLINK, NULL, HFILL } },
-+ { &hf_gsmtap_noise_dbm, { "Signal/Noise Ratio (dB)", "gsmtap.snr_db",
-+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL } },
-+ { &hf_gsmtap_signal_dbm, { "Signal Level (dBm)", "gsmtap.signal_dbm",
-+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL } },
-+ { &hf_gsmtap_frame_nr, { "GSM Frame Number", "gsmtap.frame_nr",
-+ FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL } },
-+ { &hf_gsmtap_burst_type, { "Burst Type", "gsmtap.burst_type",
-+ FT_UINT8, BASE_DEC, VALS(gsmtap_bursts), 0, NULL, HFILL }},
-+ { &hf_gsmtap_channel_type, { "Channel Type", "gsmtap.chan_type",
-+ FT_UINT8, BASE_DEC, VALS(gsmtap_channels), 0, NULL, HFILL }},
-+ { &hf_gsmtap_antenna, { "Antenna Number", "gsmtap.antenna",
-+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL } },
-+ { &hf_gsmtap_subslot, { "Sub-Slot", "gsmtap.sub_slot",
-+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL } },
-+
-+ { &hf_sacch_l1h_power_lev, { "MS power level", "gsmtap.sacch_l1.power_lev",
-+ FT_UINT8, BASE_DEC, NULL, 0x1f, NULL, HFILL } },
-+ { &hf_sacch_l1h_fpc, { "FPC", "gsmtap.sacch_l1.fpc",
-+ FT_BOOLEAN, 8, TFS(&sacch_l1h_fpc_mode_vals), 0x04,
-+ NULL, HFILL } },
-+ { &hf_sacch_l1h_ta, { "Actual Timing Advance", "gsmtap.sacch_l1.ta",
-+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL } },
-+ };
-+ static gint *ett[] = {
-+ &ett_gsmtap
-+ };
-+
-+ proto_gsmtap = proto_register_protocol("GSM Radiotap", "GSMTAP", "gsmtap");
-+ proto_register_field_array(proto_gsmtap, hf, array_length(hf));
-+ proto_register_subtree_array(ett, array_length(ett));
-+}
-+
-+void
-+proto_reg_handoff_gsmtap(void)
-+{
-+ dissector_handle_t gsmtap_handle;
-+
-+ sub_handles[GSMTAP_SUB_DATA] = find_dissector("data");
-+ sub_handles[GSMTAP_SUB_UM] = find_dissector("gsm_a_ccch");
-+ sub_handles[GSMTAP_SUB_UM_LAPDM] = find_dissector("lapdm");
-+ sub_handles[GSMTAP_SUB_ABIS] = find_dissector("gsm_a_dtap");
-+ gsmtap_handle = create_dissector_handle(dissect_gsmtap, proto_gsmtap);
-+ dissector_add("udp.port", GSMTAP_UDP_PORT, gsmtap_handle);
-+}
-Index: epan/dissectors/packet-gsmtap.h
-===================================================================
---- /dev/null
-+++ epan/dissectors/packet-gsmtap.h
-@@ -0,0 +1,70 @@
-+#ifndef _GSMTAP_H
-+#define _GSMTAP_H
-+
-+/* gsmtap header, pseudo-header in front of the actua/ GSM payload */
-+
-+/* GSMTAP is a generic header format for GSM protocol captures,
-+ * it uses the IANA-assigned UDP port number 4729 and carries
-+ * payload in various formats of GSM interfaces such as Um MAC
-+ * blocks or Um bursts.
-+ *
-+ * Example programs generating GSMTAP data are airprobe
-+ * (http://airprobe.org/) or OsmocomBB (http://bb.osmocom.org/)
-+ */
-+
-+#define GSMTAP_TYPE_UM 0x01
-+#define GSMTAP_TYPE_ABIS 0x02
-+#define GSMTAP_TYPE_UM_BURST 0x03 /* raw burst bits */
-+
-+#define GSMTAP_BURST_UNKNOWN 0x00
-+#define GSMTAP_BURST_FCCH 0x01
-+#define GSMTAP_BURST_PARTIAL_SCH 0x02
-+#define GSMTAP_BURST_SCH 0x03
-+#define GSMTAP_BURST_CTS_SCH 0x04
-+#define GSMTAP_BURST_COMPACT_SCH 0x05
-+#define GSMTAP_BURST_NORMAL 0x06
-+#define GSMTAP_BURST_DUMMY 0x07
-+#define GSMTAP_BURST_ACCESS 0x08
-+#define GSMTAP_BURST_NONE 0x09
-+
-+#define GSMTAP_CHANNEL_UNKNOWN 0x00
-+#define GSMTAP_CHANNEL_BCCH 0x01
-+#define GSMTAP_CHANNEL_CCCH 0x02
-+#define GSMTAP_CHANNEL_RACH 0x03
-+#define GSMTAP_CHANNEL_AGCH 0x04
-+#define GSMTAP_CHANNEL_PCH 0x05
-+#define GSMTAP_CHANNEL_SDCCH 0x06
-+#define GSMTAP_CHANNEL_SDCCH4 0x07
-+#define GSMTAP_CHANNEL_SDCCH8 0x08
-+#define GSMTAP_CHANNEL_TCH_F 0x09
-+#define GSMTAP_CHANNEL_TCH_H 0x0a
-+#define GSMTAP_CHANNEL_ACCH 0x80
-+
-+#define GSMTAP_ARFCN_F_PCS 0x8000
-+#define GSMTAP_ARFCN_F_UPLINK 0x4000
-+#define GSMTAP_ARFCN_MASK 0x3fff
-+
-+#define GSMTAP_UDP_PORT 4729
-+
-+/* This is the header as it is used by gsmtap-generating software.
-+ * It is not used by the wireshark dissector and provided for reference only.
-+struct gsmtap_hdr {
-+ guint8 version; // version, set to 0x01 currently
-+ guint8 hdr_len; // length in number of 32bit words
-+ guint8 type; // see GSMTAP_TYPE_*
-+ guint8 timeslot; // timeslot (0..7 on Um)
-+
-+ guint16 arfcn; // ARFCN (frequency)
-+ gint8 signal_dbm; // signal level in dBm
-+ gint8 snr_db; // signal/noise ratio in dB
-+
-+ guint32 frame_number; // GSM Frame Number (FN)
-+
-+ guint8 sub_type; // Type of burst/channel, see above
-+ guint8 antenna_nr; // Antenna Number
-+ guint8 sub_slot; // sub-slot within timeslot
-+ guint8 res; // reserved for future use (RFU)
-+}
-+ */
-+
-+#endif /* _GSMTAP_H */
-Index: epan/dissectors/Makefile.common
-===================================================================
---- epan/dissectors/Makefile.common.orig
-+++ epan/dissectors/Makefile.common
-@@ -484,6 +484,7 @@
- packet-gsm_sms.c \
- packet-gsm_sms_ud.c \
- packet-gsm_um.c \
-+ packet-gsmtap.c \
- packet-gssapi.c \
- packet-gtp.c \
- packet-gtpv2.c \
-@@ -1072,6 +1073,7 @@
- packet-gsm_a_common.h \
- packet-gsm_map.h \
- packet-gsm_sms.h \
-+ packet-gsmtap.h \
- packet-gssapi.h \
- packet-gtp.h \
- packet-h223.h \
diff --git a/Src/osmoconbb/src/wireshark/smscb.patch b/Src/osmoconbb/src/wireshark/smscb.patch
deleted file mode 100644
index 80005a3..0000000
--- a/Src/osmoconbb/src/wireshark/smscb.patch
+++ /dev/null
@@ -1,743 +0,0 @@
-Wireshark patch for SMSCB dissection support in LAPDm
-
-Create a new gsm_smscb dissector module for SMSCB as defined in GSM TS
-04.12. Call it from packet-lapdm when the Link Protocol Discriminator
-has the value "0 1".
-
-Signed-off-by: Alex Badea <vamposdecampos@gmail.com>
----
- epan/dissectors/Makefile.common | 1 +
- epan/dissectors/packet-gsm_smscb.c | 642 ++++++++++++++++++++++++++++++++++++
- epan/dissectors/packet-lapdm.c | 18 +-
- 3 files changed, 658 insertions(+), 3 deletions(-)
-
-diff --git a/epan/dissectors/Makefile.common b/epan/dissectors/Makefile.common
-index 9f9a602..5684579 100644
---- a/epan/dissectors/Makefile.common
-+++ b/epan/dissectors/Makefile.common
-@@ -500,6 +500,7 @@ DISSECTOR_SRC = \
- packet-gsm_bssmap_le.c \
- packet-gsm_sms.c \
- packet-gsm_sms_ud.c \
-+ packet-gsm_smscb.c \
- packet-gsm_um.c \
- packet-gsmtap.c \
- packet-gssapi.c \
-diff --git a/epan/dissectors/packet-gsm_smscb.c b/epan/dissectors/packet-gsm_smscb.c
-new file mode 100644
-index 0000000..a2f8bee
---- /dev/null
-+++ b/epan/dissectors/packet-gsm_smscb.c
-@@ -0,0 +1,642 @@
-+/* packet-gsm_smscb.c
-+ * Routines for GSM SMSCB (GSM 04.12) dissection
-+ * Copyright 2010, Alex Badea <vamposdecampos@gmail.com>
-+ *
-+ * $Id$
-+ *
-+ * Wireshark - Network traffic analyzer
-+ * By Gerald Combs <gerald@wireshark.org>
-+ * Copyright 1998 Gerald Combs
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-+ */
-+
-+#ifdef HAVE_CONFIG_H
-+# include "config.h"
-+#endif
-+
-+#include <glib.h>
-+
-+#include <epan/packet.h>
-+#include <epan/prefs.h>
-+#include <epan/reassemble.h>
-+#include <epan/asn1.h>
-+#include "packet-gsm_map.h"
-+#include "packet-gsm_sms.h"
-+
-+static gint proto_gsm_smscb = -1;
-+static gint hf_smscb_addr = -1;
-+static gint hf_smscb_addr_lb = -1;
-+static gint hf_smscb_addr_seq = -1;
-+static gint hf_smscb_serial_gs = -1;
-+static gint hf_smscb_serial_mcode = -1;
-+static gint hf_smscb_serial_updnum = -1;
-+static gint hf_smscb_page_num = -1;
-+static gint hf_smscb_page_cnt = -1;
-+static gint hf_smscb_msgid = -1;
-+static gint hf_smscb_content = -1;
-+static gint hf_smscb_fragments = -1;
-+static gint hf_smscb_fragment = -1;
-+static gint hf_smscb_fragment_overlap = -1;
-+static gint hf_smscb_fragment_overlap_conflicts = -1;
-+static gint hf_smscb_fragment_multiple_tails = -1;
-+static gint hf_smscb_fragment_too_long_fragment = -1;
-+static gint hf_smscb_fragment_error = -1;
-+static gint hf_smscb_reassembled_in = -1;
-+static gint hf_smscb_reassembled_length = -1;
-+static gint hf_smscb_sched_type = -1;
-+static gint hf_smscb_sched_spare = -1;
-+static gint hf_smscb_sched_begin_slot = -1;
-+static gint hf_smscb_sched_end_slot = -1;
-+static gint hf_smscb_sched_mdt1 = -1;
-+static gint hf_smscb_sched_mdt2 = -1;
-+static gint hf_smscb_sched_mdt8 = -1;
-+static gint hf_smscb_sched_msgid = -1;
-+static gint hf_smscb_sched_repslot = -1;
-+
-+static gint ett_smscb = -1;
-+static gint ett_smscb_addr = -1;
-+static gint ett_smscb_dcs = -1;
-+static gint ett_smscb_fragment = -1;
-+static gint ett_smscb_fragments = -1;
-+static gint ett_smscb_sched_new = -1;
-+static gint ett_smscb_sched_other = -1;
-+static gint ett_smscb_sched_slot = -1;
-+
-+static GHashTable *smscb_fragment_table = NULL;
-+static GHashTable *smscb_reassembled_table = NULL;
-+
-+static gboolean reassemble_smscb = TRUE;
-+
-+static dissector_handle_t data_handle;
-+
-+#define SMSCB_HDR_MINLEN 1
-+
-+/*
-+ * Bits in the address field.
-+ */
-+#define SMSCB_ADDR_LB 0x10 /* Address Last Bit */
-+#define SMSCB_ADDR_SEQ 0x0f /* Address sequence number */
-+#define SMSCB_SERIAL_GS 0xc000 /* CBS Serial Number - Geographical Scope */
-+#define SMSCB_SERIAL_MCODE 0x3ff0 /* CBS Serial Number - Message Code */
-+#define SMSCB_SERIAL_UPDNUM 0x000f /* CBS Serial Number - Update Number */
-+#define SMSCB_PAGE_NUM 0xf0 /* Page number */
-+#define SMSCB_PAGE_CNT 0x0f /* Page total count */
-+
-+/*
-+ * Bits in the Schedule message
-+ */
-+#define SMSCB_SCHED_TYPE 0xc0 /* Type */
-+#define SMSCB_SCHED_SLOT 0x3f /* Begin/End Slot Number */
-+#define SMSCB_SCHED_SPARE 0xc0 /* Spare */
-+#define SMSCB_SCHED_MDT1 0x8000 /* MDT (1 bit)*/
-+#define SMSCB_SCHED_MSGID 0x7fff /* Message ID */
-+#define SMSCB_SCHED_MDT2 0xc0 /* MDT (2 bits) */
-+#define SMSCB_SCHED_REPSLOT 0x3f /* Repeated Slot Number */
-+
-+#define SMSCB_SEQ_LAST 3
-+#define SMSCB_SEQ_1ST 0
-+#define SMSCB_SEQ_1ST_SCHED 8
-+
-+#define SMSCB_SCHED_SLOT_MAX 48
-+
-+/* 04.12 section 3.3.1 */
-+static const value_string smscb_addr_lb_vals[] = {
-+ { 0, "More blocks" },
-+ { 1, "Last block" },
-+ { 0, NULL }
-+};
-+
-+/* 04.12 section 3.3.1 */
-+static const value_string smscb_addr_seq_vals[] = {
-+ { 0, "First block" },
-+ { 1, "Second block" },
-+ { 2, "Third block" },
-+ { 3, "Fourth block" },
-+ { 8, "First schedule block" },
-+ { 15, "Null message" },
-+ { 0, NULL }
-+};
-+
-+/* 03.41 section 9.3.2.1 */
-+static const value_string smscb_serial_gs_vals[] = {
-+ { 0, "Cell wide (immediate)" },
-+ { 1, "PLMN wide" },
-+ { 2, "Location Area wide" },
-+ { 3, "Cell wide" },
-+ { 0, NULL }
-+};
-+
-+/* 04.14 section 3.5.5 */
-+static const value_string smscb_sched_mdt8_vals[] = {
-+ { 0x00, "Retransmission indication" },
-+ { 0x80, "First transmission of an SMSCB within the Schedule Period" },
-+ { 0x40, "Free Message Slot, optional reading" },
-+ { 0x41, "Free Message Slot, reading advised" },
-+ { 0, NULL }
-+};
-+
-+static const fragment_items smscb_frag_items = {
-+ /* Fragment subtrees */
-+ &ett_smscb_fragment,
-+ &ett_smscb_fragments,
-+ /* Fragment fields */
-+ &hf_smscb_fragments,
-+ &hf_smscb_fragment,
-+ &hf_smscb_fragment_overlap,
-+ &hf_smscb_fragment_overlap_conflicts,
-+ &hf_smscb_fragment_multiple_tails,
-+ &hf_smscb_fragment_too_long_fragment,
-+ &hf_smscb_fragment_error,
-+ /* Reassembled in field */
-+ &hf_smscb_reassembled_in,
-+ /* Reassembled length field */
-+ &hf_smscb_reassembled_length,
-+ /* Tag */
-+ "fragments"
-+};
-+
-+static void smscb_defragment_init(void)
-+{
-+ fragment_table_init(&smscb_fragment_table);
-+ reassembled_table_init(&smscb_reassembled_table);
-+}
-+
-+/* [3GPP TS 03.41 section 9.3] */
-+static int dissect_smscb_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
-+{
-+ proto_item *ti;
-+ gint offset = 0;
-+ gint length, out_len, textlen;
-+ guint8 encoding;
-+ gchar msgbuf[88 + 1];
-+ gchar *utf8_text, *p;
-+
-+ proto_tree_add_item(tree, hf_smscb_serial_gs, tvb, offset, 1, ENC_NA);
-+ proto_tree_add_item(tree, hf_smscb_serial_mcode, tvb, offset, 2, ENC_NA);
-+ offset++;
-+ proto_tree_add_item(tree, hf_smscb_serial_updnum, tvb, offset, 1, ENC_NA);
-+ offset++;
-+ proto_tree_add_item(tree, hf_smscb_msgid, tvb, offset, 2, ENC_BIG_ENDIAN);
-+ col_append_fstr(pinfo->cinfo, COL_INFO, " - Message ID %d", tvb_get_ntohs(tvb, offset));
-+ offset += 2;
-+ ti = proto_tree_add_text(tree, tvb, offset, 1, "Data Coding Scheme");
-+ encoding = dissect_cbs_data_coding_scheme(
-+ tvb_new_subset(tvb, offset, 1, -1), pinfo,
-+ proto_item_add_subtree(ti, ett_smscb_dcs));
-+ offset++;
-+ proto_tree_add_item(tree, hf_smscb_page_num, tvb, offset, 1, ENC_NA);
-+ proto_tree_add_item(tree, hf_smscb_page_cnt, tvb, offset, 1, ENC_NA);
-+ offset++;
-+
-+ length = tvb_length(tvb) - offset;
-+ switch (encoding) {
-+ case SMS_ENCODING_7BIT:
-+ case SMS_ENCODING_7BIT_LANG:
-+ out_len = gsm_sms_char_7bit_unpack(0, length, sizeof(msgbuf) - 1,
-+ tvb_get_ptr(tvb, offset, length), msgbuf);
-+ msgbuf[out_len] = '\0';
-+ utf8_text = gsm_sms_chars_to_utf8(msgbuf, out_len);
-+ textlen = strlen(utf8_text);
-+ break;
-+ /* TODO: UCS2? */
-+ case SMS_ENCODING_8BIT:
-+ default:
-+ utf8_text = tvb_get_ephemeral_string(tvb, offset, length);
-+ textlen = length;
-+ break;
-+ }
-+
-+ proto_tree_add_string(tree, hf_smscb_content, tvb, offset, length, utf8_text);
-+
-+ /* strip padding */
-+ if ((p = strchr( utf8_text, '\r')))
-+ *p = 0;
-+ col_append_fstr(pinfo->cinfo, COL_INFO, " \"%s\"", utf8_text);
-+
-+ return tvb_length(tvb);
-+}
-+
-+/* [3GPP TS 04.14 section 3.5.5] */
-+static int dissect_sched_msg_desc(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
-+ gint *slot_list, gint slot_count)
-+{
-+ gint offset = 0;
-+ gint k;
-+ proto_item *ti;
-+ proto_tree *subtree;
-+ guint8 mdt;
-+
-+ for (k = 0; k < slot_count; k++) {
-+ mdt = tvb_get_guint8(tvb, offset);
-+
-+ if (mdt & 0x80)
-+ mdt = 0x80;
-+ else if (!(mdt & 0x40))
-+ mdt = 0;
-+
-+ ti = proto_tree_add_text(tree, tvb, offset, 1, "Slot %d - %s",
-+ slot_list[k],
-+ val_to_str(mdt, smscb_sched_mdt8_vals, "Unknown (0x%02x)"));
-+ subtree = proto_item_add_subtree(ti, ett_smscb_sched_slot);
-+
-+ if (mdt & 0x80) {
-+ guint16 msgid = tvb_get_ntohs(tvb, offset) & SMSCB_SCHED_MSGID;
-+ proto_item_append_text(ti, " (message ID %d)", msgid);
-+ proto_item_set_len(ti, 2);
-+ proto_tree_add_item(subtree, hf_smscb_sched_mdt1, tvb, offset, 2, ENC_BIG_ENDIAN);
-+ proto_tree_add_item(subtree, hf_smscb_sched_msgid, tvb, offset, 2, ENC_BIG_ENDIAN);
-+ offset += 2;
-+ } else if (!(mdt & 0xc0)) {
-+ guint8 slot = tvb_get_guint8(tvb, offset) & SMSCB_SCHED_SLOT;
-+ proto_item_append_text(ti, " (slot %d)", slot);
-+ proto_tree_add_item(subtree, hf_smscb_sched_mdt2, tvb, offset, 1, ENC_NA);
-+ proto_tree_add_item(subtree, hf_smscb_sched_repslot, tvb, offset, 1, ENC_NA);
-+ offset++;
-+ } else {
-+ proto_tree_add_item(subtree, hf_smscb_sched_mdt8, tvb, offset, 1, ENC_NA);
-+ offset++;
-+ }
-+ }
-+ return offset;
-+}
-+
-+/* [3GPP TS 04.14 section 3.5] */
-+static int dissect_sched_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
-+{
-+ proto_item *ti;
-+ gint offset = 0;
-+ gint first, last, nm, len;
-+ gint new_count = 0;
-+ gint other_count = 0;
-+ gint new_list[SMSCB_SCHED_SLOT_MAX];
-+ gint other_list[SMSCB_SCHED_SLOT_MAX];
-+
-+ col_append_str(pinfo->cinfo, COL_INFO, " - Schedule message");
-+
-+ proto_tree_add_item(tree, hf_smscb_sched_type, tvb, offset, 1, ENC_NA);
-+ proto_tree_add_item(tree, hf_smscb_sched_begin_slot, tvb, offset, 1, ENC_NA);
-+ offset++;
-+ proto_tree_add_item(tree, hf_smscb_sched_spare, tvb, offset, 1, ENC_NA);
-+ proto_tree_add_item(tree, hf_smscb_sched_end_slot, tvb, offset, 1, ENC_NA);
-+ offset++;
-+
-+ first = tvb_get_guint8(tvb, 0) & SMSCB_SCHED_SLOT;
-+ last = tvb_get_guint8(tvb, 1) & SMSCB_SCHED_SLOT;
-+ last = MIN(last, SMSCB_SCHED_SLOT_MAX);
-+
-+ ti = proto_tree_add_text(tree, tvb, offset, 6, "List of new message slots =");
-+ for (nm = first; nm <= last; nm++) {
-+ if (tvb_get_bits8(tvb, offset * 8 + nm - first, 1)) {
-+ proto_item_append_text(ti, " %d", nm);
-+ new_list[new_count++] = nm;
-+ } else {
-+ other_list[other_count++] = nm;
-+ }
-+ }
-+ offset += 6;
-+
-+ ti = proto_tree_add_text(tree, tvb, offset, 0, "New Message Descriptions");
-+ len = dissect_sched_msg_desc(tvb_new_subset(tvb, offset, -1, -1), pinfo,
-+ proto_item_add_subtree(ti, ett_smscb_sched_new),
-+ new_list, new_count);
-+ offset += len;
-+ proto_item_set_len(ti, len);
-+
-+ ti = proto_tree_add_text(tree, tvb, offset, 0, "Other Message Descriptions");
-+ len = dissect_sched_msg_desc(tvb_new_subset(tvb, offset, -1, -1), pinfo,
-+ proto_item_add_subtree(ti, ett_smscb_sched_other),
-+ other_list, other_count);
-+ offset += len;
-+ proto_item_set_len(ti, len);
-+
-+ return offset;
-+}
-+
-+static inline int seq_any_frags(guint8 seq)
-+{
-+ return seq <= SMSCB_SEQ_LAST || seq == SMSCB_SEQ_1ST_SCHED;
-+}
-+
-+static inline int seq_more_frags(guint8 seq)
-+{
-+ return seq < SMSCB_SEQ_LAST || seq == SMSCB_SEQ_1ST_SCHED;
-+}
-+
-+static inline int seq_first(guint8 seq)
-+{
-+ return seq == SMSCB_SEQ_1ST || seq == SMSCB_SEQ_1ST_SCHED;
-+}
-+
-+static inline int seq_bits(guint8 seq)
-+{
-+ return seq & 3;
-+}
-+
-+/*
-+ * Do the reassembly thing.
-+ *
-+ * SMSCB fragmentation doesn't really fit in with the wireshark
-+ * reassembler. There are only two valid fragment sequences:
-+ * i) 0,1,2,3 for a SMSCB message
-+ * ii) 8,1,2,3 for a schedule message
-+ *
-+ * We can't use different fragment-IDs for each content type,
-+ * since the last 3 blocks have identical sequence numbers.
-+ *
-+ * We can't just mask the lower 2 bits, because when reassembly
-+ * completes (which is on the last block, sequence #3) we won't
-+ * know which content type we've reassembled.
-+ *
-+ * We also can't munge e.g. the schedule sequence to 8,9,10,11,
-+ * since the reassembler will think we're missing the first 8
-+ * blocks and not do anything.
-+ *
-+ * Also, according to TS 03.41 section 8 we must discard
-+ * non-consecutive sequences.
-+ *
-+ * So the approach here is to include the address header byte
-+ * in the first fragment. This way after reassembly we can peek
-+ * at it and dissect accordingly.
-+ *
-+ * A clean implementation would likely be to add a FD_* reassembler
-+ * flag to special-case this behaviour.
-+ */
-+static tvbuff_t *smscb_try_reassembly(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
-+ guint8 *seq_p, guint8 more)
-+{
-+ guint8 seq = *seq_p;
-+ fragment_data *frag;
-+ guint32 frag_id = 0x42;
-+ guchar expected_seq = 0;
-+ tvbuff_t *reassembled = NULL;
-+ gboolean save_fragmented = pinfo->fragmented;
-+
-+ if (!reassemble_smscb || !seq_any_frags(seq))
-+ return tvb;
-+
-+ frag = fragment_get(pinfo, frag_id, smscb_fragment_table);
-+ if (frag) {
-+ while (frag->next)
-+ frag = frag->next;
-+ expected_seq = frag->offset + 1;
-+ }
-+
-+ if (seq != expected_seq)
-+ g_free(fragment_delete(pinfo, frag_id, smscb_fragment_table));
-+
-+ if (!seq_first(seq))
-+ tvb = tvb_new_subset(tvb, 1, -1, -1);
-+
-+ pinfo->fragmented = more;
-+ frag = fragment_add_seq_check(tvb, 0, pinfo, frag_id,
-+ smscb_fragment_table,
-+ smscb_reassembled_table, seq_bits(seq),
-+ tvb_length(tvb),
-+ more);
-+
-+ reassembled = process_reassembled_data(tvb, 0, pinfo,
-+ "Reassembled SMSCB", frag, &smscb_frag_items, NULL, tree);
-+
-+ if (frag && pinfo->fd->num == frag->reassembled_in) {
-+ *seq_p = tvb_get_guint8(reassembled, 0) & SMSCB_ADDR_SEQ;
-+ reassembled = tvb_new_subset(reassembled, 1, -1, -1);
-+ } else {
-+ col_append_str(pinfo->cinfo, COL_INFO, " (Fragment)");
-+ proto_tree_add_text(tree, tvb, 0, -1, "Fragment Data");
-+ reassembled = NULL;
-+ }
-+
-+ pinfo->fragmented = save_fragmented;
-+ return reassembled;
-+}
-+
-+static int dissect_gsm_smscb(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
-+{
-+ proto_item *ti;
-+ proto_tree *gsm_smscb_tree = NULL;
-+ proto_tree *subtree = NULL;
-+ guint8 addr, seq, more;
-+ tvbuff_t *payload;
-+
-+ if (tvb_length(tvb) < SMSCB_HDR_MINLEN)
-+ return 0;
-+
-+ addr = tvb_get_guint8(tvb, 0);
-+ seq = addr & SMSCB_ADDR_SEQ;
-+ more = !(addr & SMSCB_ADDR_LB) && seq_more_frags(seq);
-+
-+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "SMSCB");
-+
-+ col_clear(pinfo->cinfo, COL_INFO);
-+ col_append_str(pinfo->cinfo, COL_INFO,
-+ val_to_str(seq, smscb_addr_seq_vals, "Unknown block #%d"));
-+
-+ if (tree) {
-+ ti = proto_tree_add_item(tree, proto_gsm_smscb, tvb, 0, -1, ENC_NA);
-+ gsm_smscb_tree = proto_item_add_subtree(ti, ett_smscb);
-+
-+ ti = proto_tree_add_item(gsm_smscb_tree, hf_smscb_addr, tvb, 0, 1, ENC_NA);
-+ subtree = proto_item_add_subtree(ti, ett_smscb_addr);
-+ proto_tree_add_item(subtree, hf_smscb_addr_lb, tvb, 0, 1, ENC_NA);
-+ proto_tree_add_item(subtree, hf_smscb_addr_seq, tvb, 0, 1, ENC_NA);
-+ }
-+
-+ payload = smscb_try_reassembly(tvb, pinfo, gsm_smscb_tree, &seq, more);
-+ if (payload) {
-+ switch (seq) {
-+ case SMSCB_SEQ_1ST:
-+ dissect_smscb_message(payload, pinfo, gsm_smscb_tree);
-+ break;
-+ case SMSCB_SEQ_1ST_SCHED:
-+ dissect_sched_message(payload, pinfo, gsm_smscb_tree);
-+ break;
-+ }
-+ }
-+
-+ return tvb_length(tvb);
-+}
-+
-+static hf_register_info hf[] = {
-+ { &hf_smscb_addr, {
-+ "Address Field", "smscb.addr", FT_UINT8, BASE_HEX,
-+ NULL, 0x0,
-+ "Address", HFILL,
-+ }},
-+ { &hf_smscb_addr_lb, {
-+ "LB", "smscb.addr.lb", FT_UINT8, BASE_DEC,
-+ VALS(smscb_addr_lb_vals), SMSCB_ADDR_LB,
-+ "Last Block bit", HFILL,
-+ }},
-+ { &hf_smscb_addr_seq, {
-+ "SEQ", "smscb.addr.seq", FT_UINT8, BASE_DEC,
-+ VALS(smscb_addr_seq_vals), SMSCB_ADDR_SEQ,
-+ "Sequence Number", HFILL,
-+ }},
-+
-+ { &hf_smscb_serial_gs, {
-+ "Geographic Scope", "smscb.serial.gs", FT_UINT16, BASE_DEC,
-+ VALS(smscb_serial_gs_vals), SMSCB_SERIAL_GS, NULL, HFILL,
-+ }},
-+ { &hf_smscb_serial_mcode, {
-+ "Message Code", "smscb.serial.mcode", FT_UINT16, BASE_DEC,
-+ NULL, SMSCB_SERIAL_MCODE, NULL, HFILL,
-+ }},
-+ { &hf_smscb_serial_updnum, {
-+ "Update Number", "smscb.serial.updnum", FT_UINT16, BASE_DEC,
-+ NULL, SMSCB_SERIAL_UPDNUM, NULL, HFILL,
-+ }},
-+
-+ { &hf_smscb_msgid, {
-+ "Message Identifier", "smscb.msgid", FT_UINT16, BASE_DEC,
-+ NULL, 0, NULL, HFILL,
-+ }},
-+
-+ { &hf_smscb_page_num, {
-+ "Page number", "smscb.page.num", FT_UINT8, BASE_DEC,
-+ NULL, SMSCB_PAGE_NUM, NULL, HFILL,
-+ }},
-+ { &hf_smscb_page_cnt, {
-+ "Total pages", "smscb.page.cnt", FT_UINT8, BASE_DEC,
-+ NULL, SMSCB_PAGE_CNT, NULL, HFILL,
-+ }},
-+ { &hf_smscb_content, {
-+ "Content of Message", "smscb.content", FT_STRING, BASE_NONE,
-+ NULL, 0x00, NULL, HFILL,
-+ }},
-+
-+ /* Schedule message */
-+ { &hf_smscb_sched_type, {
-+ "Type", "smscb.sched.type", FT_UINT8, BASE_HEX,
-+ NULL, SMSCB_SCHED_TYPE,
-+ "Type", HFILL,
-+ }},
-+ { &hf_smscb_sched_spare, {
-+ "Spare", "smscb.sched.spare", FT_UINT8, BASE_DEC,
-+ NULL, SMSCB_SCHED_TYPE,
-+ "Spare", HFILL,
-+ }},
-+ { &hf_smscb_sched_begin_slot, {
-+ "Begin slot", "smscb.sched.begin_slot", FT_UINT8, BASE_DEC,
-+ NULL, SMSCB_SCHED_SLOT,
-+ "Begin slot", HFILL,
-+ }},
-+ { &hf_smscb_sched_end_slot, {
-+ "End slot", "smscb.sched.end_slot", FT_UINT8, BASE_DEC,
-+ NULL, SMSCB_SCHED_SLOT,
-+ "End slot", HFILL,
-+ }},
-+ { &hf_smscb_sched_mdt1, {
-+ "MDT", "smscb.sched.mdt1", FT_UINT16, BASE_DEC,
-+ NULL, SMSCB_SCHED_MDT1,
-+ "Message Description Type", HFILL,
-+ }},
-+ { &hf_smscb_sched_msgid, {
-+ "Message ID", "smscb.sched.msg_id", FT_UINT16, BASE_DEC,
-+ NULL, SMSCB_SCHED_MSGID,
-+ "Message ID", HFILL,
-+ }},
-+ { &hf_smscb_sched_mdt2, {
-+ "MDT", "smscb.sched.mdt2", FT_UINT8, BASE_DEC,
-+ NULL, SMSCB_SCHED_MDT2,
-+ "Message Description Type", HFILL,
-+ }},
-+ { &hf_smscb_sched_repslot, {
-+ "Repeated Slot Number", "smscb.sched.repslot", FT_UINT8, BASE_DEC,
-+ NULL, SMSCB_SCHED_REPSLOT,
-+ "Repeated Slot Number", HFILL,
-+ }},
-+ { &hf_smscb_sched_mdt8, {
-+ "MDT", "smscb.sched.mdt8", FT_UINT8, BASE_HEX,
-+ VALS(smscb_sched_mdt8_vals), 0x00,
-+ "Message Description Type", HFILL,
-+ }},
-+
-+ /* Fragment reassembly */
-+ { &hf_smscb_fragments, {
-+ "Message fragments", "smscb.fragments",
-+ FT_NONE, BASE_NONE, NULL, 0x00,
-+ "SMSCB Message fragments", HFILL,
-+ }},
-+ { &hf_smscb_fragment, {
-+ "Message fragment", "smscb.fragment",
-+ FT_FRAMENUM, BASE_NONE, NULL, 0x00,
-+ "SMSCB Message fragment", HFILL,
-+ }},
-+ { &hf_smscb_fragment_overlap, {
-+ "Message fragment overlap", "smscb.fragment.overlap",
-+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
-+ "SMSCB Message fragment overlaps with other fragment(s)", HFILL,
-+ }},
-+ { &hf_smscb_fragment_overlap_conflicts, {
-+ "Message fragment overlapping with conflicting data", "smscb.fragment.overlap.conflicts",
-+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
-+ "SMSCB Message fragment overlaps with conflicting data", HFILL,
-+ }},
-+ { &hf_smscb_fragment_multiple_tails, {
-+ "Message has multiple tail fragments", "smscb.fragment.multiple_tails",
-+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
-+ "SMSCB Message fragment has multiple tail fragments", HFILL,
-+ }},
-+ { &hf_smscb_fragment_too_long_fragment, {
-+ "Message fragment too long", "smscb.fragment.too_long_fragment",
-+ FT_BOOLEAN, BASE_NONE, NULL, 0x0,
-+ "SMSCB Message fragment data goes beyond the packet end", HFILL,
-+ }},
-+ { &hf_smscb_fragment_error, {
-+ "Message defragmentation error", "smscb.fragment.error",
-+ FT_FRAMENUM, BASE_NONE, NULL, 0x00,
-+ "SMSCB Message defragmentation error due to illegal fragments", HFILL,
-+ }},
-+ { &hf_smscb_reassembled_in, {
-+ "Reassembled in", "smscb.reassembled.in",
-+ FT_FRAMENUM, BASE_NONE, NULL, 0x00,
-+ "SMSCB Message has been reassembled in this packet.", HFILL,
-+ }},
-+ { &hf_smscb_reassembled_length, {
-+ "Reassembled SMSCB length", "smscb.reassembled.length",
-+ FT_UINT32, BASE_DEC, NULL, 0x00,
-+ "The total length of the reassembled payload", HFILL,
-+ }},
-+};
-+
-+static gint *ett[] = {
-+ &ett_smscb,
-+ &ett_smscb_addr,
-+ &ett_smscb_dcs,
-+ &ett_smscb_fragment,
-+ &ett_smscb_fragments,
-+ &ett_smscb_sched_new,
-+ &ett_smscb_sched_other,
-+ &ett_smscb_sched_slot,
-+};
-+
-+void proto_reg_handoff_gsm_smscb(void)
-+{
-+ data_handle = find_dissector("data");
-+}
-+
-+void proto_register_gsm_smscb(void)
-+{
-+ proto_gsm_smscb = proto_register_protocol(
-+ "Short Message Service Cell Broadcast",
-+ "SMSCB", "gsm_smscb");
-+
-+ proto_register_field_array(proto_gsm_smscb, hf, array_length(hf));
-+ proto_register_subtree_array(ett, array_length(ett));
-+
-+ new_register_dissector("gsm_smscb", dissect_gsm_smscb, proto_gsm_smscb);
-+ register_init_routine(smscb_defragment_init);
-+}
-diff --git a/epan/dissectors/packet-lapdm.c b/epan/dissectors/packet-lapdm.c
-index dbeac85..add859d 100644
---- a/epan/dissectors/packet-lapdm.c
-+++ b/epan/dissectors/packet-lapdm.c
-@@ -110,6 +110,7 @@ static GHashTable *lapdm_reassembled_table = NULL;
- static dissector_table_t lapdm_sapi_dissector_table;
-
- static dissector_handle_t data_handle;
-+static dissector_handle_t smscb_handle;
-
- static gboolean reassemble_lapdm = TRUE;
-
-@@ -121,6 +122,7 @@ static gboolean reassemble_lapdm = TRUE;
- #define LAPDM_CR 0x02 /* Command/Response bit */
- #define LAPDM_EA 0x01 /* First Address Extension bit */
- #define LAPDM_LPD 0x60 /* Link Protocol Discriminator */
-+#define LAPDM_LPD_CB 0x20 /* Cell Broadcast LPD */
-
- /*
- * Bits in the length field.
-@@ -219,6 +221,7 @@ dissect_lapdm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
- tvbuff_t *payload;
- int available_length;
- gboolean is_response = FALSE;
-+ gboolean is_cbs = FALSE;
-
- /* Check that there's enough data */
- if (tvb_length(tvb) < LAPDM_HEADER_LEN)
-@@ -229,6 +232,7 @@ dissect_lapdm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
- addr = tvb_get_guint8(tvb, 0);
- length = tvb_get_guint8(tvb, 2);
-
-+ is_cbs = (addr & LAPDM_LPD) == LAPDM_LPD_CB;
- cr = addr & LAPDM_CR;
- if (pinfo->p2p_dir == P2P_DIR_RECV) {
- is_response = cr ? FALSE : TRUE;
-@@ -245,15 +249,22 @@ dissect_lapdm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
- addr_tree = proto_item_add_subtree(addr_ti, ett_lapdm_address);
-
- proto_tree_add_uint(addr_tree, hf_lapdm_lpd, tvb, 0, 1, addr);
-- proto_tree_add_uint(addr_tree, hf_lapdm_sapi, tvb, 0, 1, addr);
-- proto_tree_add_uint(addr_tree, hf_lapdm_cr, tvb, 0, 1, addr);
-- proto_tree_add_uint(addr_tree, hf_lapdm_ea, tvb, 0, 1, addr);
-+ if (!is_cbs) {
-+ proto_tree_add_uint(addr_tree, hf_lapdm_sapi, tvb, 0, 1, addr);
-+ proto_tree_add_uint(addr_tree, hf_lapdm_cr, tvb, 0, 1, addr);
-+ proto_tree_add_uint(addr_tree, hf_lapdm_ea, tvb, 0, 1, addr);
-+ }
- }
- else {
- lapdm_ti = NULL;
- lapdm_tree = NULL;
- }
-
-+ if (is_cbs) {
-+ call_dissector(smscb_handle, tvb, pinfo, tree);
-+ return;
-+ }
-+
- control = dissect_xdlc_control(tvb, 1, pinfo, lapdm_tree, hf_lapdm_control,
- ett_lapdm_control, &lapdm_cf_items, NULL /* LAPDm doesnt support extended */, NULL, NULL,
- is_response, FALSE, FALSE);
-@@ -486,5 +497,6 @@ void
- proto_reg_handoff_lapdm(void)
- {
- data_handle = find_dissector("data");
-+ smscb_handle = find_dissector("gsm_smscb");
- }
-
-+